はじめての2chブラウザのつくりかた(その2)
http://d.hatena.ne.jp/RNatori/20080714
から20行ほどいじることで、新・Mac板専用ブラウザを作ることが出来ます。
http://homepage.mac.com/k_natori/Cocoa/downloads/MyFirst2chBrowser020.zip
完成図はこちら。
URLフィールドは動作しなくなってます。「Load」ボタンを読み込むと、新・Mac板が読み込まれてTableViewに表示されます。マウスで特定のスレッドをクリックすると、下部のThreadViewに表示されます。
Cocoa Bindingの利用により、スレッドが読み込まれるとTableViewに表示されている既読レス数も自動的に変更されます。さらに、アプリケーションを終了して再度起動しても、板の情報は自動的に保存/読み込みされています。
重要な変更の部分だけ解説。
MyDocument.h, MyDocument.m
-(IBAction)load:(id)sender { if (!_threadList) { T2ListFace *listFace = [T2ListFace listFaceWithInternalPath:@"2ch BBS/mac" title:@"mac" image:nil]; T2ThreadList *threadList = (T2ThreadList *)[listFace list]; [self setThreadList:threadList]; } [_threadList load]; }
load:メソッドの役割が変更されています。MyDocumentにはインスタンス変数_threadListが追加され、アクセッサが実装されています。
-(IBAction)selectThread:(id)sender { T2ThreadFace *threadFace = [[_threadFacesController selectedObjects] lastObject]; if (threadFace) { T2Thread *thread = [threadFace thread]; [_threadView setResExtractPath:@"allRes"]; [_threadView setThread:thread]; [thread load]; } }
selectThread:はTableView上でマウスクリックで選択されたときに呼ばれます。以前とは若干スレッドの生成方法が変わっています。
T2ThreadListは板を表すオブジェクト、T2Threadはスレッドを表すオブジェクトですが、どちらも生成するときに「〜Face」とつくオブジェクトに頼む必要があります。これはまあ、Thousand2chの流儀です。