diff options
Diffstat (limited to 'app/src/main/java/com/zeapo')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java | 16 | ||||
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordStore.java | 41 |
2 files changed, 56 insertions, 1 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..6058d169 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java @@ -126,6 +126,22 @@ public class PasswordFragment extends Fragment{ ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false); } + public void filterAdapter(String filter) { + if (filter.isEmpty()) { + updateAdapter(); + } else { + for (PasswordItem item : PasswordRepository.getPasswords()) { + boolean matches = item.getName().toLowerCase().contains(filter); + boolean inAdapter = recyclerAdapter.getValues().contains(item); + if (matches && !inAdapter) { + recyclerAdapter.add(item); + } else if (!matches && inAdapter) { + recyclerAdapter.remove(recyclerAdapter.getValues().indexOf(item)); + } + } + } + } + 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 274960a7..759b0989 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; @@ -67,7 +69,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 @@ -375,6 +406,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")); } |