X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/60d26d53f6dee0fa3724f583bf799ea046bb1ab7..34433e924df7c368c2a4012854c76591be64b5c2:/src/com/owncloud/android/files/FileOperationsHelper.java 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);