Переглянути джерело

some UI/UX improvements wrt voice messaging: 1 tap to cancel everything, 'Send' instead of 'Done', less colors

cyberta 5 роки тому
батько
коміт
870e74c486
1 змінених файлів з 16 додано та 12 видалено
  1. 16 12
      deltachat-ios/Controller/AudioRecorderController.swift

+ 16 - 12
deltachat-ios/Controller/AudioRecorderController.swift

@@ -58,17 +58,18 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
     }()
 
     lazy var doneButton: UIBarButtonItem = {
-        let button = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonItem.SystemItem.done,
+        let button = UIBarButtonItem.init(title: String.localized("menu_send"),
+                                          style: UIBarButtonItem.Style.done,
                                           target: self,
                                           action: #selector(doneAction))
         return button
     }()
 
     lazy var cancelRecordingButton: UIBarButtonItem = {
-        let button = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonItem.SystemItem.cancel,
+        let button = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonItem.SystemItem.trash,
                                                  target: self,
                                                  action: #selector(cancelRecordingAction))
-        button.tintColor = highlightedTintColor
+        button.tintColor = UIColor.themeColor(light: .darkGray, dark: .lightGray)
         return button
     }()
 
@@ -76,7 +77,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
         let button = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonItem.SystemItem.pause,
                                           target: self,
                                           action: #selector(pauseRecordingButtonAction))
-        button.tintColor = highlightedTintColor
+        button.tintColor = UIColor.themeColor(light: .darkGray, dark: .lightGray)
         return button
     }()
 
@@ -85,7 +86,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
                                            style: UIBarButtonItem.Style.plain,
                                            target: self,
                                            action: #selector(recordingButtonAction))
-        button.tintColor = normalTintColor
+        button.tintColor = UIColor.themeColor(light: .darkGray, dark: .lightGray)
         return button
     }()
 
@@ -94,7 +95,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
                                           style: UIBarButtonItem.Style.plain,
                                           target: self,
                                           action: #selector(continueRecordingButtonAction))
-        button.tintColor = highlightedTintColor
+        button.tintColor = UIColor.themeColor(light: .darkGray, dark: .lightGray)
         return button
     }()
 
@@ -188,8 +189,9 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
 
     @objc func recordingButtonAction() {
         logger.debug("start recording")
-        self.setToolbarItems([flexItem, pauseButton, flexItem], animated: true)
-        self.navigationItem.setLeftBarButton(cancelRecordingButton, animated: true)
+        self.setToolbarItems([flexItem, cancelRecordingButton, flexItem, pauseButton, flexItem], animated: true)
+        cancelRecordingButton.isEnabled = true
+        doneButton.isEnabled = true
         if FileManager.default.fileExists(atPath: recordingFilePath) {
             _ = try? FileManager.default.removeItem(atPath: recordingFilePath)
         }
@@ -209,7 +211,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
 
     @objc func continueRecordingButtonAction() {
         logger.debug("continue recording")
-        self.setToolbarItems([flexItem, pauseButton, flexItem], animated: true)
+        self.setToolbarItems([flexItem, cancelRecordingButton, flexItem, pauseButton, flexItem], animated: true)
         isRecordingPaused = false
         audioRecorder?.record()
     }
@@ -218,12 +220,14 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
         logger.debug("pause")
         isRecordingPaused = true
         audioRecorder?.pause()
-        self.setToolbarItems([flexItem, continueRecordingButton, flexItem], animated: true)
+        self.setToolbarItems([flexItem, cancelRecordingButton, flexItem, continueRecordingButton, flexItem], animated: true)
     }
 
     @objc func cancelRecordingAction() {
         logger.debug("cancel recording")
         isRecordingPaused = false
+        cancelRecordingButton.isEnabled = false
+        doneButton.isEnabled = false
         audioRecorder?.stop()
         _ = try? FileManager.default.removeItem(atPath: recordingFilePath)
         self.navigationItem.title = String.localized("voice_message")
@@ -231,6 +235,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
 
     @objc func cancelAction() {
         logger.debug("cancel Action")
+        cancelRecordingAction()
         dismiss(animated: true, completion: nil)
     }
 
@@ -250,7 +255,7 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
 
     func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
         if flag {
-            self.setToolbarItems([flexItem, startRecordingButton, flexItem], animated: true)
+            self.setToolbarItems([flexItem, cancelRecordingButton, flexItem, startRecordingButton, flexItem], animated: true)
             if let oldSessionCategory = oldSessionCategory {
                _ = try? AVAudioSession.sharedInstance().setCategory(oldSessionCategory)
                UIApplication.shared.isIdleTimerDisabled = wasIdleTimerDisabled
@@ -258,7 +263,6 @@ class AudioRecorderController: UIViewController, AVAudioRecorderDelegate {
         } else {
             try? FileManager.default.removeItem(at: URL(fileURLWithPath: recordingFilePath))
         }
-         self.navigationItem.setLeftBarButton(cancelButton, animated: true)
     }
 
     func audioRecorderEncodeErrorDidOccur(_ recorder: AVAudioRecorder, error: Error?) {