forked from shadowfacts/Tusker
Add visiblity and formatting icons
This commit is contained in:
parent
ee848d6284
commit
1997aaf915
|
@ -7,6 +7,7 @@
|
|||
//
|
||||
|
||||
import Pachyderm
|
||||
import UIKit
|
||||
|
||||
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)!
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ class ComposeViewController: UIViewController {
|
|||
|
||||
let toolbar = UIToolbar()
|
||||
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 = [
|
||||
contentWarningBarButtonItem,
|
||||
visibilityBarButtonItem,
|
||||
|
@ -193,10 +193,16 @@ class ComposeViewController: UIViewController {
|
|||
}
|
||||
|
||||
return StatusFormat.allCases.map { (format) in
|
||||
let (str, attributes) = format.title
|
||||
let item = UIBarButtonItem(title: str, style: .plain, target: self, action: #selector(formatButtonPressed(_:)))
|
||||
item.setTitleTextAttributes(attributes, for: .normal)
|
||||
item.setTitleTextAttributes(attributes, for: .highlighted)
|
||||
let item: UIBarButtonItem
|
||||
if let image = format.image {
|
||||
item = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(formatButtonPressed(_:)))
|
||||
} 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)!
|
||||
return item
|
||||
}
|
||||
|
@ -279,7 +285,7 @@ class ComposeViewController: UIViewController {
|
|||
}
|
||||
|
||||
func visibilityChanged() {
|
||||
// TODO: update visiblity button image
|
||||
visibilityBarButtonItem.image = visibility.image
|
||||
}
|
||||
|
||||
func saveDraft() {
|
||||
|
@ -349,7 +355,7 @@ class ComposeViewController: UIViewController {
|
|||
updateHasChanges()
|
||||
}
|
||||
|
||||
@objc func visbilityButtonPressed() {
|
||||
@objc func visibilityButtonPressed() {
|
||||
let alertController = UIAlertController(currentVisibility: self.visibility) { (visibility) in
|
||||
guard let visibility = visibility else { return }
|
||||
self.visibility = visibility
|
||||
|
|
|
@ -23,16 +23,26 @@ enum StatusFormat: CaseIterable {
|
|||
}
|
||||
}
|
||||
|
||||
var title: (String, [NSAttributedString.Key: Any]) {
|
||||
var image: UIImage? {
|
||||
let name: String
|
||||
switch self {
|
||||
case .italics:
|
||||
return ("I", [.font: UIFont.italicSystemFont(ofSize: 17)])
|
||||
name = "italic"
|
||||
case .bold:
|
||||
return ("B", [.font: UIFont.boldSystemFont(ofSize: 17)])
|
||||
name = "bold"
|
||||
case .strikethrough:
|
||||
return ("S", [.strikethroughStyle: NSNumber(value: NSUnderlineStyle.single.rawValue)])
|
||||
case .code:
|
||||
name = "strikethrough"
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return UIImage(systemName: name)
|
||||
}
|
||||
|
||||
var title: (String, [NSAttributedString.Key: Any])? {
|
||||
if self == .code {
|
||||
return ("</>", [.font: UIFont(name: "Menlo", size: 17)!])
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ extension UIAlertController {
|
|||
if visibility == currentVisibility {
|
||||
action.setValue(true, forKey: "checked")
|
||||
}
|
||||
action.setValue(visibility.image, forKey: "image")
|
||||
addAction(action)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue