ページ

2009年7月2日木曜日

ホットキー変更対応(17) - 実装 Hotkeyクラス

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

ホットキーも長くなった。今実装に入っている。先日の設計には無かったがキー情報を保持するクラスがあると便利なので用意した。

こんな感じ。
Hotkey.h

@interface Hotkey : NSObject {

// Hotkey attrs
UInt32 _keyid; //TODO: id
UInt32 _modifier;
UInt32 _code;
EventHotKeyRef _ref;

// Handler attrs
id _target;
SEL _action;

// keydown:(Hotkey*)hotkey;
}

@property UInt32 keyid;
@property UInt32 modifier;
@property UInt32 code;
@property EventHotKeyRef ref;
@property (retain) id target;
@property SEL action;


Hotkey.m
@implementation Hotkey

@synthesize keyid = _keyid;
@synthesize modifier = _modifier;
@synthesize code = _code;
@synthesize ref = _ref;
@synthesize target = _target;
@synthesize action = _action;

- (BOOL)isEqual:(id)anObject
{
if (anObject == self) {
return YES;
}
if (!anObject || ![anObject isKindOfClass:[self class]]) {
return NO;
}
if (self.keyid != self.keyid) {
return NO;
}
return YES;
}


※未完成でまだテストしていない


今のところ実装はオブジェクトの同値性をチェックする isEqualのみ。これは [NSArray containsObject] の中で使われる。

- - - -
キー値と表示文字用に HotkeyCharMapper なるクラスを用意するつもりだったが、このクラスの責務を考えると統合しても良さそう。