ページ

2008年7月2日水曜日

タイマーダイアログ(その9)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

カウントの増加が1秒単位だけだと1分など長い時間に設定したい時に使いづらい。ボタンを増やしたくないので Shiftキーを押した時には 10秒単位の増減にしよう。

Shiftキーが押されたかどうかは NSEvent#modifierFlags が利用できる。ボタンが押された時にこの値と NSSfhitKeyMask で論理積(AND)をとってやる。

Shiftキーの有無によってカウントの増減量 dc の設定を変えている。
ThimerControllerm.m

-(void)clickedAtTag:(NSNumber*)tag event:(NSEvent*)event
{
BOOL is_shiftkey = ([event modifierFlags] & NSShiftKeyMask) ? YES : NO;
int dc = 1;
if (is_shiftkey) {
dc = 10;
}
  :


元々 ThinButtonBar からのコールバックには NSEventは含まれていなかったので今回これも追加した。
 [_delegate performSelector:@selector(clickedAtTag:event:) 
withObject:[NSNumber numberWithInt:[hitButton tag]]
withObject:theEvent];

幸いなことに performSelector: には引数2個まで対応しているので簡単にできた。

NSObject.h
- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;



調子に乗って1000秒まで増やしてみた(それだけ)。