From c200566bcaec971e1756afe5ebf96baf09e88816 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 2 Jan 2019 22:44:52 +0530 Subject: Bump minSdk to 21 (#466) * Bump minSdk to 21 Signed-off-by: Harsh Shandilya * PasswordGenerator: Constify things Signed-off-by: Harsh Shandilya * Deprecate PRNG fixes The problem being fixed doesn't exist on SDK 21 and above. Signed-off-by: Harsh Shandilya * treewide: Switch to lambdas Signed-off-by: Harsh Shandilya * treewide: Formatting fixes Signed-off-by: Harsh Shandilya * treewide: Remove useless casts and add missing annotations Signed-off-by: Harsh Shandilya --- .../zeapo/pwdstore/utils/EntryRecyclerAdapter.java | 45 ++++----- .../pwdstore/utils/FolderRecyclerAdapter.java | 12 +-- .../main/java/com/zeapo/pwdstore/utils/Otp.java | 8 +- .../com/zeapo/pwdstore/utils/PasswordItem.java | 29 +++--- .../pwdstore/utils/PasswordRecyclerAdapter.java | 112 ++++++++++----------- .../zeapo/pwdstore/utils/PasswordRepository.java | 5 +- 6 files changed, 97 insertions(+), 114 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/utils') diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java index cabc0dcf..c108cb52 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java @@ -3,15 +3,14 @@ package com.zeapo.pwdstore.utils; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Color; -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; - +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; import com.zeapo.pwdstore.R; import java.util.ArrayList; @@ -19,9 +18,9 @@ import java.util.Set; import java.util.TreeSet; public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter { + final Set selectedItems = new TreeSet<>(); private final Activity activity; private final ArrayList values; - final Set selectedItems = new TreeSet<>(); EntryRecyclerAdapter(Activity activity, ArrayList values) { this.activity = activity; @@ -85,18 +84,13 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter false; } // Replace the contents of a view (invoked by the layout manager) @SuppressLint("SetTextI18n") @Override - public void onBindViewHolder(final ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { final PasswordItem pass = getValues().get(position); holder.name.setText(pass.toString()); if (pass.getType() == PasswordItem.TYPE_CATEGORY) { @@ -127,6 +121,17 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter { + listener.onFragmentInteraction(pass); + notifyItemChanged(holder.getAdapterPosition()); }; } diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/Otp.java b/app/src/main/java/com/zeapo/pwdstore/utils/Otp.java index 44e2aa64..35e773e4 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/Otp.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/Otp.java @@ -1,18 +1,16 @@ package com.zeapo.pwdstore.utils; import android.util.Log; - import org.apache.commons.codec.binary.Base32; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; import java.math.BigInteger; import java.nio.ByteBuffer; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Arrays; -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; - public class Otp { public static final int TIME_WINDOW = 30; @@ -27,7 +25,7 @@ public class Otp { public static String calculateCode(String secret, long counter) { SecretKeySpec signingKey = new SecretKeySpec(BASE_32.decode(secret), ALGORITHM); - Mac mac = null; + Mac mac; try { mac = Mac.getInstance(ALGORITHM); mac.init(signingKey); diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java index 5c2231a5..b79f2130 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java @@ -1,8 +1,7 @@ package com.zeapo.pwdstore.utils; -import com.zeapo.pwdstore.crypto.PgpActivity; - import androidx.annotation.NonNull; +import com.zeapo.pwdstore.crypto.PgpActivity; import java.io.File; @@ -18,8 +17,9 @@ public class PasswordItem implements Comparable { private final String fullPathToParent; private final String longName; - /** Create a password item - * + /** + * Create a password item + *

* Make it protected so that we use a builder */ private PasswordItem(String name, PasswordItem parent, char type, File file, File rootDir) { @@ -33,35 +33,39 @@ public class PasswordItem implements Comparable { longName = PgpActivity.getLongName(fullPathToParent, rootDir.getAbsolutePath(), toString()); } - /** Create a new Category item + /** + * Create a new Category item */ public static PasswordItem newCategory(String name, File file, PasswordItem parent, File rootDir) { return new PasswordItem(name, parent, TYPE_CATEGORY, file, rootDir); } - /** Create a new parentless category item + /** + * Create a new parentless category item */ public static PasswordItem newCategory(String name, File file, File rootDir) { return new PasswordItem(name, null, TYPE_CATEGORY, file, rootDir); } - /** Create a new password item + /** + * Create a new password item */ - public static PasswordItem newPassword(String name, File file, PasswordItem parent, File rootDir) { + public static PasswordItem newPassword(String name, File file, PasswordItem parent, File rootDir) { return new PasswordItem(name, parent, TYPE_PASSWORD, file, rootDir); } - /** Create a new parentless password item + /** + * Create a new parentless password item */ public static PasswordItem newPassword(String name, File file, File rootDir) { return new PasswordItem(name, null, TYPE_PASSWORD, file, rootDir); } - public char getType(){ + public char getType() { return this.type; } - String getName(){ + String getName() { return this.name; } @@ -81,8 +85,9 @@ public class PasswordItem implements Comparable { return longName; } + @NonNull @Override - public String toString(){ + public String toString() { return this.getName().replace(".gpg", ""); } diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java index 751d8559..83244a3f 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRecyclerAdapter.java @@ -1,11 +1,10 @@ package com.zeapo.pwdstore.utils; -import androidx.annotation.NonNull; -import androidx.appcompat.view.ActionMode; import android.view.Menu; import android.view.MenuItem; import android.view.View; - +import androidx.annotation.NonNull; +import androidx.appcompat.view.ActionMode; import com.zeapo.pwdstore.PasswordFragment; import com.zeapo.pwdstore.PasswordStore; import com.zeapo.pwdstore.R; @@ -19,63 +18,6 @@ public class PasswordRecyclerAdapter extends EntryRecyclerAdapter { private final PasswordFragment.OnFragmentInteractionListener listener; public ActionMode mActionMode; private Boolean canEdit; - - // Provide a suitable constructor (depends on the kind of dataset) - public PasswordRecyclerAdapter(PasswordStore activity, PasswordFragment.OnFragmentInteractionListener listener, ArrayList values) { - super(activity, values); - this.activity = activity; - this.listener = listener; - } - - @Override - @NonNull - protected View.OnLongClickListener getOnLongClickListener(final ViewHolder holder, final PasswordItem pass) { - return new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - if (mActionMode != null) { - return false; - } - toggleSelection(holder.getAdapterPosition()); - canEdit = pass.getType() == PasswordItem.TYPE_PASSWORD; - // Start the CAB using the ActionMode.Callback - mActionMode = activity.startSupportActionMode(mActionModeCallback); - mActionMode.setTitle("" + selectedItems.size()); - mActionMode.invalidate(); - notifyItemChanged(holder.getAdapterPosition()); - return true; - } - }; - } - - @Override - @NonNull - protected View.OnClickListener getOnClickListener(final ViewHolder holder, final PasswordItem pass) { - return new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mActionMode != null) { - toggleSelection(holder.getAdapterPosition()); - mActionMode.setTitle("" + selectedItems.size()); - if (selectedItems.isEmpty()) { - mActionMode.finish(); - } else if (selectedItems.size() == 1 && !canEdit) { - if (getValues().get(selectedItems.iterator().next()).getType() == PasswordItem.TYPE_PASSWORD) { - canEdit = true; - mActionMode.invalidate(); - } - } else if (selectedItems.size() >= 1 && canEdit) { - canEdit = false; - mActionMode.invalidate(); - } - } else { - listener.onFragmentInteraction(pass); - } - notifyItemChanged(holder.getAdapterPosition()); - } - }; - } - private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { // Called when the action mode is created; startActionMode() was called @@ -136,4 +78,54 @@ public class PasswordRecyclerAdapter extends EntryRecyclerAdapter { activity.findViewById(R.id.fab).setVisibility(View.VISIBLE); } }; + + // Provide a suitable constructor (depends on the kind of dataset) + public PasswordRecyclerAdapter(PasswordStore activity, PasswordFragment.OnFragmentInteractionListener listener, ArrayList values) { + super(activity, values); + this.activity = activity; + this.listener = listener; + } + + @Override + @NonNull + protected View.OnLongClickListener getOnLongClickListener(final ViewHolder holder, final PasswordItem pass) { + return v -> { + if (mActionMode != null) { + return false; + } + toggleSelection(holder.getAdapterPosition()); + canEdit = pass.getType() == PasswordItem.TYPE_PASSWORD; + // Start the CAB using the ActionMode.Callback + mActionMode = activity.startSupportActionMode(mActionModeCallback); + mActionMode.setTitle("" + selectedItems.size()); + mActionMode.invalidate(); + notifyItemChanged(holder.getAdapterPosition()); + return true; + }; + } + + @Override + @NonNull + protected View.OnClickListener getOnClickListener(final ViewHolder holder, final PasswordItem pass) { + return v -> { + if (mActionMode != null) { + toggleSelection(holder.getAdapterPosition()); + mActionMode.setTitle("" + selectedItems.size()); + if (selectedItems.isEmpty()) { + mActionMode.finish(); + } else if (selectedItems.size() == 1 && !canEdit) { + if (getValues().get(selectedItems.iterator().next()).getType() == PasswordItem.TYPE_PASSWORD) { + canEdit = true; + mActionMode.invalidate(); + } + } else if (selectedItems.size() >= 1 && canEdit) { + canEdit = false; + mActionMode.invalidate(); + } + } else { + listener.onFragmentInteraction(pass); + } + notifyItemChanged(holder.getAdapterPosition()); + }; + } } diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java index fdb53ac4..e79acac8 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; - import org.apache.commons.io.filefilter.FileFilterUtils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.Repository; @@ -269,9 +268,7 @@ public class PasswordRepository { return (p2.getType() + p1.getName()) .compareToIgnoreCase(p1.getType() + p2.getName()); } - }) - - ; + }); private Comparator comparator; -- cgit v1.2.3