diff --git a/app/build.gradle b/app/build.gradle index 030b11139..d138cc5dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ android { compileSdkVersion 28 defaultConfig { applicationId "com.zeapo.pwdstore" - minSdkVersion 16 + minSdkVersion 21 targetSdkVersion 28 versionCode 10302 versionName "1.3.2" @@ -15,8 +15,8 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } lintOptions { abortOnError true // make sure build fails with lint errors! @@ -79,8 +79,6 @@ dependencies { androidTestImplementation 'androidx.test:rules:1.1.0-alpha4' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0-alpha4' - - } repositories { mavenCentral() diff --git a/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java index 215101126..936739028 100644 --- a/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java +++ b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java @@ -4,9 +4,10 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.drawable.Drawable; +import android.view.View; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; -import android.view.View; class DividerItemDecoration extends RecyclerView.ItemDecoration { @@ -31,7 +32,7 @@ class DividerItemDecoration extends RecyclerView.ItemDecoration { } @Override - public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { int left = parent.getPaddingLeft(); int right = parent.getWidth() - parent.getPaddingRight(); diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java b/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java index 590a779e4..d876aefd4 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordEntry.java @@ -11,14 +11,13 @@ import java.io.UnsupportedEncodingException; public class PasswordEntry { private static final String[] USERNAME_FIELDS = new String[]{"login", "username"}; - - private String extraContent; private final String password; private final String username; private final String totpSecret; private final String hotpSecret; private final Long hotpCounter; private final String content; + private String extraContent; private boolean isIncremented = false; public PasswordEntry(final ByteArrayOutputStream os) throws UnsupportedEncodingException { @@ -34,7 +33,7 @@ public class PasswordEntry { hotpCounter = findHotpCounter(content); extraContent = findExtraContent(passContent); username = findUsername(); - } + } public String getPassword() { return password; @@ -76,7 +75,9 @@ public class PasswordEntry { return hotpSecret != null && hotpCounter != null; } - public boolean hotpIsIncremented() { return isIncremented; } + public boolean hotpIsIncremented() { + return isIncremented; + } public void incrementHotp() { for (String line : content.split("\n")) { @@ -126,7 +127,7 @@ public class PasswordEntry { return null; } - private String findExtraContent(String [] passContent) { + private String findExtraContent(String[] passContent) { String extraContent = passContent.length > 1 ? passContent[1] : ""; // if there is a HOTP URI, we must return the extra content with the counter incremented if (hasHotp()) { diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java index f6179703f..63211af0f 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.java @@ -4,16 +4,16 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import androidx.fragment.app.Fragment; -import androidx.appcompat.app.AppCompatActivity; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.zeapo.pwdstore.utils.PasswordItem; import com.zeapo.pwdstore.utils.PasswordRecyclerAdapter; import com.zeapo.pwdstore.utils.PasswordRepository; @@ -24,16 +24,12 @@ import java.util.Stack; /** * A fragment representing a list of Items. - *
+ * * Large screen devices (such as tablets) are supported by replacing the ListView * with a GridView. - * + * */ -public class PasswordFragment extends Fragment{ - - public interface OnFragmentInteractionListener { - void onFragmentInteraction(PasswordItem item); - } +public class PasswordFragment extends Fragment { // store the pass files list in a stack private Stack
* 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 751d8559c..83244a3fc 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