diff --git a/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java b/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java index 423525fc6..f449402f4 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/NotesApplication.java @@ -36,6 +36,7 @@ public class NotesApplication extends Application { private static long lastInteraction = 0; private static String PREF_KEY_THEME; private static boolean isGridViewEnabled = false; + private static boolean isSwipeEnabled = true; private static BrandingUtil brandingUtil; @Override @@ -45,6 +46,7 @@ public void onCreate() { final var prefs = getDefaultSharedPreferences(getApplicationContext()); lockedPreference = prefs.getBoolean(getString(R.string.pref_key_lock), false); isGridViewEnabled = getDefaultSharedPreferences(this).getBoolean(getString(R.string.pref_key_gridview), false); + isSwipeEnabled = getDefaultSharedPreferences(this).getBoolean(getString(R.string.pref_key_swipe_actions), true); super.onCreate(); brandingUtil = BrandingUtil.getInstance(this); if (BuildConfig.DEBUG) { @@ -80,6 +82,14 @@ public static void updateGridViewEnabled(boolean gridView) { isGridViewEnabled = gridView; } + public static boolean isSwipeEnabled() { + return isSwipeEnabled; + } + + public static void updateSwipeEnabled(boolean swipeEnabled) { + isSwipeEnabled = swipeEnabled; + } + public static DarkModeSetting getAppTheme(Context context) { final var prefs = getDefaultSharedPreferences(context); String mode; diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java index f09841b69..a0b17e285 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NotesListViewItemTouchHelper.java @@ -24,6 +24,7 @@ import com.google.android.material.snackbar.Snackbar; import it.niedermann.owncloud.notes.R; +import it.niedermann.owncloud.notes.NotesApplication; import it.niedermann.owncloud.notes.branding.BrandedSnackbar; import it.niedermann.owncloud.notes.main.MainViewModel; import it.niedermann.owncloud.notes.main.items.ItemAdapter; @@ -63,7 +64,7 @@ public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView. */ @Override public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { - if (gridView || viewHolder instanceof SectionViewHolder) return 0; + if (gridView || !NotesApplication.isSwipeEnabled() || viewHolder instanceof SectionViewHolder) return 0; return super.getSwipeDirs(recyclerView, viewHolder); } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java index 3f67b9f7d..80dd8f111 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/preferences/PreferencesFragment.java @@ -37,6 +37,7 @@ public class PreferencesFragment extends PreferenceFragmentCompat implements Bra private BrandedSwitchPreference lockPref; private BrandedSwitchPreference wifiOnlyPref; private BrandedSwitchPreference gridViewPref; + private BrandedSwitchPreference swipeActionsPref; private BrandedSwitchPreference preventScreenCapturePref; private BrandedSwitchPreference backgroundSyncPref; private BrandedSwitchPreference keepScreenOnPref; @@ -66,6 +67,17 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { Log.e(TAG, "Could not find preference with key: \"" + getString(R.string.pref_key_gridview) + "\""); } + swipeActionsPref = findPreference(getString(R.string.pref_key_swipe_actions)); + if (swipeActionsPref != null) { + swipeActionsPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + final Boolean swipeEnabled = (Boolean) newValue; + Log.v(TAG, "swipeEnabled: " + swipeEnabled); + viewModel.resultCode$.setValue(Activity.RESULT_OK); + NotesApplication.updateSwipeEnabled(swipeEnabled); + return true; + }); + } + keepScreenOnPref = findPreference(getString(R.string.pref_key_keep_screen_on)); if (keepScreenOnPref != null) { keepScreenOnPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { @@ -144,6 +156,7 @@ public void applyBrand(int color) { lockPref.applyBrand(color); wifiOnlyPref.applyBrand(color); gridViewPref.applyBrand(color); + swipeActionsPref.applyBrand(color); showEcosystemAppBarPref.applyBrand(color); preventScreenCapturePref.applyBrand(color); backgroundSyncPref.applyBrand(color); diff --git a/app/src/main/res/drawable/ic_swipe_grey600_24dp.xml b/app/src/main/res/drawable/ic_swipe_grey600_24dp.xml new file mode 100644 index 000000000..161c7c19a --- /dev/null +++ b/app/src/main/res/drawable/ic_swipe_grey600_24dp.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 683eea1e1..1d0c39640 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -190,6 +190,8 @@ When disabled, the advanced editor will be hidden. Keep screen on When viewing or editing a note + Swipe actions + Mark as favorite or delete notes with a swipe Synchronization failed: %1$s Synchronization failed @@ -261,6 +263,7 @@ backgroundSync directEditPreference show_ecosystem_apps + swipe_actions edit directEdit preview diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 8c87a05b0..6eabd3e14 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -74,6 +74,14 @@ android:layout="@layout/item_pref" android:title="@string/settings_gridview" /> + +