Skip to content

Commit 8b079a7

Browse files
committed
Allow users to toggle menu icon color. Closes chrisledet#5.
1 parent 9183e71 commit 8b079a7

File tree

13 files changed

+349
-96
lines changed

13 files changed

+349
-96
lines changed

Classes/AppDelegate.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,13 @@
2121

2222
#import <Cocoa/Cocoa.h>
2323

24-
@interface AppDelegate : NSObject <NSApplicationDelegate>
24+
@interface AppDelegate : NSObject <NSApplicationDelegate> {
25+
NSStatusItem* statusMenuItem;
26+
}
2527

2628
@property (assign) IBOutlet NSWindow *window;
2729

30+
- (NSStatusItem*)statusMenuItem;
31+
- (void)setStatusMenuItemIcon:(NSString*)iconName;
32+
2833
@end

Classes/AppDelegate.m

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,57 @@
2626
#import "AsynchronousAdapterOperation.h"
2727
#import "FileWritingAsynchronousAdapterDelegate.h"
2828
#import "ContentAdapter.h"
29-
3029
#import "ContentUploadAdapter.h"
3130
#import "FileAttributesUpdatingAsynchronAdapterDelegate.h"
31+
#import "UserSettings.h"
32+
33+
//@interface AppDelegate(Private)
34+
//- (void) setStatusMenuItem;
35+
//@end
3236

3337
@implementation AppDelegate
3438
@synthesize window = _window;
3539

36-
- (void)setupDefaultSettings {
40+
- (void)setupDefaultSettings
41+
{
3742
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
3843

44+
// Default sync location
3945
NSString *defaultLocalFolder = [@"~/Ubuntu One" stringByExpandingTildeInPath];
4046
[defaultValues setObject:defaultLocalFolder forKey:kLocalFolder];
4147

48+
// Default menu icon color
49+
[defaultValues setObject:[NSNumber numberWithBool:YES] forKey:kMenuIconColored];
50+
51+
// Set defaults
4252
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
4353
}
4454

45-
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
55+
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
56+
{
4657
[self setupDefaultSettings];
4758
}
59+
60+
- (NSStatusItem*)statusMenuItem
61+
{
62+
if (!statusMenuItem) {
63+
statusMenuItem = [NSStatusBar.systemStatusBar statusItemWithLength:NSSquareStatusItemLength];
64+
statusMenuItem.highlightMode = YES;
65+
66+
NSString* imageName = [UserSettings colorMenuIconSwitch] ? kColorMenuIconName : kBlackMenuIconName;
67+
[self setStatusMenuItemIcon:imageName];
68+
}
69+
70+
return statusMenuItem;
71+
}
72+
73+
- (void)setStatusMenuItemIcon:(NSString*)imageName
74+
{
75+
NSStatusBar* systemStatusBar = NSStatusBar.systemStatusBar;
76+
NSImage* menuImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:imageName]];
77+
menuImage.scalesWhenResized = YES;
78+
menuImage.size = NSMakeSize(systemStatusBar.thickness - 1, systemStatusBar.thickness - 1);
79+
statusMenuItem.image = menuImage;
80+
}
81+
4882
@end

0 commit comments

Comments
 (0)