Use an accessory view instead of an intermediate sheet for OPML export

This commit is contained in:
Nate Weaver
2019-10-20 21:47:05 -05:00
parent 35e7d23d8a
commit 7e98869080
7 changed files with 223 additions and 226 deletions

View File

@@ -0,0 +1,58 @@
//
// ExportOPMLAccessoryViewController.swift
// NetNewsWire
//
// Created by Nate Weaver on 2019-10-20.
// Copyright © 2019 Ranchero Software. All rights reserved.
//
import AppKit
import Account
class ExportOPMLAccessoryViewController: NSViewController {
@IBOutlet weak var accountPopUpButton: NSPopUpButton!
var selectedAccount: Account? {
accountPopUpButton.selectedItem?.representedObject as? Account
}
init() {
super.init(nibName: "ExportOPMLAccessoryView", bundle: nil)
}
// MARK: - NSViewController
required init?(coder: NSCoder) {
preconditionFailure("ExportOPMLAccessoryView.init(coder) not implemented by design.")
}
override func viewDidLoad() {
accountPopUpButton.removeAllItems()
let menu = NSMenu()
accountPopUpButton.menu = menu
for oneAccount in AccountManager.shared.sortedAccounts {
let oneMenuItem = NSMenuItem()
oneMenuItem.title = oneAccount.nameForDisplay
oneMenuItem.representedObject = oneAccount
menu.addItem(oneMenuItem)
if oneAccount.accountID == AppDefaults.exportOPMLAccountID {
accountPopUpButton.select(oneMenuItem)
}
}
}
@IBAction func accountSelected(_ popUpButton: NSPopUpButton) {
NotificationCenter.default.post(name: .ExportOPMLSelectedAccountDidChange, object: self)
}
}
extension Notification.Name {
static let ExportOPMLSelectedAccountDidChange = Notification.Name(rawValue: "SelectedAccountDidChange")
}