scrollPositions;
/** if we leave the activity to do something, do not add any other fragment */
public boolean leftActivity = false;
@@ -231,11 +231,6 @@ public class PasswordStore extends ActionBarActivity implements ToCloneOrNot.OnF
}
}
- @Override
- public void onFragmentInteraction(Uri uri) {
-
- }
-
private void checkLocalRepository() {
checkLocalRepository(PasswordRepository.getWorkTree());
}
diff --git a/app/src/main/java/com/zeapo/pwdstore/ToCloneOrNot.java b/app/src/main/java/com/zeapo/pwdstore/ToCloneOrNot.java
index dd1ebda1c..38d0a5d18 100644
--- a/app/src/main/java/com/zeapo/pwdstore/ToCloneOrNot.java
+++ b/app/src/main/java/com/zeapo/pwdstore/ToCloneOrNot.java
@@ -9,45 +9,8 @@ import android.view.View;
import android.view.ViewGroup;
-
-/**
- * A simple {@link Fragment} subclass.
- * Activities that contain this fragment must implement the
- * {@link ToCloneOrNot.OnFragmentInteractionListener} interface
- * to handle interaction events.
- * Use the {@link ToCloneOrNot#newInstance} factory method to
- * create an instance of this fragment.
- *
- */
public class ToCloneOrNot extends Fragment {
- // TODO: Rename parameter arguments, choose names that match
- // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
- private static final String ARG_PARAM1 = "param1";
- private static final String ARG_PARAM2 = "param2";
- // TODO: Rename and change types of parameters
- private String mParam1;
- private String mParam2;
-
- private OnFragmentInteractionListener mListener;
-
- /**
- * Use this factory method to create a new instance of
- * this fragment using the provided parameters.
- *
- * @param param1 Parameter 1.
- * @param param2 Parameter 2.
- * @return A new instance of fragment ToCloneOrNot.
- */
- // TODO: Rename and change types and number of parameters
- public static ToCloneOrNot newInstance(String param1, String param2) {
- ToCloneOrNot fragment = new ToCloneOrNot();
- Bundle args = new Bundle();
- args.putString(ARG_PARAM1, param1);
- args.putString(ARG_PARAM2, param2);
- fragment.setArguments(args);
- return fragment;
- }
public ToCloneOrNot() {
// Required empty public constructor
}
@@ -55,10 +18,6 @@ public class ToCloneOrNot extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (getArguments() != null) {
- mParam1 = getArguments().getString(ARG_PARAM1);
- mParam2 = getArguments().getString(ARG_PARAM2);
- }
}
@Override
@@ -68,43 +27,4 @@ public class ToCloneOrNot extends Fragment {
return inflater.inflate(R.layout.fragment_to_clone_or_not, container, false);
}
- // TODO: Rename method, update argument and hook method into UI event
- public void onButtonPressed(Uri uri) {
- if (mListener != null) {
- mListener.onFragmentInteraction(uri);
- }
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- try {
- mListener = (OnFragmentInteractionListener) activity;
- } catch (ClassCastException e) {
- throw new ClassCastException(activity.toString()
- + " must implement OnFragmentInteractionListener");
- }
- }
-
- @Override
- public void onDetach() {
- super.onDetach();
- mListener = null;
- }
-
- /**
- * This interface must be implemented by activities that contain this
- * fragment to allow an interaction in this fragment to be communicated
- * to the activity and potentially other fragments contained in that
- * activity.
- *
- * See the Android Training lesson Communicating with Other Fragments for more information.
- */
- public interface OnFragmentInteractionListener {
- // TODO: Update argument type and name
- public void onFragmentInteraction(Uri uri);
- }
-
}
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordAdapter.java
deleted file mode 100644
index e3317c019..000000000
--- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordAdapter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.zeapo.pwdstore.utils;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.database.DataSetObserver;
-import android.graphics.Typeface;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.ExpandableListAdapter;
-import android.widget.GridLayout;
-import android.widget.ImageButton;
-import android.widget.TextView;
-
-import com.zeapo.pwdstore.PasswordStore;
-import com.zeapo.pwdstore.R;
-import com.zeapo.pwdstore.crypto.PgpHandler;
-
-import org.apache.commons.io.FileUtils;
-
-import java.util.ArrayList;
-
-public class PasswordAdapter extends ArrayAdapter{
- private final PasswordStore activity;
- private final ArrayList values;
-
- static class ViewHolder {
- public TextView name;
- public TextView type;
- public TextView back_name;
- }
-
- public PasswordAdapter(PasswordStore activity, ArrayList values) {
- super(activity, R.layout.password_row_layout, values);
- this.values = values;
- this.activity = activity;
- }
-
- public ArrayList getValues() {
- return values;
- }
-
- @Override
- public View getView(int i, View convertView, ViewGroup viewGroup) {
- View rowView = convertView;
- final PasswordItem pass = values.get(i);
-
- // reuse for performance, holder pattern!
- if (rowView == null) {
- LayoutInflater inflater = (LayoutInflater) activity
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- rowView = inflater.inflate(R.layout.password_row_layout, viewGroup, false);
-
- ViewHolder viewHolder = new ViewHolder();
- viewHolder.name = (TextView) rowView.findViewById(R.id.label);
- viewHolder.back_name = (TextView) rowView.findViewById(R.id.label_back);
- viewHolder.type = (TextView) rowView.findViewById(R.id.type);
- rowView.setTag(viewHolder);
- }
-
- ViewHolder holder = (ViewHolder) rowView.getTag();
-
- holder.name.setText(pass.toString());
- holder.back_name.setText(pass.toString());
-
- if (pass.getType() == PasswordItem.TYPE_CATEGORY) {
- holder.name.setTextColor(this.activity.getResources().getColor(android.R.color.holo_blue_dark));
- holder.name.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
- holder.type.setText("Category: ");
- } else {
- holder.type.setText("Password: ");
- holder.name.setTextColor(this.activity.getResources().getColor(android.R.color.holo_orange_dark));
- holder.name.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.NORMAL));
-
- holder.back_name.setTextColor(this.activity.getResources().getColor(android.R.color.white));
- holder.back_name.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD_ITALIC));
-
-
- View.OnClickListener onClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- switch (view.getId()) {
- case R.id.crypto_show_button:
- activity.decryptPassword(pass);
- break;
- case R.id.crypto_delete_button:
- activity.deletePassword(pass);
- break;
- }
- }
- };
-
- ((ImageButton) rowView.findViewById(R.id.crypto_show_button)).setOnClickListener(onClickListener);
- ((ImageButton) rowView.findViewById(R.id.crypto_delete_button)).setOnClickListener(onClickListener);
- }
-
- return rowView;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java
new file mode 100644
index 000000000..47bcb41bd
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java
@@ -0,0 +1,97 @@
+package com.zeapo.pwdstore.utils;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.zeapo.pwdstore.PasswordFragment;
+import com.zeapo.pwdstore.PasswordStore;
+import com.zeapo.pwdstore.R;
+
+import java.util.ArrayList;
+
+public class PasswordRecyclerAdapter extends RecyclerView.Adapter {
+ private final PasswordStore activity;
+ private final ArrayList values;
+ private final PasswordFragment.OnFragmentInteractionListener listener;
+
+ // Provide a reference to the views for each data item
+ // Complex data items may need more than one view per item, and
+ // you provide access to all the views for a data item in a view holder
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+ // each data item is just a string in this case
+ public View view;
+ public TextView name;
+ public TextView type;
+ public int position;
+
+ public ViewHolder(View v) {
+ super(v);
+ view = v;
+ name = (TextView) view.findViewById(R.id.label);
+ type = (TextView) view.findViewById(R.id.type);
+ }
+ }
+
+ // Provide a suitable constructor (depends on the kind of dataset)
+ public PasswordRecyclerAdapter(PasswordStore activity, PasswordFragment.OnFragmentInteractionListener listener, ArrayList values) {
+ this.values = values;
+ this.activity = activity;
+ this.listener = listener;
+ }
+
+ // Create new views (invoked by the layout manager)
+ @Override
+ public PasswordRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+ int viewType) {
+ // create a new view
+ View v = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.password_row_layout, parent, false);
+ ViewHolder vh = new ViewHolder(v);
+ return vh;
+ }
+
+ // Replace the contents of a view (invoked by the layout manager)
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ final PasswordItem pass = values.get(position);
+ holder.name.setText(pass.getName());
+ holder.type.setText((pass.getType() == PasswordItem.TYPE_CATEGORY ? "Category" : "Password"));
+ holder.position = position;
+
+ holder.view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ listener.onFragmentInteraction(pass);
+ }
+ });
+ }
+
+ // Return the size of your dataset (invoked by the layout manager)
+ @Override
+ public int getItemCount() {
+ return values.size();
+ }
+
+ public ArrayList getValues() {
+ return this.values;
+ }
+
+ public void clear() {
+ this.values.clear();
+ this.notifyDataSetChanged();
+ }
+
+ public void addAll(ArrayList list) {
+ this.values.addAll(list);
+ this.notifyDataSetChanged();
+ }
+
+ public void add(PasswordItem item) {
+ this.values.add(item);
+ this.notifyDataSetChanged();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_pwdstore.xml b/app/src/main/res/layout/activity_pwdstore.xml
index 1e6f1e41d..b7074083c 100644
--- a/app/src/main/res/layout/activity_pwdstore.xml
+++ b/app/src/main/res/layout/activity_pwdstore.xml
@@ -2,10 +2,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#eee"
tools:context=".pwdstore"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/fragment_password_grid.xml b/app/src/main/res/layout/fragment_password_grid.xml
deleted file mode 100644
index b23aa4d31..000000000
--- a/app/src/main/res/layout/fragment_password_grid.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_password_list.xml b/app/src/main/res/layout/fragment_password_list.xml
deleted file mode 100644
index 43a8a91bc..000000000
--- a/app/src/main/res/layout/fragment_password_list.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/password_recycler_view.xml b/app/src/main/res/layout/password_recycler_view.xml
new file mode 100644
index 000000000..c50f5952b
--- /dev/null
+++ b/app/src/main/res/layout/password_recycler_view.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/password_row_layout.xml b/app/src/main/res/layout/password_row_layout.xml
index 05bf3457d..3636a20be 100644
--- a/app/src/main/res/layout/password_row_layout.xml
+++ b/app/src/main/res/layout/password_row_layout.xml
@@ -1,71 +1,29 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:padding="8dp"
+ android:textStyle="bold"
+ android:layout_gravity="center_vertical"
+ />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-large/refs.xml b/app/src/main/res/values-large/refs.xml
index 975e10faf..91cab1100 100644
--- a/app/src/main/res/values-large/refs.xml
+++ b/app/src/main/res/values-large/refs.xml
@@ -9,6 +9,4 @@
http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
-->
- - @layout/fragment_password_grid
-
\ No newline at end of file
diff --git a/app/src/main/res/values-sw600dp/refs.xml b/app/src/main/res/values-sw600dp/refs.xml
index 975e10faf..91cab1100 100644
--- a/app/src/main/res/values-sw600dp/refs.xml
+++ b/app/src/main/res/values-sw600dp/refs.xml
@@ -9,6 +9,4 @@
http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
-->
- - @layout/fragment_password_grid
-
\ No newline at end of file