alqindiirsyam 3 lat temu
rodzic
commit
04bdb27cd7

+ 1 - 2
appbuilder-ios/NexilisLite/NexilisLite/Resource/Palio.storyboard

@@ -2539,7 +2539,6 @@
                                     <constraint firstAttribute="bottom" secondItem="04I-YH-6sq" secondAttribute="bottom" constant="20" id="4Z5-vU-2FX"/>
                                     <constraint firstAttribute="trailing" secondItem="04I-YH-6sq" secondAttribute="trailing" constant="20" id="DOu-YD-eDT"/>
                                     <constraint firstAttribute="bottom" secondItem="gM4-Aa-Q5w" secondAttribute="bottom" constant="20" id="L9b-1q-AaM"/>
-                                    <constraint firstItem="Zwh-BN-IXY" firstAttribute="leading" secondItem="gM4-Aa-Q5w" secondAttribute="trailing" constant="5" id="Qcf-9J-0Pw"/>
                                     <constraint firstAttribute="trailing" secondItem="Zwh-BN-IXY" secondAttribute="trailing" constant="20" id="dSb-xp-sPu"/>
                                     <constraint firstItem="Zwh-BN-IXY" firstAttribute="leading" secondItem="yLm-Hp-3ZU" secondAttribute="leading" constant="65" id="jx0-o5-Ja0"/>
                                     <constraint firstAttribute="bottom" secondItem="Zwh-BN-IXY" secondAttribute="bottom" constant="20" id="pR1-gQ-hpK"/>
@@ -2572,6 +2571,7 @@
                         <outlet property="buttonSendSticker" destination="Y6s-g6-F6l" id="3Ar-0n-M14"/>
                         <outlet property="buttonVoice" destination="sb2-IY-k5H" id="ImE-Qy-q3l"/>
                         <outlet property="constraintBottomAttachment" destination="tbE-PI-oI9" id="zwJ-JT-Tbq"/>
+                        <outlet property="constraintLeftTextField" destination="jx0-o5-Ja0" id="1hP-FQ-qYY"/>
                         <outlet property="constraintTopTextField" destination="43A-hi-qkj" id="UCq-4N-QAW"/>
                         <outlet property="constraintViewTextField" destination="kBx-ys-A1s" id="A9C-IX-cZ2"/>
                         <outlet property="heightTextFieldSend" destination="BM5-gS-VIN" id="Ioh-Xm-Kd0"/>
@@ -2711,7 +2711,6 @@
                                 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <constraints>
                                     <constraint firstAttribute="trailing" secondItem="bW3-fS-6Qv" secondAttribute="trailing" constant="20" id="A5C-HP-gPH"/>
-                                    <constraint firstItem="bW3-fS-6Qv" firstAttribute="leading" secondItem="KSG-YH-EbU" secondAttribute="trailing" constant="5" id="GIm-9J-0dD"/>
                                     <constraint firstAttribute="bottom" secondItem="wLj-Ys-hxi" secondAttribute="bottom" constant="20" id="K4x-jy-PGW"/>
                                     <constraint firstAttribute="bottom" secondItem="bW3-fS-6Qv" secondAttribute="bottom" constant="20" id="NO5-lx-Don"/>
                                     <constraint firstAttribute="bottom" secondItem="KSG-YH-EbU" secondAttribute="bottom" constant="20" id="Pa0-Id-LcE"/>

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Resource/PreviewAttachmentImageVideo.xib

@@ -15,6 +15,7 @@
                 <outlet property="buttonCancel" destination="kDJ-TL-vNL" id="Xo6-YX-9ma"/>
                 <outlet property="buttonSend" destination="fNr-UI-Smq" id="m00-6U-HAF"/>
                 <outlet property="constraintButtonSend" destination="CSE-Zv-Ou4" id="McW-YL-LYy"/>
+                <outlet property="constraintLeftTextField" destination="EgI-40-Ggf" id="euJ-FE-vrq"/>
                 <outlet property="constraintViewTextField" destination="cJn-uR-0Xn" id="a3L-YA-T4V"/>
                 <outlet property="heightTextFieldSend" destination="4X4-Hj-TzA" id="BLV-O8-avl"/>
                 <outlet property="imagePreview" destination="1kP-2x-Lvs" id="CAj-mk-x5G"/>
@@ -71,7 +72,6 @@
                         <constraint firstItem="1kP-2x-Lvs" firstAttribute="width" secondItem="fUG-ls-mSU" secondAttribute="width" id="bXj-2J-Lqd"/>
                         <constraint firstAttribute="bottom" secondItem="TU8-ei-nsO" secondAttribute="bottom" constant="20" id="cJn-uR-0Xn"/>
                         <constraint firstItem="m6t-Me-xFW" firstAttribute="leading" secondItem="fUG-ls-mSU" secondAttribute="leading" constant="20" id="qbe-53-bQC"/>
-                        <constraint firstItem="TU8-ei-nsO" firstAttribute="leading" secondItem="m6t-Me-xFW" secondAttribute="trailing" constant="5" id="ujD-Il-wdU"/>
                         <constraint firstAttribute="bottom" secondItem="m6t-Me-xFW" secondAttribute="bottom" constant="20" id="zqw-Ge-f8S"/>
                     </constraints>
                 </scrollView>

+ 12 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift

@@ -30,6 +30,7 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
     @IBOutlet var constraintBottomAttachment: NSLayoutConstraint!
     @IBOutlet var viewTextfield: UIView!
     @IBOutlet weak var buttonAckConfidential: UIButton!
+    @IBOutlet weak var constraintLeftTextField: NSLayoutConstraint!
     public var dataPerson: [String: String?] = [:]
     var dataMessages: [[String: Any?]] = []
     var dataDates: [String] = []
@@ -113,8 +114,13 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
         
         buttonSendChat.circle()
         buttonSendChat.addTarget(self, action: #selector(sendTapped), for: .touchUpInside)
-        buttonAckConfidential.circle()
-        buttonAckConfidential.addTarget(self, action: #selector(showChooserACKConfidential), for: .touchUpInside)
+        if isContactCenter {
+            buttonAckConfidential.isHidden = true
+            constraintLeftTextField.constant = 20
+        } else {
+            buttonAckConfidential.circle()
+            buttonAckConfidential.addTarget(self, action: #selector(showChooserACKConfidential), for: .touchUpInside)
+        }
         textFieldSend.layer.cornerRadius = textFieldSend.maxCornerRadius()
         textFieldSend.layer.borderWidth = 1.0
         textFieldSend.text = "Send message".localized()
@@ -2232,6 +2238,7 @@ extension EditorPersonal: PreviewAttachmentImageVideoDelegate {
             previewImageVC.delegate = self
             previewImageVC.isAck = self.isAck
             previewImageVC.isConfidential = self.isConfidential
+            previewImageVC.isCC = self.isContactCenter
             self.present(previewImageVC, animated: true, completion: nil)
         }
     }
@@ -2545,6 +2552,9 @@ extension EditorPersonal: UITextViewDelegate {
             previewImageVC.currentTextTextField = textFieldSend.text
             previewImageVC.modalPresentationStyle = .custom
             previewImageVC.delegate = self
+            previewImageVC.isAck = self.isAck
+            previewImageVC.isConfidential = self.isConfidential
+            previewImageVC.isCC = self.isContactCenter
             self.present(previewImageVC, animated: true, completion: nil)
         }
     }

+ 75 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/PreviewAttachmentImageVideo.swift

@@ -22,12 +22,18 @@ class PreviewAttachmentImageVideo: UIViewController, UIScrollViewDelegate, UITex
     @IBOutlet var heightTextFieldSend: NSLayoutConstraint!
     @IBOutlet var constraintButtonSend: NSLayoutConstraint!
     @IBOutlet var scrollViewImage: UIScrollView!
+    @IBOutlet weak var buttonAckConfidential: UIButton!
+    @IBOutlet weak var constraintLeftTextField: NSLayoutConstraint!
     var imageVideoData: [UIImagePickerController.InfoKey: Any]?
     var image: UIImage?
     var currentTextTextField: String?
     var delegate: PreviewAttachmentImageVideoDelegate?
     var isHiddenTextField = false
     var fromCopy = false
+    var isConfidential = false
+    var isAck = false
+    var isGroup = false
+    var isCC = false
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -74,6 +80,20 @@ class PreviewAttachmentImageVideo: UIViewController, UIScrollViewDelegate, UITex
             
             buttonSend.circle()
             buttonSend.addTarget(self, action: #selector(sendTapped), for: .touchUpInside)
+            if isCC {
+                buttonAckConfidential.isHidden = true
+                constraintLeftTextField.constant = 20
+            } else {
+                buttonAckConfidential.circle()
+                buttonAckConfidential.addTarget(self, action: #selector(showChooserACKConfidential), for: .touchUpInside)
+                let imageConfidential = resizeImage(image: UIImage(named: "confidential_icon", in: Bundle.resourceBundle(for: Nexilis.self), with: nil)!, targetSize: CGSize(width: 30, height: 30)).withRenderingMode(.alwaysOriginal)
+                let imageAck = resizeImage(image: UIImage(named: "ack_icon", in: Bundle.resourceBundle(for: Nexilis.self), with: nil)!, targetSize: CGSize(width: 30, height: 30)).withRenderingMode(.alwaysOriginal)
+                if isAck {
+                    buttonAckConfidential.setImage(imageAck, for: .normal)
+                } else if isConfidential {
+                    buttonAckConfidential.setImage(imageConfidential, for: .normal)
+                }
+            }
             
             textFieldSend.layer.cornerRadius = textFieldSend.maxCornerRadius()
             textFieldSend.layer.borderWidth = 1.0
@@ -102,6 +122,61 @@ class PreviewAttachmentImageVideo: UIViewController, UIScrollViewDelegate, UITex
         buttonCancel.addTarget(self, action: #selector(cancelTapped), for: .touchUpInside)
     }
     
+    @objc func showChooserACKConfidential() {
+        let alertController = UIAlertController(title: "Message Mode".localized(), message: "Select".localized() + " " + "Message Mode".localized(), preferredStyle: .actionSheet)
+        if !self.isGroup {
+            let imageConfidential = resizeImage(image: UIImage(named: "confidential_icon", in: Bundle.resourceBundle(for: Nexilis.self), with: nil)!, targetSize: CGSize(width: 30, height: 30)).withRenderingMode(.alwaysOriginal)
+            let confidentialAction = UIAlertAction(title: "Confidential Message".localized(), style: .default, handler: { (UIAlertAction) in
+                if !self.isConfidential {
+                    self.isConfidential = true
+                    self.buttonAckConfidential.setImage(imageConfidential, for: .normal)
+                }
+                if self.isAck {
+                    self.isAck = false
+                }
+                self.setPreviousVariableMessageMode()
+            })
+            confidentialAction.setValue(imageConfidential, forKey: "image")
+            alertController.addAction(confidentialAction)
+        }
+        let imageAck = resizeImage(image: UIImage(named: "ack_icon", in: Bundle.resourceBundle(for: Nexilis.self), with: nil)!, targetSize: CGSize(width: 30, height: 30)).withRenderingMode(.alwaysOriginal)
+        let ackAction = UIAlertAction(title: "Confirmation Message".localized(), style: .default, handler: { (UIAlertAction) in
+            if !self.isAck {
+                self.isAck = true
+                self.buttonAckConfidential.setImage(imageAck, for: .normal)
+            }
+            if !self.isGroup {
+                if self.isConfidential {
+                    self.isConfidential = false
+                }
+            }
+            self.setPreviousVariableMessageMode()
+        })
+        ackAction.setValue(imageAck, forKey: "image")
+        alertController.addAction(ackAction)
+        alertController.addAction(UIAlertAction(title: "Cancel".localized(), style: .cancel, handler: { (UIAlertAction) in
+            if !self.isGroup {
+                self.isConfidential = false
+            }
+            self.isAck = false
+            self.buttonAckConfidential.setImage(UIImage(systemName: "gearshape.fill", withConfiguration: UIImage.SymbolConfiguration(scale: .large))?.withTintColor(.white).withRenderingMode(.alwaysTemplate), for: .normal)
+            self.setPreviousVariableMessageMode()
+        }))
+        self.present(alertController, animated: true, completion: nil)
+    }
+    
+    func setPreviousVariableMessageMode() {
+        let stack = self.presentingViewController as! UINavigationController
+        let vc = stack.viewControllers[stack.viewControllers.count - 1]
+        if vc is EditorPersonal {
+            let editorVc = vc as! EditorPersonal
+            editorVc.setAckConfidential(isAck: self.isAck, isConfidential: self.isConfidential)
+        } else {
+            let editorVc = vc as! EditorGroup
+            editorVc.setAckConfidential(isAck: self.isAck, isConfidential: self.isConfidential)
+        }
+    }
+    
     func textViewDidChange(_ textView: UITextView) {
         textView.attributedText = textView.text.richText(isEditing: true)
     }

+ 1 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/PreviewAttachmentImageVideo.xib

@@ -15,6 +15,7 @@
                 <outlet property="buttonCancel" destination="kDJ-TL-vNL" id="Xo6-YX-9ma"/>
                 <outlet property="buttonSend" destination="fNr-UI-Smq" id="m00-6U-HAF"/>
                 <outlet property="constraintButtonSend" destination="CSE-Zv-Ou4" id="McW-YL-LYy"/>
+                <outlet property="constraintLeftTextField" destination="EgI-40-Ggf" id="euJ-FE-vrq"/>
                 <outlet property="constraintViewTextField" destination="cJn-uR-0Xn" id="a3L-YA-T4V"/>
                 <outlet property="heightTextFieldSend" destination="4X4-Hj-TzA" id="BLV-O8-avl"/>
                 <outlet property="imagePreview" destination="1kP-2x-Lvs" id="CAj-mk-x5G"/>
@@ -71,7 +72,6 @@
                         <constraint firstItem="1kP-2x-Lvs" firstAttribute="width" secondItem="fUG-ls-mSU" secondAttribute="width" id="bXj-2J-Lqd"/>
                         <constraint firstAttribute="bottom" secondItem="TU8-ei-nsO" secondAttribute="bottom" constant="20" id="cJn-uR-0Xn"/>
                         <constraint firstItem="m6t-Me-xFW" firstAttribute="leading" secondItem="fUG-ls-mSU" secondAttribute="leading" constant="20" id="qbe-53-bQC"/>
-                        <constraint firstItem="TU8-ei-nsO" firstAttribute="leading" secondItem="m6t-Me-xFW" secondAttribute="trailing" constant="5" id="ujD-Il-wdU"/>
                         <constraint firstAttribute="bottom" secondItem="m6t-Me-xFW" secondAttribute="bottom" constant="20" id="zqw-Ge-f8S"/>
                     </constraints>
                 </scrollView>