/* 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,
import com.owncloud.android.operations.SynchronizeFileOperation;
import com.owncloud.android.operations.SynchronizeFolderOperation;
import com.owncloud.android.operations.UnshareLinkOperation;
-import com.owncloud.android.services.OperationsService;
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;
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;
*/
public class FileDisplayActivity extends HookActivity implements
-FileFragment.ContainerActivity, OnNavigationListener,
-OnSslUntrustedCertListener, EditNameDialogListener {
+FileFragment.ContainerActivity, OnNavigationListener, OnSslUntrustedCertListener {
private ArrayAdapter<String> mDirectories;
private SyncBroadcastReceiver mSyncBroadcastReceiver;
private UploadFinishReceiver mUploadFinishReceiver;
private DownloadFinishReceiver mDownloadFinishReceiver;
- //private OperationsServiceReceiver mOperationsServiceReceiver;
private RemoteOperationResult mLastSslUntrustedServerResult = null;
private boolean mDualPane;
private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";
private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS";
- //private static final String KEY_REFRESH_SHARES_IN_PROGRESS = "SHARES_IN_PROGRESS";
private static final String KEY_WAITING_TO_SEND = "WAITING_TO_SEND";
public static final int DIALOG_SHORT_WAIT = 0;
private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1;
- //private static final int DIALOG_SSL_VALIDATOR = 2;
private static final int DIALOG_CERT_NOT_SAVED = 2;
public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS";
private OCFile mWaitingToPreview;
private boolean mSyncInProgress = false;
- //private boolean mRefreshSharesInProgress = false;
private String DIALOG_UNTRUSTED_CERT;
if(savedInstanceState != null) {
mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW);
mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS);
- //mRefreshSharesInProgress = savedInstanceState.getBoolean(KEY_REFRESH_SHARES_IN_PROGRESS);
mWaitingToSend = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND);
} else {
mWaitingToPreview = null;
mSyncInProgress = false;
- //mRefreshSharesInProgress = false;
mWaitingToSend = null;
}
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
protected void onStart() {
super.onStart();
getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
- /*
- refreshListOfFilesFragment();
- */
}
@Override
return null;
}
- protected FileFragment getSecondFragment() {
+ public FileFragment getSecondFragment() {
Fragment second = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_SECOND_FRAGMENT);
if (second != null) {
return (FileFragment)second;
return null;
}
- public void cleanSecondFragment() {
+ protected void cleanSecondFragment() {
Fragment second = getSecondFragment();
if (second != null) {
FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
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;
}
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);
syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_END);
- //syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_SIZE_SYNCED);
syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED);
syncIntentFilter.addAction(SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
syncIntentFilter.addAction(SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
mDownloadFinishReceiver = new DownloadFinishReceiver();
registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
- // Listen for messages from the OperationsService
- /*
- IntentFilter operationsIntentFilter = new IntentFilter(OperationsService.ACTION_OPERATION_ADDED);
- operationsIntentFilter.addAction(OperationsService.ACTION_OPERATION_FINISHED);
- mOperationsServiceReceiver = new OperationsServiceReceiver();
- LocalBroadcastManager.getInstance(this).registerReceiver(mOperationsServiceReceiver, operationsIntentFilter);
- */
-
Log_OC.d(TAG, "onResume() end");
}
@Override
protected void onPause() {
- super.onPause();
Log_OC.e(TAG, "onPause() start");
if (mSyncBroadcastReceiver != null) {
unregisterReceiver(mSyncBroadcastReceiver);
unregisterReceiver(mDownloadFinishReceiver);
mDownloadFinishReceiver = null;
}
- /*
- if (mOperationsServiceReceiver != null) {
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mOperationsServiceReceiver);
- mOperationsServiceReceiver = null;
- }
- */
+
+
Log_OC.d(TAG, "onPause() end");
+ super.onPause();
}
currentFile = currentDir;
}
-
if (synchFolderRemotePath != null && currentDir.getRemotePath().equals(synchFolderRemotePath)) {
OCFileListFragment fileListFragment = getListOfFilesFragment();
if (fileListFragment != null) {
fileListFragment.listDirectory(currentDir);
}
}
-
setFile(currentFile);
}
mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED.equals(event));
- /*
- if (synchResult != null &&
- synchResult.isSuccess() &&
- (SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event) ||
- FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED.equals(event)
- ) &&
- !mRefreshSharesInProgress &&
- getFileOperationsHelper().isSharedSupported(FileDisplayActivity.this)
- ) {
- startGetShares();
- }
- */
-
}
removeStickyBroadcast(intent);
Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
(uploadedRemotePath.startsWith(currentDir.getRemotePath()));
if (sameAccount && isDescendant) {
-
refreshListOfFilesFragment();
-
}
boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, false);
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())) {
boolean isDescendant = isDescendant(downloadedRemotePath);
if (sameAccount && isDescendant) {
-
refreshListOfFilesFragment();
-
refreshSecondFragment(intent.getAction(), downloadedRemotePath, intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false));
}
}
- /**
- * Class waiting for broadcast events from the {@link OperationsService}.
- *
- * Updates the list of files when a get for shares is finished; at this moment the refresh of shares is the only
- * operation performed in {@link OperationsService}.
- *
- * In the future will handle the progress or finalization of all the operations performed in {@link OperationsService},
- * probably all the operations associated to the app model.
- */
- private class OperationsServiceReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (OperationsService.ACTION_OPERATION_ADDED.equals(intent.getAction())) {
-
- } else if (OperationsService.ACTION_OPERATION_FINISHED.equals(intent.getAction())) {
- //mRefreshSharesInProgress = false;
-
- Account account = intent.getParcelableExtra(OperationsService.EXTRA_ACCOUNT);
- RemoteOperationResult getSharesResult = (RemoteOperationResult)intent.getSerializableExtra(OperationsService.EXTRA_RESULT);
- if (getAccount() != null && account.name.equals(getAccount().name)
- && getStorageManager() != null
- ) {
- /*
- refeshListOfFilesFragment();
- */
- }
- if ((getSharesResult != null) &&
- RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED.equals(getSharesResult.getCode())) {
- mLastSslUntrustedServerResult = getSharesResult;
- showUntrustedCertDialog(mLastSslUntrustedServerResult);
- }
-
- //setSupportProgressBarIndeterminateVisibility(mRefreshSharesInProgress || mSyncInProgress);
- }
-
- }
-
- }
-
public void browseToRoot() {
OCFileListFragment listOfFiles = getListOfFilesFragment();
if (listOfFiles != null) { // should never be null, indeed
}
- // TODO: delete this method??
-// /**
-// * {@inheritDoc}
-// */
-//
-// @Override
-// public void onFileStateChanged() {
-// /* TODO WIP COMMENT
-// refeshListOfFilesFragment();
-// updateNavigationElementsInActionBar(getSecondFragment().getFile());
-// */
-// }
-//
-
-
@Override
protected ServiceConnection newTransferenceServiceConnection() {
return new ListServiceConnection();
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))) {
*/
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())) {
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);
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);
}
- }
}
}
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())) {
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);
}
}
}
} else {
if (operation.transferWasRequested()) {
- /* WIP: delete this refresh?
- * refreshListOfFilesFragment();
- */
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();
}
}
*/
@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);
+ }
}
}
+
}
setSupportProgressBarIndeterminateVisibility(true);
}
- /*
- private void startGetShares() {
- // Get shared files/folders
- Intent intent = new Intent(this, OperationsService.class);
- intent.putExtra(OperationsService.EXTRA_ACCOUNT, getAccount());
- startService(intent);
-
- mRefreshSharesInProgress = true;
- }
- */
-
/**
* Show untrusted cert dialog
*/
showDetailsIntent.putExtra(EXTRA_FILE, file);
showDetailsIntent.putExtra(EXTRA_ACCOUNT, getAccount());
startActivity(showDetailsIntent);
+
}
/**
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);
}
}