NSView on NSCell
できたのでメモ書き
- あらかじめ、InterfaceBuilderで表示させるTableの横幅と、表示させる中身の横幅を決めておく。なお、表示させる中身とTableは別々のNibファイルにしておく事。
- NSCellを継承して、NSViewを保持するような仕組みを持たせる
- NSTableColumnに、NSCellを継承させたオブジェクトを保持させる
- NSTableViewのdataSource先では、「- (int) numberOfRowsInTableView:」「- (void) tableView:willDisplayCell:forTableColumn:row:」を実装させる。
- 「- (void) tableView:willDisplayCell:forTableColumn:row:」の内部では、第二引数のNSCellが継承したオブジェクトなはずなので、「cell setView:」と言った感じでViewを入れる
- NSCellの継承したオブジェクトで「drawWithFrame:inView:」をオーバーライドし、第一引数のNSRect型を保持しているNSViewのsetFrameで指定させ、第二引数のNSViewのメソッド「addSubview:」で保持しているNSViewを追加させる。
注意点
- NSTableViewの更新が、パフォーマンスを理由に全てのCellを見に行かないらしい。つまり、[nstableview display]とやってもcellの中身までは更新しないっぽい。解決として、下記のような力技更新が必要みたい。ただ、明らかにパフォーマンスが遅くなるので注意。
- CocoaBindingしか使ってなかったら泣きの涙。*1
*1:つか、何か良い方法ないかなー。CocoaBindingを自作できるほど技量ねぇし…
0.0.3.3 メモ書き その2
個人的なメモ書き
優先順位は上から。
HistryからMovieを起動した時に、DownloadPanelに残ってしまうバグ複数ダウンロードができない+ダウンロード中に他のMovieが再生できないバグ- ダウンロードしないバグ
- 上記二つ解消
- 上記一つは早急。私が不便だからと致命的過ぎる欠陥。もの凄いアホくさい事のような気がするんだよなぁ。NSURLDownloadをダウンロードしている最中に勝手にreleaseしてしまってる気がする。
Download panel を NSCollectionView ではなく、NSMatrixで実装必要あり鴨。*1- DownloadPanelは、NSTableView use NSView on NSCellで実装。挙動不審。
GCの削除*2- NSCollectionViewが、新たにアイテムが追加された時やWindowのResizeが起きると、表示が最上部に移動する。微妙に使いにくい仕様なので、どうにかしたい。
- DownloadとPlayListを区別する必要有り。
- 新たに興す。
- Play List のDBは、現存とは別にする?*3
- Histryに、playlistタブを追加はどう?
- playlist loop の実装
- 設定パネルの実装
- Quotaの実装
- 最大容量の設定(これは楽)
- 最大容量を越す場合、聞いてないmovieから削除して、上書き。
- Growl通知の実装*4
完成は…ダウンロードさえできれば、後は簡単なバグチェックだけでアルファにはいけるね。見えてきたかな。