From 6b31036abdeb96d484695487454c1fab95293213 Mon Sep 17 00:00:00 2001 From: danijoo Date: Sat, 2 Jan 2016 15:00:10 +0100 Subject: [PATCH] clear database dialog --- .../PreferenceFragment.java | 30 +++++++++++++++++-- app/src/main/res/values/strings.xml | 6 ++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java b/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java index c5a7036..625bcd0 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java +++ b/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java @@ -1,17 +1,23 @@ package net.headlezz.notificationlogger; import android.app.Activity; +import android.content.ContentResolver; +import android.content.DialogInterface; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import android.support.design.widget.Snackbar; +import android.support.v7.app.AlertDialog; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; +import net.headlezz.notificationlogger.logger.Logged_notificationTable; + public class PreferenceFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener { private PreferenceCallbacks mCallbacks; final String PREF_ABOUT = "pref_about"; final String PREF_BLACKLIST = "pref_blacklist"; + final String PREF_CLEAR_DATABASE = "pref_clear_database"; interface PreferenceCallbacks { @@ -24,6 +30,7 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Pref addPreferencesFromResource(R.xml.preferences); findPreference(PREF_ABOUT).setOnPreferenceClickListener(this); findPreference(PREF_BLACKLIST).setOnPreferenceClickListener(this); + findPreference(PREF_CLEAR_DATABASE).setOnPreferenceClickListener(this); } @Override @@ -35,10 +42,29 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Pref } else if(key.equals(PREF_BLACKLIST)) { mCallbacks.showBlacklistScreen(); return true; - } + } else if(key.equals(PREF_CLEAR_DATABASE)) + askClearDatabase(); return false; } + private void askClearDatabase() { + new AlertDialog.Builder(getContext()) + .setTitle(R.string.pref_clear_database_dialog_title) + .setMessage(R.string.pref_clear_database_dialog_message) + .setNegativeButton(R.string.pref_clear_database_dialog_negative, null) + .setPositiveButton(R.string.pref_clear_database_dialog_positive, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ContentResolver resolver = getContext().getContentResolver(); + // there are no notifications with negative ids, so we use this to select all rows + String whereClause = Logged_notificationTable.FIELD_NOTIFICATION_ID + " != -1"; + resolver.delete(Logged_notificationTable.CONTENT_URI, whereClause, new String[0]); + Snackbar.make(getActivity().findViewById(android.R.id.content), R.string.pref_clear_database_snackbar_cleared, Snackbar.LENGTH_SHORT).show(); + } + }) + .create().show(); + } + @SuppressWarnings("ConstantConditions") @Override public void onAttach(Activity activity) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6167c86..501025c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,12 @@ Remove all logged notifications Export to sdcard About + Clear database + Delete all logged notifications? + Cancel + Yes + Database cleared. + FAB: Create notification Create notification Blacklist