From d91d908cbb6d0f1443e01f4bdb00d91bb9dbaebb Mon Sep 17 00:00:00 2001 From: l0l67 Date: Thu, 14 Jul 2022 13:45:33 +0000 Subject: [PATCH] added confirmation for Unpin/Deletion --- .../fragment/TrackCollectionFragment.kt | 21 +++++++++++-- .../org/moire/ultrasonic/util/Dialogs.kt | 30 +++++++++++++++++++ .../org/moire/ultrasonic/util/Settings.kt | 6 ++++ .../src/main/res/values/setting_keys.xml | 1 + ultrasonic/src/main/res/values/strings.xml | 5 +++- ultrasonic/src/main/res/xml/settings.xml | 6 ++++ 6 files changed, 66 insertions(+), 3 deletions(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt index 5e60df19..211c122d 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/TrackCollectionFragment.kt @@ -44,6 +44,7 @@ import org.moire.ultrasonic.subsonic.ShareHandler import org.moire.ultrasonic.subsonic.VideoPlayer import org.moire.ultrasonic.util.CancellationToken import org.moire.ultrasonic.util.CommunicationError +import org.moire.ultrasonic.util.ConfirmationDialog import org.moire.ultrasonic.util.Constants import org.moire.ultrasonic.util.EntryByDiscAndTrackComparator import org.moire.ultrasonic.util.Settings @@ -187,7 +188,15 @@ open class TrackCollectionFragment : MultiListFragment() { } unpinButton?.setOnClickListener { - unpin() + if (Settings.showConfirmationDialog) { + ConfirmationDialog.Builder(context) + .setMessage(R.string.common_unpin_selection_confirmation) + .setPositiveButton(R.string.common_unpin) { _, _ -> + unpin() + }.show() + } else { + unpin() + } } downloadButton?.setOnClickListener { @@ -195,7 +204,15 @@ open class TrackCollectionFragment : MultiListFragment() { } deleteButton?.setOnClickListener { - delete() + if (Settings.showConfirmationDialog) { + ConfirmationDialog.Builder(context) + .setMessage(R.string.common_delete_selection_confirmation) + .setPositiveButton(R.string.common_delete) { _, _ -> + delete() + }.show() + } else { + delete() + } } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Dialogs.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Dialogs.kt index e7854751..e59937d9 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Dialogs.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Dialogs.kt @@ -76,3 +76,33 @@ class ErrorDialog( } } } + +class ConfirmationDialog( + context: Context, + message: CharSequence?, + activity: Activity? = null, + finishActivityOnClose: Boolean = false +) : InfoDialog(context, message, activity, finishActivityOnClose) { + + override var builder: AlertDialog.Builder = Builder(activity ?: context, message) + + class Builder(context: Context?) : AlertDialog.Builder(context) { + constructor(context: Context, message: CharSequence?) : this(context) { + setMessage(message) + } + + init { + setIcon(R.drawable.ic_baseline_info) + setTitle(R.string.common_confirm) + setCancelable(true) + + setPositiveButton(R.string.common_confirm) { _, _ -> + // Gets overwritten + } + + setNegativeButton(R.string.common_cancel) { _, _ -> + // Just close it + } + } + } +} diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt index 712ffee8..e66a923e 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Settings.kt @@ -265,6 +265,12 @@ object Settings { 0 ) + @JvmStatic + var showConfirmationDialog by BooleanSetting( + getKey(R.string.setting_key_show_confirmation_dialog), + false + ) + // TODO: Remove in December 2022 fun migrateFeatureStorage() { val sp = appContext.getSharedPreferences("feature_flags", Context.MODE_PRIVATE) diff --git a/ultrasonic/src/main/res/values/setting_keys.xml b/ultrasonic/src/main/res/values/setting_keys.xml index dda6363a..3bc077f1 100644 --- a/ultrasonic/src/main/res/values/setting_keys.xml +++ b/ultrasonic/src/main/res/values/setting_keys.xml @@ -53,4 +53,5 @@ debugLogToFile overrideLanguage firstInstalledVersion + showConfirmationDialog \ No newline at end of file diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index a05f233d..b6dadbec 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -50,6 +50,8 @@ Select all Title Unpin + Do you really want to delete the current selection? + Do you really want to unpin the current selection? Various Artists Do you want to delete %1$s Bookmark removed. @@ -374,6 +376,8 @@ Show Artist albumArt Multiple Years + Show confirmation dialog + Displays a confirmation dialog before deleting or unpinning songs Debug options Write debug log to file The log files are available at %1$s/%2$s @@ -452,5 +456,4 @@ Use hardware playback (experimental) Try to play the media using the media decoder chip on your phone. This can improve battery usage. - diff --git a/ultrasonic/src/main/res/xml/settings.xml b/ultrasonic/src/main/res/xml/settings.xml index ae0e35e5..a7f134ce 100644 --- a/ultrasonic/src/main/res/xml/settings.xml +++ b/ultrasonic/src/main/res/xml/settings.xml @@ -317,6 +317,12 @@ a:title="@string/settings.override_language" a:summary="@string/settings.override_language_summary" app:iconSpaceReserved="false"/> +