Skip to content

Commit 3fc1eb3

Browse files
committed
Dark mode support
1 parent a4fec23 commit 3fc1eb3

10 files changed

Lines changed: 141 additions & 97 deletions

File tree

AnyBar.xcodeproj/project.pbxproj

Lines changed: 56 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,29 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
7648BAB81AA5A3C0003DA28F /* alternate@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAAD1AA5A3C0003DA28F /* alternate@2x.png */; };
11-
7648BAB91AA5A3C0003DA28F /* black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAAE1AA5A3C0003DA28F /* black@2x.png */; };
12-
7648BABA1AA5A3C0003DA28F /* blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAAF1AA5A3C0003DA28F /* blue@2x.png */; };
13-
7648BABB1AA5A3C0003DA28F /* cyan@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB01AA5A3C0003DA28F /* cyan@2x.png */; };
14-
7648BABC1AA5A3C0003DA28F /* green@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB11AA5A3C0003DA28F /* green@2x.png */; };
15-
7648BABD1AA5A3C0003DA28F /* orange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB21AA5A3C0003DA28F /* orange@2x.png */; };
16-
7648BABE1AA5A3C0003DA28F /* purple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB31AA5A3C0003DA28F /* purple@2x.png */; };
17-
7648BABF1AA5A3C0003DA28F /* red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB41AA5A3C0003DA28F /* red@2x.png */; };
18-
7648BAC11AA5A3C0003DA28F /* white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB61AA5A3C0003DA28F /* white@2x.png */; };
19-
7648BAC21AA5A3C0003DA28F /* yellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7648BAB71AA5A3C0003DA28F /* yellow@2x.png */; };
2010
7648BAC31AA5A50B003DA28F /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C5AB32C41A8F9091002258B6 /* MainMenu.xib */; };
2111
C5AB32BF1A8F9091002258B6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AB32BE1A8F9091002258B6 /* AppDelegate.m */; };
2212
C5AB32C11A8F9091002258B6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AB32C01A8F9091002258B6 /* main.m */; };
2313
C5AB32C31A8F9091002258B6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C5AB32C21A8F9091002258B6 /* Images.xcassets */; };
2414
C5AB32E71A8F9B4E002258B6 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AB32E41A8F9B4E002258B6 /* GCDAsyncSocket.m */; };
2515
C5AB32E81A8F9B4E002258B6 /* GCDAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AB32E61A8F9B4E002258B6 /* GCDAsyncUdpSocket.m */; };
16+
C5E0271D1AA6435E0032F2E9 /* black_alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027101AA6435E0032F2E9 /* black_alt@2x.png */; };
17+
C5E0271E1AA6435E0032F2E9 /* black@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027111AA6435E0032F2E9 /* black@2x.png */; };
18+
C5E0271F1AA6435E0032F2E9 /* blue@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027121AA6435E0032F2E9 /* blue@2x.png */; };
19+
C5E027201AA6435E0032F2E9 /* cyan@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027131AA6435E0032F2E9 /* cyan@2x.png */; };
20+
C5E027211AA6435E0032F2E9 /* green@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027141AA6435E0032F2E9 /* green@2x.png */; };
21+
C5E027221AA6435E0032F2E9 /* orange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027151AA6435E0032F2E9 /* orange@2x.png */; };
22+
C5E027231AA6435E0032F2E9 /* purple@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027161AA6435E0032F2E9 /* purple@2x.png */; };
23+
C5E027241AA6435E0032F2E9 /* red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E027171AA6435E0032F2E9 /* red@2x.png */; };
24+
C5E027271AA6435E0032F2E9 /* white_alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0271A1AA6435E0032F2E9 /* white_alt@2x.png */; };
25+
C5E027281AA6435E0032F2E9 /* white@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0271B1AA6435E0032F2E9 /* white@2x.png */; };
26+
C5E027291AA6435E0032F2E9 /* yellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0271C1AA6435E0032F2E9 /* yellow@2x.png */; };
27+
C5E0272F1AA64BD90032F2E9 /* exclamation@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0272C1AA64BD90032F2E9 /* exclamation@2x.png */; };
28+
C5E027301AA64BD90032F2E9 /* question_alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0272D1AA64BD90032F2E9 /* question_alt@2x.png */; };
29+
C5E027311AA64BD90032F2E9 /* question@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C5E0272E1AA64BD90032F2E9 /* question@2x.png */; };
2630
/* End PBXBuildFile section */
2731

2832
/* Begin PBXFileReference section */
29-
7648BAAD1AA5A3C0003DA28F /* alternate@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "alternate@2x.png"; sourceTree = "<group>"; };
30-
7648BAAE1AA5A3C0003DA28F /* black@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "black@2x.png"; sourceTree = "<group>"; };
31-
7648BAAF1AA5A3C0003DA28F /* blue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blue@2x.png"; sourceTree = "<group>"; };
32-
7648BAB01AA5A3C0003DA28F /* cyan@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cyan@2x.png"; sourceTree = "<group>"; };
33-
7648BAB11AA5A3C0003DA28F /* green@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "green@2x.png"; sourceTree = "<group>"; };
34-
7648BAB21AA5A3C0003DA28F /* orange@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "orange@2x.png"; sourceTree = "<group>"; };
35-
7648BAB31AA5A3C0003DA28F /* purple@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "purple@2x.png"; sourceTree = "<group>"; };
36-
7648BAB41AA5A3C0003DA28F /* red@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "red@2x.png"; sourceTree = "<group>"; };
37-
7648BAB61AA5A3C0003DA28F /* white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "white@2x.png"; sourceTree = "<group>"; };
38-
7648BAB71AA5A3C0003DA28F /* yellow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yellow@2x.png"; sourceTree = "<group>"; };
3933
C511DFFB1AA4E9CF00DEE15F /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
4034
C5AB32B81A8F9091002258B6 /* AnyBar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnyBar.app; sourceTree = BUILT_PRODUCTS_DIR; };
4135
C5AB32BC1A8F9091002258B6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -48,6 +42,20 @@
4842
C5AB32E41A8F9B4E002258B6 /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncSocket.m; sourceTree = "<group>"; };
4943
C5AB32E51A8F9B4E002258B6 /* GCDAsyncUdpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDAsyncUdpSocket.h; sourceTree = "<group>"; };
5044
C5AB32E61A8F9B4E002258B6 /* GCDAsyncUdpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncUdpSocket.m; sourceTree = "<group>"; };
45+
C5E027101AA6435E0032F2E9 /* black_alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "black_alt@2x.png"; sourceTree = "<group>"; };
46+
C5E027111AA6435E0032F2E9 /* black@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "black@2x.png"; sourceTree = "<group>"; };
47+
C5E027121AA6435E0032F2E9 /* blue@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "blue@2x.png"; sourceTree = "<group>"; };
48+
C5E027131AA6435E0032F2E9 /* cyan@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cyan@2x.png"; sourceTree = "<group>"; };
49+
C5E027141AA6435E0032F2E9 /* green@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "green@2x.png"; sourceTree = "<group>"; };
50+
C5E027151AA6435E0032F2E9 /* orange@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "orange@2x.png"; sourceTree = "<group>"; };
51+
C5E027161AA6435E0032F2E9 /* purple@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "purple@2x.png"; sourceTree = "<group>"; };
52+
C5E027171AA6435E0032F2E9 /* red@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "red@2x.png"; sourceTree = "<group>"; };
53+
C5E0271A1AA6435E0032F2E9 /* white_alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "white_alt@2x.png"; sourceTree = "<group>"; };
54+
C5E0271B1AA6435E0032F2E9 /* white@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "white@2x.png"; sourceTree = "<group>"; };
55+
C5E0271C1AA6435E0032F2E9 /* yellow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "yellow@2x.png"; sourceTree = "<group>"; };
56+
C5E0272C1AA64BD90032F2E9 /* exclamation@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "exclamation@2x.png"; sourceTree = "<group>"; };
57+
C5E0272D1AA64BD90032F2E9 /* question_alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "question_alt@2x.png"; sourceTree = "<group>"; };
58+
C5E0272E1AA64BD90032F2E9 /* question@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "question@2x.png"; sourceTree = "<group>"; };
5159
/* End PBXFileReference section */
5260

5361
/* Begin PBXFrameworksBuildPhase section */
@@ -64,16 +72,20 @@
6472
7648BAAC1AA5A3C0003DA28F /* Resources */ = {
6573
isa = PBXGroup;
6674
children = (
67-
7648BAAD1AA5A3C0003DA28F /* alternate@2x.png */,
68-
7648BAAE1AA5A3C0003DA28F /* black@2x.png */,
69-
7648BAAF1AA5A3C0003DA28F /* blue@2x.png */,
70-
7648BAB01AA5A3C0003DA28F /* cyan@2x.png */,
71-
7648BAB11AA5A3C0003DA28F /* green@2x.png */,
72-
7648BAB21AA5A3C0003DA28F /* orange@2x.png */,
73-
7648BAB31AA5A3C0003DA28F /* purple@2x.png */,
74-
7648BAB41AA5A3C0003DA28F /* red@2x.png */,
75-
7648BAB61AA5A3C0003DA28F /* white@2x.png */,
76-
7648BAB71AA5A3C0003DA28F /* yellow@2x.png */,
75+
C5E0272C1AA64BD90032F2E9 /* exclamation@2x.png */,
76+
C5E0272D1AA64BD90032F2E9 /* question_alt@2x.png */,
77+
C5E0272E1AA64BD90032F2E9 /* question@2x.png */,
78+
C5E027101AA6435E0032F2E9 /* black_alt@2x.png */,
79+
C5E027111AA6435E0032F2E9 /* black@2x.png */,
80+
C5E027121AA6435E0032F2E9 /* blue@2x.png */,
81+
C5E027131AA6435E0032F2E9 /* cyan@2x.png */,
82+
C5E027141AA6435E0032F2E9 /* green@2x.png */,
83+
C5E027151AA6435E0032F2E9 /* orange@2x.png */,
84+
C5E027161AA6435E0032F2E9 /* purple@2x.png */,
85+
C5E027171AA6435E0032F2E9 /* red@2x.png */,
86+
C5E0271A1AA6435E0032F2E9 /* white_alt@2x.png */,
87+
C5E0271B1AA6435E0032F2E9 /* white@2x.png */,
88+
C5E0271C1AA6435E0032F2E9 /* yellow@2x.png */,
7789
);
7890
path = Resources;
7991
sourceTree = "<group>";
@@ -178,18 +190,22 @@
178190
isa = PBXResourcesBuildPhase;
179191
buildActionMask = 2147483647;
180192
files = (
181-
7648BABF1AA5A3C0003DA28F /* red@2x.png in Resources */,
182-
7648BAC21AA5A3C0003DA28F /* yellow@2x.png in Resources */,
183-
7648BABE1AA5A3C0003DA28F /* purple@2x.png in Resources */,
184-
7648BAC11AA5A3C0003DA28F /* white@2x.png in Resources */,
193+
C5E027241AA6435E0032F2E9 /* red@2x.png in Resources */,
194+
C5E027231AA6435E0032F2E9 /* purple@2x.png in Resources */,
185195
C5AB32C31A8F9091002258B6 /* Images.xcassets in Resources */,
186-
7648BAB81AA5A3C0003DA28F /* alternate@2x.png in Resources */,
187-
7648BABC1AA5A3C0003DA28F /* green@2x.png in Resources */,
188-
7648BAB91AA5A3C0003DA28F /* black@2x.png in Resources */,
189-
7648BABB1AA5A3C0003DA28F /* cyan@2x.png in Resources */,
190-
7648BABA1AA5A3C0003DA28F /* blue@2x.png in Resources */,
191-
7648BABD1AA5A3C0003DA28F /* orange@2x.png in Resources */,
196+
C5E027291AA6435E0032F2E9 /* yellow@2x.png in Resources */,
197+
C5E027311AA64BD90032F2E9 /* question@2x.png in Resources */,
198+
C5E027301AA64BD90032F2E9 /* question_alt@2x.png in Resources */,
199+
C5E027271AA6435E0032F2E9 /* white_alt@2x.png in Resources */,
200+
C5E027281AA6435E0032F2E9 /* white@2x.png in Resources */,
192201
7648BAC31AA5A50B003DA28F /* MainMenu.xib in Resources */,
202+
C5E027211AA6435E0032F2E9 /* green@2x.png in Resources */,
203+
C5E0272F1AA64BD90032F2E9 /* exclamation@2x.png in Resources */,
204+
C5E0271E1AA6435E0032F2E9 /* black@2x.png in Resources */,
205+
C5E027201AA6435E0032F2E9 /* cyan@2x.png in Resources */,
206+
C5E0271F1AA6435E0032F2E9 /* blue@2x.png in Resources */,
207+
C5E027221AA6435E0032F2E9 /* orange@2x.png in Resources */,
208+
C5E0271D1AA6435E0032F2E9 /* black_alt@2x.png in Resources */,
193209
);
194210
runOnlyForDeploymentPostprocessing = 0;
195211
};
Binary file not shown.

AnyBar/AppDelegate.m

Lines changed: 70 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,31 @@
88

99
#import "AppDelegate.h"
1010

11-
static NSString* const AppConfigDirectoryName = @".AnyBar";
12-
static NSString* const PortEnvironmentName = @"ANYBAR_PORT";
13-
static NSString* const DefaultPort = @"1738";
14-
static NSString* const DefaultImageName = @"white@2x.png";
15-
static NSString* const AlternateImageName = @"alternate@2x.png";
16-
static const int UdpPortMin = 0;
17-
static const int UdpPortMax = 65535;
18-
1911
@interface AppDelegate()
2012

2113
@property (weak, nonatomic) IBOutlet NSWindow *window;
2214
@property (strong, nonatomic) NSStatusItem *statusItem;
2315
@property (strong, nonatomic) GCDAsyncUdpSocket *udpSocket;
16+
@property (assign, nonatomic) BOOL dark;
17+
@property (strong, nonatomic) NSString *imageName;
2418

2519
@end
2620

2721
@implementation AppDelegate
2822

2923
-(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
30-
NSImage *defaultImage = [NSImage imageNamed:DefaultImageName];
31-
NSImage *warnImage = [NSImage imageNamed:NSImageNameStatusUnavailable];
3224
int port = -1;
33-
25+
_imageName = @"white";
3426
self.statusItem = [self initializeStatusBarItem];
35-
[self updateStatusImage: defaultImage];
27+
[self refreshDarkMode];
3628

3729
@try {
3830
port = [self getUdpPort];
39-
4031
_udpSocket = [self initializeUdpSocket: port];
4132
}
4233
@catch(NSException *ex) {
4334
NSLog(@"Error: %@: %@", ex.name, ex.reason);
44-
45-
[self updateStatusImage:warnImage];
35+
_statusItem.image = [NSImage imageNamed:@"exclamation@2x.png"];
4636
}
4737
@finally {
4838
NSString *portTitle = [NSString stringWithFormat:@"UDP port: %@",
@@ -53,6 +43,13 @@ -(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
5343
quitTitle: [NSValue valueWithPointer:@selector(terminate:)]
5444
}];
5545
}
46+
47+
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
48+
[center addObserver: self
49+
selector: @selector(refreshDarkMode)
50+
name: @"AppleInterfaceThemeChangedNotification"
51+
object: nil];
52+
5653
}
5754

5855
-(void)applicationWillTerminate:(NSNotification *)aNotification {
@@ -64,9 +61,9 @@ -(void)applicationWillTerminate:(NSNotification *)aNotification {
6461
}
6562

6663
-(int) getUdpPort {
67-
int port = [self readIntFromEnvironmentVariable:PortEnvironmentName usingDefault:DefaultPort];
64+
int port = [self readIntFromEnvironmentVariable:@"ANYBAR_PORT" usingDefault:@"1738"];
6865

69-
if (port < UdpPortMin || port > UdpPortMax) {
66+
if (port < 0 || port > 65535) {
7067
@throw([NSException exceptionWithName:@"Argument Exception"
7168
reason:[NSString stringWithFormat:@"UDP Port range is invalid: %d", port]
7269
userInfo:@{@"argument": [NSNumber numberWithInt:port]}]);
@@ -76,6 +73,15 @@ -(int) getUdpPort {
7673
return port;
7774
}
7875

76+
- (void)refreshDarkMode {
77+
NSString *osxMode = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];
78+
if ([osxMode isEqualToString:@"Dark"])
79+
self.dark = YES;
80+
else
81+
self.dark = NO;
82+
[self setImage:_imageName];
83+
}
84+
7985
-(GCDAsyncUdpSocket*)initializeUdpSocket:(int)port {
8086
NSError *error = nil;
8187
GCDAsyncUdpSocket *udpSocket = [[GCDAsyncUdpSocket alloc]
@@ -110,46 +116,62 @@ -(void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
110116
[self processUdpSocketMsg:sock withData:data fromAddress:address];
111117
}
112118

119+
-(NSImage*)tryImage:(NSString *)path {
120+
NSFileManager *fileManager = [NSFileManager defaultManager];
121+
if ([fileManager fileExistsAtPath:path])
122+
return [[NSImage alloc] initWithContentsOfFile:path];
123+
else
124+
return nil;
125+
}
126+
127+
-(NSString*)bundledImagePath:(NSString *)name {
128+
return [[NSBundle mainBundle] pathForResource:name ofType:@"png"];
129+
}
130+
131+
-(NSString*)homedirImagePath:(NSString *)name {
132+
return [NSString stringWithFormat:@"%@/%@/%@.png", NSHomeDirectory(), @".AnyBar", name];
133+
}
134+
135+
-(void)setImage:(NSString*) name {
136+
137+
NSImage *image = nil;
138+
if (_dark)
139+
image = [self tryImage:[self bundledImagePath:[name stringByAppendingString:@"_alt@2x"]]];
140+
if (!image)
141+
image = [self tryImage:[self bundledImagePath:[name stringByAppendingString:@"@2x"]]];
142+
if (_dark && !image)
143+
image = [self tryImage:[self homedirImagePath:[name stringByAppendingString:@"_alt"]]];
144+
if (_dark && !image)
145+
image = [self tryImage:[self homedirImagePath:[name stringByAppendingString:@"_alt@2x"]]];
146+
if (!image)
147+
image = [self tryImage:[self homedirImagePath:[name stringByAppendingString:@"@2x"]]];
148+
if (!image)
149+
image = [self tryImage:[self homedirImagePath:name]];
150+
if (!image) {
151+
if (_dark)
152+
image = [self tryImage:[self bundledImagePath:@"question_alt@2x"]];
153+
else
154+
image = [self tryImage:[self bundledImagePath:@"question@2x"]];
155+
NSLog(@"Cannot find image '%@'", name);
156+
}
157+
158+
_statusItem.image = image;
159+
_imageName = name;
160+
}
161+
113162
-(void)processUdpSocketMsg:(GCDAsyncUdpSocket *)sock withData:(NSData *)data
114163
fromAddress:(NSData *)address {
115164
NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
116165

117-
if ([msg isEqualToString:@"quit"]) {
166+
if ([msg isEqualToString:@"quit"])
118167
[[NSApplication sharedApplication] terminate:nil];
119-
}
120-
else {
121-
NSImage *image = nil;
122-
NSString *fileName = [msg stringByAppendingString:@"@2x"];
123-
NSFileManager *fileManager = [NSFileManager defaultManager];
124-
NSString *bundledFile = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:fileName, msg]
125-
ofType:@"png"];
126-
127-
BOOL fileExists = [fileManager fileExistsAtPath:bundledFile];
128-
if (fileExists) {
129-
image = [[NSImage alloc] initWithContentsOfFile:bundledFile];
130-
}
131-
else {
132-
// Let's lookup for the file in ~/.AnyBar
133-
NSString *fallbackFile = [NSString stringWithFormat:@"%@/%@/%@.png",
134-
NSHomeDirectory(), AppConfigDirectoryName, fileName];
135-
fileExists = [fileManager fileExistsAtPath:fallbackFile];
136-
if (fileExists) {
137-
image = [[NSImage alloc] initWithContentsOfFile:fallbackFile];
138-
}
139-
}
140-
141-
if (fileExists && image != nil) {
142-
[self updateStatusImage: image];
143-
}
144-
else {
145-
NSLog(@"No image for the command %@ found", msg);
146-
}
147-
}
168+
else
169+
[self setImage:msg];
148170
}
149171

150172
-(NSStatusItem*) initializeStatusBarItem {
151173
NSStatusItem *statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
152-
statusItem.alternateImage = [NSImage imageNamed:AlternateImageName];
174+
statusItem.alternateImage = [NSImage imageNamed:@"black_alt@2x.png"];
153175
statusItem.highlightMode = YES;
154176
return statusItem;
155177
}
@@ -166,10 +188,6 @@ -(NSMenu*) initializeStatusBarMenu:(NSDictionary*)menuDictionary {
166188
return menu;
167189
}
168190

169-
-(void) updateStatusImage:(NSImage*) image {
170-
_statusItem.image = image;
171-
}
172-
173191
-(int) readIntFromEnvironmentVariable:(NSString*) envVariable usingDefault:(NSString*) defStr {
174192
int intVal = -1;
175193

0 commit comments

Comments
 (0)