diff --git a/Frameworks/Account/AccountManager.swift b/Frameworks/Account/AccountManager.swift
index 9bc984c17..1bd871834 100644
--- a/Frameworks/Account/AccountManager.swift
+++ b/Frameworks/Account/AccountManager.swift
@@ -104,8 +104,10 @@ public final class AccountManager: UnreadCountProvider {
let account = Account(dataFolder: accountFolder, type: type, accountID: accountID)!
accountsDictionary[accountID] = account
- return account
+ NotificationCenter.default.post(name: .AccountsDidChangeNotification, object: self)
+
+ return account
}
public func existingAccount(with accountID: String) -> Account? {
diff --git a/Mac/AppImages.swift b/Mac/AppImages.swift
index c99342a91..f48b8bec4 100644
--- a/Mac/AppImages.swift
+++ b/Mac/AppImages.swift
@@ -27,15 +27,11 @@ struct AppImages {
}()
static var accountLocal: RSImage! = {
- let image = RSImage(named: "accountLocal")
- image?.isTemplate = true
- return image
+ return RSImage(named: "accountLocal")
}()
static var accountFeedbin: RSImage! = {
- let image = RSImage(named: "accountFeedbin")
- image?.isTemplate = true
- return image
+ return RSImage(named: "accountFeedbin")
}()
}
diff --git a/Mac/MainWindow/Sidebar/SidebarViewController.swift b/Mac/MainWindow/Sidebar/SidebarViewController.swift
index 18f856ca2..b1f64175e 100644
--- a/Mac/MainWindow/Sidebar/SidebarViewController.swift
+++ b/Mac/MainWindow/Sidebar/SidebarViewController.swift
@@ -53,6 +53,7 @@ protocol SidebarDelegate: class {
NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(containerChildrenDidChange(_:)), name: .ChildrenDidChange, object: nil)
+ NotificationCenter.default.addObserver(self, selector: #selector(accountsDidChangeNotification(_:)), name: .AccountsDidChangeNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(userDidAddFeed(_:)), name: .UserDidAddFeed, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(batchUpdateDidPerform(_:)), name: .BatchUpdateDidPerform, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(faviconDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil)
@@ -110,6 +111,10 @@ protocol SidebarDelegate: class {
rebuildTreeAndRestoreSelection()
}
+ @objc func accountsDidChangeNotification(_ notification: Notification) {
+ rebuildTreeAndRestoreSelection()
+ }
+
@objc func batchUpdateDidPerform(_ notification: Notification) {
rebuildTreeAndRestoreSelection()
}
diff --git a/Mac/Preferences/Accounts/AccountsAddLocal.xib b/Mac/Preferences/Accounts/AccountsAddLocal.xib
new file mode 100644
index 000000000..9e6ec3d2f
--- /dev/null
+++ b/Mac/Preferences/Accounts/AccountsAddLocal.xib
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift b/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift
new file mode 100644
index 000000000..f89ee0e4a
--- /dev/null
+++ b/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift
@@ -0,0 +1,43 @@
+//
+// AccountsAddLocalWindowController.swift
+// NetNewsWire
+//
+// Created by Maurice Parker on 5/1/19.
+// Copyright © 2019 Ranchero Software. All rights reserved.
+//
+
+import AppKit
+import Account
+
+class AccountsAddLocalWindowController: NSWindowController {
+
+ @IBOutlet weak var nameTextField: NSTextField!
+
+ private weak var hostWindow: NSWindow?
+
+ convenience init() {
+ self.init(windowNibName: NSNib.Name("AccountsAddLocal"))
+ }
+
+ // MARK: API
+
+ func runSheetOnWindow(_ hostWindow: NSWindow) {
+ self.hostWindow = hostWindow
+ hostWindow.beginSheet(window!)
+ }
+
+ // MARK: Actions
+
+ @IBAction func cancel(_ sender: Any) {
+ hostWindow!.endSheet(window!, returnCode: NSApplication.ModalResponse.cancel)
+ }
+
+ @IBAction func create(_ sender: Any) {
+ let account = AccountManager.shared.createAccount(type: .onMyMac)
+ if !nameTextField.stringValue.isEmpty {
+ account.name = nameTextField.stringValue
+ }
+ hostWindow!.endSheet(window!, returnCode: NSApplication.ModalResponse.OK)
+ }
+
+}
diff --git a/Mac/Preferences/Accounts/AccountsAddTableCellView.swift b/Mac/Preferences/Accounts/AccountsAddTableCellView.swift
index e83507a65..cf8af80ec 100644
--- a/Mac/Preferences/Accounts/AccountsAddTableCellView.swift
+++ b/Mac/Preferences/Accounts/AccountsAddTableCellView.swift
@@ -6,7 +6,7 @@
// Copyright © 2019 Ranchero Software. All rights reserved.
//
-import Cocoa
+import AppKit
class AccountsAddTableCellView: NSTableCellView {
diff --git a/Mac/Preferences/Accounts/AccountsAddViewController.swift b/Mac/Preferences/Accounts/AccountsAddViewController.swift
index fc6f50991..baa802464 100644
--- a/Mac/Preferences/Accounts/AccountsAddViewController.swift
+++ b/Mac/Preferences/Accounts/AccountsAddViewController.swift
@@ -6,12 +6,14 @@
// Copyright © 2019 Ranchero Software. All rights reserved.
//
-import Cocoa
+import AppKit
class AccountsAddViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
+ private var accountsAddWindowController: NSWindowController?
+
init() {
super.init(nibName: "AccountsAdd", bundle: nil)
}
@@ -21,11 +23,14 @@ class AccountsAddViewController: NSViewController {
}
override func viewDidLoad() {
+
super.viewDidLoad()
+
tableView.dataSource = self
tableView.delegate = self
- }
+ }
+
}
// MARK: - NSTableViewDataSource
@@ -52,7 +57,7 @@ extension AccountsAddViewController: NSTableViewDelegate {
if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Cell"), owner: nil) as? AccountsAddTableCellView {
switch row {
case 0:
- cell.accountNameLabel?.stringValue = NSLocalizedString("Local", comment: "Local")
+ cell.accountNameLabel?.stringValue = NSLocalizedString("On My Mac", comment: "Local")
cell.accountImageView?.image = AppImages.accountLocal
case 1:
cell.accountNameLabel?.stringValue = NSLocalizedString("Feedbin", comment: "Feedbin")
@@ -67,18 +72,21 @@ extension AccountsAddViewController: NSTableViewDelegate {
func tableViewSelectionDidChange(_ notification: Notification) {
-// let selectedRow = tableView.selectedRow
-// guard selectedRow != -1 else {
-// return
-// }
-//
-// let account = sortedAccounts[selectedRow]
-//
-// let controller = AccountDetailViewController(account: account)
-// addChild(controller)
-// controller.view.translatesAutoresizingMaskIntoConstraints = false
-// detailView.addSubview(controller.view)
-// detailView.rs_addFullSizeConstraints(forSubview: controller.view)
+ let selectedRow = tableView.selectedRow
+ guard selectedRow != -1 else {
+ return
+ }
+
+ switch selectedRow {
+ case 0:
+ let accountsAddLocalWindowController = AccountsAddLocalWindowController()
+ accountsAddLocalWindowController.runSheetOnWindow(self.view.window!)
+ accountsAddWindowController = accountsAddLocalWindowController
+ default:
+ break
+ }
+
+ tableView.selectRowIndexes([], byExtendingSelection: false)
}
diff --git a/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift b/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
index 2ec565458..6cbb40604 100644
--- a/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
+++ b/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
@@ -24,6 +24,8 @@ final class AccountsPreferencesViewController: NSViewController {
tableView.dataSource = self
NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil)
+ NotificationCenter.default.addObserver(self, selector: #selector(accountsDidChangeNotification(_:)), name: .AccountsDidChangeNotification, object: nil)
+
showController(AccountsAddViewController())
}
@@ -41,6 +43,11 @@ final class AccountsPreferencesViewController: NSViewController {
tableView.reloadData()
}
+ @objc func accountsDidChangeNotification(_ note: Notification) {
+ updateSortedAccounts()
+ tableView.reloadData()
+ }
+
}
// MARK: - NSTableViewDataSource
diff --git a/Mac/Resources/Assets.xcassets/accountFeedbin.imageset/Contents.json b/Mac/Resources/Assets.xcassets/accountFeedbin.imageset/Contents.json
index d2d0aef70..327e5717e 100644
--- a/Mac/Resources/Assets.xcassets/accountFeedbin.imageset/Contents.json
+++ b/Mac/Resources/Assets.xcassets/accountFeedbin.imageset/Contents.json
@@ -8,5 +8,8 @@
"info" : {
"version" : 1,
"author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
}
}
\ No newline at end of file
diff --git a/Mac/Resources/Assets.xcassets/accountLocal.imageset/Contents.json b/Mac/Resources/Assets.xcassets/accountLocal.imageset/Contents.json
index 9ad92bad7..4b7dc7acc 100644
--- a/Mac/Resources/Assets.xcassets/accountLocal.imageset/Contents.json
+++ b/Mac/Resources/Assets.xcassets/accountLocal.imageset/Contents.json
@@ -8,5 +8,8 @@
"info" : {
"version" : 1,
"author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
}
}
\ No newline at end of file
diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj
index 54eb5795f..382d17364 100644
--- a/NetNewsWire.xcodeproj/project.pbxproj
+++ b/NetNewsWire.xcodeproj/project.pbxproj
@@ -18,6 +18,8 @@
512E09352268B25900BDCFDD /* UISplitViewController-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 512E092B2268B25500BDCFDD /* UISplitViewController-Extensions.swift */; };
512E094D2268B8AB00BDCFDD /* DeleteCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B99C9C1FAE83C600ECDEDB /* DeleteCommand.swift */; };
5144EA2F2279FAB600D19003 /* AccountsDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5144EA2E2279FAB600D19003 /* AccountsDetailViewController.swift */; };
+ 5144EA362279FC3D00D19003 /* AccountsAddLocal.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5144EA352279FC3D00D19003 /* AccountsAddLocal.xib */; };
+ 5144EA382279FC6200D19003 /* AccountsAddLocalWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5144EA372279FC6200D19003 /* AccountsAddLocalWindowController.swift */; };
5183CCD0226E1E880010922C /* NonIntrinsicLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCCF226E1E880010922C /* NonIntrinsicLabel.swift */; };
5183CCDA226E31A50010922C /* NonIntrinsicImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */; };
5183CCDD226F1F5C0010922C /* NavigationProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCDC226F1F5C0010922C /* NavigationProgressView.swift */; };
@@ -638,6 +640,8 @@
512E08F722688F7C00BDCFDD /* MasterFeedTableViewSectionHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterFeedTableViewSectionHeader.swift; sourceTree = ""; };
512E092B2268B25500BDCFDD /* UISplitViewController-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UISplitViewController-Extensions.swift"; sourceTree = ""; };
5144EA2E2279FAB600D19003 /* AccountsDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsDetailViewController.swift; sourceTree = ""; };
+ 5144EA352279FC3D00D19003 /* AccountsAddLocal.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AccountsAddLocal.xib; sourceTree = ""; };
+ 5144EA372279FC6200D19003 /* AccountsAddLocalWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsAddLocalWindowController.swift; sourceTree = ""; };
5183CCCF226E1E880010922C /* NonIntrinsicLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonIntrinsicLabel.swift; sourceTree = ""; };
5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonIntrinsicImageView.swift; sourceTree = ""; };
5183CCDC226F1F5C0010922C /* NavigationProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationProgressView.swift; sourceTree = ""; };
@@ -1570,6 +1574,8 @@
51EF0F912279CA620050506E /* AccountsAddTableCellView.swift */,
84C9FC7422629E1200D921D6 /* AccountsDetail.xib */,
5144EA2E2279FAB600D19003 /* AccountsDetailViewController.swift */,
+ 5144EA352279FC3D00D19003 /* AccountsAddLocal.xib */,
+ 5144EA372279FC6200D19003 /* AccountsAddLocalWindowController.swift */,
);
path = Accounts;
sourceTree = "";
@@ -2165,6 +2171,7 @@
51EF0F8E2279C9260050506E /* AccountsAdd.xib in Resources */,
84C9FC8F22629E8F00D921D6 /* NetNewsWire.sdef in Resources */,
84C9FC7D22629E1200D921D6 /* AccountsDetail.xib in Resources */,
+ 5144EA362279FC3D00D19003 /* AccountsAddLocal.xib in Resources */,
84C9FC8C22629E8F00D921D6 /* KeyboardShortcuts.html in Resources */,
844B5B691FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist in Resources */,
84A3EE5F223B667F00557320 /* DefaultFeeds.opml in Resources */,
@@ -2392,6 +2399,7 @@
84E185C3203BB12600F69BFA /* MultilineTextFieldSizer.swift in Sources */,
8477ACBE22238E9500DF7F37 /* SearchFeedDelegate.swift in Sources */,
8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */,
+ 5144EA382279FC6200D19003 /* AccountsAddLocalWindowController.swift in Sources */,
84AD1EAA2031617300BC20B7 /* FolderPasteboardWriter.swift in Sources */,
84AD1EBC2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift in Sources */,
845A29241FC9255E007B49E3 /* SidebarCellAppearance.swift in Sources */,