こんなダイアログを表示しようと考えている。
コピーするファイルのサイズの合計、コピーしているファイルのサイズ、それぞれの進行状況、コピーしているファイル名及びアイコン、などなどを表示する。
cancelボタンも作ってみた。ということは、「複数コピーしているファイルのうちのひとつだけキャンセル」、「コピーそのもののキャンセル」といった処理も必要となる。
コピーをキャンセルということはコピー中のファイルも削除しないといけないわけで、なんとなくできるかどうか不安になるな。(^^;)
本日はinitメソッドを考えて、書いて、それでほぼ終了。
素人なので初期化ひとつとってもすらすらとはいかない。
今回のFileCopyManager、結局初期化はこんな風にした。
-(id)initWithDistURL:(NSURL*)dURL copyFileArray:(NSArray*)fArray{ self=[super init]; if(self){ [NSBundle loadNibNamed:@"FileCopyDialog" owner:self]; NSFileManager* fileManager=[NSFileManager defaultManager]; BOOL isDir, valid; valid=[fileManager fileExistsAtPath:[dURL path] isDirectory:&isDir]; if (!valid || !isDir) { return nil; } if([fArray count]<=0){ return nil; } [self setDistURL:dURL]; [self setFileArray:fArray]; } return self; }filemanagerを生成する必要はなかったけれど、最初はsourceURLも初期化の引数にしていたので生成している。結局、sourceURLはコピー元のフルパスがわかれば必要ないので割愛したが。
コピー先のURLが無効ならFileCopyManager自体を生成しないようにしているが、これって今考えたんだがあまりよろしくない。無効ならそのパスを作る、が正しい気がする。(ドラッグアンドドロップでのコピー操作をメインに考えているため、無効なパスへのコピー操作はそもそも発生しない、という事情もある)
distURLとfileArrayはpropatyでそれぞれ
@property (assign) NSURL*distURL;
@property (retain) NSArray* fileArray;
と宣言しているため、セッタゲッタが自動で作られるから、FileCopyManagerのオブジェクトを生成したあと、オブジェクトの外部からsetDistURLとする方法もあるわけで、この辺の使い分け方がまだよくわかっていない。
今回はコピー先やコピーファイル群が無効ならオブジェクトを生成しないでnilを返す、という方向でいいような気がしているが。
FileCopyManagerのオブジェクトがnilでないなら、[fileCopyManager startFileCopy]みたいなメソッドを呼び出せば呼び出し側の処理は終了、というふうにしようと考えている。
しかし残念ながら、明日からはいよいよ学期末モードに突入の予定。家で通知表作成の作業に入る。どうしてもExcelを使わないと済まないので、Winを起動せざるをえない。あまりプログラミングに時間がとれないなあ。悲しい。
0 件のコメント:
コメントを投稿