引き続きFTPクライアントを制作中
引き続きFTPクライアントを制作中。
今日はリモート側のファイルをドラッグ&ドロップしてGETする処理作った。
前のテキストエディタの時はファイルのGETしかなかったが、ディレクトリのGETもあるから再帰的にやらんとだね。
ステータスの表示もする予定なんで、1個ずつGETする感じで、
タスクの追加も可能にするつもりなんで、AsyncTaskLoaderはrestartLoader()じゃなくて、IDを確認してinitloader()するようにした。
ローカル側のファイル削除処理も既に作ってあったが、
File.delete()でディレクトリの場合は空じゃないと削除できないようなんで、これも再帰的にやる必要があった。
機能自体は、あとローカル側からリモート側へのアップロードと、パーミッション変更作れば終わりだが、ステータス表示がめんどそう。
まあ、来週前半には完成させたい。
パーミッションはローカルとリモートで同期させたかったが、
APIの標準機能だとアプリ権限のrwxしか取得できないようなんで完全な同期ができない。
アプリ権限以外のrwxを取るのも不可能ではないと思うが、アプリ権限はユーザー権限ではないからパーミッション同期は捨てた方が良さそう。
今日はリモート側のファイルをドラッグ&ドロップしてGETする処理作った。
前のテキストエディタの時はファイルのGETしかなかったが、ディレクトリのGETもあるから再帰的にやらんとだね。
ステータスの表示もする予定なんで、1個ずつGETする感じで、
タスクの追加も可能にするつもりなんで、AsyncTaskLoaderはrestartLoader()じゃなくて、IDを確認してinitloader()するようにした。
LoaderManager lm=getLoaderManager();
for(int i=0;true;i++){
if(lm.getLoader(i)==null){
lm.initLoader(i,req,this);
break;
}
}
こんな感じで、0番から確認してgetLoader()がnullならそのIDを使うように。for(int i=0;true;i++){
if(lm.getLoader(i)==null){
lm.initLoader(i,req,this);
break;
}
}
ローカル側のファイル削除処理も既に作ってあったが、
File.delete()でディレクトリの場合は空じゃないと削除できないようなんで、これも再帰的にやる必要があった。
機能自体は、あとローカル側からリモート側へのアップロードと、パーミッション変更作れば終わりだが、ステータス表示がめんどそう。
まあ、来週前半には完成させたい。
パーミッションはローカルとリモートで同期させたかったが、
APIの標準機能だとアプリ権限のrwxしか取得できないようなんで完全な同期ができない。
アプリ権限以外のrwxを取るのも不可能ではないと思うが、アプリ権限はユーザー権限ではないからパーミッション同期は捨てた方が良さそう。