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" />
+
+