Add visiblity and formatting icons

This commit is contained in:
Shadowfacts 2019-06-13 12:38:40 -07:00
parent ee848d6284
commit 1997aaf915
Signed by: shadowfacts
GPG Key ID: 83FB3304046BADA4
4 changed files with 45 additions and 12 deletions

View File

@ -7,6 +7,7 @@
// //
import Pachyderm import Pachyderm
import UIKit
extension Status.Visibility { extension Status.Visibility {
@ -23,4 +24,19 @@ extension Status.Visibility {
} }
} }
var image: UIImage {
let name: String
switch self {
case .public:
name = "globe"
case .unlisted:
name = "lock.open.fill"
case .private:
name = "lock.fill"
case .direct:
name = "envelope.fill"
}
return UIImage(systemName: name)!
}
} }

View File

@ -103,7 +103,7 @@ class ComposeViewController: UIViewController {
let toolbar = UIToolbar() let toolbar = UIToolbar()
contentWarningBarButtonItem = UIBarButtonItem(title: "CW", style: .plain, target: self, action: #selector(contentWarningButtonPressed)) contentWarningBarButtonItem = UIBarButtonItem(title: "CW", style: .plain, target: self, action: #selector(contentWarningButtonPressed))
visibilityBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(visbilityButtonPressed)) visibilityBarButtonItem = UIBarButtonItem(image: Preferences.shared.defaultPostVisibility.image, style: .plain, target: self, action: #selector(visibilityButtonPressed))
toolbar.items = [ toolbar.items = [
contentWarningBarButtonItem, contentWarningBarButtonItem,
visibilityBarButtonItem, visibilityBarButtonItem,
@ -193,10 +193,16 @@ class ComposeViewController: UIViewController {
} }
return StatusFormat.allCases.map { (format) in return StatusFormat.allCases.map { (format) in
let (str, attributes) = format.title let item: UIBarButtonItem
let item = UIBarButtonItem(title: str, style: .plain, target: self, action: #selector(formatButtonPressed(_:))) if let image = format.image {
item.setTitleTextAttributes(attributes, for: .normal) item = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(formatButtonPressed(_:)))
item.setTitleTextAttributes(attributes, for: .highlighted) } else if let (str, attributes) = format.title {
item = UIBarButtonItem(title: str, style: .plain, target: self, action: #selector(formatButtonPressed(_:)))
item.setTitleTextAttributes(attributes, for: .normal)
item.setTitleTextAttributes(attributes, for: .highlighted)
} else {
fatalError("StatusFormat must have either an image or a title")
}
item.tag = StatusFormat.allCases.firstIndex(of: format)! item.tag = StatusFormat.allCases.firstIndex(of: format)!
return item return item
} }
@ -279,7 +285,7 @@ class ComposeViewController: UIViewController {
} }
func visibilityChanged() { func visibilityChanged() {
// TODO: update visiblity button image visibilityBarButtonItem.image = visibility.image
} }
func saveDraft() { func saveDraft() {
@ -349,7 +355,7 @@ class ComposeViewController: UIViewController {
updateHasChanges() updateHasChanges()
} }
@objc func visbilityButtonPressed() { @objc func visibilityButtonPressed() {
let alertController = UIAlertController(currentVisibility: self.visibility) { (visibility) in let alertController = UIAlertController(currentVisibility: self.visibility) { (visibility) in
guard let visibility = visibility else { return } guard let visibility = visibility else { return }
self.visibility = visibility self.visibility = visibility

View File

@ -23,16 +23,26 @@ enum StatusFormat: CaseIterable {
} }
} }
var title: (String, [NSAttributedString.Key: Any]) { var image: UIImage? {
let name: String
switch self { switch self {
case .italics: case .italics:
return ("I", [.font: UIFont.italicSystemFont(ofSize: 17)]) name = "italic"
case .bold: case .bold:
return ("B", [.font: UIFont.boldSystemFont(ofSize: 17)]) name = "bold"
case .strikethrough: case .strikethrough:
return ("S", [.strikethroughStyle: NSNumber(value: NSUnderlineStyle.single.rawValue)]) name = "strikethrough"
case .code: default:
return nil
}
return UIImage(systemName: name)
}
var title: (String, [NSAttributedString.Key: Any])? {
if self == .code {
return ("</>", [.font: UIFont(name: "Menlo", size: 17)!]) return ("</>", [.font: UIFont(name: "Menlo", size: 17)!])
} else {
return nil
} }
} }
} }

View File

@ -21,6 +21,7 @@ extension UIAlertController {
if visibility == currentVisibility { if visibility == currentVisibility {
action.setValue(true, forKey: "checked") action.setValue(true, forKey: "checked")
} }
action.setValue(visibility.image, forKey: "image")
addAction(action) addAction(action)
} }