X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/edc465e3b62a6b88895ea91977fb7c80f39dd88c..d5625e6cccd85dfb0f9e66a2da8f844341c96e2b:/src/com/owncloud/android/ui/activity/MoveActivity.java diff --git a/src/com/owncloud/android/ui/activity/MoveActivity.java b/src/com/owncloud/android/ui/activity/MoveActivity.java index 192db5bb..2d6824c8 100644 --- a/src/com/owncloud/android/ui/activity/MoveActivity.java +++ b/src/com/owncloud/android/ui/activity/MoveActivity.java @@ -27,6 +27,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources.NotFoundException; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; @@ -52,16 +53,23 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundExce import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; import com.owncloud.android.utils.DisplayUtils; -import com.owncloud.android.utils.Log_OC; +import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.lib.common.utils.Log_OC; public class MoveActivity extends HookActivity implements FileFragment.ContainerActivity, OnClickListener, SwipeRefreshLayout.OnRefreshListener { + + public static final String EXTRA_CURRENT_FOLDER = UploadFilesActivity.class.getCanonicalName() + ".EXTRA_CURRENT_FOLDER"; + public static final String EXTRA_TARGET_FILE = UploadFilesActivity.class.getCanonicalName() + "EXTRA_TARGET_FILE"; + + public static final int RESULT_OK_AND_MOVE = 1; private SyncBroadcastReceiver mSyncBroadcastReceiver; @@ -137,7 +145,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container OCFileListFragment listOfFolders = getListOfFilesFragment(); listOfFolders.listDirectory(folder); - startSyncFolderOperation(folder); + startSyncFolderOperation(folder, false); } updateNavigationElementsInActionBar(); @@ -193,12 +201,12 @@ public class MoveActivity extends HookActivity implements FileFragment.Container setFile(directory); updateNavigationElementsInActionBar(); // Sync Folder - startSyncFolderOperation(directory); + startSyncFolderOperation(directory, false); } - public void startSyncFolderOperation(OCFile folder) { + public void startSyncFolderOperation(OCFile folder, boolean ignoreETag) { long currentSyncTime = System.currentTimeMillis(); mSyncInProgress = true; @@ -208,6 +216,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container currentSyncTime, false, getFileOperationsHelper().isSharedSupported(), + ignoreETag, getStorageManager(), getAccount(), getApplicationContext() @@ -315,7 +324,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container listOfFiles.listDirectory(root); setFile(listOfFiles.getCurrentFile()); updateNavigationElementsInActionBar(); - startSyncFolderOperation(root); + startSyncFolderOperation(root, false); } } @@ -361,16 +370,59 @@ public class MoveActivity extends HookActivity implements FileFragment.Container if (v == mCancelBtn) { finish(); } else if (v == mChooseBtn) { - // TODO request to move, OR save selected folder as a result and let request for caller - Toast.makeText( MoveActivity.this, - "TODO: MOVE IMPLEMENTATION", - Toast.LENGTH_LONG) - .show(); + Intent i = getIntent(); + OCFile targetFile = (OCFile) i.getParcelableExtra(MoveActivity.EXTRA_TARGET_FILE); + + Intent data = new Intent(); + data.putExtra(EXTRA_CURRENT_FOLDER, getCurrentFolder()); + data.putExtra(EXTRA_TARGET_FILE, targetFile); + setResult(RESULT_OK_AND_MOVE, data); finish(); } } + @Override + public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { + super.onRemoteOperationFinish(operation, result); + + if (operation instanceof CreateFolderOperation) { + onCreateFolderOperationFinish((CreateFolderOperation)operation, result); + + } + } + + + /** + * Updates the view associated to the activity after the finish of an operation trying + * to create a new folder. + * + * @param operation Creation operation performed. + * @param result Result of the creation. + */ + private void onCreateFolderOperationFinish( + CreateFolderOperation operation, RemoteOperationResult result + ) { + + if (result.isSuccess()) { + dismissLoadingDialog(); + refreshListOfFilesFragment(); + } else { + dismissLoadingDialog(); + try { + Toast msg = Toast.makeText(MoveActivity.this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + msg.show(); + + } catch (NotFoundException e) { + Log_OC.e(TAG, "Error while trying to show fail message " , e); + } + } + } + + + private class SyncBroadcastReceiver extends BroadcastReceiver { /** @@ -398,7 +450,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container if (currentDir == null) { // current folder was removed from the server Toast.makeText( MoveActivity.this, - String.format(getString(R.string.sync_current_folder_was_removed), "PLACEHOLDER"), + String.format(getString(R.string.sync_current_folder_was_removed), getCurrentFolder().getFileName()), Toast.LENGTH_LONG) .show(); browseToRoot(); @@ -509,9 +561,7 @@ public class MoveActivity extends HookActivity implements FileFragment.Container if (listOfFiles != null) { OCFile folder = listOfFiles.getCurrentFile(); if (folder != null) { - /*mFile = mContainerActivity.getStorageManager().getFileById(mFile.getFileId()); - listDirectory(mFile);*/ - startSyncFolderOperation(folder); + startSyncFolderOperation(folder, true); } } }