From 9db72e50e862809f9d70f7ea02ed31774e5e0055 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 8 Sep 2021 16:38:05 -0500 Subject: [PATCH] Add article theme pop up to General Prefs --- Mac/Base.lproj/Preferences.storyboard | 108 +++++++++++------- .../GeneralPrefencesViewController.swift | 29 ++++- .../ArticleStyles/ArticleThemesManager.swift | 1 + 3 files changed, 94 insertions(+), 44 deletions(-) diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index 30c2f41e8..c3882111f 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -1,8 +1,8 @@ - + - + @@ -31,15 +31,15 @@ - - + + - + - + @@ -47,7 +47,7 @@ - + @@ -75,11 +75,26 @@ + + + + + + + + + + + + + + + - + - + @@ -87,7 +102,7 @@ - + @@ -102,7 +117,7 @@ - + @@ -130,10 +145,10 @@ - + - + @@ -141,7 +156,7 @@ - + @@ -176,7 +191,7 @@ - + @@ -184,7 +199,7 @@ + + + + + + + + - @@ -220,10 +242,14 @@ + + + + @@ -236,6 +262,7 @@ + @@ -246,8 +273,10 @@ + + @@ -259,13 +288,14 @@ + - + @@ -445,16 +475,16 @@ - + - + - + - - + + @@ -473,7 +503,7 @@ - + @@ -534,7 +564,7 @@ - + - + diff --git a/Mac/Preferences/General/GeneralPrefencesViewController.swift b/Mac/Preferences/General/GeneralPrefencesViewController.swift index 08de5b27d..969e90dd0 100644 --- a/Mac/Preferences/General/GeneralPrefencesViewController.swift +++ b/Mac/Preferences/General/GeneralPrefencesViewController.swift @@ -15,7 +15,8 @@ final class GeneralPreferencesViewController: NSViewController { private var userNotificationSettings: UNNotificationSettings? - @IBOutlet var defaultBrowserPopup: NSPopUpButton! + @IBOutlet weak var articleThemePopup: NSPopUpButton! + @IBOutlet weak var defaultBrowserPopup: NSPopUpButton! public override init(nibName nibNameOrNil: NSNib.Name?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) @@ -41,13 +42,21 @@ final class GeneralPreferencesViewController: NSViewController { // MARK: - Actions + @IBAction func articleThemePopUpDidChange(_ sender: Any) { + guard let menuItem = articleThemePopup.selectedItem else { + return + } + ArticleThemesManager.shared.currentThemeName = menuItem.title + updateArticleThemePopup() + } + @IBAction func browserPopUpDidChangeValue(_ sender: Any?) { guard let menuItem = defaultBrowserPopup.selectedItem else { return } let bundleID = menuItem.representedObject as? String AppDefaults.shared.defaultBrowserID = bundleID - updateUI() + updateBrowserPopup() } } @@ -61,12 +70,22 @@ private extension GeneralPreferencesViewController { } func updateUI() { + updateArticleThemePopup() updateBrowserPopup() } + + func updateArticleThemePopup() { + let menu = articleThemePopup.menu! + menu.removeAllItems() + + menu.addItem(NSMenuItem(title: ArticleTheme.defaultTheme.name, action: nil, keyEquivalent: "")) + menu.addItem(NSMenuItem.separator()) - func registerAppWithBundleID(_ bundleID: String) { - NSWorkspace.shared.setDefaultAppBundleID(forURLScheme: "feed", to: bundleID) - NSWorkspace.shared.setDefaultAppBundleID(forURLScheme: "feeds", to: bundleID) + for themeName in ArticleThemesManager.shared.themeNames { + menu.addItem(NSMenuItem(title: themeName, action: nil, keyEquivalent: "")) + } + + articleThemePopup.selectItem(withTitle: ArticleThemesManager.shared.currentThemeName) } func updateBrowserPopup() { diff --git a/Shared/ArticleStyles/ArticleThemesManager.swift b/Shared/ArticleStyles/ArticleThemesManager.swift index cb13fa7a1..e434a34f6 100644 --- a/Shared/ArticleStyles/ArticleThemesManager.swift +++ b/Shared/ArticleStyles/ArticleThemesManager.swift @@ -31,6 +31,7 @@ final class ArticleThemesManager { set { if newValue != currentThemeName { AppDefaults.shared.currentThemeName = newValue + updateCurrentTheme() } } }