Add basic ExtensionPoint support.

This commit is contained in:
Maurice Parker
2020-04-07 15:25:33 -05:00
parent f8667be32b
commit 49cff8eb8e
29 changed files with 299 additions and 140 deletions

View File

@@ -5,7 +5,7 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="FeedProvidersAddViewController" customModule="NetNewsWire" customModuleProvider="target">
<customObject id="-2" userLabel="File's Owner" customClass="ExtensionPointAddViewController" customModule="NetNewsWire" customModuleProvider="target">
<connections>
<outlet property="tableView" destination="lyM-Zu-Let" id="JDz-05-OOg"/>
<outlet property="view" destination="c22-O7-iKe" id="Vfr-rK-EHC"/>
@@ -44,7 +44,7 @@
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="Cell" id="EGi-CQ-lPc" customClass="FeedProvidersAddTableCellView" customModule="NetNewsWire" customModuleProvider="target">
<tableCellView identifier="Cell" id="EGi-CQ-lPc" customClass="ExtensionPointAddTableCellView" customModule="NetNewsWire" customModuleProvider="target">
<rect key="frame" x="1" y="1" width="475" height="40"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
@@ -83,8 +83,8 @@
<constraint firstItem="iCD-Yx-4V5" firstAttribute="leading" secondItem="EGi-CQ-lPc" secondAttribute="leading" constant="20" id="IsY-WH-f93"/>
</constraints>
<connections>
<outlet property="feedProviderImageView" destination="KmN-Zk-TBU" id="gAh-RE-QeJ"/>
<outlet property="feedProviderNameLabel" destination="uyu-5W-IaW" id="QAe-Gk-Eeo"/>
<outlet property="imageView" destination="KmN-Zk-TBU" id="Tfy-Eb-Isb"/>
<outlet property="titleLabel" destination="uyu-5W-IaW" id="QAe-Gk-Eeo"/>
</connections>
</tableCellView>
</prototypeCellViews>

View File

@@ -0,0 +1,16 @@
//
// ExtensionPointAddTableCellView.swift
// NetNewsWire
//
// Created by Maurice Parker on 4/6/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import AppKit
class ExtensionPointAddTableCellView: NSTableCellView {
@IBOutlet weak var templateImageView: NSImageView?
@IBOutlet weak var titleLabel: NSTextField?
}

View File

@@ -1,5 +1,5 @@
//
// FeedProvidersAddViewController.swift
// ExtensionPointAddViewController.swift
// NetNewsWire
//
// Created by Maurice Parker on 4/6/20.
@@ -9,20 +9,15 @@
import AppKit
import FeedProvider
class FeedProvidersAddViewController: NSViewController {
class ExtensionPointAddViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
private var accountsAddWindowController: NSWindowController?
#if DEBUG
private var addableFeedProviderTypes: [FeedProviderType] = [.marsEdit, .microblog, .twitter]
#else
private var addableFeedProviderTypes: [FeedProviderType] = [.twitter]
#endif
private var availableExtensionPoints = [ExtensionPoint]()
private var extensionPointAddWindowController: NSWindowController?
init() {
super.init(nibName: "FeedProvidersAdd", bundle: nil)
super.init(nibName: "ExtensionPointAdd", bundle: nil)
}
public required init?(coder: NSCoder) {
@@ -33,16 +28,17 @@ class FeedProvidersAddViewController: NSViewController {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
availableExtensionPoints = ExtensionPointManager.shared.availableExtensionPoints
}
}
// MARK: - NSTableViewDataSource
extension FeedProvidersAddViewController: NSTableViewDataSource {
extension ExtensionPointAddViewController: NSTableViewDataSource {
func numberOfRows(in tableView: NSTableView) -> Int {
return addableFeedProviderTypes.count
return availableExtensionPoints.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
@@ -52,24 +48,16 @@ extension FeedProvidersAddViewController: NSTableViewDataSource {
// MARK: - NSTableViewDelegate
extension FeedProvidersAddViewController: NSTableViewDelegate {
extension ExtensionPointAddViewController: NSTableViewDelegate {
private static let cellIdentifier = NSUserInterfaceItemIdentifier(rawValue: "AccountCell")
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Cell"), owner: nil) as? FeedProvidersAddTableCellView {
switch addableFeedProviderTypes[row] {
case .marsEdit:
cell.feedProviderNameLabel?.stringValue = NSLocalizedString("MarsEdit", comment: "MarsEdit")
cell.feedProviderImageView?.image = AppAssets.adapterMarsEdit
case .microblog:
cell.feedProviderNameLabel?.stringValue = NSLocalizedString("Micro.blog", comment: "Micro.blog")
cell.feedProviderImageView?.image = AppAssets.adapterMicroblog
case .twitter:
cell.feedProviderNameLabel?.stringValue = NSLocalizedString("Twitter", comment: "Twitter")
cell.feedProviderImageView?.image = AppAssets.adapterTwitter
}
if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Cell"), owner: nil) as? ExtensionPointAddTableCellView {
let extensionPoint = availableExtensionPoints[row]
cell.titleLabel?.stringValue = extensionPoint.title
cell.imageView?.image = extensionPoint.templateImage
return cell
}
return nil

View File

@@ -1,5 +1,5 @@
//
// FeedProvidersPreferencesViewController.swift
// ExtensionsPreferencesViewController.swift
// NetNewsWire
//
// Created by Maurice Parker on 4/6/20.
@@ -8,7 +8,7 @@
import AppKit
final class FeedProvidersPreferencesViewController: NSViewController {
final class ExtensionPointPreferencesViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
@IBOutlet weak var detailView: NSView!
@@ -22,7 +22,7 @@ final class FeedProvidersPreferencesViewController: NSViewController {
tableView.delegate = self
tableView.dataSource = self
showController(FeedProvidersAddViewController())
showController(ExtensionPointAddViewController())
// Fix tableView frame  for some reason IB wants it 1pt wider than the clip view. This leads to unwanted horizontal scrolling.
var rTable = tableView.frame
@@ -34,7 +34,7 @@ final class FeedProvidersPreferencesViewController: NSViewController {
// MARK: - NSTableViewDataSource
extension FeedProvidersPreferencesViewController: NSTableViewDataSource {
extension ExtensionPointPreferencesViewController: NSTableViewDataSource {
func numberOfRows(in tableView: NSTableView) -> Int {
return sortedAccounts.count
@@ -47,7 +47,7 @@ extension FeedProvidersPreferencesViewController: NSTableViewDataSource {
// MARK: - NSTableViewDelegate
extension FeedProvidersPreferencesViewController: NSTableViewDelegate {
extension ExtensionPointPreferencesViewController: NSTableViewDelegate {
private static let cellIdentifier = NSUserInterfaceItemIdentifier(rawValue: "AccountCell")
@@ -70,7 +70,7 @@ extension FeedProvidersPreferencesViewController: NSTableViewDelegate {
// MARK: - Private
private extension FeedProvidersPreferencesViewController {
private extension ExtensionPointPreferencesViewController {
func showController(_ controller: NSViewController) {

View File

@@ -1,16 +0,0 @@
//
// FeedProvidersAddTableCellView.swift
// NetNewsWire
//
// Created by Maurice Parker on 4/6/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import AppKit
class FeedProvidersAddTableCellView: NSTableCellView {
@IBOutlet weak var feedProviderImageView: NSImageView?
@IBOutlet weak var feedProviderNameLabel: NSTextField?
}

View File

@@ -24,7 +24,7 @@ private struct PreferencesToolbarItemSpec {
private struct ToolbarItemIdentifier {
static let General = "General"
static let Accounts = "Accounts"
static let FeedProvider = "FeedProvider"
static let Extensions = "Extensions"
static let Advanced = "Advanced"
}
@@ -40,9 +40,9 @@ class PreferencesWindowController : NSWindowController, NSToolbarDelegate {
specs += [PreferencesToolbarItemSpec(identifierRawValue: ToolbarItemIdentifier.Accounts,
name: NSLocalizedString("Accounts", comment: "Preferences"),
image: NSImage(named: NSImage.userAccountsName))]
specs += [PreferencesToolbarItemSpec(identifierRawValue: ToolbarItemIdentifier.FeedProvider,
specs += [PreferencesToolbarItemSpec(identifierRawValue: ToolbarItemIdentifier.Extensions,
name: NSLocalizedString("Extensions", comment: "Preferences"),
image: AppAssets.bookmarkImage)]
image: AppAssets.extensionPreference)]
// Omit the Advanced Preferences for now because the Software Update related functionality is
// forbidden/non-applicable, and we can rely upon Apple to some extent for crash reports. We