From: masensio Date: Tue, 24 Sep 2013 12:57:45 +0000 (+0200) Subject: Merge branch 'develop' into refresh_folder_contents_when_browsed_into X-Git-Tag: oc-android-1.5.5~155^2~37 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/fdf2cae2cee2f2d7e05f923da700a6d61471a081?hp=-c Merge branch 'develop' into refresh_folder_contents_when_browsed_into --- fdf2cae2cee2f2d7e05f923da700a6d61471a081 diff --combined src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 26b1df52,6bacaaba..9fb31519 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@@ -19,11 -19,8 +19,11 @@@ package com.owncloud.android.ui.activity; import java.io.File; +import java.io.IOException; import android.accounts.Account; +import android.accounts.AuthenticatorException; +import android.accounts.OperationCanceledException; import android.app.AlertDialog; import android.app.ProgressDialog; import android.app.Dialog; @@@ -45,6 -42,7 +45,7 @@@ 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.util.Log; import android.view.View; @@@ -62,8 -60,6 +63,8 @@@ import com.actionbarsherlock.view.Windo import com.owncloud.android.Log_OC; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountAuthenticator; +import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.authentication.AccountUtils.AccountNotFoundException; import com.owncloud.android.datamodel.DataStorageManager; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@@ -72,7 -68,6 +73,7 @@@ import com.owncloud.android.files.servi import com.owncloud.android.files.services.FileObserverService; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; +import com.owncloud.android.network.OwnCloudClientUtils; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; @@@ -80,10 -75,10 +81,11 @@@ import com.owncloud.android.operations. import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; +import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.syncadapter.FileSyncService; import com.owncloud.android.ui.dialog.EditNameDialog; + import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog; import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener; import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; @@@ -94,8 -89,6 +96,8 @@@ import com.owncloud.android.ui.preview. import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; +import eu.alefzero.webdav.WebdavClient; + /** * Displays, what files the user has available in his ownCloud. * @@@ -129,6 -122,8 +131,8 @@@ OCFileListFragment.ContainerActivity, F 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 = 3; + + private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; public static final String ACTION_DETAILS = "com.owncloud.android.ui.activity.action.DETAILS"; @@@ -463,9 -458,8 +467,9 @@@ FileFragment second = getSecondFragment(); OCFile currentDir = getCurrentDir(); if((currentDir != null && currentDir.getParentId() != 0) || - (second != null && second.getFile() != null)) { + (second != null && second.getFile() != null)) { onBackPressed(); + } break; } @@@ -618,6 -612,8 +622,8 @@@ outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview); Log_OC.d(TAG, "onSaveInstanceState() end"); } + + @Override protected void onResume() { @@@ -757,6 -753,30 +763,30 @@@ /** + * 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 * @param uri The URI to resolve @@@ -946,12 -966,6 +976,12 @@@ public void onBrowsedDownTo(OCFile directory) { pushDirname(directory); cleanSecondFragment(); + + // Sync Folder + startSyncFolderOperation(directory.getRemotePath(), directory.getFileId()); +// // Update folder size on DB +// getStorageManager().calculateFolderSize(directory.getParentId()); + } /** @@@ -1160,52 -1174,6 +1190,52 @@@ } else if (operation instanceof CreateFolderOperation) { onCreateFolderOperationFinish((CreateFolderOperation)operation, result); + + } else if (operation instanceof SynchronizeFolderOperation) { + onSynchronizeFolderOperationFinish((SynchronizeFolderOperation)operation, result); + } + } + + + /** + * Updates the view associated to the activity after the finish of an operation trying to synchronize a folder. + * + * @param operation Synchronize operation performed. + * @param result Result of the synchronization. + */ + private void onSynchronizeFolderOperationFinish(SynchronizeFolderOperation operation, RemoteOperationResult result) { + + OCFileListFragment list = getListOfFilesFragment(); + enableDisableViewGroup(list.getListView(), true); + + setSupportProgressBarIndeterminateVisibility(false); + if (result.isSuccess()) { + if (result.getCode() != ResultCode.OK_NO_CHANGES_ON_DIR) { + DataStorageManager storageManager = getStorageManager(); + OCFile parentDir = storageManager.getFileByPath(operation.getRemotePath()); + + // Update folder size on DB + getStorageManager().calculateFolderSize(parentDir.getFileId()); + + // Refrest List + refreshListOfFilesFragment(parentDir); + } + } else { + try { + Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.sync_file_fail_msg, Toast.LENGTH_LONG); + msg.show(); + + } catch (NotFoundException e) { + Log_OC.e(TAG, "Error while trying to show fail message " , e); + } + } + } + + + private void refreshListOfFilesFragment(OCFile parentDir) { + OCFileListFragment fileListFragment = getListOfFilesFragment(); + if (fileListFragment != null) { + fileListFragment.listDirectory(parentDir); } } @@@ -1218,7 -1186,7 +1248,7 @@@ * @param result Result of the removal. */ private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); if (result.isSuccess()) { Toast msg = Toast.makeText(this, R.string.remove_success_msg, Toast.LENGTH_LONG); msg.show(); @@@ -1250,11 -1218,12 +1280,12 @@@ */ private void onCreateFolderOperationFinish(CreateFolderOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); refeshListOfFilesFragment(); } else { - dismissDialog(DIALOG_SHORT_WAIT); + //dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); try { Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.create_dir_fail_msg, Toast.LENGTH_LONG); msg.show(); @@@ -1274,7 -1243,7 +1305,7 @@@ * @param result Result of the renaming. */ private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); OCFile renamedFile = operation.getFile(); if (result.isSuccess()) { if (mDualPane) { @@@ -1305,7 -1274,7 +1336,7 @@@ private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { - dismissDialog(DIALOG_SHORT_WAIT); + dismissLoadingDialog(); OCFile syncedFile = operation.getLocalFile(); if (!result.isSuccess()) { if (result.getCode() == ResultCode.SYNC_CONFLICT) { @@@ -1366,7 -1335,7 +1397,7 @@@ mHandler, FileDisplayActivity.this); - showDialog(DIALOG_SHORT_WAIT); + showLoadingDialog(); } } } @@@ -1394,36 -1363,5 +1425,36 @@@ } return null; } + + public void startSyncFolderOperation(String remotePath, long parentId) { + long currentSyncTime = System.currentTimeMillis(); + + OCFileListFragment list = getListOfFilesFragment(); + enableDisableViewGroup(list.getListView(), false); + + // perform folder synchronization + RemoteOperation synchFolderOp = new SynchronizeFolderOperation( remotePath, + currentSyncTime, + parentId, + getStorageManager(), + getAccount(), + getApplicationContext() + ); + synchFolderOp.execute(getAccount(), this, this, mHandler, this); + + setSupportProgressBarIndeterminateVisibility(true); + } + + public void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) { + int childCount = viewGroup.getChildCount(); + for (int i = 0; i < childCount; i++) { + View view = viewGroup.getChildAt(i); + view.setEnabled(enabled); + view.setClickable(!enabled); + if (view instanceof ViewGroup) { + enableDisableViewGroup((ViewGroup) view, enabled); + } + } + } } diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 45c9abd4,be596eb1..26e698a4 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -31,7 -31,6 +31,7 @@@ import com.owncloud.android.files.servi import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; +import com.owncloud.android.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; @@@ -129,25 -128,10 +129,25 @@@ public class OCFileListFragment extend if(mFile != null){ DataStorageManager storageManager = mContainerActivity.getStorageManager(); - parentDir = storageManager.getFileById(mFile.getParentId()); - mFile = parentDir; + if (mFile.getParentId() == 0) { + parentDir = storageManager.getFileById(1); + } + else { + parentDir = storageManager.getFileById(mFile.getParentId()); + } + +// // Update folder size on DB +// storageManager.calculateFolderSize(mFile.getFileId()); + + mFile = parentDir; } - listDirectory(parentDir); + + if (mFile != null) { + listDirectory(mFile); + + mContainerActivity.startSyncFolderOperation(mFile.getRemotePath(), mFile.getFileId()); + } + } @Override @@@ -305,7 -289,7 +305,7 @@@ Account account = AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()); RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, false, getSherlockActivity()); operation.execute(account, getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getSherlockActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getSherlockActivity()).showLoadingDialog(); return true; } case R.id.action_cancel_download: { @@@ -387,6 -371,7 +387,6 @@@ mList.setSelectionFromTop(0, 0); } mFile = directory; - } } @@@ -411,8 -396,6 +411,8 @@@ public void startMediaPreview(OCFile file, int i, boolean b); public void startImagePreview(OCFile file); + + public void startSyncFolderOperation(String remotePath, long parentId); /** * Getter for the current DataStorageManager in the container activity @@@ -450,7 -433,7 +450,7 @@@ newFilename, mContainerActivity.getStorageManager()); operation.execute(AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()), getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } @@@ -464,7 -447,7 +464,7 @@@ mContainerActivity.getStorageManager()); operation.execute(AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()), getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); - getActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); + ((FileDisplayActivity) getActivity()).showLoadingDialog(); } } }