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