Archived
1
Fork 0

Show the post tags in the window title

This commit is contained in:
redstrate 2020-03-16 13:07:20 -04:00
parent 0527fc5499
commit edc9b3a76b
4 changed files with 41 additions and 26 deletions

View file

@ -3,6 +3,8 @@ import CoreData
class EditTagsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { class EditTagsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var post: Post? var post: Post?
var onDismiss: (() -> Void)? = nil
@IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tagField: UITextField! @IBOutlet weak var tagField: UITextField!
@ -50,6 +52,10 @@ class EditTagsViewController: UIViewController, UITableViewDelegate, UITableView
@IBAction func doneAction(_ sender: Any) { @IBAction func doneAction(_ sender: Any) {
dismiss(animated: true, completion: nil) dismiss(animated: true, completion: nil)
if onDismiss != nil {
onDismiss!()
}
} }
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

View file

@ -3,7 +3,7 @@ import CoreData
import AVFoundation import AVFoundation
import AVKit import AVKit
class PostViewController: UIViewController { class PostViewController: UIViewController, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var imageView: UIImageView? @IBOutlet weak var imageView: UIImageView?
@IBOutlet weak var shareButton: UIBarButtonItem? @IBOutlet weak var shareButton: UIBarButtonItem?
@ -13,7 +13,29 @@ class PostViewController: UIViewController {
let documentsPath : URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].absoluteURL let documentsPath : URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].absoluteURL
let windowTitle = "Post" func updateWindowTitle() {
var windowTitle = "Untagged Post"
var tagList = ""
guard let postObject = post as? Post else {
return
}
for tag in postObject.tags! {
if !tagList.isEmpty {
tagList += ", "
}
tagList += (tag as! Tag).name!
}
if !tagList.isEmpty {
windowTitle = tagList
}
self.view.window?.windowScene!.title = windowTitle
}
override func viewWillAppear(_ animated: Bool) { override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated) super.viewWillAppear(animated)
@ -40,7 +62,7 @@ class PostViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) { override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated) super.viewDidAppear(animated)
self.view.window?.windowScene!.title = windowTitle updateWindowTitle()
} }
@objc func closePopup() { @objc func closePopup() {
@ -64,7 +86,10 @@ class PostViewController: UIViewController {
return return
} }
newViewController.onDismiss = updateWindowTitle
newViewController.post = self.post as? Post newViewController.post = self.post as? Post
segue.destination.popoverPresentationController?.delegate = self
} else if segue.identifier == "showInfo" { } else if segue.identifier == "showInfo" {
guard let newViewController = segue.destination as? InfoViewController else { guard let newViewController = segue.destination as? InfoViewController else {
return return
@ -89,6 +114,10 @@ class PostViewController: UIViewController {
} }
} }
} }
func popoverPresentationControllerDidDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) {
updateWindowTitle()
}
} }
extension PostViewController { extension PostViewController {
@ -104,7 +133,6 @@ extension PostViewController {
private let EditButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton") private let EditButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton")
private let ShareButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton2") private let ShareButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton2")
private let InfoButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton3") private let InfoButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton3")
private let TitlebarToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "Titlebar")
extension PostViewController: NSToolbarDelegate { extension PostViewController: NSToolbarDelegate {
@objc func editTagsAction() { @objc func editTagsAction() {
@ -124,7 +152,7 @@ extension PostViewController: NSToolbarDelegate {
} }
func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [NSToolbarItem.Identifier.flexibleSpace, TitlebarToolbarIdentifier, NSToolbarItem.Identifier.flexibleSpace, InfoButtonToolbarIdentifier, EditButtonToolbarIdentifier, ShareButtonToolbarIdentifier] return [NSToolbarItem.Identifier.flexibleSpace, InfoButtonToolbarIdentifier, EditButtonToolbarIdentifier, ShareButtonToolbarIdentifier]
} }
func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
@ -156,15 +184,6 @@ extension PostViewController: NSToolbarDelegate {
return button return button
} }
if(itemIdentifier == TitlebarToolbarIdentifier) {
let barButtonItem = UIBarButtonItem(title: windowTitle, style: UIBarButtonItem.Style.plain, target: nil, action: nil)
let title = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: barButtonItem)
title.label = "Title"
return title
}
return nil return nil
} }
} }

View file

@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
toolbar.allowsUserCustomization = true toolbar.allowsUserCustomization = true
windowScene.titlebar!.toolbar = toolbar windowScene.titlebar!.toolbar = toolbar
windowScene.titlebar!.titleVisibility = .hidden windowScene.titlebar!.titleVisibility = .visible
(window?.rootViewController as! UINavigationController).navigationBar.isHidden = true (window?.rootViewController as! UINavigationController).navigationBar.isHidden = true
#endif #endif

View file

@ -124,8 +124,7 @@ extension ViewController: NSToolbarDelegate {
} }
func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
return [OurButtonToolbarIdentifier2, NSToolbarItem.Identifier.flexibleSpace, return [OurButtonToolbarIdentifier2, NSToolbarItem.Identifier.flexibleSpace, OurButtonToolbarIdentifier]
TitlebarToolbarIdentifier, NSToolbarItem.Identifier.flexibleSpace, OurButtonToolbarIdentifier]
} }
func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
@ -142,15 +141,6 @@ extension ViewController: NSToolbarDelegate {
return button return button
} }
if(itemIdentifier == TitlebarToolbarIdentifier) {
let barButtonItem = UIBarButtonItem(title: windowTitle, style: UIBarButtonItem.Style.plain, target: nil, action: nil)
let title = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: barButtonItem)
title.label = "Title"
return title
}
if (itemIdentifier == OurButtonToolbarIdentifier) { if (itemIdentifier == OurButtonToolbarIdentifier) {
let barButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.search, let barButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.search,