From cd5e186e268ac98b1bea84f55328bed68b1707f7 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Thu, 8 Dec 2022 12:08:20 +0100 Subject: [PATCH] First View of ChatConversationSwift --- Classes/Swift/Chat/Views/MessageView.swift | 64 +++++++++++++++++++ .../Util/BackActionsNavigationView.swift | 8 ++- linphone.xcodeproj/project.pbxproj | 5 ++ 3 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 Classes/Swift/Chat/Views/MessageView.swift diff --git a/Classes/Swift/Chat/Views/MessageView.swift b/Classes/Swift/Chat/Views/MessageView.swift new file mode 100644 index 000000000..8d2ee3843 --- /dev/null +++ b/Classes/Swift/Chat/Views/MessageView.swift @@ -0,0 +1,64 @@ +// +// MessageView.swift +// linphone +// +// Created by BenoƮt Martins on 07/12/2022. +// + +import Foundation + + +class MessageView: UIView { + + let top_bar_height = 66.0 + let side_buttons_margin = 10 + + var backAction : (() -> Void)? = nil + var action1 : (() -> Void)? = nil + var action2 : (() -> Void)? = nil + + let pictureButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) + let voiceRecordButton = CallControlButton(buttonTheme:VoipTheme.nav_button("vr_off")) + let sendButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) + let messageTextView = UIView() + let messageText = UITextView() + + override init(frame: CGRect) { + super.init(frame: frame) + setupView() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setupView() + } + + private func setupView() { + backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() + + addSubview(pictureButton) + pictureButton.alignParentLeft(withMargin: side_buttons_margin).matchParentHeight().done() + pictureButton.setImage(UIImage(named:"chat_attachment_default.png"), for: UIControl.State.normal) + pictureButton.setImage(UIImage(named:"chat_attachment_over.png"), for: UIControl.State.highlighted) + pictureButton.onClickAction = backAction + + addSubview(voiceRecordButton) + voiceRecordButton.toRightOf(pictureButton, withLeftMargin: 10).matchParentHeight().done() + voiceRecordButton.size(w: 30, h: 30).done() + voiceRecordButton.onClickAction = action2 + + addSubview(sendButton) + sendButton.alignParentRight(withMargin: side_buttons_margin).matchParentHeight().done() + sendButton.setImage(UIImage(named:"chat_send_default.png"), for: UIControl.State.normal) + sendButton.setImage(UIImage(named:"chat_send_over.png"), for: UIControl.State.highlighted) + sendButton.onClickAction = action1 + + addSubview(messageTextView) + messageTextView.toRightOf(voiceRecordButton, withLeftMargin: 5).toLeftOf(sendButton).matchParentHeight().done() + + messageTextView.addSubview(messageText) + messageText.matchParentDimmensions(insetedByDx: 10).done() + messageText.font = UIFont.systemFont(ofSize: 18) + messageText.backgroundColor = UIColor.white + } +} diff --git a/Classes/Swift/Util/BackActionsNavigationView.swift b/Classes/Swift/Util/BackActionsNavigationView.swift index 9321ba806..4e3425031 100644 --- a/Classes/Swift/Util/BackActionsNavigationView.swift +++ b/Classes/Swift/Util/BackActionsNavigationView.swift @@ -28,7 +28,6 @@ import linphonesw // layout constants let top_bar_height = 66.0 let navigation_buttons_padding = 18.0 - let content_margin_top = 20 let side_buttons_margin = 5 // User by subviews @@ -42,6 +41,7 @@ import linphonesw let topBar = UIView() let scrollView = UIScrollView() let contentView = UIView() + let messageView = MessageView() var backAction : (() -> Void)? = nil var action1 : (() -> Void)? = nil var action2 : (() -> Void)? = nil @@ -71,6 +71,7 @@ import linphonesw topBar.addSubview(action1Button) action1Button.toLeftOf(action2Button, withRightMargin: 20).matchParentHeight().done() + action1Button.size(w: 35, h: 35) action1Button.onClickAction = action1 topBar.addSubview(titleLabel) @@ -81,9 +82,12 @@ import linphonesw super.viewDidLoad() view.addSubview(scrollView) - scrollView.alignUnder(view: topBar, withMargin: content_margin_top).alignParentBottom().matchParentSideBorders().done() + scrollView.alignUnder(view: topBar).alignParentBottom().matchParentSideBorders().done() scrollView.addSubview(contentView) contentView.matchBordersOf(view: view).alignParentBottom().alignParentTop().done() // don't forget a bottom constraint b/w last element of contentview and contentview + + view.addSubview(messageView) + messageView.alignParentBottom().height(top_bar_height).matchParentSideBorders().done() } diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index fdec7c40b..cb0338384 100644 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -943,6 +943,7 @@ D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D7DA18712A02598700FABA0D /* TextViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7DA18702A02598700FABA0D /* TextViewer.swift */; }; D7421D9E29228A5200290CAB /* DetailChatRoomFragment.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7421D9D29228A5200290CAB /* DetailChatRoomFragment.swift */; }; + D7013DB82940AA12004EEAAE /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7013DB72940AA12004EEAAE /* MessageView.swift */; }; D7421D9E29228A5200290CAB /* ChatConversationViewSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7421D9D29228A5200290CAB /* ChatConversationViewSwift.swift */; }; D74A44912923BAF90017D063 /* BackActionsNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D74A44902923BAF90017D063 /* BackActionsNavigationView.swift */; }; D77057F1292E4A340031A970 /* ChatConversationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D77057F0292E4A340031A970 /* ChatConversationViewModel.swift */; }; @@ -2176,6 +2177,8 @@ D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D7DA18702A02598700FABA0D /* TextViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewer.swift; sourceTree = ""; }; D7421D9D29228A5200290CAB /* DetailChatRoomFragment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailChatRoomFragment.swift; sourceTree = ""; }; + D7421D9D29228A5200290CAB /* DetailChatRoomFragment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailChatRoomFragment.swift; sourceTree = ""; }; + D7013DB72940AA12004EEAAE /* MessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageView.swift; sourceTree = ""; }; D7421D9D29228A5200290CAB /* ChatConversationViewSwift.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatConversationViewSwift.swift; sourceTree = ""; }; D74A44902923BAF90017D063 /* BackActionsNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackActionsNavigationView.swift; sourceTree = ""; }; D77057F0292E4A340031A970 /* ChatConversationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatConversationViewModel.swift; sourceTree = ""; }; @@ -3832,6 +3835,7 @@ isa = PBXGroup; children = ( D7421D9D29228A5200290CAB /* ChatConversationViewSwift.swift */, + D7013DB72940AA12004EEAAE /* MessageView.swift */, ); path = Views; sourceTree = ""; @@ -4978,6 +4982,7 @@ 8CD99A3C2090B9FA008A7CDA /* ChatConversationImdnView.m in Sources */, 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, C63F7264285A24B10066163B /* BouncingCounter.swift in Sources */, + D7013DB82940AA12004EEAAE /* MessageView.swift in Sources */, C6B4444826AADA530076C517 /* SwiftUtil.swift in Sources */, C63F7257285A24B10066163B /* ConferenceLayoutPickerView.swift in Sources */, CF15F21E20E4F9A3008B1DE6 /* UIImageViewDeletable.m in Sources */,