Brion VIBBER has submitted this change and it was merged. Change subject: Implement 'Clear History' feature ......................................................................
Implement 'Clear History' feature Change-Id: I9c11349c0f7a7af690af58948b952cf1c7635382 --- A wikipedia/res/menu/menu_history.xml M wikipedia/res/values/strings.xml M wikipedia/src/main/java/org/wikimedia/wikipedia/data/ContentPersister.java M wikipedia/src/main/java/org/wikimedia/wikipedia/data/SQLiteContentProvider.java M wikipedia/src/main/java/org/wikimedia/wikipedia/history/HistoryActivity.java 5 files changed, 84 insertions(+), 16 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/wikipedia/res/menu/menu_history.xml b/wikipedia/res/menu/menu_history.xml new file mode 100644 index 0000000..80064d6 --- /dev/null +++ b/wikipedia/res/menu/menu_history.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> + +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/menu_clear_all_history" + android:icon="@android:drawable/ic_menu_delete" + android:title="@string/menu_clear_all_history" + android:showAsAction="always" /> + +</menu> \ No newline at end of file diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml index afe4f18..eb3b0ed 100644 --- a/wikipedia/res/values/strings.xml +++ b/wikipedia/res/values/strings.xml @@ -2,6 +2,9 @@ <resources> <string name="app_name">Wikipedia</string> + <string name="yes">Yes</string> + <string name="no">No</string> + <string name="acra_report_dialog_title">Wikipedia crashed :(</string> <string name="acra_report_dialog_text">Send Yuvi a crash report</string> <string name="acra_report_dialog_comment">What were you doing when the crash happened?</string> @@ -12,4 +15,8 @@ <string name="error_network_error">Could not reach the network :(</string> <string name="search_network_error">Network error. Tap to try again.</string> <string name="page_error_retry">Retry</string> + <string name="menu_clear_all_history">Clear history</string> + + <string name="dialog_title_clear_history">Clear history?</string> + <string name="dialog_message_clear_history">Are you sure you want to clear all history?</string> </resources> \ No newline at end of file diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/data/ContentPersister.java b/wikipedia/src/main/java/org/wikimedia/wikipedia/data/ContentPersister.java index 9f4f85b..2914467 100644 --- a/wikipedia/src/main/java/org/wikimedia/wikipedia/data/ContentPersister.java +++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/data/ContentPersister.java @@ -26,6 +26,16 @@ } } + public void deleteAll() { + Uri uri = persistanceHelper.getBaseContentURI(); + try { + client.delete(uri, "", new String[] {}); + } catch (RemoteException e) { + // This also shouldn't happen + throw new RuntimeException(e); + } + } + public void cleanup() { this.client.release(); } diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/data/SQLiteContentProvider.java b/wikipedia/src/main/java/org/wikimedia/wikipedia/data/SQLiteContentProvider.java index 551b182..7f1fd40 100644 --- a/wikipedia/src/main/java/org/wikimedia/wikipedia/data/SQLiteContentProvider.java +++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/data/SQLiteContentProvider.java @@ -70,7 +70,23 @@ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { - throw new IllegalArgumentException("Delete functionality not implemented"); + int rows = 0; + int uriType = uriMatcher.match(uri); + + SQLiteDatabase db = getDbOpenHelper().getReadableDatabase(); + + switch(uriType) { + case MATCH_ALL: + rows = db.delete(persistanceHelper.getTableName(), + selection, + selectionArgs + ); + break; + default: + throw new IllegalArgumentException("Unknown URI" + uri); + } + getContext().getContentResolver().notifyChange(uri, null); + return rows; } @Override diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/history/HistoryActivity.java b/wikipedia/src/main/java/org/wikimedia/wikipedia/history/HistoryActivity.java index 261531b..72af4d4 100644 --- a/wikipedia/src/main/java/org/wikimedia/wikipedia/history/HistoryActivity.java +++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/history/HistoryActivity.java @@ -1,7 +1,9 @@ package org.wikimedia.wikipedia.history; import android.app.Activity; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; @@ -10,9 +12,7 @@ import android.support.v4.content.*; import android.support.v4.widget.CursorAdapter; import android.text.format.DateUtils; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; +import android.view.*; import android.widget.*; import org.wikimedia.wikipedia.PageActivity; import org.wikimedia.wikipedia.R; @@ -56,18 +56,6 @@ getSupportLoaderManager().initLoader(0, null, this); getActionBar().setDisplayHomeAsUpEnabled(true); - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - default: - throw new RuntimeException("Unknown menu item selected"); - } - return true; } @Override @@ -149,4 +137,42 @@ } } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.menu_history, menu); + return true; + } + + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + finish(); + return true; + case R.id.menu_clear_all_history: + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(R.string.dialog_title_clear_history) + .setMessage(R.string.dialog_message_clear_history); + builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Clear history! + app.getPersister(HistoryEntry.class).deleteAll(); + } + }); + + builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Uh, do nothing? + } + }); + builder.create().show(); + return true; + default: + throw new RuntimeException("Unknown menu item clicked!"); + } + } } \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/99780 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9c11349c0f7a7af690af58948b952cf1c7635382 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Yuvipanda <[email protected]> Gerrit-Reviewer: Brion VIBBER <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
