From: Riadh Habbachi Date: Mon, 20 Oct 2014 03:56:55 +0000 (+0100) Subject: Added initial implementation to download a folder. X-Git-Tag: oc-android-1.7.0_signed~23^2~33^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/9139508b9f5314e1b9218fb34ec6bf6784c2285a?ds=inline;hp=--cc Added initial implementation to download a folder. fixes owncloud/android#308 --- 9139508b9f5314e1b9218fb34ec6bf6784c2285a diff --git a/src/com/owncloud/android/files/FileMenuFilter.java b/src/com/owncloud/android/files/FileMenuFilter.java index 6eb746cb..cf8c2f09 100644 --- a/src/com/owncloud/android/files/FileMenuFilter.java +++ b/src/com/owncloud/android/files/FileMenuFilter.java @@ -148,7 +148,7 @@ public class FileMenuFilter { /// decision is taken for each possible action on a file in the menu // DOWNLOAD - if (mFile == null || mFile.isFolder() || mFile.isDown() || downloading || uploading) { + if (mFile == null || mFile.isDown() || downloading || uploading) { toHide.add(R.id.action_download_file); } else { diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index e1ab1953..6f651820 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -23,11 +23,13 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.content.Intent; import android.net.Uri; +import android.os.storage.StorageManager; import android.support.v4.app.DialogFragment; import android.webkit.MimeTypeMap; import android.widget.Toast; import com.owncloud.android.R; +import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; @@ -40,6 +42,10 @@ import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.dialog.ShareLinkToDialog; +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + /** * * @author masensio @@ -197,18 +203,46 @@ public class FileOperationsHelper { public void syncFile(OCFile file) { - // Sync file - Intent service = new Intent(mFileActivity, OperationsService.class); - service.setAction(OperationsService.ACTION_SYNC_FILE); - service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); - service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); - service.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true); - mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service); - - mFileActivity.showLoadingDialog(); + Vector filesList = new Vector(); + if (!file.isFolder()){ + filesList.add(file); + }else { + // Add files recursivly + FileDataStorageManager storageManager = mFileActivity.getStorageManager(); + filesList.addAll(storageManager.getFolderContent(file)); + boolean newfiles; + do { + Vector tmpFolders = new Vector(); + for (OCFile tmpfile : filesList) { + if (tmpfile.isFolder()) { + tmpFolders.add(tmpfile); + } + } + if (tmpFolders.isEmpty()){ + newfiles = false; + }else { + for(OCFile tmpFolder : tmpFolders){ + filesList.remove(tmpFolder); + filesList.addAll(storageManager.getFolderContent(tmpFolder)); + } + newfiles = true; + } + }while(newfiles); + } + // Sync file(s) + for (OCFile childFile : filesList) { + Intent service = new Intent(mFileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_SYNC_FILE); + service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, childFile.getRemotePath()); + service.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true); + mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service); + } + if (!file.isFolder()) { + mFileActivity.showLoadingDialog(); + } } - public void renameFile(OCFile file, String newFilename) { // RenameFile Intent service = new Intent(mFileActivity, OperationsService.class);