From c711911184cd730e3509cd1e35bbf4f632ff1ea3 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Thu, 1 Jun 2023 15:32:49 +0200 Subject: [PATCH] Add emoji button and change emoji picket lib (Now use MCEmojiPicker) --- .../Views/ChatConversationViewSwift.swift | 33 +++++++---------- Classes/Swift/Chat/Views/MessageView.swift | 34 +++++++----------- Podfile | 4 +-- Resources/images/emoji.png | Bin 0 -> 817 bytes 4 files changed, 28 insertions(+), 43 deletions(-) create mode 100644 Resources/images/emoji.png diff --git a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift index fe7626ca4..d2a7af715 100644 --- a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift +++ b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift @@ -24,15 +24,9 @@ import linphonesw import DropDown import PhotosUI import AVFoundation -import EmojiPicker +import MCEmojiPicker -class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControllerDelegate, UIDocumentPickerDelegate, UICompositeViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UIImagePickerControllerDelegate, EmojiPickerDelegate, CoreDelegate & UINavigationControllerDelegate{ - // Replaces ChatConversationView - - func didGetEmoji(emoji: String) { - //emojiButton.setTitle(emoji, for: .normal) - messageView.voiceRecordButton.setTitle(emoji, for: .normal) - } +class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControllerDelegate, UIDocumentPickerDelegate, UICompositeViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UIImagePickerControllerDelegate, MCEmojiPickerDelegate, CoreDelegate & UINavigationControllerDelegate{ // Replaces ChatConversationView static let compositeDescription = UICompositeViewDescription(ChatConversationViewSwift.self, statusBar: StatusBarView.self, tabBar: nil, sideMenu: SideMenuView.self, fullscreen: false, isLeftFragment: false,fragmentWith: nil) @@ -249,9 +243,9 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll messageView.sendButton.onClickAction = onSendClick messageView.pictureButton.onClickAction = alertAction - messageView.voiceRecordButton.addTarget(self,action:#selector(openEmojiPickerModule), - for:.touchUpInside) - //messageView.voiceRecordButton.onClickAction = openEmojiPickerModule + messageView.voiceRecordButton.onClickAction = onVrStart + messageView.emojisButton.addTarget(self,action:#selector(openEmojiPickerModule), + for:.touchUpInside) recordingDeleteButton.onClickAction = cancelVoiceRecording recordingPlayButton.onClickAction = onvrPlayPauseStop recordingStopButton.onClickAction = onvrPlayPauseStop @@ -1347,7 +1341,6 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll } func onVrStart() { - /* self.recordingWaveImageMask.isHidden = false recordingWaveView.progress = 0.0 recordingWaveView.setProgress(recordingWaveView.progress, animated: false) @@ -1357,19 +1350,19 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll } else { startVoiceRecording() } - */ - - messageView.messageText.emojiPIcker = true - messageView.messageText.becomeFirstResponder() - messageView.messageText.emojiPIcker = false - } @objc private func openEmojiPickerModule(sender: UIButton) { - let viewController = EmojiPickerViewController() + messageView.messageText.resignFirstResponder() + let viewController = MCEmojiPickerViewController() viewController.delegate = self viewController.sourceView = sender - present(viewController, animated: true) + viewController.isDismissAfterChoosing = false + present(viewController, animated: true, completion: nil) + } + + func didGetEmoji(emoji: String) { + messageView.messageText.text = messageView.messageText.text + emoji } func startVoiceRecording() { diff --git a/Classes/Swift/Chat/Views/MessageView.swift b/Classes/Swift/Chat/Views/MessageView.swift index fb725b70c..04d96b403 100644 --- a/Classes/Swift/Chat/Views/MessageView.swift +++ b/Classes/Swift/Chat/Views/MessageView.swift @@ -32,8 +32,10 @@ class MessageView: UIView, UITextViewDelegate { let pictureButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) let voiceRecordButton = CallControlButton(buttonTheme:VoipTheme.nav_button("vr_off")) let sendButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) + let emojisButton = CallControlButton(buttonTheme:VoipTheme.nav_button("emoji")) let messageTextView = UIView() - let messageText = EmojiTextField() + let messageWithEmojiView = UIView() + let messageText = UITextView() let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png")) var fileContext = false var isComposing = false @@ -79,13 +81,21 @@ class MessageView: UIView, UITextViewDelegate { addSubview(messageTextView) messageTextView.toRightOf(voiceRecordButton, withLeftMargin: 5).toLeftOf(sendButton).matchParentHeight().done() - messageTextView.addSubview(messageText) - messageText.matchParentDimmensions(insetedByDx: 10).done() + messageTextView.addSubview(messageWithEmojiView) + messageWithEmojiView.matchParentDimmensions(insetedByDx: 10).done() + messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get() + + messageWithEmojiView.addSubview(messageText) + messageText.matchParentHeight().alignParentLeft().alignParentRight(withMargin: 40).done() messageText.font = UIFont.systemFont(ofSize: 18) messageText.delegate = self + messageWithEmojiView.addSubview(emojisButton) + emojisButton.alignParentRight().matchParentHeight().done() + UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in self.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() + self.messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get() } } @@ -106,21 +116,3 @@ class MessageView: UIView, UITextViewDelegate { } } } - -class EmojiTextField: UITextView { - var emojiPIcker = false - - // required for iOS 13 - override var textInputContextIdentifier: String? { "" } // return non-nil to show the Emoji keyboard ¯\_(ツ)_/¯ - - override var textInputMode: UITextInputMode? { - for mode in UITextInputMode.activeInputModes { - if !emojiPIcker { - return mode - } else if mode.primaryLanguage == "emoji" { - return mode - } - } - return nil - } -} diff --git a/Podfile b/Podfile index bc8703acb..723b6e2b0 100644 --- a/Podfile +++ b/Podfile @@ -29,8 +29,8 @@ target 'linphone' do pod 'SnapKit', '~> 5.6.0' pod 'DropDown' pod 'IQKeyboardManager' - pod 'SwipeCellKit' # License: https://github.com/SwipeCellKit/SwipeCellKit/blob/develop/LICENSE - pod 'EmojiPicker', :git => 'https://github.com/htmlprogrammist/EmojiPicker' + pod 'SwipeCellKit' #License: https://github.com/SwipeCellKit/SwipeCellKit/blob/develop/LICENSE + pod 'MCEmojiPicker' #License: https://github.com/izyumkin/MCEmojiPicker/blob/main/LICENSE all_pods end diff --git a/Resources/images/emoji.png b/Resources/images/emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..5b334ba099ac9b4d55be26c0a9b5ad6f26daeb9a GIT binary patch literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoY!3-q#{l5~$z`&><;1l8sqY;etTL$l`D|TpS_-*9hm5&G`TSzt#Ts zXTb1EE(!7rW?*FIbmXVcHP*PS=Ra4i{)Hg7-va$8{^$Q3KkBE$piH*z3 z&dJR$DlRRnXlw82>Yg}l#>`o>=Pp{lV&$sU>(+1BxOwZg?K=)1yL|2XjhnZhefaq4 z^OvtbfBpXR_eI_A13>E-lf2zsQV!kP!3ktLdb&7DgU$k29CI$4XA$K^!P zVJ;fR@WQ1V&rzyI|o9QSbiywHB`Vf`7gbJly~p4S*3n{i^}dd1+% zV<%=QZ~vku%C~$|YIs>&b+p@63+K*RK8@Dd$Li0=cO6UNaFMM|IJ51IWL|CPRQ7$Z zjSXJ!E|i;5{8vLHgo*EMIg6a>`ZxyBrw@H17px9u;=W`yAy`&#D$6zhcp;9r^KDpz zUNtCpb54^fNHKi4aaX~@O0^|d+l*5i-HN*!SEeynthUNo#j|DW=>zlXm_u_N&Xfyp zc(Zbg1fTx2r@D@pUb{EwuVP%EZ&L7?%gMgv$l8vzN&>&Hy!sj?zxY7ky5*cHJ(@;B zw+z!-tyve}l5svc->CB4+FPHrc5X?vJs)aY8ZJ>;bm97hpJr!gWc&-iU3lwjFUS8+ Z?9IPj{Zh__IRQhK!PC{xWt~$(69BpNFP#7Y literal 0 HcmV?d00001