プログラミングに対する集中力もなく、ちょっと調べては自分のプロジェクトを眺め、少し考えてはまたちょっと調べ、という感じでこれといって成果のない1日となった。ま、そんな日もあるさ。
IKImageBrowserViewでフォルダアイコンをダブルクリックしたらフォルダ内へ移動、はすぐできあがった。そりゃそうだ、NSTableViewでさんざんやったんだから。
delegateの
-(void)imageBrowser:(IKImageBrowserView*)aBrowser cellWasDoubleClickedAtIndex:(NSUInteger)index
を定義してダブルクリックの処理をしたので、フォルダでない場合は自分で書いてやらないと何も起こらない。とりあえず
[[NSWorkspace sharedWorkspace]openFile:[item fullPath]];
みたいな感じでファイルオープンだけするようにして、ここから少し考えた。ここの処理で、ファイルの種類によってあれこれやるのもおもしろいかな、と。単純にアプリケーションなら、「開く」か「実行」か、画像なら開くアプリの選択、とか。
IKImageBrowserViewで画像を自前で開けば、WindowsのVixみたいなアプリにもできるな、とか。
どこまで突き進むかわからないけれど、まずはクリックしたファイルの種類を判定するところから。
NSString* uti=[[NSWorkspace sharedWorkspace] typeOfFile:[item fullPath] error:nil];UTIってなによ、な素人なわけだが、とにかくこれでファイルのUTIが取得できた。[item fullPath]はファイルのURLを収めたモデルクラス(のメソッド)。
NSString* loca=[[NSWorkspace sharedWorkspace] localizedDescriptionForType:uti];これでいわゆる「ファイルの種類」を表す文字列が取得できた。ついでにEseのTableViewで表示できるようにしてみる。
えーと日本語で表示されないのは、アプリをローカライズしてないからかな?
それで以下のメソッドで「このタイプのファイル?」と問い合わせればBOOLで答えてもらえるみたい。
[[NSWorkspace sharedWorkspace] type:uti conformsToType:@"public.image"]);
上の例は画像かどうか問い合せてみた。NSLogを取ってみると、画像ならPNGでもJpegでもちゃんと「YES」を返してくれる模様。
そんなんでファイルの種類を得ることができたので、今度は
1,ファイルの種類を判定する専用のクラス
2,ファイルの種類に基づいてOpenする動作を割り当てるクラス
を細分化して書いてみようかなー、と考えてところで本日は終了。
QLPreviewPanelをちゃんと開くための作業をしようと思っていたけれど、なかなかうまく進まないものだ。
0 件のコメント:
コメントを投稿