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

@ -4,6 +4,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?) {

View file

@ -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
}
}

View file

@ -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

View file

@ -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] {
@ -143,15 +142,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,
target: self,