Add filtering to password list

This commit is contained in:
Johannes Baiter 2014-10-29 02:05:20 +01:00
parent 9aea6560b0
commit df1109cde5
8 changed files with 64 additions and 3 deletions

View file

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

View file

@ -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"));
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -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"

View file

@ -42,6 +42,7 @@
<!-- DECRYPT Layout -->
<string name="crypto_category">Category</string>
<string name="action_search">Search</string>
</resources>