From: David A. Velasco Date: Fri, 23 Nov 2012 13:30:36 +0000 (+0100) Subject: Updated 'always download' item in context menu on list of files to 'download / refres... X-Git-Tag: oc-android-1.4.3~88^2 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/ba52dfdf9d0efbb7f4d9fbf18cda16244d310207?hp=--cc Updated 'always download' item in context menu on list of files to 'download / refresh' item , such as in details view --- ba52dfdf9d0efbb7f4d9fbf18cda16244d310207 diff --git a/src/com/owncloud/android/operations/SynchronizeFileOperation.java b/src/com/owncloud/android/operations/SynchronizeFileOperation.java index f98de115..312fa0cd 100644 --- a/src/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -223,4 +223,9 @@ public class SynchronizeFileOperation extends RemoteOperation { return mTransferWasRequested; } + + public OCFile getLocalFile() { + return mLocalFile; + } + } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index e6771e0e..99968910 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -77,6 +77,7 @@ 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; import com.owncloud.android.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.syncadapter.FileSyncService; import com.owncloud.android.ui.dialog.SslValidatorDialog; @@ -1083,9 +1084,13 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements } else if (operation instanceof RenameFileOperation) { onRenameFileOperationFinish((RenameFileOperation)operation, result); + + } else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result); } } - + + /** * Updates the view associated to the activity after the finish of an operation trying to remove a * file. @@ -1159,6 +1164,34 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements } + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) { + dismissDialog(DIALOG_SHORT_WAIT); + OCFile syncedFile = operation.getLocalFile(); + if (!result.isSuccess()) { + if (result.getCode() == ResultCode.SYNC_CONFLICT) { + Intent i = new Intent(this, ConflictsResolveActivity.class); + i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile); + i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + startActivity(i); + + } else { + Toast msg = Toast.makeText(this, R.string.sync_file_fail_msg, Toast.LENGTH_LONG); + msg.show(); + } + + } else { + if (operation.transferWasRequested()) { + mFileList.listDirectory(); + onTransferStateChanged(syncedFile, true, true); + + } else { + Toast msg = Toast.makeText(this, R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG); + msg.show(); + } + } + } + + /** * {@inheritDoc} */ diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index a96f4001..40747841 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -25,7 +25,6 @@ import com.owncloud.android.AccountUtils; import com.owncloud.android.R; import com.owncloud.android.datamodel.DataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.network.OwnCloudClientUtils; @@ -33,6 +32,7 @@ import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.ui.FragmentListView; import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.ui.activity.TransferServiceGetter; @@ -166,6 +166,7 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial List toHide = new ArrayList(); List toDisable = new ArrayList(); + MenuItem item = null; if (targetFile.isDirectory()) { // contextual menu for folders toHide.add(R.id.open_file_item); @@ -184,6 +185,10 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial if (targetFile.isDown()) { toHide.add(R.id.cancel_download_item); toHide.add(R.id.cancel_upload_item); + item = menu.findItem(R.id.download_file_item); + if (item != null) { + item.setTitle(R.string.filedetails_sync_file); + } } else { toHide.add(R.id.open_file_item); } @@ -207,7 +212,6 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial } } - MenuItem item = null; for (int i : toHide) { item = menu.findItem(i); if (item != null) { @@ -307,13 +311,11 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial return true; } case R.id.download_file_item: { - Account account = AccountUtils.getCurrentOwnCloudAccount(getActivity()); - Intent i = new Intent(getActivity(), FileDownloader.class); - i.putExtra(FileDownloader.EXTRA_ACCOUNT, account); - i.putExtra(FileDownloader.EXTRA_FILE, mTargetFile); - getActivity().startService(i); - listDirectory(); - mContainerActivity.onTransferStateChanged(mTargetFile, true, false); + Account account = AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()); + RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, false, getSherlockActivity()); + WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(account, getSherlockActivity().getApplicationContext()); + operation.execute(wc, mContainerActivity, mHandler); + getSherlockActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT); return true; } case R.id.cancel_download_item: {