ページ

2008年10月25日土曜日

範囲選択履歴(その6)モデル作成

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

今度は履歴を格納するモデルクラスを作成する。
こんな感じ。

SelectionHistory.h

@interface SelectionHistory : NSObject {

NSMutableArray* _history_list;
}

- (void)setSize:(NSSize)size;
- (NSSize)sizeAtIndex:(int)index;
- (NSArray*)menuList;

@end

#menuList はポップアップメニューに表示する為の文字列一覧を返す。

このクラスを前回のコードへ追加し機能させる。
まずは前回同様のポップアップメニューを表示させてみる。
イニシャライザの中でテスト用にサイズを追加する。

- (id)init
{
self = [super init];
if (self) {
_history_list = [[NSMutableArray alloc] init];
[self setSize:NSMakeSize(500, 500)];
[self setSize:NSMakeSize(600, 600)];
[self setSize:NSMakeSize(700, 700)];
}
return self;
}


#setSize は次の様になる。
- (void)setSize:(NSSize)size
{
NSValue* value = [NSValue valueWithSize:size];
[_history_list addObject:value];
}


NSSizeは構造体なのでそのままでは NSMutableArrayに入れられない。そこでラッパーとなる NSValue を利用する。

#menuListではポップアップメニュー表示用に文字列の配列を作る。
- (NSArray*)menuList
{
NSMutableArray* results = [NSMutableArray array];
for (NSValue* value in _history_list) {
NSSize size = [value sizeValue];
[results addObject:[NSString stringWithFormat:@"%.0fx%.0f", size.width, size.height]];
}
return results;
}


前回のコードで、この #menuList を呼ぶように書き換える。

メニューでた。


- - -
表示系は基本的なものができた。
次は履歴への追加に着手する。