エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

自分用時計Mac App作った

Obsician Menu Barでmenu barを黒くしていると、時計の時刻が見づらくなりまして。 それで、時計だけを表示するMacAppを作ってみました。

f:id:J_ogawa:20140407232808p:plain

この佇まい。

f:id:J_ogawa:20140407232841p:plain

Quitのみ。

Mac Appはあまり作った事がないのですが、UI以外のところはiOSとほとんど同じ感じですね。
ここを参考にしました。

#import "JOGAppDelegate.h"

NSStatusItem *statusItem;
NSMenu *theMenu;
NSDateFormatter *formatter;
NSDictionary *attrDict;

@implementation JOGAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSMenuItem *tItem = nil;
    
    theMenu = [[NSMenu alloc] initWithTitle:@""];
    [theMenu setAutoenablesItems:NO];
    
    tItem = [theMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
    [tItem setKeyEquivalentModifierMask:NSCommandKeyMask];
    
    NSStatusBar *statusBar = [NSStatusBar systemStatusBar];
    statusItem = [statusBar statusItemWithLength:NSVariableStatusItemLength];
    
    [statusItem setHighlightMode:YES];
    [statusItem setMenu:theMenu];
    
    formatter = [NSDateFormatter new];
    [formatter setLocale:[NSLocale currentLocale]];
    [formatter setDateStyle:NSDateFormatterNoStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    
    attrDict = @{
                 NSFontAttributeName : [NSFont boldSystemFontOfSize:12],
                 NSForegroundColorAttributeName : [NSColor lightGrayColor]
                 };
    
    [self setNowStr];
    
    [NSTimer scheduledTimerWithTimeInterval:3.0f target:[NSBlockOperation blockOperationWithBlock:^{
        [self setNowStr];
    }] selector:@selector(main) userInfo:nil repeats:YES];
}

- (void)setNowStr
{
    NSAttributedString *attrStr = [[NSAttributedString alloc]initWithString:[formatter stringFromDate:[NSDate date]] attributes:attrDict];
    [statusItem setAttributedTitle:attrStr];
}

@end

.app も後で公開してみよう。

あとはユーザが画像を入れたらmenu bar上でパラパラ漫画ができるのとか作ってみようかな。