From: purigarcia Date: Fri, 10 Jul 2015 06:44:56 +0000 (+0200) Subject: Merge branch 'develop' into favourites_context_menu X-Git-Tag: oc-android-1.8~60^2~1 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/a3bfcdcd85ad864036281762471e732d54c17586?hp=1e08c40f31b3c67133dc314dbad061279a75b931 Merge branch 'develop' into favourites_context_menu --- diff --git a/res/menu/file_actions_menu.xml b/res/menu/file_actions_menu.xml index 545f8ea6..d98804c5 100644 --- a/res/menu/file_actions_menu.xml +++ b/res/menu/file_actions_menu.xml @@ -30,6 +30,8 @@ + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 716d3b2a..21b840c2 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -200,7 +200,8 @@ Cannot authenticate against this server Account does not exist in the device yet - Keep file up to date + Favorite + Unfavorite Rename Remove "Do you really want to remove %1$s?" diff --git a/src/com/owncloud/android/files/FileMenuFilter.java b/src/com/owncloud/android/files/FileMenuFilter.java index d6c075d6..45aef48c 100644 --- a/src/com/owncloud/android/files/FileMenuFilter.java +++ b/src/com/owncloud/android/files/FileMenuFilter.java @@ -215,6 +215,20 @@ public class FileMenuFilter { toShow.add(R.id.action_send_file); } + // FAVORITES + if (mFile == null || downloading || uploading || mFile.isFolder() || mFile.keepInSync()) { + toHide.add(R.id.action_favorite_file); + } else { + toShow.add(R.id.action_favorite_file); + } + + // UNFAVORITES + if (mFile == null || downloading || uploading || mFile.isFolder() || !mFile.keepInSync()) { + toHide.add(R.id.action_unfavorite_file); + } else { + toShow.add(R.id.action_unfavorite_file); + } + } } diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index 75fae370..fbc039b1 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -40,6 +40,7 @@ import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.services.OperationsService; +import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.dialog.ShareLinkToDialog; @@ -223,6 +224,24 @@ public class FileOperationsHelper { mFileActivity.startService(intent); } } + + public void toggleKeepInSync(OCFile file, boolean isFavorite) { + file.setKeepInSync(isFavorite); + mFileActivity.getStorageManager().saveFile(file); + + /// register the OCFile instance in the observer service to monitor local updates + Intent observedFileIntent = FileObserverService.makeObservedFileIntent( + mFileActivity, + file, + mFileActivity.getAccount(), + isFavorite); + mFileActivity.startService(observedFileIntent); + + /// immediate content synchronization + if (file.keepInSync()) { + syncFile(file); + } + } public void renameFile(OCFile file, String newFilename) { // RenameFile diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 9a952e41..87976487 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -67,6 +67,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateShareOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.services.OperationsService; @@ -75,6 +76,8 @@ import com.owncloud.android.ui.NavigationDrawerItem; import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter; import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SharePasswordDialogFragment; +import com.owncloud.android.ui.fragment.FileDetailFragment; +import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.ErrorMessageAdapter; import java.util.ArrayList; @@ -691,6 +694,9 @@ public class FileActivity extends ActionBarActivity } else if (operation instanceof SynchronizeFolderOperation) { onSynchronizeFolderOperationFinish((SynchronizeFolderOperation)operation, result); + }else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result); + } } @@ -762,6 +768,30 @@ public class FileActivity extends ActionBarActivity t.show(); } } + + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { + dismissLoadingDialog(); + 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, getAccount()); + startActivity(i); + + } + + } else { + if (operation.transferWasRequested()) { + + } else { + Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, + operation, getResources()), Toast.LENGTH_LONG); + msg.show(); + } + } + } protected void updateFileFromDB(){ OCFile file = getFile(); @@ -770,6 +800,7 @@ public class FileActivity extends ActionBarActivity setFile(file); } } + /** * Show loading dialog diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 6840f91c..cfeb5415 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1457,6 +1457,7 @@ public class FileDisplayActivity extends HookActivity operation, getResources()), Toast.LENGTH_LONG); msg.show(); } + invalidateOptionsMenu(); } } diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 4f099e49..94723721 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -259,6 +259,14 @@ public class FileDetailFragment extends FileFragment implements OnClickListener } return true; } + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), false); + return true; + } default: return false; } @@ -268,7 +276,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener public void onClick(View v) { switch (v.getId()) { case R.id.fdKeepInSync: { - toggleKeepInSync(); + CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync); + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(),cb.isChecked()); break; } case R.id.fdCancelBtn: { @@ -279,27 +288,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener Log_OC.e(TAG, "Incorrect view clicked!"); } } - - - private void toggleKeepInSync() { - CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync); - OCFile file = getFile(); - file.setKeepInSync(cb.isChecked()); - mContainerActivity.getStorageManager().saveFile(file); - - /// register the OCFile instance in the observer service to monitor local updates - Intent observedFileIntent = FileObserverService.makeObservedFileIntent( - getActivity(), - file, - mAccount, - cb.isChecked()); - getActivity().startService(observedFileIntent); - - /// immediate content synchronization - if (file.keepInSync()) { - mContainerActivity.getFileOperationsHelper().syncFile(getFile()); - } - } + /** * Check if the fragment was created with an empty layout. An empty fragment can't show file details, must be replaced. diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 424b0d59..7160973c 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -341,6 +341,14 @@ public class OCFileListFragment extends ExtendedListFragment { getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES); return true; } + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(mTargetFile, true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(mTargetFile, false); + return true; + } default: return super.onContextItemSelected(item); } @@ -492,8 +500,7 @@ public class OCFileListFragment extends ExtendedListFragment { public void sortBySize(boolean descending) { mAdapter.setSortOrder(FileStorageUtils.SORT_SIZE, descending); - } - - + } + } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 2b0d96ce..b2d0c8cf 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -55,6 +55,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.RemoveFileOperation; +import com.owncloud.android.operations.SynchronizeFileOperation; import com.owncloud.android.operations.UnshareLinkOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; @@ -234,6 +235,9 @@ public class PreviewImageActivity extends FileActivity implements } else if (operation instanceof RemoveFileOperation) { finish(); + } else if (operation instanceof SynchronizeFileOperation) { + onSynchronizeFileOperationFinish((SynchronizeFileOperation) operation, result); + } } @@ -263,6 +267,14 @@ public class PreviewImageActivity extends FileActivity implements } } + private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, + RemoteOperationResult result) { + if (result.isSuccess()) { + invalidateOptionsMenu(); + } + + } + @Override protected ServiceConnection newTransferenceServiceConnection() { return new PreviewImageServiceConnection(); diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 7950ec98..b625ac22 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -306,7 +306,14 @@ public class PreviewImageFragment extends FileFragment { mContainerActivity.getFileOperationsHelper().syncFile(getFile()); return true; } - + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), false); + return true; + } default: return false; } diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index c5883cfc..53659438 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -341,7 +341,14 @@ public class PreviewMediaFragment extends FileFragment implements mContainerActivity.getFileOperationsHelper().syncFile(getFile()); return true; } - + case R.id.action_favorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), true); + return true; + } + case R.id.action_unfavorite_file:{ + mContainerActivity.getFileOperationsHelper().toggleKeepInSync(getFile(), false); + return true; + } default: return false; }