summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJohannes Baiter <johannes.baiter@gmail.com>2014-10-29 02:05:20 +0100
committerJohannes Baiter <johannes.baiter@gmail.com>2014-10-29 02:05:45 +0100
commitdf1109cde56acb8538256bdeccbc47664aea4f4a (patch)
tree7765f9e8177e01195feaf623c16542f3426956ca /app
parent9aea6560b0b66285c7c1c47fed828c22514d9e2b (diff)
Add filtering to password list
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java14
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordStore.java41
-rw-r--r--app/src/main/res/drawable-hdpi/ic_action_search.pngbin0 -> 702 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_action_search.pngbin0 -> 479 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_action_search.pngbin0 -> 900 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_action_search.pngbin0 -> 1153 bytes
-rw-r--r--app/src/main/res/menu/pwdstore.xml11
-rw-r--r--app/src/main/res/values/strings.xml1
8 files changed, 64 insertions, 3 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java
index 4e8ef5ef..4d433013 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java
@@ -126,6 +126,20 @@ public class PasswordFragment extends Fragment{
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
+ public void filterAdapter(String filter) {
+ if (filter.isEmpty()) {
+ updateAdapter();
+ return;
+ }
+ for (int i=0; i<recyclerAdapter.getItemCount(); i++) {
+ PasswordItem item = recyclerAdapter.getValues().get(i);
+ boolean matches = item.getName().toLowerCase().contains(filter);
+ if (!matches) {
+ recyclerAdapter.remove(i);
+ }
+ }
+ }
+
public void popBack() {
recyclerView.scrollToPosition(scrollPosition.pop());
recyclerAdapter.clear();
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
index 025435f4..a82aec2c 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
@@ -9,7 +9,9 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -68,7 +70,36 @@ public class PasswordStore extends ActionBarActivity {
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.pwdstore, menu);
- return true;
+ MenuItem searchItem = menu.findItem(R.id.action_search);
+ SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
+ searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+ @Override
+ public boolean onQueryTextSubmit(String s) {
+ return true;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String s) {
+ filterListAdapter(s);
+ return true;
+ }
+ });
+
+ // When using the support library, the setOnActionExpandListener() method is
+ // static and accepts the MenuItem object as an argument
+ MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
+ @Override
+ public boolean onMenuItemActionCollapse(MenuItem item) {
+ refreshListAdapter();
+ return true;
+ }
+
+ @Override
+ public boolean onMenuItemActionExpand(MenuItem item) {
+ return true;
+ }
+ });
+ return super.onCreateOptionsMenu(menu);
}
@Override
@@ -376,6 +407,14 @@ public class PasswordStore extends ActionBarActivity {
}
}
+ public void filterListAdapter(String filter) {
+ PasswordFragment plist;
+ if (null !=
+ (plist = (PasswordFragment) getFragmentManager().findFragmentByTag("PasswordsList"))) {
+ plist.filterAdapter(filter);
+ }
+ }
+
private File getCurrentDir() {
return new File(((PasswordFragment) getFragmentManager().findFragmentByTag("PasswordsList")).getArguments().getString("Path"));
}
diff --git a/app/src/main/res/drawable-hdpi/ic_action_search.png b/app/src/main/res/drawable-hdpi/ic_action_search.png
new file mode 100644
index 00000000..f594b4e4
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_action_search.png b/app/src/main/res/drawable-mdpi/ic_action_search.png
new file mode 100644
index 00000000..2e446ec0
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_action_search.png b/app/src/main/res/drawable-xhdpi/ic_action_search.png
new file mode 100644
index 00000000..aad535e9
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_search.png b/app/src/main/res/drawable-xxhdpi/ic_action_search.png
new file mode 100644
index 00000000..9c0ea3ca
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_action_search.png
Binary files differ
diff --git a/app/src/main/res/menu/pwdstore.xml b/app/src/main/res/menu/pwdstore.xml
index a3f44f73..c6b25043 100644
--- a/app/src/main/res/menu/pwdstore.xml
+++ b/app/src/main/res/menu/pwdstore.xml
@@ -1,10 +1,17 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
+ xmlns:pwstore="http://schemas.android.com/apk/res-auto"
tools:context=".pwdstore" >
+ <item android:id="@+id/action_search"
+ android:title="@string/action_search"
+ android:icon="@drawable/ic_action_search"
+ pwstore:showAsAction="ifRoom|collapseActionView"
+ pwstore:actionViewClass="android.support.v7.widget.SearchView" />
+
<item android:id="@+id/menu_add_password"
android:icon="@drawable/ico_add"
- android:showAsAction="always"
+ pwstore:showAsAction="ifRoom"
android:title="New password"/>
<!--<item android:id="@+id/menu_add_category"-->
@@ -17,7 +24,7 @@
<item android:id="@+id/referesh"
android:title="Refresh list"
- android:showAsAction="never"
+ pwstore:showAsAction="never"
android:icon="@drawable/ico_sync"/>
<item android:id="@+id/user_pref"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c35514ec..07c6b3fd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -42,6 +42,7 @@
<!-- DECRYPT Layout -->
<string name="crypto_category">Category</string>
+ <string name="action_search">Search</string>
</resources>