X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/3adb39a15e34d046dfd587bf63e91786cb295c5c..d24ba158d24c161a0db484ea551a40851a9d60e8:/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 b46693e8..4babd9db 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1,6 +1,6 @@ /* ownCloud Android client application * Copyright (C) 2011 Bartek Przybylski - * Copyright (C) 2012-2013 ownCloud Inc. + * Copyright (C) 2012-2014 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -79,9 +79,8 @@ import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.syncadapter.FileSyncAdapter; -import com.owncloud.android.ui.dialog.EditNameDialog; +import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; -import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; @@ -91,6 +90,7 @@ import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.Log_OC; @@ -102,8 +102,7 @@ import com.owncloud.android.utils.Log_OC; */ public class FileDisplayActivity extends HookActivity implements -FileFragment.ContainerActivity, OnNavigationListener, -OnSslUntrustedCertListener, EditNameDialogListener { +FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener { private ArrayAdapter mDirectories; @@ -182,11 +181,6 @@ OnSslUntrustedCertListener, EditNameDialogListener { mRightFragmentContainer = findViewById(R.id.right_fragment_container); if (savedInstanceState == null) { createMinFragments(); - } else { - Log_OC.d(TAG, "Init the secondFragment again"); - if (mDualPane) { - initFragmentsWithFile(); - } } // Action bar setup @@ -378,7 +372,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { return null; } - protected FileFragment getSecondFragment() { + public FileFragment getSecondFragment() { Fragment second = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_SECOND_FRAGMENT); if (second != null) { return (FileFragment)second; @@ -397,7 +391,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { updateNavigationElementsInActionBar(null); } - protected void refeshListOfFilesFragment() { + protected void refreshListOfFilesFragment() { OCFileListFragment fileListFragment = getListOfFilesFragment(); if (fileListFragment != null) { fileListFragment.listDirectory(); @@ -453,7 +447,8 @@ OnSslUntrustedCertListener, EditNameDialogListener { boolean retval = true; switch (item.getItemId()) { case R.id.action_create_dir: { - EditNameDialog dialog = EditNameDialog.newInstance(getString(R.string.uploader_info_dirname), "", -1, -1, this); + CreateFolderDialogFragment dialog = + CreateFolderDialogFragment.newInstance(getCurrentDir()); dialog.show(getSupportFragmentManager(), "createdirdialog"); break; } @@ -666,6 +661,9 @@ OnSslUntrustedCertListener, EditNameDialogListener { protected void onResume() { super.onResume(); Log_OC.e(TAG, "onResume() start"); + + // refresh list of files + refreshListOfFilesFragment(); // Listen for sync messages IntentFilter syncIntentFilter = new IntentFilter(FileSyncAdapter.EVENT_FULL_SYNC_START); @@ -694,7 +692,6 @@ OnSslUntrustedCertListener, EditNameDialogListener { @Override protected void onPause() { - super.onPause(); Log_OC.e(TAG, "onPause() start"); if (mSyncBroadcastReceiver != null) { unregisterReceiver(mSyncBroadcastReceiver); @@ -709,7 +706,10 @@ OnSslUntrustedCertListener, EditNameDialogListener { unregisterReceiver(mDownloadFinishReceiver); mDownloadFinishReceiver = null; } + + Log_OC.d(TAG, "onPause() end"); + super.onPause(); } @@ -957,7 +957,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { (uploadedRemotePath.startsWith(currentDir.getRemotePath())); if (sameAccount && isDescendant) { - refeshListOfFilesFragment(); + refreshListOfFilesFragment(); } boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, false); @@ -983,7 +983,11 @@ OnSslUntrustedCertListener, EditNameDialogListener { Toast.LENGTH_LONG); msg.show(); } - ((FileDetailFragment)details).updateFileDetails(false, false); + if (uploadWasFine || getFile().fileExists()) { + ((FileDetailFragment)details).updateFileDetails(false, true); + } else { + cleanSecondFragment(); + } // Force the preview if the file is an image if (uploadWasFine && PreviewImageFragment.canBePreviewed(getFile())) { @@ -1012,7 +1016,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { boolean isDescendant = isDescendant(downloadedRemotePath); if (sameAccount && isDescendant) { - refeshListOfFilesFragment(); + refreshListOfFilesFragment(); refreshSecondFragment(intent.getAction(), downloadedRemotePath, intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false)); } @@ -1140,8 +1144,12 @@ OnSslUntrustedCertListener, EditNameDialogListener { if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) { Log_OC.d(TAG, "Download service connected"); mDownloaderBinder = (FileDownloaderBinder) service; - if (mWaitingToPreview != null) { - requestForDownload(); + if (mWaitingToPreview != null) + if (getStorageManager() != null) { + mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId()); // update the file + if (!mWaitingToPreview.isDown()) { + requestForDownload(); + } } } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) { @@ -1245,9 +1253,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); - /* TODO WIP COMMENT - refeshListOfFilesFragment(); - */ + refreshListOfFilesFragment(); } } @@ -1255,14 +1261,11 @@ OnSslUntrustedCertListener, EditNameDialogListener { private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { refreshShowDetails(); - /* - refeshListOfFilesFragment(); - */ + refreshListOfFilesFragment(); + } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { cleanSecondFragment(); - /* - refeshListOfFilesFragment(); - */ + refreshListOfFilesFragment(); } } @@ -1292,23 +1295,26 @@ OnSslUntrustedCertListener, EditNameDialogListener { */ private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { dismissLoadingDialog(); + + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + msg.show(); + if (result.isSuccess()) { - Toast msg = Toast.makeText(this, R.string.remove_success_msg, Toast.LENGTH_LONG); - msg.show(); OCFile removedFile = operation.getFile(); FileFragment second = getSecondFragment(); if (second != null && removedFile.equals(second.getFile())) { + if (second instanceof PreviewMediaFragment) { + ((PreviewMediaFragment)second).stopPreview(true); + } + setFile(getStorageManager().getFileById(removedFile.getParentId())); cleanSecondFragment(); } if (getStorageManager().getFileById(removedFile.getParentId()).equals(getCurrentDir())) { - /* - refeshListOfFilesFragment(); - */ + refreshListOfFilesFragment(); } - + invalidateOptionsMenu(); } else { - Toast msg = Toast.makeText(this, R.string.remove_fail_msg, Toast.LENGTH_LONG); - msg.show(); if (result.isSslRecoverableException()) { mLastSslUntrustedServerResult = result; showUntrustedCertDialog(mLastSslUntrustedServerResult); @@ -1326,23 +1332,18 @@ OnSslUntrustedCertListener, EditNameDialogListener { private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { dismissLoadingDialog(); - /* TODO WIP COMMENT - refeshListOfFilesFragment(); - */ - + refreshListOfFilesFragment(); } else { dismissLoadingDialog(); - if (result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME) { - Toast.makeText(FileDisplayActivity.this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG).show(); - } else { try { - Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG); + Toast msg = Toast.makeText(FileDisplayActivity.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); } - } } } @@ -1359,30 +1360,34 @@ OnSslUntrustedCertListener, EditNameDialogListener { OCFile renamedFile = operation.getFile(); if (result.isSuccess()) { FileFragment details = getSecondFragment(); - if (details != null && details instanceof FileDetailFragment && renamedFile.equals(details.getFile()) ) { - ((FileDetailFragment) details).updateFileDetails(renamedFile, getAccount()); + if (details != null) { + if (details instanceof FileDetailFragment && renamedFile.equals(details.getFile()) ) { + ((FileDetailFragment) details).updateFileDetails(renamedFile, getAccount()); + showDetails(renamedFile); + + } else if (details instanceof PreviewMediaFragment && renamedFile.equals(details.getFile())) { + ((PreviewMediaFragment) details).updateFile(renamedFile); + if (PreviewMediaFragment.canBePreviewed(renamedFile)) { + int position = ((PreviewMediaFragment)details).getPosition(); + startMediaPreview(renamedFile, position, true); + } else { + getFileOperationsHelper().openFile(renamedFile); + } + } } + if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())) { - /* - refeshListOfFilesFragment(); - */ + refreshListOfFilesFragment(); } } else { - if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) { - Toast msg = Toast.makeText(this, R.string.rename_local_fail_msg, Toast.LENGTH_LONG); - msg.show(); - // TODO throw again the new rename dialog - } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) { - Toast msg = Toast.makeText(this, R.string.filename_forbidden_characters, Toast.LENGTH_LONG); - msg.show(); - } else { - Toast msg = Toast.makeText(this, R.string.rename_server_fail_msg, Toast.LENGTH_LONG); - msg.show(); - if (result.isSslRecoverableException()) { - mLastSslUntrustedServerResult = result; - showUntrustedCertDialog(mLastSslUntrustedServerResult); - } + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + msg.show(); + + if (result.isSslRecoverableException()) { + mLastSslUntrustedServerResult = result; + showUntrustedCertDialog(mLastSslUntrustedServerResult); } } } @@ -1401,13 +1406,11 @@ OnSslUntrustedCertListener, EditNameDialogListener { } else { if (operation.transferWasRequested()) { - /* - refeshListOfFilesFragment(); - */ onTransferStateChanged(syncedFile, true, true); } else { - Toast msg = Toast.makeText(this, R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG); + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); msg.show(); } } @@ -1419,36 +1422,20 @@ OnSslUntrustedCertListener, EditNameDialogListener { */ @Override public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) { + refreshListOfFilesFragment(); FileFragment details = getSecondFragment(); if (details != null && details instanceof FileDetailFragment && file.equals(details.getFile()) ) { if (downloading || uploading) { ((FileDetailFragment)details).updateFileDetails(file, getAccount()); } else { - ((FileDetailFragment)details).updateFileDetails(false, true); - } - } - } - - - public void onDismiss(EditNameDialog dialog) { - if (dialog.getResult()) { - String newDirectoryName = dialog.getNewFilename().trim(); - Log_OC.d(TAG, "'create directory' dialog dismissed with new name " + newDirectoryName); - if (newDirectoryName.length() > 0) { - String path = getCurrentDir().getRemotePath(); - - // Create directory - path += newDirectoryName + OCFile.PATH_SEPARATOR; - RemoteOperation operation = new CreateFolderOperation(path, false, getStorageManager()); - operation.execute( getAccount(), - FileDisplayActivity.this, - FileDisplayActivity.this, - getHandler(), - FileDisplayActivity.this); - - showLoadingDialog(); + if (!file.fileExists()) { + cleanSecondFragment(); + } else { + ((FileDetailFragment)details).updateFileDetails(false, true); + } } } + } @@ -1546,6 +1533,7 @@ OnSslUntrustedCertListener, EditNameDialogListener { showDetailsIntent.putExtra(EXTRA_FILE, file); showDetailsIntent.putExtra(EXTRA_ACCOUNT, getAccount()); startActivity(showDetailsIntent); + } /** @@ -1582,20 +1570,16 @@ OnSslUntrustedCertListener, EditNameDialogListener { public void cancelTransference(OCFile file) { - Account account = getAccount(); - if (mDownloaderBinder != null && mDownloaderBinder.isDownloading(account, file)) { - mDownloaderBinder.cancel(account, file); - onTransferStateChanged(file, false, false); - - } else if (mUploaderBinder != null && mUploaderBinder.isUploading(account, file)) { - mUploaderBinder.cancel(account, file); - if (!file.fileExists()) { - cleanSecondFragment(); - - } else { - onTransferStateChanged(file, false, false); - } + getFileOperationsHelper().cancelTransference(file); + if (mWaitingToPreview != null && + mWaitingToPreview.getRemotePath().equals(file.getRemotePath())) { + mWaitingToPreview = null; + } + if (mWaitingToSend != null && + mWaitingToSend.getRemotePath().equals(file.getRemotePath())) { + mWaitingToSend = null; } + onTransferStateChanged(file, false, false); } }