Browse Source

Icon updates automatically to match system theme (light or dark). Replaced emoji display with custom icons.

master
Claire 2 years ago
parent
commit
b99bf4161d
  1. 88
      LunaMac.xcodeproj/project.pbxproj
  2. 39
      LunaMac/AppDelegate.swift
  3. 4
      LunaMac/Info.plist
  4. 2
      LunaMac/InfoBox.xib
  5. BIN
      LunaMac/png/default-dark.png
  6. BIN
      LunaMac/png/default.png
  7. BIN
      LunaMac/png/firstq-dark.png
  8. BIN
      LunaMac/png/firstq.png
  9. BIN
      LunaMac/png/full-dark.png
  10. BIN
      LunaMac/png/full.png
  11. BIN
      LunaMac/png/lastq-dark.png
  12. BIN
      LunaMac/png/lastq.png
  13. BIN
      LunaMac/png/new-dark.png
  14. BIN
      LunaMac/png/new.png
  15. BIN
      LunaMac/png/wanc-dark.png
  16. BIN
      LunaMac/png/wanc.png
  17. BIN
      LunaMac/png/wang-dark.png
  18. BIN
      LunaMac/png/wang.png
  19. BIN
      LunaMac/png/waxc-dark.png
  20. BIN
      LunaMac/png/waxc.png
  21. BIN
      LunaMac/png/waxg-dark.png
  22. BIN
      LunaMac/png/waxg.png

88
LunaMac.xcodeproj/project.pbxproj

@ -11,8 +11,26 @@
7E96D61628DD75BE00999EAE /* LunaMac.icns in Resources */ = {isa = PBXBuildFile; fileRef = 7E96D61528DD75BE00999EAE /* LunaMac.icns */; };
7ECD0D7C28DD2A4100B90958 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ECD0D7B28DD2A4100B90958 /* AppDelegate.swift */; };
7ECD0D7E28DD2A4100B90958 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ECD0D7D28DD2A4100B90958 /* ViewController.swift */; };
7ECD0D8028DD2A4200B90958 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7ECD0D7F28DD2A4200B90958 /* Assets.xcassets */; };
7ECD0D8328DD2A4200B90958 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7ECD0D8128DD2A4200B90958 /* Main.storyboard */; };
7EF79B3328DE1E4D00FF1F49 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79B3228DE1E4D00FF1F49 /* Assets.xcassets */; };
7EF79BAE28DE395C00FF1F49 /* firstq-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79B9E28DE395C00FF1F49 /* firstq-dark.png */; };
7EF79BAF28DE395C00FF1F49 /* firstq.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79B9F28DE395C00FF1F49 /* firstq.png */; };
7EF79BB028DE395C00FF1F49 /* full-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA028DE395C00FF1F49 /* full-dark.png */; };
7EF79BB128DE395C00FF1F49 /* full.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA128DE395C00FF1F49 /* full.png */; };
7EF79BB228DE395C00FF1F49 /* lastq-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA228DE395C00FF1F49 /* lastq-dark.png */; };
7EF79BB328DE395C00FF1F49 /* lastq.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA328DE395C00FF1F49 /* lastq.png */; };
7EF79BB428DE395C00FF1F49 /* new-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA428DE395C00FF1F49 /* new-dark.png */; };
7EF79BB528DE395C00FF1F49 /* new.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA528DE395C00FF1F49 /* new.png */; };
7EF79BB628DE395C00FF1F49 /* wanc-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA628DE395C00FF1F49 /* wanc-dark.png */; };
7EF79BB728DE395C00FF1F49 /* wanc.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA728DE395C00FF1F49 /* wanc.png */; };
7EF79BB828DE395C00FF1F49 /* wang-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA828DE395C00FF1F49 /* wang-dark.png */; };
7EF79BB928DE395C00FF1F49 /* wang.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BA928DE395C00FF1F49 /* wang.png */; };
7EF79BBA28DE395C00FF1F49 /* waxc-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BAA28DE395C00FF1F49 /* waxc-dark.png */; };
7EF79BBB28DE395C00FF1F49 /* waxc.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BAB28DE395C00FF1F49 /* waxc.png */; };
7EF79BBC28DE395C00FF1F49 /* waxg-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BAC28DE395C00FF1F49 /* waxg-dark.png */; };
7EF79BBD28DE395C00FF1F49 /* waxg.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BAD28DE395C00FF1F49 /* waxg.png */; };
7EF79BC028DE4D2400FF1F49 /* default-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BBE28DE4D2400FF1F49 /* default-dark.png */; };
7EF79BC128DE4D2400FF1F49 /* default.png in Resources */ = {isa = PBXBuildFile; fileRef = 7EF79BBF28DE4D2400FF1F49 /* default.png */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -21,10 +39,28 @@
7ECD0D7828DD2A4100B90958 /* LunaMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LunaMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
7ECD0D7B28DD2A4100B90958 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7ECD0D7D28DD2A4100B90958 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
7ECD0D7F28DD2A4200B90958 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
7ECD0D8228DD2A4200B90958 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
7ECD0D8428DD2A4200B90958 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7ECD0D8528DD2A4200B90958 /* LunaMac.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = LunaMac.entitlements; sourceTree = "<group>"; };
7EF79B3228DE1E4D00FF1F49 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
7EF79B9E28DE395C00FF1F49 /* firstq-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "firstq-dark.png"; sourceTree = "<group>"; };
7EF79B9F28DE395C00FF1F49 /* firstq.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = firstq.png; sourceTree = "<group>"; };
7EF79BA028DE395C00FF1F49 /* full-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "full-dark.png"; sourceTree = "<group>"; };
7EF79BA128DE395C00FF1F49 /* full.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = full.png; sourceTree = "<group>"; };
7EF79BA228DE395C00FF1F49 /* lastq-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "lastq-dark.png"; sourceTree = "<group>"; };
7EF79BA328DE395C00FF1F49 /* lastq.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lastq.png; sourceTree = "<group>"; };
7EF79BA428DE395C00FF1F49 /* new-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "new-dark.png"; sourceTree = "<group>"; };
7EF79BA528DE395C00FF1F49 /* new.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = new.png; sourceTree = "<group>"; };
7EF79BA628DE395C00FF1F49 /* wanc-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wanc-dark.png"; sourceTree = "<group>"; };
7EF79BA728DE395C00FF1F49 /* wanc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wanc.png; sourceTree = "<group>"; };
7EF79BA828DE395C00FF1F49 /* wang-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wang-dark.png"; sourceTree = "<group>"; };
7EF79BA928DE395C00FF1F49 /* wang.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wang.png; sourceTree = "<group>"; };
7EF79BAA28DE395C00FF1F49 /* waxc-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "waxc-dark.png"; sourceTree = "<group>"; };
7EF79BAB28DE395C00FF1F49 /* waxc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waxc.png; sourceTree = "<group>"; };
7EF79BAC28DE395C00FF1F49 /* waxg-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "waxg-dark.png"; sourceTree = "<group>"; };
7EF79BAD28DE395C00FF1F49 /* waxg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waxg.png; sourceTree = "<group>"; };
7EF79BBE28DE4D2400FF1F49 /* default-dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default-dark.png"; sourceTree = "<group>"; };
7EF79BBF28DE4D2400FF1F49 /* default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = default.png; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -57,9 +93,10 @@
7ECD0D7A28DD2A4100B90958 /* LunaMac */ = {
isa = PBXGroup;
children = (
7EF79B9D28DE395C00FF1F49 /* png */,
7ECD0D7B28DD2A4100B90958 /* AppDelegate.swift */,
7ECD0D7D28DD2A4100B90958 /* ViewController.swift */,
7ECD0D7F28DD2A4200B90958 /* Assets.xcassets */,
7EF79B3228DE1E4D00FF1F49 /* Assets.xcassets */,
7E96D61528DD75BE00999EAE /* LunaMac.icns */,
7ECD0D8128DD2A4200B90958 /* Main.storyboard */,
7ECD0D8428DD2A4200B90958 /* Info.plist */,
@ -69,6 +106,31 @@
path = LunaMac;
sourceTree = "<group>";
};
7EF79B9D28DE395C00FF1F49 /* png */ = {
isa = PBXGroup;
children = (
7EF79BBE28DE4D2400FF1F49 /* default-dark.png */,
7EF79BBF28DE4D2400FF1F49 /* default.png */,
7EF79B9E28DE395C00FF1F49 /* firstq-dark.png */,
7EF79B9F28DE395C00FF1F49 /* firstq.png */,
7EF79BA028DE395C00FF1F49 /* full-dark.png */,
7EF79BA128DE395C00FF1F49 /* full.png */,
7EF79BA228DE395C00FF1F49 /* lastq-dark.png */,
7EF79BA328DE395C00FF1F49 /* lastq.png */,
7EF79BA428DE395C00FF1F49 /* new-dark.png */,
7EF79BA528DE395C00FF1F49 /* new.png */,
7EF79BA628DE395C00FF1F49 /* wanc-dark.png */,
7EF79BA728DE395C00FF1F49 /* wanc.png */,
7EF79BA828DE395C00FF1F49 /* wang-dark.png */,
7EF79BA928DE395C00FF1F49 /* wang.png */,
7EF79BAA28DE395C00FF1F49 /* waxc-dark.png */,
7EF79BAB28DE395C00FF1F49 /* waxc.png */,
7EF79BAC28DE395C00FF1F49 /* waxg-dark.png */,
7EF79BAD28DE395C00FF1F49 /* waxg.png */,
);
path = png;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -133,9 +195,27 @@
buildActionMask = 2147483647;
files = (
7E8188BB28DD423B0080C707 /* InfoBox.xib in Resources */,
7ECD0D8028DD2A4200B90958 /* Assets.xcassets in Resources */,
7EF79BBD28DE395C00FF1F49 /* waxg.png in Resources */,
7EF79BAF28DE395C00FF1F49 /* firstq.png in Resources */,
7EF79BB428DE395C00FF1F49 /* new-dark.png in Resources */,
7EF79BB828DE395C00FF1F49 /* wang-dark.png in Resources */,
7EF79BC028DE4D2400FF1F49 /* default-dark.png in Resources */,
7EF79BB928DE395C00FF1F49 /* wang.png in Resources */,
7EF79BB628DE395C00FF1F49 /* wanc-dark.png in Resources */,
7EF79BBB28DE395C00FF1F49 /* waxc.png in Resources */,
7EF79BB528DE395C00FF1F49 /* new.png in Resources */,
7EF79BB228DE395C00FF1F49 /* lastq-dark.png in Resources */,
7EF79BB328DE395C00FF1F49 /* lastq.png in Resources */,
7ECD0D8328DD2A4200B90958 /* Main.storyboard in Resources */,
7EF79BB028DE395C00FF1F49 /* full-dark.png in Resources */,
7EF79BB128DE395C00FF1F49 /* full.png in Resources */,
7EF79BC128DE4D2400FF1F49 /* default.png in Resources */,
7EF79BBC28DE395C00FF1F49 /* waxg-dark.png in Resources */,
7EF79B3328DE1E4D00FF1F49 /* Assets.xcassets in Resources */,
7EF79BAE28DE395C00FF1F49 /* firstq-dark.png in Resources */,
7E96D61628DD75BE00999EAE /* LunaMac.icns in Resources */,
7EF79BB728DE395C00FF1F49 /* wanc.png in Resources */,
7EF79BBA28DE395C00FF1F49 /* waxc-dark.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

39
LunaMac/AppDelegate.swift

@ -19,9 +19,6 @@ import CoreFoundation
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
// make sure applet stays in memory
var statusBarItem: NSStatusItem?
// static array of possible lunar values
let phaseArray:[String:[String:NSString]] = [
"new" : [
@ -84,8 +81,14 @@ class AppDelegate: NSObject, NSApplicationDelegate {
]
]
// make sure applet stays in memory
var statusBarItem: NSStatusItem?
func applicationDidFinishLaunching(_ aNotification: Notification) {
updateIcon()
themeListener()
}
@objc func buildMenu(key: String = "default") {
@ -96,7 +99,23 @@ class AppDelegate: NSObject, NSApplicationDelegate {
statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
// set icon using emoji
statusBarItem?.button?.title = phaseArray[key]?["icon"] as String? ?? "🌙"
//statusBarItem?.button?.title = phaseArray[key]?["icon"] as String? ?? "🌙"
var suffix = ""
// check for dark mode and set the right image file
if #available(OSX 10.14, *) {
let darkMode = UserDefaults.standard.string(forKey: "AppleInterfaceStyle")
if darkMode == "Dark" {
suffix += "-dark"
}
}
// set image filename
let imgName = key + suffix + ".png"
statusBarItem?.button?.image = NSImage(named: imgName)
// create a menu for the icon
let statusBarMenu = NSMenu(title: "LunaMac Menu")
@ -210,6 +229,16 @@ class AppDelegate: NSObject, NSApplicationDelegate {
// Insert code here to tear down your application
}
func themeListener() {
DistributedNotificationCenter.default.addObserver(
self,
selector: #selector(updateIcon),
name: .AppleInterfaceThemeChangedNotification,
object: nil
)
}
}
extension Notification.Name {
static let AppleInterfaceThemeChangedNotification = Notification.Name("AppleInterfaceThemeChangedNotification")
}

4
LunaMac/Info.plist

@ -17,9 +17,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<string>1.1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>LSUIElement</key>

2
LunaMac/InfoBox.xib

@ -22,7 +22,7 @@
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" selectable="YES" alignment="left" id="ZyF-AY-vyC">
<font key="font" metaFont="system"/>
<string key="title">LunaMac calculates the current moon phase when it launches. If you see a 🌙 instead of a moon phase, try again from the status bar icon's menu.</string>
<string key="title">LunaMac calculates the current moon phase when it launches. If you see a instead of a moon phase, try again from the status bar icon's menu.</string>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>

BIN
LunaMac/png/default-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/default.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/firstq-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/firstq.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/full-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/full.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/lastq-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/lastq.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/new-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/new.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/wanc-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/wanc.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/wang-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/wang.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/waxc-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/waxc.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/waxg-dark.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
LunaMac/png/waxg.png

diff.bin_not_shown

After

Width:  |  Height:  |  Size: 1.2 KiB

Loading…
Cancel
Save