Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/99780


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(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/80/99780/1

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: newchange
Gerrit-Change-Id: I9c11349c0f7a7af690af58948b952cf1c7635382
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to