diff options
| author | zeapo <mohamed@zenadi.com> | 2014-10-29 22:09:40 +0100 |
|---|---|---|
| committer | zeapo <mohamed@zenadi.com> | 2014-10-29 22:09:40 +0100 |
| commit | 7ddc23ee839c8648b60217101862b739df4018c3 (patch) | |
| tree | 621a39ff9828c3ba61c8d302e2a7f2cb2eb4e91d /app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java | |
| parent | 892cd1b4d3b9f6474522d389ac2ea7b21c27c97b (diff) | |
| download | HardenedPass-7ddc23ee839c8648b60217101862b739df4018c3.tar.gz HardenedPass-7ddc23ee839c8648b60217101862b739df4018c3.zip | |
corrected some issues with filtering and categories
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java | 38 |
1 files changed, 35 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 6058d169..1dcce1b8 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java @@ -23,6 +23,7 @@ import com.zeapo.pwdstore.utils.PasswordRepository; import java.io.File; import java.util.ArrayList; +import java.util.List; import java.util.Stack; /** @@ -40,6 +41,7 @@ public class PasswordFragment extends Fragment{ // store the pass files list in a stack private Stack<ArrayList<PasswordItem>> passListStack; + private Stack<File> pathStack; private Stack<Integer> scrollPosition; private PasswordRecyclerAdapter recyclerAdapter; private RecyclerView recyclerView; @@ -60,6 +62,7 @@ public class PasswordFragment extends Fragment{ passListStack = new Stack<ArrayList<PasswordItem>>(); scrollPosition = new Stack<Integer>(); + pathStack = new Stack<File>(); recyclerAdapter = new PasswordRecyclerAdapter((PasswordStore) getActivity(), mListener, PasswordRepository.getPasswords(new File(path))); } @@ -89,6 +92,7 @@ public class PasswordFragment extends Fragment{ public void onFragmentInteraction(PasswordItem item) { if (item.getType() == PasswordItem.TYPE_CATEGORY) { passListStack.push((ArrayList<PasswordItem>) recyclerAdapter.getValues().clone()); + pathStack.push(item.getFile()); scrollPosition.push(recyclerView.getVerticalScrollbarPosition()); recyclerView.scrollToPosition(0); recyclerAdapter.clear(); @@ -117,8 +121,12 @@ public class PasswordFragment extends Fragment{ // mListView.closeOpenedItems(); } + /** + * clears the adapter content and sets it back to the root view + */ public void updateAdapter() { passListStack.clear(); + pathStack.clear(); scrollPosition.clear(); recyclerAdapter.clear(); recyclerAdapter.addAll(PasswordRepository.getPasswords()); @@ -126,12 +134,29 @@ public class PasswordFragment extends Fragment{ ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false); } + /** + * refreshes the adapter with the latest opened category + */ + public void refreshAdapter() { + recyclerAdapter.clear(); + recyclerAdapter.addAll(pathStack.isEmpty() ? + PasswordRepository.getPasswords() : + PasswordRepository.getPasswords(pathStack.peek())); + } + public void filterAdapter(String filter) { + Log.d("FRAG", "filter: " + filter); + if (filter.isEmpty()) { - updateAdapter(); + refreshAdapter(); } else { - for (PasswordItem item : PasswordRepository.getPasswords()) { - boolean matches = item.getName().toLowerCase().contains(filter); + // on the root the pathStack is empty + List<PasswordItem> passwordItems = pathStack.isEmpty() ? + PasswordRepository.getPasswords() : + PasswordRepository.getPasswords(pathStack.peek()); + + for (PasswordItem item : passwordItems) { + boolean matches = item.toString().toLowerCase().contains(filter.toLowerCase()); boolean inAdapter = recyclerAdapter.getValues().contains(item); if (matches && !inAdapter) { recyclerAdapter.add(item); @@ -142,10 +167,17 @@ public class PasswordFragment extends Fragment{ } } + /** + * Goes back one level back in the path + */ public void popBack() { + if (passListStack.isEmpty()) + return; + recyclerView.scrollToPosition(scrollPosition.pop()); recyclerAdapter.clear(); recyclerAdapter.addAll(passListStack.pop()); + pathStack.pop(); } public boolean isNotEmpty() { |
