diff options
author | Johannes Baiter <johannes.baiter@gmail.com> | 2014-10-29 02:05:20 +0100 |
---|---|---|
committer | Johannes Baiter <johannes.baiter@gmail.com> | 2014-10-29 02:05:45 +0100 |
commit | df1109cde56acb8538256bdeccbc47664aea4f4a (patch) | |
tree | 7765f9e8177e01195feaf623c16542f3426956ca /app | |
parent | 9aea6560b0b66285c7c1c47fed828c22514d9e2b (diff) |
Add filtering to password list
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java | 14 | ||||
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordStore.java | 41 | ||||
-rw-r--r-- | app/src/main/res/drawable-hdpi/ic_action_search.png | bin | 0 -> 702 bytes | |||
-rw-r--r-- | app/src/main/res/drawable-mdpi/ic_action_search.png | bin | 0 -> 479 bytes | |||
-rw-r--r-- | app/src/main/res/drawable-xhdpi/ic_action_search.png | bin | 0 -> 900 bytes | |||
-rw-r--r-- | app/src/main/res/drawable-xxhdpi/ic_action_search.png | bin | 0 -> 1153 bytes | |||
-rw-r--r-- | app/src/main/res/menu/pwdstore.xml | 11 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 1 |
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 Binary files differnew file mode 100644 index 00000000..f594b4e4 --- /dev/null +++ b/app/src/main/res/drawable-hdpi/ic_action_search.png diff --git a/app/src/main/res/drawable-mdpi/ic_action_search.png b/app/src/main/res/drawable-mdpi/ic_action_search.png Binary files differnew file mode 100644 index 00000000..2e446ec0 --- /dev/null +++ b/app/src/main/res/drawable-mdpi/ic_action_search.png diff --git a/app/src/main/res/drawable-xhdpi/ic_action_search.png b/app/src/main/res/drawable-xhdpi/ic_action_search.png Binary files differnew file mode 100644 index 00000000..aad535e9 --- /dev/null +++ b/app/src/main/res/drawable-xhdpi/ic_action_search.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_search.png b/app/src/main/res/drawable-xxhdpi/ic_action_search.png Binary files differnew file mode 100644 index 00000000..9c0ea3ca --- /dev/null +++ b/app/src/main/res/drawable-xxhdpi/ic_action_search.png 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> |