diff --git a/Gallery/EditTagsViewController.swift b/Gallery/EditTagsViewController.swift index 82fb6fd..f5164e5 100644 --- a/Gallery/EditTagsViewController.swift +++ b/Gallery/EditTagsViewController.swift @@ -3,6 +3,8 @@ import CoreData class EditTagsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var post: Post? + + var onDismiss: (() -> Void)? = nil @IBOutlet weak var tableView: UITableView! @IBOutlet weak var tagField: UITextField! @@ -50,6 +52,10 @@ class EditTagsViewController: UIViewController, UITableViewDelegate, UITableView @IBAction func doneAction(_ sender: Any) { dismiss(animated: true, completion: nil) + + if onDismiss != nil { + onDismiss!() + } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { diff --git a/Gallery/PostViewController.swift b/Gallery/PostViewController.swift index cbc6c75..5b7c12f 100644 --- a/Gallery/PostViewController.swift +++ b/Gallery/PostViewController.swift @@ -3,7 +3,7 @@ import CoreData import AVFoundation import AVKit -class PostViewController: UIViewController { +class PostViewController: UIViewController, UIPopoverPresentationControllerDelegate { @IBOutlet weak var imageView: UIImageView? @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 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) { super.viewWillAppear(animated) @@ -40,7 +62,7 @@ class PostViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - self.view.window?.windowScene!.title = windowTitle + updateWindowTitle() } @objc func closePopup() { @@ -64,7 +86,10 @@ class PostViewController: UIViewController { return } + newViewController.onDismiss = updateWindowTitle newViewController.post = self.post as? Post + + segue.destination.popoverPresentationController?.delegate = self } else if segue.identifier == "showInfo" { guard let newViewController = segue.destination as? InfoViewController else { return @@ -89,6 +114,10 @@ class PostViewController: UIViewController { } } } + + func popoverPresentationControllerDidDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) { + updateWindowTitle() + } } extension PostViewController { @@ -104,7 +133,6 @@ extension PostViewController { private let EditButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton") private let ShareButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton2") private let InfoButtonToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "OurButton3") -private let TitlebarToolbarIdentifier = NSToolbarItem.Identifier(rawValue: "Titlebar") extension PostViewController: NSToolbarDelegate { @objc func editTagsAction() { @@ -124,7 +152,7 @@ extension PostViewController: NSToolbarDelegate { } 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] { @@ -156,15 +184,6 @@ extension PostViewController: NSToolbarDelegate { 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 } } diff --git a/Gallery/SceneDelegate.swift b/Gallery/SceneDelegate.swift index 27fd620..9652659 100644 --- a/Gallery/SceneDelegate.swift +++ b/Gallery/SceneDelegate.swift @@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { toolbar.allowsUserCustomization = true windowScene.titlebar!.toolbar = toolbar - windowScene.titlebar!.titleVisibility = .hidden + windowScene.titlebar!.titleVisibility = .visible (window?.rootViewController as! UINavigationController).navigationBar.isHidden = true #endif diff --git a/Gallery/ViewController.swift b/Gallery/ViewController.swift index 1036c53..4cc6879 100644 --- a/Gallery/ViewController.swift +++ b/Gallery/ViewController.swift @@ -124,8 +124,7 @@ extension ViewController: NSToolbarDelegate { } func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { - return [OurButtonToolbarIdentifier2, NSToolbarItem.Identifier.flexibleSpace, - TitlebarToolbarIdentifier, NSToolbarItem.Identifier.flexibleSpace, OurButtonToolbarIdentifier] + return [OurButtonToolbarIdentifier2, NSToolbarItem.Identifier.flexibleSpace, OurButtonToolbarIdentifier] } func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] { @@ -142,15 +141,6 @@ extension ViewController: NSToolbarDelegate { 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) { let barButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.search,