From 8f5c2a08bba5bcaa33f9b300e914f5c502c65663 Mon Sep 17 00:00:00 2001 From: Louis Pontoise Date: Fri, 7 Aug 2020 01:08:40 +0900 Subject: [PATCH] feat: add new colorful menubar icon --- alt-tab-macos.xcodeproj/project.pbxproj | 4 ++++ resources/icons/menubar-icon-3@2x.png | Bin 0 -> 3906 bytes src/logic/Preferences.swift | 6 ++++-- src/ui/Menubar.swift | 14 ++++++++++++-- src/ui/preferences-window/tabs/GeneralTab.swift | 4 ++-- 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 resources/icons/menubar-icon-3@2x.png diff --git a/alt-tab-macos.xcodeproj/project.pbxproj b/alt-tab-macos.xcodeproj/project.pbxproj index ae5aa7f1..97f61c19 100644 --- a/alt-tab-macos.xcodeproj/project.pbxproj +++ b/alt-tab-macos.xcodeproj/project.pbxproj @@ -53,6 +53,7 @@ D04BA69012A483201B375D46 /* Acknowledgments.md in Resources */ = {isa = PBXBuildFile; fileRef = D04BAADF01EB8FF8A15AECC6 /* Acknowledgments.md */; }; D04BA69D47B5E60A6AD9CBD9 /* ThumbnailTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAD1297730B191E96E7FE /* ThumbnailTitleView.swift */; }; D04BA6CC689662DECB2BE55E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04BAC0253EAB4D509C4813F /* InfoPlist.strings */; }; + D04BA7082CE953E4913E2B9C /* menubar-icon-3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BAA74DB03597C6CF6D9A7 /* menubar-icon-3@2x.png */; }; D04BA72B336C7175871B281C /* general@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D04BAF6E2AB002763931645A /* general@2x.png */; }; D04BA737008AA2CD4E230A21 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA10777505D8A67ABD186 /* Application.swift */; }; D04BA73E90EFEF8247A5105D /* CGWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAC34CFD42A7F6F1F01C0 /* CGWindow.swift */; }; @@ -245,6 +246,7 @@ D04BAA4442D0CE3A4972937F /* nl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = nl; path = InfoPlist.strings; sourceTree = ""; }; D04BAA5ECAE8BB8F8656DEDF /* update_contributors.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = update_contributors.sh; sourceTree = ""; }; D04BAA6E43F1E6EB81F953AF /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = InfoPlist.strings; sourceTree = ""; }; + D04BAA74DB03597C6CF6D9A7 /* menubar-icon-3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menubar-icon-3@2x.png"; sourceTree = ""; }; D04BAA998119CAA8B70A2B67 /* ThumbnailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThumbnailsView.swift; sourceTree = ""; }; D04BAA9E0539EE620D08F63F /* fr */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = fr; path = InfoPlist.strings; sourceTree = ""; }; D04BAAA1835480F9B3CCF170 /* blacklists@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blacklists@2x.png"; sourceTree = ""; }; @@ -682,6 +684,7 @@ D04BA561B958D1AD495C7A40 /* menubar-icon-1@2x.png */, D04BAF11966E96B9974E93C7 /* menubar-icon-2.svg */, D04BADE3AAB5930FB7DC4A25 /* menubar-icon-2@2x.png */, + D04BAA74DB03597C6CF6D9A7 /* menubar-icon-3@2x.png */, ); path = icons; sourceTree = ""; @@ -1037,6 +1040,7 @@ D04BA892CB4324F514EDF172 /* policies@2x.png in Resources */, D04BA16BA4743CD91B9E038C /* menubar-icon-1@2x.png in Resources */, D04BA30A1697247D21AB26E4 /* menubar-icon-2@2x.png in Resources */, + D04BA7082CE953E4913E2B9C /* menubar-icon-3@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/resources/icons/menubar-icon-3@2x.png b/resources/icons/menubar-icon-3@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..67877dbb133b015ce07ec27bf35ef4d054010456 GIT binary patch literal 3906 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 QjsO4v07*qoM6N<$g5N`bQvd(} literal 0 HcmV?d00001 diff --git a/src/logic/Preferences.swift b/src/logic/Preferences.swift index 494ca00d..6720927a 100644 --- a/src/logic/Preferences.swift +++ b/src/logic/Preferences.swift @@ -160,7 +160,7 @@ class Preferences { // the "Hide menubar icon" checkbox was replaced with a dropdown of: icon1, icon2, hidden if let old = defaults.string(forKey: "hideMenubarIcon") { if old == "true" { - defaults.set("2", forKey: "menubarIcon") + defaults.set("3", forKey: "menubarIcon") } defaults.removeObject(forKey: "hideMenubarIcon") } @@ -219,13 +219,15 @@ typealias LocalizedString = String enum MenubarIconPreference: CaseIterable, MacroPreference { case outlined case filled + case colored case hidden var localizedString: LocalizedString { switch self { - // these 3 spaces are different from each other; they have to be unique + // these spaces are different from each other; they have to be unique case .outlined: return " " case .filled: return " " + case .colored: return " " case .hidden: return " " } } diff --git a/src/ui/Menubar.swift b/src/ui/Menubar.swift index c1614ba4..0d7f2499 100644 --- a/src/ui/Menubar.swift +++ b/src/ui/Menubar.swift @@ -40,9 +40,19 @@ class Menubar { } static private func loadPreferredIcon() { - let image = NSImage(named: Preferences.menubarIcon == .outlined ? "menubar-icon-1" : "menubar-icon-2")! - image.isTemplate = true + let i = imageIndexFromPreference() + let image = NSImage(named: "menubar-icon-" + i)! + image.isTemplate = i == "3" ? false : true statusItem.button!.image = image statusItem.isVisible = true } + + static private func imageIndexFromPreference() -> String { + switch Preferences.menubarIcon { + case .outlined: return "1" + case .filled: return "2" + case .colored: return "3" + default: return "4" + } + } } diff --git a/src/ui/preferences-window/tabs/GeneralTab.swift b/src/ui/preferences-window/tabs/GeneralTab.swift index 88c30abe..d52bc2a0 100644 --- a/src/ui/preferences-window/tabs/GeneralTab.swift +++ b/src/ui/preferences-window/tabs/GeneralTab.swift @@ -10,9 +10,9 @@ class GeneralTab: NSViewController, PreferencePane { let startAtLogin = LabelAndControl.makeLabelWithCheckbox(NSLocalizedString("Start at login:", comment: ""), "startAtLogin", extraAction: startAtLoginCallback) let menubarIcon = LabelAndControl.makeLabelWithDropdown(NSLocalizedString("Menubar icon:", comment: ""), "menubarIcon", MenubarIconPreference.allCases, extraAction: Menubar.menubarIconCallback) let menubarIconDropdown = menubarIcon[1] as! NSPopUpButton - for i in 0...1 { + for i in 0...2 { let image = NSImage(named: "menubar-icon-" + String(i + 1))! - image.isTemplate = true + image.isTemplate = i == 2 ? false : true menubarIconDropdown.item(at: i)!.image = image } let cell = menubarIconDropdown.cell! as! NSPopUpButtonCell