|
@@ -38,12 +38,10 @@ import android.content.res.Resources.NotFoundException;
|
|
|
import android.database.Cursor;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Bundle;
|
|
|
-import android.os.Handler;
|
|
|
import android.os.IBinder;
|
|
|
import android.preference.PreferenceManager;
|
|
|
import android.provider.MediaStore;
|
|
|
import android.support.v4.app.Fragment;
|
|
|
-import android.support.v4.app.FragmentManager;
|
|
|
import android.support.v4.app.FragmentTransaction;
|
|
|
import android.support.v4.content.LocalBroadcastManager;
|
|
|
import android.util.Log;
|
|
@@ -61,7 +59,6 @@ import com.actionbarsherlock.view.MenuItem;
|
|
|
import com.actionbarsherlock.view.Window;
|
|
|
import com.owncloud.android.MainApp;
|
|
|
import com.owncloud.android.R;
|
|
|
-import com.owncloud.android.datamodel.FileDataStorageManager;
|
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
|
import com.owncloud.android.files.services.FileDownloader;
|
|
|
import com.owncloud.android.files.services.FileObserverService;
|
|
@@ -70,11 +67,10 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
|
|
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
|
|
|
import com.owncloud.android.operations.CreateFolderOperation;
|
|
|
|
|
|
-import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;
|
|
|
import com.owncloud.android.lib.operations.common.RemoteOperation;
|
|
|
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
|
|
|
import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
|
|
|
-
|
|
|
+import com.owncloud.android.operations.CreateShareOperation;
|
|
|
import com.owncloud.android.operations.RemoveFileOperation;
|
|
|
import com.owncloud.android.operations.RenameFileOperation;
|
|
|
import com.owncloud.android.operations.SynchronizeFileOperation;
|
|
@@ -84,7 +80,6 @@ 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.EditNameDialog.EditNameDialogListener;
|
|
|
-import com.owncloud.android.ui.dialog.LoadingDialog;
|
|
|
import com.owncloud.android.ui.dialog.SslValidatorDialog;
|
|
|
import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;
|
|
|
import com.owncloud.android.ui.fragment.FileDetailFragment;
|
|
@@ -105,13 +100,10 @@ import com.owncloud.android.utils.Log_OC;
|
|
|
*/
|
|
|
|
|
|
public class FileDisplayActivity extends FileActivity implements
|
|
|
-OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslValidatorListener, OnRemoteOperationListener, EditNameDialogListener {
|
|
|
+OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNavigationListener, OnSslValidatorListener, EditNameDialogListener {
|
|
|
|
|
|
private ArrayAdapter<String> mDirectories;
|
|
|
|
|
|
- /** Access point to the cached database for the current ownCloud {@link Account} */
|
|
|
- private FileDataStorageManager mStorageManager = null;
|
|
|
-
|
|
|
private SyncBroadcastReceiver mSyncBroadcastReceiver;
|
|
|
private UploadFinishReceiver mUploadFinishReceiver;
|
|
|
private DownloadFinishReceiver mDownloadFinishReceiver;
|
|
@@ -134,8 +126,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
private static final int DIALOG_SSL_VALIDATOR = 2;
|
|
|
private static final int DIALOG_CERT_NOT_SAVED = 3;
|
|
|
|
|
|
- private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
|
|
|
-
|
|
|
public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS";
|
|
|
|
|
|
private static final int ACTION_SELECT_CONTENT_FROM_APPS = 1;
|
|
@@ -147,7 +137,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
private static final String TAG_SECOND_FRAGMENT = "SECOND_FRAGMENT";
|
|
|
|
|
|
private OCFile mWaitingToPreview;
|
|
|
- private Handler mHandler;
|
|
|
|
|
|
private boolean mSyncInProgress = false;
|
|
|
private boolean mRefreshSharesInProgress = false;
|
|
@@ -159,8 +148,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
|
|
|
super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account is valid
|
|
|
|
|
|
- mHandler = new Handler();
|
|
|
-
|
|
|
/// bindings to transference services
|
|
|
mUploadConnection = new ListServiceConnection();
|
|
|
mDownloadConnection = new ListServiceConnection();
|
|
@@ -231,9 +218,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
*/
|
|
|
@Override
|
|
|
protected void onAccountSet(boolean stateWasRecovered) {
|
|
|
+ super.onAccountSet(stateWasRecovered);
|
|
|
if (getAccount() != null) {
|
|
|
- mStorageManager = new FileDataStorageManager(getAccount(), getContentResolver());
|
|
|
-
|
|
|
/// Check whether the 'main' OCFile handled by the Activity is contained in the current Account
|
|
|
OCFile file = getFile();
|
|
|
// get parent from path
|
|
@@ -243,15 +229,15 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
// upload in progress - right now, files are not inserted in the local cache until the upload is successful
|
|
|
// get parent from path
|
|
|
parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName()));
|
|
|
- if (mStorageManager.getFileByPath(parentPath) == null)
|
|
|
+ if (getStorageManager().getFileByPath(parentPath) == null)
|
|
|
file = null; // not able to know the directory where the file is uploading
|
|
|
} else {
|
|
|
- file = mStorageManager.getFileByPath(file.getRemotePath()); // currentDir = null if not in the current Account
|
|
|
+ file = getStorageManager().getFileByPath(file.getRemotePath()); // currentDir = null if not in the current Account
|
|
|
}
|
|
|
}
|
|
|
if (file == null) {
|
|
|
// fall back to root folder
|
|
|
- file = mStorageManager.getFileByPath(OCFile.ROOT_PATH); // never returns null
|
|
|
+ file = getStorageManager().getFileByPath(OCFile.ROOT_PATH); // never returns null
|
|
|
}
|
|
|
setFile(file);
|
|
|
setNavigationListWithFolder(file);
|
|
@@ -267,10 +253,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
updateFragmentsVisibility(!file.isFolder());
|
|
|
updateNavigationElementsInActionBar(file.isFolder() ? null : file);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- } else {
|
|
|
- Log_OC.wtf(TAG, "onAccountChanged was called with NULL account associated!");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -283,10 +265,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
if (fileIt.isFolder()) {
|
|
|
mDirectories.add(fileIt.getFileName());
|
|
|
}
|
|
|
- //fileIt = mStorageManager.getFileById(fileIt.getParentId());
|
|
|
// get parent from path
|
|
|
parentPath = fileIt.getRemotePath().substring(0, fileIt.getRemotePath().lastIndexOf(fileIt.getFileName()));
|
|
|
- fileIt = mStorageManager.getFileByPath(parentPath);
|
|
|
+ fileIt = getStorageManager().getFileByPath(parentPath);
|
|
|
}
|
|
|
mDirectories.add(OCFile.PATH_SEPARATOR);
|
|
|
}
|
|
@@ -448,12 +429,12 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
boolean detailsFragmentChanged = false;
|
|
|
if (waitedPreview) {
|
|
|
if (success) {
|
|
|
- mWaitingToPreview = mStorageManager.getFileById(mWaitingToPreview.getFileId()); // update the file from database, for the local storage path
|
|
|
+ mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId()); // update the file from database, for the local storage path
|
|
|
if (PreviewMediaFragment.canBePreviewed(mWaitingToPreview)) {
|
|
|
startMediaPreview(mWaitingToPreview, 0, true);
|
|
|
detailsFragmentChanged = true;
|
|
|
} else {
|
|
|
- openFile(mWaitingToPreview);
|
|
|
+ getFileOperationsHelper().openFile(mWaitingToPreview, this);
|
|
|
}
|
|
|
}
|
|
|
mWaitingToPreview = null;
|
|
@@ -465,7 +446,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public boolean onCreateOptionsMenu(Menu menu) {
|
|
|
MenuInflater inflater = getSherlock().getMenuInflater();
|
|
@@ -544,7 +524,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
targetPath = mDirectories.getItem(i) + OCFile.PATH_SEPARATOR + targetPath;
|
|
|
}
|
|
|
targetPath = OCFile.PATH_SEPARATOR + targetPath;
|
|
|
- OCFile targetFolder = mStorageManager.getFileByPath(targetPath);
|
|
|
+ OCFile targetFolder = getStorageManager().getFileByPath(targetPath);
|
|
|
if (targetFolder != null) {
|
|
|
browseTo(targetFolder);
|
|
|
}
|
|
@@ -837,30 +817,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * Show loading dialog
|
|
|
- */
|
|
|
- public void showLoadingDialog() {
|
|
|
- // Construct dialog
|
|
|
- LoadingDialog loading = new LoadingDialog(getResources().getString(R.string.wait_a_moment));
|
|
|
- FragmentManager fm = getSupportFragmentManager();
|
|
|
- FragmentTransaction ft = fm.beginTransaction();
|
|
|
- loading.show(ft, DIALOG_WAIT_TAG);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Dismiss loading dialog
|
|
|
- */
|
|
|
- public void dismissLoadingDialog(){
|
|
|
- Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_TAG);
|
|
|
- if (frag != null) {
|
|
|
- LoadingDialog loading = (LoadingDialog) frag;
|
|
|
- loading.dismiss();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* Translates a content URI of an image to a physical path
|
|
|
* on the disk
|
|
@@ -939,14 +895,13 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
String accountName = intent.getStringExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME);
|
|
|
String synchFolderRemotePath = intent.getStringExtra(FileSyncAdapter.EXTRA_FOLDER_PATH);
|
|
|
RemoteOperationResult synchResult = (RemoteOperationResult)intent.getSerializableExtra(FileSyncAdapter.EXTRA_RESULT);
|
|
|
- boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && mStorageManager != null);
|
|
|
+ boolean sameAccount = (getAccount() != null && accountName.equals(getAccount().name) && getStorageManager() != null);
|
|
|
|
|
|
if (sameAccount) {
|
|
|
|
|
|
if (!FileSyncAdapter.EVENT_FULL_SYNC_START.equals(event)) {
|
|
|
-
|
|
|
- OCFile currentFile = (getFile() == null) ? null : mStorageManager.getFileByPath(getFile().getRemotePath());
|
|
|
- OCFile currentDir = (getCurrentDir() == null) ? null : mStorageManager.getFileByPath(getCurrentDir().getRemotePath());
|
|
|
+ OCFile currentFile = (getFile() == null) ? null : getStorageManager().getFileByPath(getFile().getRemotePath());
|
|
|
+ OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByPath(getCurrentDir().getRemotePath());
|
|
|
|
|
|
if (currentDir == null) {
|
|
|
// current folder was removed from the server
|
|
@@ -972,13 +927,17 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
setFile(currentFile);
|
|
|
}
|
|
|
|
|
|
- mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) && !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event));
|
|
|
+ mSyncInProgress = (!FileSyncAdapter.EVENT_FULL_SYNC_END.equals(event) &&
|
|
|
+ !SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event) &&
|
|
|
+ (synchResult == null || synchResult.isSuccess())) ;
|
|
|
|
|
|
if (synchResult != null &&
|
|
|
synchResult.isSuccess() &&
|
|
|
(SynchronizeFolderOperation.EVENT_SINGLE_FOLDER_SYNCED.equals(event) ||
|
|
|
FileSyncAdapter.EVENT_FOLDER_CONTENTS_SYNCED.equals(event)
|
|
|
- )
|
|
|
+ ) &&
|
|
|
+ !mRefreshSharesInProgress &&
|
|
|
+ getFileOperationsHelper().isSharedSupported(FileDisplayActivity.this)
|
|
|
) {
|
|
|
startGetShares();
|
|
|
}
|
|
@@ -1073,7 +1032,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
Account account = intent.getParcelableExtra(OperationsService.EXTRA_ACCOUNT);
|
|
|
RemoteOperationResult getSharesResult = (RemoteOperationResult)intent.getSerializableExtra(OperationsService.EXTRA_RESULT);
|
|
|
if (getAccount() != null && account.name.equals(getAccount().name)
|
|
|
- && mStorageManager != null
|
|
|
+ && getStorageManager() != null
|
|
|
) {
|
|
|
refeshListOfFilesFragment();
|
|
|
}
|
|
@@ -1090,23 +1049,13 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- /**
|
|
|
- * {@inheritDoc}
|
|
|
- */
|
|
|
- @Override
|
|
|
- public FileDataStorageManager getStorageManager() {
|
|
|
- return mStorageManager;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
public void browseToRoot() {
|
|
|
OCFileListFragment listOfFiles = getListOfFilesFragment();
|
|
|
if (listOfFiles != null) { // should never be null, indeed
|
|
|
while (mDirectories.getCount() > 1) {
|
|
|
popDirname();
|
|
|
}
|
|
|
- OCFile root = mStorageManager.getFileByPath(OCFile.ROOT_PATH);
|
|
|
+ OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
|
|
|
listOfFiles.listDirectory(root);
|
|
|
setFile(listOfFiles.getCurrentFile());
|
|
|
startSyncFolderOperation(root);
|
|
@@ -1342,6 +1291,8 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
*/
|
|
|
@Override
|
|
|
public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {
|
|
|
+ super.onRemoteOperationFinish(operation, result);
|
|
|
+
|
|
|
if (operation instanceof RemoveFileOperation) {
|
|
|
onRemoveFileOperationFinish((RemoveFileOperation)operation, result);
|
|
|
|
|
@@ -1354,12 +1305,16 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
} else if (operation instanceof CreateFolderOperation) {
|
|
|
onCreateFolderOperationFinish((CreateFolderOperation)operation, result);
|
|
|
|
|
|
+ } else if (operation instanceof CreateShareOperation) {
|
|
|
+ onCreateShareOperationFinish((CreateShareOperation) operation, result);
|
|
|
+
|
|
|
} else if (operation instanceof UnshareLinkOperation) {
|
|
|
onUnshareLinkOperationFinish((UnshareLinkOperation)operation, result);
|
|
|
- }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void onUnshareLinkOperationFinish(UnshareLinkOperation operation, RemoteOperationResult result) {
|
|
|
if (result.getCode() == ResultCode.FILE_NOT_FOUND) {
|
|
|
// Show a Message
|
|
@@ -1372,6 +1327,13 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
dismissLoadingDialog();
|
|
|
}
|
|
|
|
|
|
+ private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) {
|
|
|
+ if (result.isSuccess()) {
|
|
|
+ refeshListOfFilesFragment();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* Updates the view associated to the activity after the finish of an operation trying to remove a
|
|
|
* file.
|
|
@@ -1390,7 +1352,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
if (second != null && removedFile.equals(second.getFile())) {
|
|
|
cleanSecondFragment();
|
|
|
}
|
|
|
- if (mStorageManager.getFileById(removedFile.getParentId()).equals(getCurrentDir())) {
|
|
|
+ if (getStorageManager().getFileById(removedFile.getParentId()).equals(getCurrentDir())) {
|
|
|
refeshListOfFilesFragment();
|
|
|
}
|
|
|
|
|
@@ -1449,7 +1411,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
((FileDetailFragment) details).updateFileDetails(renamedFile, getAccount());
|
|
|
}
|
|
|
}
|
|
|
- if (mStorageManager.getFileById(renamedFile.getParentId()).equals(getCurrentDir())) {
|
|
|
+ if (getStorageManager().getFileById(renamedFile.getParentId()).equals(getCurrentDir())) {
|
|
|
refeshListOfFilesFragment();
|
|
|
}
|
|
|
|
|
@@ -1525,11 +1487,11 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
|
|
|
// Create directory
|
|
|
path += newDirectoryName + OCFile.PATH_SEPARATOR;
|
|
|
- RemoteOperation operation = new CreateFolderOperation(path, false, mStorageManager);
|
|
|
+ RemoteOperation operation = new CreateFolderOperation(path, false, getStorageManager());
|
|
|
operation.execute( getAccount(),
|
|
|
FileDisplayActivity.this,
|
|
|
FileDisplayActivity.this,
|
|
|
- mHandler,
|
|
|
+ getHandler(),
|
|
|
FileDisplayActivity.this);
|
|
|
|
|
|
showLoadingDialog();
|
|
@@ -1554,9 +1516,9 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
if (file != null) {
|
|
|
if (file.isFolder()) {
|
|
|
return file;
|
|
|
- } else if (mStorageManager != null) {
|
|
|
+ } else if (getStorageManager() != null) {
|
|
|
String parentPath = file.getRemotePath().substring(0, file.getRemotePath().lastIndexOf(file.getFileName()));
|
|
|
- return mStorageManager.getFileByPath(parentPath);
|
|
|
+ return getStorageManager().getFileByPath(parentPath);
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
@@ -1591,21 +1553,6 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void unshareFileWithLink(OCFile file) {
|
|
|
-
|
|
|
- if (isSharedSupported()) {
|
|
|
- // Unshare the file
|
|
|
- UnshareLinkOperation unshare = new UnshareLinkOperation(file);
|
|
|
- unshare.execute(getStorageManager(), this, this, mHandler, this);
|
|
|
-
|
|
|
- showLoadingDialog();
|
|
|
-
|
|
|
- } else {
|
|
|
- // Show a Message
|
|
|
- Toast t = Toast.makeText(this, getString(R.string.share_link_no_support_share_api), Toast.LENGTH_LONG);
|
|
|
- t.show();
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|