aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java
diff options
context:
space:
mode:
authorMatthew Wong <wongma@protonmail.ch>2015-08-13 15:18:47 -0400
committerMatthew Wong <wongma@protonmail.ch>2015-08-14 17:36:52 -0400
commitec07e1eea69a69e9579ddfb44fdbee3535bcf6ad (patch)
tree216b48cfe0460064b9a42bde130ea3e13a3a07d5 /app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java
parent29b92f4a6d1dacac3e0a1154972e2659b3a536be (diff)
downloadHardenedPass-ec07e1eea69a69e9579ddfb44fdbee3535bcf6ad.tar.gz
HardenedPass-ec07e1eea69a69e9579ddfb44fdbee3535bcf6ad.zip
Preference activity overhaul
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java132
1 files changed, 21 insertions, 111 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java
index 14530879..7c735f18 100644
--- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java
+++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java
@@ -2,14 +2,11 @@ package com.zeapo.pwdstore.autofill;
import android.content.Context;
import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import android.preference.PreferenceManager;
+import android.content.pm.ResolveInfo;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -18,19 +15,14 @@ import android.widget.TextView;
import com.zeapo.pwdstore.R;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.TreeSet;
public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecyclerAdapter.ViewHolder> {
- private ArrayList<ApplicationInfo> apps;
+ private ArrayList<ResolveInfo> apps;
private PackageManager pm;
private AutofillPreferenceActivity activity;
- private final Set<Integer> selectedItems;
private ActionMode actionMode;
- public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
+ public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public View view;
public TextView name;
public TextView secondary;
@@ -44,38 +36,19 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl
secondary = (TextView) view.findViewById(R.id.secondary_text);
icon = (ImageView) view.findViewById(R.id.app_icon);
view.setOnClickListener(this);
- view.setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
- if (actionMode != null) {
- toggleSelection(getAdapterPosition(), view);
- if (selectedItems.isEmpty()) {
- actionMode.finish();
- }
- } else {
- activity.showDialog(packageName, name.getText().toString());
- }
+ activity.showDialog(packageName, name.getText().toString());
}
- @Override
- public boolean onLongClick(View v) {
- if (actionMode != null) {
- return false;
- }
- toggleSelection(getAdapterPosition(), view);
- // Start the CAB using the ActionMode.Callback
- actionMode = activity.startSupportActionMode(actionModeCallback);
- return true;
- }
}
- public AutofillRecyclerAdapter(ArrayList<ApplicationInfo> apps, PackageManager pm, AutofillPreferenceActivity activity) {
+ public AutofillRecyclerAdapter(ArrayList<ResolveInfo> apps, PackageManager pm, AutofillPreferenceActivity activity) {
this.apps = apps;
this.pm = pm;
this.activity = activity;
- this.selectedItems = new TreeSet<>(Collections.reverseOrder());
}
@Override
@@ -87,30 +60,33 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl
@Override
public void onBindViewHolder(AutofillRecyclerAdapter.ViewHolder holder, int position) {
- ApplicationInfo app = apps.get(position);
- holder.name.setText(pm.getApplicationLabel(app));
+ ResolveInfo app = apps.get(position);
+ holder.name.setText(app.loadLabel(pm));
+ holder.icon.setImageDrawable(app.loadIcon(pm));
+ holder.packageName = app.activityInfo.packageName;
+
+ holder.secondary.setVisibility(View.VISIBLE);
+ holder.view.setBackgroundResource(R.color.grey_white_1000);
- // it shouldn't be possible for prefs.getString to not find the app...use defValue anyway
- SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
- String defValue = settings.getBoolean("autofill_default", true) ? "first" : "never";
SharedPreferences prefs
= activity.getApplicationContext().getSharedPreferences("autofill", Context.MODE_PRIVATE);
- String preference = prefs.getString(app.packageName, defValue);
+ String preference = prefs.getString(holder.packageName, "");
switch (preference) {
+ case "":
+ holder.secondary.setVisibility(View.GONE);
+ // "android:windowBackground"
+ holder.view.setBackgroundResource(R.color.indigo_50);
+ break;
case "first":
- holder.secondary.setText("Automatically match with password");
+ holder.secondary.setText("Automatically match");
break;
case "never":
- holder.secondary.setText("Never autofill");
+ holder.secondary.setText("Never match");
break;
default:
holder.secondary.setText("Match with " + preference);
break;
}
- holder.icon.setImageDrawable(pm.getApplicationIcon(app));
- holder.packageName = app.packageName;
-
- holder.view.setSelected(selectedItems.contains(position));
}
@Override
@@ -118,79 +94,13 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl
return apps.size();
}
- public void add(String packageName) {
- try {
- ApplicationInfo app = pm.getApplicationInfo(packageName, 0);
- this.apps.add(app);
- notifyItemInserted(apps.size());
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- }
-
public int getPosition(String packageName) {
for (int i = 0; i < apps.size(); i++) {
- if (apps.get(i).packageName.equals(packageName)) {
+ if (apps.get(i).activityInfo.packageName.equals(packageName)) {
return i;
}
}
return -1;
}
- private ActionMode.Callback actionModeCallback = new ActionMode.Callback() {
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- mode.getMenuInflater().inflate(R.menu.context_pass, menu);
- return true;
- }
-
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false;
- }
-
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_delete_password:
- // don't ask for confirmation
- for (int position : selectedItems) {
- remove(position);
- }
- mode.finish(); // Action picked, so close the CAB
- return true;
- default:
- return false;
- }
- }
-
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- for (Iterator it = selectedItems.iterator(); it.hasNext();) {
- // need the setSelected line in onBind
- notifyItemChanged((Integer) it.next());
- it.remove();
- }
- actionMode = null;
- }
- };
-
- public void remove(int position) {
- ApplicationInfo applicationInfo = this.apps.get(position);
- SharedPreferences prefs
- = activity.getApplicationContext().getSharedPreferences("autofill", Context.MODE_PRIVATE);
- prefs.edit().remove(applicationInfo.packageName).apply();
-
- this.apps.remove(position);
- this.notifyItemRemoved(position);
- }
-
- public void toggleSelection(int position, View view) {
- if (!selectedItems.remove(position)) {
- selectedItems.add(position);
- view.setSelected(true);
- } else {
- view.setSelected(false);
- }
- }
}