X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/21cacceea00a4181566b4c41ee50cdf2ed1cd55f..8e057b45041897e80e4cbfd44a14c515c0ef5605:/src/com/owncloud/android/ui/activity/FileDisplayActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 5debcd43..c19fb4a1 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -80,13 +80,14 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CopyFileOperation; import com.owncloud.android.operations.CreateFolderOperation; -import com.owncloud.android.operations.CreateShareOperation; +import com.owncloud.android.operations.CreateShareViaLinkOperation; +import com.owncloud.android.operations.CreateShareWithShareeOperation; import com.owncloud.android.operations.MoveFileOperation; import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; -import com.owncloud.android.operations.UnshareLinkOperation; +import com.owncloud.android.operations.UnshareOperation; import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; @@ -119,8 +120,6 @@ public class FileDisplayActivity extends HookActivity implements FileFragment.ContainerActivity, OnSslUntrustedCertListener, OnEnforceableRefreshListener { - - private SyncBroadcastReceiver mSyncBroadcastReceiver; private UploadFinishReceiver mUploadFinishReceiver; private DownloadFinishReceiver mDownloadFinishReceiver; @@ -231,6 +230,13 @@ public class FileDisplayActivity extends HookActivity } @Override + protected void onStop() { + Log_OC.v(TAG, "onStop() start"); + super.onStop(); + Log_OC.v(TAG, "onStop() end"); + } + + @Override protected void onDestroy() { Log_OC.v(TAG, "onDestroy() start"); super.onDestroy(); @@ -674,7 +680,7 @@ public class FileDisplayActivity extends HookActivity requestMoveOperation(fData, fResultCode); } }, - DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS + DELAY_TO_REQUEST_OPERATIONS_LATER ); } else if (requestCode == ACTION_COPY_FILES && resultCode == RESULT_OK) { @@ -688,7 +694,7 @@ public class FileDisplayActivity extends HookActivity requestCopyOperation(fData, fResultCode); } }, - DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS + DELAY_TO_REQUEST_OPERATIONS_LATER ); } else { @@ -1066,6 +1072,7 @@ public class FileDisplayActivity extends HookActivity } } + } removeStickyBroadcast(intent); Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress); @@ -1434,11 +1441,14 @@ public class FileDisplayActivity extends HookActivity } else if (operation instanceof CreateFolderOperation) { onCreateFolderOperationFinish((CreateFolderOperation) operation, result); - } else if (operation instanceof CreateShareOperation) { - onCreateShareOperationFinish((CreateShareOperation) operation, result); + } else if (operation instanceof CreateShareViaLinkOperation || + operation instanceof CreateShareWithShareeOperation ) { - } else if (operation instanceof UnshareLinkOperation) { - onUnshareLinkOperationFinish((UnshareLinkOperation) operation, result); + refreshShowDetails(); + refreshListOfFilesFragment(); + + } else if (operation instanceof UnshareOperation) { + onUnshareLinkOperationFinish((UnshareOperation) operation, result); } else if (operation instanceof MoveFileOperation) { onMoveFileOperationFinish((MoveFileOperation) operation, result); @@ -1448,15 +1458,8 @@ public class FileDisplayActivity extends HookActivity } } - private void onCreateShareOperationFinish(CreateShareOperation operation, - RemoteOperationResult result) { - if (result.isSuccess()) { - refreshShowDetails(); - refreshListOfFilesFragment(); - } - } - private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, + private void onUnshareLinkOperationFinish(UnshareOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); @@ -1497,8 +1500,6 @@ public class FileDisplayActivity extends HookActivity */ private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - dismissLoadingDialog(); - Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), Toast.LENGTH_LONG); @@ -1537,10 +1538,8 @@ public class FileDisplayActivity extends HookActivity private void onMoveFileOperationFinish(MoveFileOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { - dismissLoadingDialog(); refreshListOfFilesFragment(); } else { - dismissLoadingDialog(); try { Toast msg = Toast.makeText(FileDisplayActivity.this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), @@ -1562,10 +1561,8 @@ public class FileDisplayActivity extends HookActivity */ private void onCopyFileOperationFinish(CopyFileOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { - dismissLoadingDialog(); refreshListOfFilesFragment(); } else { - dismissLoadingDialog(); try { Toast msg = Toast.makeText(FileDisplayActivity.this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), @@ -1587,7 +1584,6 @@ public class FileDisplayActivity extends HookActivity */ private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) { - dismissLoadingDialog(); OCFile renamedFile = operation.getFile(); if (result.isSuccess()) { FileFragment details = getSecondFragment(); @@ -1656,10 +1652,8 @@ public class FileDisplayActivity extends HookActivity private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { - dismissLoadingDialog(); refreshListOfFilesFragment(); } else { - dismissLoadingDialog(); try { Toast msg = Toast.makeText(FileDisplayActivity.this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), @@ -1722,26 +1716,60 @@ public class FileDisplayActivity extends HookActivity return null; } - public void startSyncFolderOperation(OCFile folder, boolean ignoreETag) { - long currentSyncTime = System.currentTimeMillis(); - - mSyncInProgress = true; - - // perform folder synchronization - RemoteOperation synchFolderOp = new RefreshFolderOperation( folder, - currentSyncTime, - false, - getFileOperationsHelper().isSharedSupported(), - ignoreETag, - getStorageManager(), - getAccount(), - getApplicationContext() + /** + * Starts an operation to refresh the requested folder. + * + * The operation is run in a new background thread created on the fly. + * + * The refresh updates is a "light sync": properties of regular files in folder are updated (including + * associated shares), but not their contents. Only the contents of files marked to be kept-in-sync are + * synchronized too. + * + * @param folder Folder to refresh. + * @param ignoreETag If 'true', the data from the server will be fetched and sync'ed even if the eTag + * didn't change. + */ + public void startSyncFolderOperation(final OCFile folder, final boolean ignoreETag) { + + // the execution is slightly delayed to allow the activity get the window focus if it's being started + // or if the method is called from a dialog that is being dismissed + getHandler().postDelayed( + new Runnable() { + @Override + public void run() { + if (hasWindowFocus()) { + long currentSyncTime = System.currentTimeMillis(); + mSyncInProgress = true; + + // perform folder synchronization + RemoteOperation synchFolderOp = new RefreshFolderOperation(folder, + currentSyncTime, + false, + getFileOperationsHelper().isSharedSupported(), + ignoreETag, + getStorageManager(), + getAccount(), + getApplicationContext() + ); + synchFolderOp.execute( + getAccount(), + MainApp.getAppContext(), + FileDisplayActivity.this, + null, + null + ); + + mProgressBar.setIndeterminate(true); + + setBackgroundText(); + + } // else: NOTHING ; lets' not refresh when the user rotates the device but there is + // another window floating over + } + }, + DELAY_TO_REQUEST_OPERATIONS_LATER ); - synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null); - - mProgressBar.setIndeterminate(true); - setBackgroundText(); } /**