Sfoglia il codice sorgente

move draft UI code to DraftArea class

cyberta 4 anni fa
parent
commit
b4a7bb5a47

+ 4 - 0
deltachat-ios.xcodeproj/project.pbxproj

@@ -25,6 +25,7 @@
 		303492A5257546B400A523D0 /* DraftPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492A4257546B400A523D0 /* DraftPreview.swift */; };
 		303492A5257546B400A523D0 /* DraftPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492A4257546B400A523D0 /* DraftPreview.swift */; };
 		303492AD2577CAC300A523D0 /* FileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492AC2577CAC300A523D0 /* FileView.swift */; };
 		303492AD2577CAC300A523D0 /* FileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492AC2577CAC300A523D0 /* FileView.swift */; };
 		303492B32577E40700A523D0 /* DocumentPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492B22577E40700A523D0 /* DocumentPreview.swift */; };
 		303492B32577E40700A523D0 /* DocumentPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492B22577E40700A523D0 /* DocumentPreview.swift */; };
+		303492CB257A814200A523D0 /* DraftArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303492CA257A814200A523D0 /* DraftArea.swift */; };
 		304219D3243F588500516852 /* DcCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 304219D1243F588500516852 /* DcCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		304219D3243F588500516852 /* DcCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 304219D1243F588500516852 /* DcCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		304219D92440734A00516852 /* DcMsg+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304219D82440734A00516852 /* DcMsg+Extension.swift */; };
 		304219D92440734A00516852 /* DcMsg+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304219D82440734A00516852 /* DcMsg+Extension.swift */; };
 		304F5E44244F571C00462538 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A9FB14A1FB061E2001FEA36 /* Assets.xcassets */; };
 		304F5E44244F571C00462538 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A9FB14A1FB061E2001FEA36 /* Assets.xcassets */; };
@@ -225,6 +226,7 @@
 		303492A4257546B400A523D0 /* DraftPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraftPreview.swift; sourceTree = "<group>"; };
 		303492A4257546B400A523D0 /* DraftPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraftPreview.swift; sourceTree = "<group>"; };
 		303492AC2577CAC300A523D0 /* FileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileView.swift; sourceTree = "<group>"; };
 		303492AC2577CAC300A523D0 /* FileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileView.swift; sourceTree = "<group>"; };
 		303492B22577E40700A523D0 /* DocumentPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPreview.swift; sourceTree = "<group>"; };
 		303492B22577E40700A523D0 /* DocumentPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPreview.swift; sourceTree = "<group>"; };
+		303492CA257A814200A523D0 /* DraftArea.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DraftArea.swift; sourceTree = "<group>"; };
 		304219D1243F588500516852 /* DcCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DcCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		304219D1243F588500516852 /* DcCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DcCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		304219D82440734A00516852 /* DcMsg+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DcMsg+Extension.swift"; sourceTree = "<group>"; };
 		304219D82440734A00516852 /* DcMsg+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DcMsg+Extension.swift"; sourceTree = "<group>"; };
 		3052C609253F082E007D13EA /* MessageLabelDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageLabelDelegate.swift; sourceTree = "<group>"; };
 		3052C609253F082E007D13EA /* MessageLabelDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageLabelDelegate.swift; sourceTree = "<group>"; };
@@ -559,6 +561,7 @@
 				303492A4257546B400A523D0 /* DraftPreview.swift */,
 				303492A4257546B400A523D0 /* DraftPreview.swift */,
 				303492AC2577CAC300A523D0 /* FileView.swift */,
 				303492AC2577CAC300A523D0 /* FileView.swift */,
 				303492B22577E40700A523D0 /* DocumentPreview.swift */,
 				303492B22577E40700A523D0 /* DocumentPreview.swift */,
+				303492CA257A814200A523D0 /* DraftArea.swift */,
 			);
 			);
 			path = Views;
 			path = Views;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -1203,6 +1206,7 @@
 				30A4149724F6EFBE00EC91EB /* InfoMessageCell.swift in Sources */,
 				30A4149724F6EFBE00EC91EB /* InfoMessageCell.swift in Sources */,
 				302B84C6239676F0001C261F /* AvatarHelper.swift in Sources */,
 				302B84C6239676F0001C261F /* AvatarHelper.swift in Sources */,
 				AE77838D23E32ED20093EABD /* ContactDetailViewModel.swift in Sources */,
 				AE77838D23E32ED20093EABD /* ContactDetailViewModel.swift in Sources */,
+				303492CB257A814200A523D0 /* DraftArea.swift in Sources */,
 				AEE6EC3F2282C59C00EDC689 /* GroupMembersViewController.swift in Sources */,
 				AEE6EC3F2282C59C00EDC689 /* GroupMembersViewController.swift in Sources */,
 				B26B3BC7236DC3DC008ED35A /* SwitchCell.swift in Sources */,
 				B26B3BC7236DC3DC008ED35A /* SwitchCell.swift in Sources */,
 				AEE700252438E0E500D6992E /* ProgressAlertHandler.swift in Sources */,
 				AEE700252438E0E500D6992E /* ProgressAlertHandler.swift in Sources */,

+ 5 - 23
deltachat-ios/Chat/ChatViewController.swift

@@ -30,24 +30,10 @@ class ChatViewController: UITableViewController {
     /// The `InputBarAccessoryView` used as the `inputAccessoryView` in the view controller.
     /// The `InputBarAccessoryView` used as the `inputAccessoryView` in the view controller.
     open var messageInputBar = InputBarAccessoryView()
     open var messageInputBar = InputBarAccessoryView()
 
 
-    lazy var quotePreview: QuotePreview = {
-        let view = QuotePreview()
-        view.delegate = self
-        view.translatesAutoresizingMaskIntoConstraints = false
-        return view
-    }()
-
-    lazy var mediaPreview: MediaPreview = {
-        let view = MediaPreview()
-        view.delegate = self
+    lazy var draftArea: DraftArea = {
+        let view = DraftArea()
         view.translatesAutoresizingMaskIntoConstraints = false
         view.translatesAutoresizingMaskIntoConstraints = false
-        return view
-    }()
-
-    lazy var documentPreview: DocumentPreview = {
-        let view = DocumentPreview()
         view.delegate = self
         view.delegate = self
-        view.translatesAutoresizingMaskIntoConstraints = false
         return view
         return view
     }()
     }()
 
 
@@ -408,11 +394,9 @@ class ChatViewController: UITableViewController {
     }
     }
 
 
     private func configureDraftArea(draft: DraftModel) {
     private func configureDraftArea(draft: DraftModel) {
-        quotePreview.configure(draft: draft)
-        mediaPreview.configure(draft: draft)
-        documentPreview.configure(draft: draft)
+        draftArea.configureDraftArea(draft: draft)
         // setStackViewItems recalculates the proper messageInputBar height
         // setStackViewItems recalculates the proper messageInputBar height
-        messageInputBar.setStackViewItems([quotePreview, mediaPreview, documentPreview], forStack: .top, animated: true)
+        messageInputBar.setStackViewItems([draftArea], forStack: .top, animated: true)
     }
     }
 
 
     override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
     override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
@@ -1242,9 +1226,7 @@ extension ChatViewController: InputBarAccessoryViewDelegate {
         }
         }
         inputBar.inputTextView.text = String()
         inputBar.inputTextView.text = String()
         inputBar.inputTextView.attributedText = nil
         inputBar.inputTextView.attributedText = nil
-        self.quotePreview.cancel()
-        self.mediaPreview.cancel()
-        self.documentPreview.cancel()
+        draftArea.cancel()
     }
     }
 
 
     func inputBar(_ inputBar: InputBarAccessoryView, textViewTextDidChangeTo text: String) {
     func inputBar(_ inputBar: InputBarAccessoryView, textViewTextDidChangeTo text: String) {

+ 82 - 0
deltachat-ios/Chat/Views/DraftArea.swift

@@ -0,0 +1,82 @@
+
+import UIKit
+import DcCore
+import InputBarAccessoryView
+
+public class DraftArea: UIView, InputItem {
+
+    public var inputBarAccessoryView: InputBarAccessoryView?
+    public var parentStackViewPosition: InputStackView.Position?
+    public func textViewDidChangeAction(with textView: InputTextView) {}
+    public func keyboardSwipeGestureAction(with gesture: UISwipeGestureRecognizer) {}
+    public func keyboardEditingEndsAction() {}
+    public func keyboardEditingBeginsAction() {}
+
+    weak var delegate: DraftPreviewDelegate? {
+        set {
+            quotePreview.delegate = newValue
+            mediaPreview.delegate = newValue
+            documentPreview.delegate = newValue
+        }
+        get {
+            return quotePreview.delegate
+        }
+    }
+
+    lazy var mainContentView: UIStackView = {
+        let view = UIStackView(arrangedSubviews: [quotePreview, mediaPreview, documentPreview])
+        view.translatesAutoresizingMaskIntoConstraints = false
+        view.axis = .vertical
+        return view
+    }()
+
+    lazy var quotePreview: QuotePreview = {
+        let view = QuotePreview()
+        view.translatesAutoresizingMaskIntoConstraints = false
+        return view
+    }()
+
+    lazy var mediaPreview: MediaPreview = {
+        let view = MediaPreview()
+        view.translatesAutoresizingMaskIntoConstraints = false
+        return view
+    }()
+
+    lazy var documentPreview: DocumentPreview = {
+        let view = DocumentPreview()
+        view.translatesAutoresizingMaskIntoConstraints = false
+        return view
+    }()
+
+    convenience init() {
+        self.init(frame: .zero)
+
+    }
+
+    public override init(frame: CGRect) {
+        super.init(frame: frame)
+        self.setupSubviews()
+    }
+
+    required init(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+    public func setupSubviews() {
+        addSubview(mainContentView)
+        mainContentView.fillSuperview()
+    }
+
+    public func configureDraftArea(draft: DraftModel) {
+        quotePreview.configure(draft: draft)
+        mediaPreview.configure(draft: draft)
+        documentPreview.configure(draft: draft)
+    }
+
+    public func cancel() {
+        quotePreview.cancel()
+        mediaPreview.cancel()
+        documentPreview.cancel()
+    }
+
+}

+ 1 - 9
deltachat-ios/Chat/Views/DraftPreview.swift

@@ -1,5 +1,4 @@
 import UIKit
 import UIKit
-import InputBarAccessoryView
 import DcCore
 import DcCore
 
 
 public protocol DraftPreviewDelegate: class {
 public protocol DraftPreviewDelegate: class {
@@ -8,14 +7,7 @@ public protocol DraftPreviewDelegate: class {
     func onCancelQuote()
     func onCancelQuote()
 }
 }
 
 
-public class DraftPreview: UIView, InputItem {
-
-    public var inputBarAccessoryView: InputBarAccessoryView?
-    public var parentStackViewPosition: InputStackView.Position?
-    public func textViewDidChangeAction(with textView: InputTextView) {}
-    public func keyboardSwipeGestureAction(with gesture: UISwipeGestureRecognizer) {}
-    public func keyboardEditingEndsAction() {}
-    public func keyboardEditingBeginsAction() {}
+public class DraftPreview: UIView {
 
 
     lazy var cancelButton: UIView = {
     lazy var cancelButton: UIView = {
         let view = UIView()
         let view = UIView()