diff options
Diffstat (limited to 'app')
40 files changed, 141 insertions, 147 deletions
diff --git a/app/build.gradle b/app/build.gradle index 0662df97..83d32e8b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,9 +15,9 @@ android { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } - // avoid Travis failures lintOptions { - abortOnError false + abortOnError true // make sure build failes with lint errors! + disable 'MissingTranslation', 'PluralsCandidate' } packagingOptions { exclude '.readme' diff --git a/app/src/androidTest/java/com/zeapo/pwdstore/GitActivityTest.java b/app/src/androidTest/java/com/zeapo/pwdstore/GitActivityTest.java index 6073c211..29684755 100644 --- a/app/src/androidTest/java/com/zeapo/pwdstore/GitActivityTest.java +++ b/app/src/androidTest/java/com/zeapo/pwdstore/GitActivityTest.java @@ -55,7 +55,6 @@ public class GitActivityTest extends ActivityInstrumentationTestCase2<GitActivit /** * If we change from ssh protocol to https we automatically switch to username/password auth - * @throws Exception */ public void testSpinnerChange() throws Exception{ gitActivity.runOnUiThread(new Runnable() { diff --git a/app/src/androidTest/java/com/zeapo/pwdstore/RepositoryCreation.java b/app/src/androidTest/java/com/zeapo/pwdstore/RepositoryCreation.java index 8e1edb95..63c77e3a 100644 --- a/app/src/androidTest/java/com/zeapo/pwdstore/RepositoryCreation.java +++ b/app/src/androidTest/java/com/zeapo/pwdstore/RepositoryCreation.java @@ -8,9 +8,6 @@ import android.preference.PreferenceManager; import android.test.ActivityInstrumentationTestCase2; public class RepositoryCreation extends ActivityInstrumentationTestCase2<PasswordStore> { - private Activity passwordStore; - Instrumentation mInstrumentation; - SharedPreferences settings; public RepositoryCreation() { super(PasswordStore.class); @@ -18,19 +15,18 @@ public class RepositoryCreation extends ActivityInstrumentationTestCase2<Passwor protected void setUp() throws Exception { super.setUp(); - mInstrumentation = getInstrumentation(); + Instrumentation mInstrumentation = getInstrumentation(); Intent intent = new Intent(); setActivityIntent(intent); - passwordStore = getActivity(); // get a references to the app under test + Activity passwordStore = getActivity(); assertNotNull(passwordStore); - settings = PreferenceManager.getDefaultSharedPreferences(passwordStore.getApplicationContext()); + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(passwordStore.getApplicationContext()); settings.edit().clear().apply(); } /** * If we change from ssh protocol to https we automatically switch to username/password auth - * @throws Exception */ public void testSpinnerChange() throws Exception{ } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fed637d9..98884e13 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,14 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.zeapo.pwdstore"> + xmlns:tools="http://schemas.android.com/tools" + package="com.zeapo.pwdstore"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> - <application android:allowBackup="true" android:icon="@drawable/ic_launcher" - android:label="@string/app_name" android:theme="@style/AppTheme"> + <application android:allowBackup="true" + android:icon="@drawable/ic_launcher" + android:label="@string/app_name" + android:theme="@style/AppTheme" + android:supportsRtl="true"> <activity android:name=".PasswordStore" android:label="@string/app_name" android:configChanges="orientation|screenSize"> <intent-filter> @@ -57,7 +61,8 @@ <activity android:name=".autofill.AutofillActivity" android:parentActivityName=".PasswordStore" android:documentLaunchMode="intoExisting" - android:excludeFromRecents="true"> + android:excludeFromRecents="true" + tools:ignore="UnusedAttribute"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.zeapo.pwdstore.PasswordStore" /> diff --git a/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java index 7bc66b62..bc174318 100644 --- a/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java +++ b/app/src/main/java/com/zeapo/pwdstore/DividerItemDecoration.java @@ -8,7 +8,7 @@ import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.View; -public class DividerItemDecoration extends RecyclerView.ItemDecoration { +class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{android.R.attr.listDivider}; @@ -26,7 +26,7 @@ public class DividerItemDecoration extends RecyclerView.ItemDecoration { /** * Custom divider will be used */ - public DividerItemDecoration(Context context, int resId) { + DividerItemDecoration(Context context, int resId) { mDivider = ContextCompat.getDrawable(context, resId); } diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index fb8ec8c7..6c232ab8 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -294,7 +294,7 @@ public class PasswordStore extends AppCompatActivity { checkLocalRepository(); } - public void initializeRepositoryInfo() { + private void initializeRepositoryInfo() { if (settings.getBoolean("git_external", false) && settings.getString("git_external_repo", null) != null) { File dir = new File(settings.getString("git_external_repo", null)); @@ -521,13 +521,13 @@ public class PasswordStore extends AppCompatActivity { /** * Updates the adapter with the current view of passwords */ - public void refreshListAdapter() { + private void refreshListAdapter() { if ((null != plist)) { plist.refreshAdapter(); } } - public void filterListAdapter(String filter) { + private void filterListAdapter(String filter) { if ((null != plist)) { plist.filterAdapter(filter); } @@ -643,7 +643,7 @@ public class PasswordStore extends AppCompatActivity { } } - protected void initRepository(final int operation) { + private void initRepository(final int operation) { PasswordRepository.closeRepository(); new AlertDialog.Builder(this) diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java index 9ac88ef6..e39ad1c6 100644 --- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.java +++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.java @@ -285,7 +285,7 @@ public class UserPreference extends AppCompatActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - public void selectExternalGitRepository() { + private void selectExternalGitRepository() { final Activity activity = this; new AlertDialog.Builder(this). setTitle("Choose where to store the passwords"). @@ -332,7 +332,7 @@ public class UserPreference extends AppCompatActivity { /** * Opens a file explorer to import the private key */ - public void getSshKeyWithPermissions(boolean useDefaultPicker) { + private void getSshKeyWithPermissions(boolean useDefaultPicker) { final Activity activity = this; if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE)) { @@ -362,7 +362,7 @@ public class UserPreference extends AppCompatActivity { /** * Opens a file explorer to import the private key */ - public void getSshKey(boolean useDefaultPicker) { + private void getSshKey(boolean useDefaultPicker) { if (useDefaultPicker) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); @@ -382,7 +382,7 @@ public class UserPreference extends AppCompatActivity { } } - public void exportPasswordsWithPermissions() { + private void exportPasswordsWithPermissions() { final Activity activity = this; if (ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { @@ -421,7 +421,7 @@ public class UserPreference extends AppCompatActivity { /** * Opens a key generator to generate a public/private key pair */ - public void makeSshKey(boolean fromPreferences) { + private void makeSshKey(boolean fromPreferences) { Intent intent = new Intent(getApplicationContext(), SshKeyGen.class); startActivity(intent); if (!fromPreferences) { 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 80942c58..b28687d8 100644 --- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java @@ -18,23 +18,23 @@ import com.zeapo.pwdstore.R; import java.util.ArrayList; import java.util.List; -public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecyclerAdapter.ViewHolder> { +class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecyclerAdapter.ViewHolder> { private SortedList<AppInfo> apps; private ArrayList<AppInfo> allApps; // for filtering, maintain a list of all private AutofillPreferenceActivity activity; - Drawable browserIcon = null; + private Drawable browserIcon = null; - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public View view; public TextView name; - public TextView secondary; + TextView secondary; public ImageView icon; - public String packageName; - public String appName; - public Boolean isWeb; + String packageName; + String appName; + Boolean isWeb; - public ViewHolder(View view) { + ViewHolder(View view) { super(view); this.view = view; name = (TextView) view.findViewById(R.id.app_name); @@ -50,13 +50,13 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl } - public static class AppInfo { - public String packageName; - public String appName; - public boolean isWeb; + static class AppInfo { + String packageName; + String appName; + boolean isWeb; public Drawable icon; - public AppInfo(String packageName, String appName, boolean isWeb, Drawable icon) { + AppInfo(String packageName, String appName, boolean isWeb, Drawable icon) { this.packageName = packageName; this.appName = appName; this.isWeb = isWeb; @@ -69,7 +69,7 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl } } - public AutofillRecyclerAdapter(List<AppInfo> allApps, final PackageManager pm + AutofillRecyclerAdapter(List<AppInfo> allApps, final PackageManager pm , AutofillPreferenceActivity activity) { SortedList.Callback<AppInfo> callback = new SortedListAdapterCallback<AppInfo>(this) { // don't take into account secondary text. This is good enough @@ -92,7 +92,6 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl this.apps = new SortedList<>(AppInfo.class, callback); this.apps.addAll(allApps); this.allApps = new ArrayList<>(allApps); - PackageManager pm1 = pm; this.activity = activity; try { browserIcon = activity.getPackageManager().getApplicationIcon("com.android.browser"); @@ -155,28 +154,28 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter<AutofillRecycl return apps.size(); } - public int getPosition(String appName) { + int getPosition(String appName) { return apps.indexOf(new AppInfo(null, appName, false, null)); } // for websites, URL = packageName == appName - public void addWebsite(String packageName) { + void addWebsite(String packageName) { apps.add(new AppInfo(packageName, packageName, true, browserIcon)); allApps.add(new AppInfo(packageName, packageName, true, browserIcon)); } - public void removeWebsite(String packageName) { + void removeWebsite(String packageName) { apps.remove(new AppInfo(null, packageName, false, null)); allApps.remove(new AppInfo(null, packageName, false, null)); // compare with equals } - public void updateWebsite(String oldPackageName, String packageName) { + void updateWebsite(String oldPackageName, String packageName) { apps.updateItemAt(getPosition(oldPackageName), new AppInfo (packageName, packageName, true, browserIcon)); allApps.remove(new AppInfo(null, oldPackageName, false, null)); // compare with equals allApps.add(new AppInfo(null, packageName, false, null)); } - public void filter(String s) { + void filter(String s) { if (s.isEmpty()) { apps.addAll(allApps); return; diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java index 8f75a31f..c4013dc6 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java @@ -1,5 +1,6 @@ package com.zeapo.pwdstore.crypto; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.DialogFragment; import android.app.PendingIntent; @@ -666,8 +667,6 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne /** * Encrypts a password file - * - * @param data */ public void encrypt(Intent data) { data.setAction(OpenPgpApi.ACTION_ENCRYPT); @@ -730,6 +729,7 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne } // TODO (low priority but still...) android M potential permissions crashes + @SuppressLint("SetTextI18n") @Override public void onBound(IOpenPgpService2 service) { Log.i("PGP", "ISBOUND!!"); diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java index 6314a4b3..51ab863d 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java @@ -456,8 +456,6 @@ public class GitActivity extends AppCompatActivity { /** * Save the repository information to the shared preferences settings - * - * @param view */ public void saveConfiguration(View view) { if (!saveConfiguration()) @@ -500,8 +498,6 @@ public class GitActivity extends AppCompatActivity { /** * Clones the repository, the directory exists, deletes it - * - * @param view */ public void cloneRepository(View view) { if (PasswordRepository.getRepository(null) == null) { diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java index 4002d24e..6f886687 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java @@ -30,9 +30,9 @@ public abstract class GitOperation { public static final int GET_SSH_KEY_FROM_CLONE = 201; protected final Repository repository; - protected final Activity callingActivity; - protected UsernamePasswordCredentialsProvider provider; - protected GitCommand command; + final Activity callingActivity; + UsernamePasswordCredentialsProvider provider; + GitCommand command; /** * Creates a new git operation @@ -52,7 +52,7 @@ public abstract class GitOperation { * @param password the password * @return the current object */ - public GitOperation setAuthentication(String username, String password) { + GitOperation setAuthentication(String username, String password) { SshSessionFactory.setInstance(new GitConfigSessionFactory()); this.provider = new UsernamePasswordCredentialsProvider(username, password); return this; @@ -66,7 +66,7 @@ public abstract class GitOperation { * @param passphrase the passphrase * @return the current object */ - public GitOperation setAuthentication(File sshKey, String username, String passphrase) { + GitOperation setAuthentication(File sshKey, String username, String passphrase) { JschConfigSessionFactory sessionFactory = new SshConfigSessionFactory(sshKey.getAbsolutePath(), username, passphrase); SshSessionFactory.setInstance(sessionFactory); this.provider = null; diff --git a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java index 0094b22c..089993d3 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java @@ -16,11 +16,11 @@ import org.eclipse.jgit.api.StatusCommand; import java.io.File; public class SyncOperation extends GitOperation { - protected AddCommand addCommand; - protected StatusCommand statusCommand; - protected CommitCommand commitCommand; - protected PullCommand pullCommand; - protected PushCommand pushCommand; + private AddCommand addCommand; + private StatusCommand statusCommand; + private CommitCommand commitCommand; + private PullCommand pullCommand; + private PushCommand pushCommand; /** * Creates a new git operation diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgen/PRNGFixes.java b/app/src/main/java/com/zeapo/pwdstore/pwgen/PRNGFixes.java index 201e821d..aabc27b2 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgen/PRNGFixes.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgen/PRNGFixes.java @@ -185,16 +185,12 @@ public final class PRNGFixes { /** * Input stream for reading from Linux PRNG or {@code null} if not yet * opened. - * - * @GuardedBy("sLock") */ private static DataInputStream sUrandomIn; /** * Output stream for writing to Linux PRNG or {@code null} if not yet * opened. - * - * @GuardedBy("sLock") */ private static OutputStream sUrandomOut; @@ -224,6 +220,7 @@ public final class PRNGFixes { } } + @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter") @Override protected void engineNextBytes(byte[] bytes) { if (!mSeeded) { diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_phonemes.java b/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_phonemes.java index 1b312232..297c21c5 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_phonemes.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_phonemes.java @@ -1,6 +1,6 @@ package com.zeapo.pwdstore.pwgen; -public class pw_phonemes { +class pw_phonemes { private static final int CONSONANT = 0x0001; private static final int VOWEL = 0x0002; private static final int DIPTHONG = 0x0004; diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_rand.java b/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_rand.java index 945aaf71..9afd5e4a 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_rand.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgen/pw_rand.java @@ -1,6 +1,6 @@ package com.zeapo.pwdstore.pwgen; -public class pw_rand { +class pw_rand { /** * Generates a completely random password. diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgen/randnum.java b/app/src/main/java/com/zeapo/pwdstore/pwgen/randnum.java index 83cf4b03..583d0863 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgen/randnum.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgen/randnum.java @@ -3,7 +3,7 @@ package com.zeapo.pwdstore.pwgen; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; -public class randnum { +class randnum { private static SecureRandom random; static { diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java index 7b55dccf..2a04be0e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenDialogFragment.java @@ -1,5 +1,6 @@ package com.zeapo.pwdstore; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; import android.app.DialogFragment; @@ -30,6 +31,7 @@ public class pwgenDialogFragment extends DialogFragment { } + @SuppressLint("SetTextI18n") @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 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 a36b1124..f1d2c36b 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java @@ -1,5 +1,6 @@ package com.zeapo.pwdstore.utils; +import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Color; import android.support.annotation.NonNull; @@ -83,7 +84,7 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter<EntryRec } @NonNull - protected View.OnLongClickListener getOnLongClickListener(ViewHolder holder, PasswordItem pass) { + View.OnLongClickListener getOnLongClickListener(ViewHolder holder, PasswordItem pass) { return new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { @@ -93,6 +94,7 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter<EntryRec } // Replace the contents of a view (invoked by the layout manager) + @SuppressLint("SetTextI18n") @Override public void onBindViewHolder(final ViewHolder holder, int position) { final PasswordItem pass = getValues().get(position); @@ -118,7 +120,7 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter<EntryRec holder.itemView.setBackgroundResource(R.color.deep_orange_200); holder.type.setTextColor(Color.BLACK); } else { - holder.itemView.setBackgroundResource(Color.alpha(1)); + holder.itemView.setBackgroundColor(Color.alpha(1)); holder.type.setTextColor(ContextCompat.getColor(activity, R.color.grey_500)); } } 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 cfdb829d..f45abc38 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java @@ -18,11 +18,8 @@ public class PasswordItem implements Comparable{ /** Create a password item * * Make it protected so that we use a builder - * @param name - * @param parent - * @param type */ - protected PasswordItem(String name, PasswordItem parent, char type, File file, File rootDir) { + private PasswordItem(String name, PasswordItem parent, char type, File file, File rootDir) { this.name = name; this.parent = parent; this.type = type; @@ -31,38 +28,24 @@ public class PasswordItem implements Comparable{ } /** Create a new Category item - * - * @param name - * @param parent - * @return */ 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 - * - * @param name - * @return */ public static PasswordItem newCategory(String name, File file, File rootDir) { return new PasswordItem(name, null, TYPE_CATEGORY, file, rootDir); } /** Create a new password item - * - * @param name - * @param parent - * @return */ 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 - * - * @param name - * @return */ public static PasswordItem newPassword(String name, File file, File rootDir) { return new PasswordItem(name, null, TYPE_PASSWORD, file, rootDir); @@ -72,7 +55,7 @@ public class PasswordItem implements Comparable{ return this.type; } - public String getName(){ + private String getName(){ return this.name; } 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 d97e3294..b1ee7ed0 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.java @@ -19,7 +19,6 @@ import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Set; import static java.util.Collections.sort; @@ -168,7 +167,7 @@ public class PasswordRepository { Log.d("REPO", "current path: " + path.getPath()); ArrayList<File> files = new ArrayList<>(Arrays.asList(path.listFiles((FileFilter) FileFilterUtils.directoryFileFilter()))); - files.addAll(new ArrayList<>((List<File>) FileUtils.listFiles(path, new String[]{"gpg"}, false))); + files.addAll(new ArrayList<>(FileUtils.listFiles(path, new String[]{"gpg"}, false))); return new ArrayList<>(files); } diff --git a/app/src/main/res/drawable/autofill_ins_1.png b/app/src/main/res/drawable-nodpi/autofill_ins_1.png Binary files differindex 56052303..56052303 100644 --- a/app/src/main/res/drawable/autofill_ins_1.png +++ b/app/src/main/res/drawable-nodpi/autofill_ins_1.png diff --git a/app/src/main/res/drawable/autofill_ins_2.png b/app/src/main/res/drawable-nodpi/autofill_ins_2.png Binary files differindex 36767847..36767847 100644 --- a/app/src/main/res/drawable/autofill_ins_2.png +++ b/app/src/main/res/drawable-nodpi/autofill_ins_2.png diff --git a/app/src/main/res/drawable/autofill_ins_3.png b/app/src/main/res/drawable-nodpi/autofill_ins_3.png Binary files differindex 8e423209..8e423209 100644 --- a/app/src/main/res/drawable/autofill_ins_3.png +++ b/app/src/main/res/drawable-nodpi/autofill_ins_3.png diff --git a/app/src/main/res/drawable/rectangle.xml b/app/src/main/res/drawable/rectangle.xml deleted file mode 100644 index 27546153..00000000 --- a/app/src/main/res/drawable/rectangle.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item> - <shape android:shape="rectangle" - android:dither="true"> - <corners android:radius="2dp"/> - <solid android:color="@color/blue_grey_200" /> - - </shape> - </item> - - <item android:bottom="2dp" android:left="1dp" android:right="1dp"> - <shape android:shape="rectangle" android:dither="true"> - <corners android:radius="2dp" /> - <solid android:color="@android:color/white" /> - - <padding android:bottom="2dp" android:left="1dp"/> - </shape> - </item> -</layer-list>
\ No newline at end of file diff --git a/app/src/main/res/layout/activity_git_clone.xml b/app/src/main/res/layout/activity_git_clone.xml index 8001f94d..e24fbf99 100644 --- a/app/src/main/res/layout/activity_git_clone.xml +++ b/app/src/main/res/layout/activity_git_clone.xml @@ -11,7 +11,7 @@ <LinearLayout android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" android:orientation="vertical"> <TextView @@ -20,7 +20,7 @@ android:text="@string/server_name" android:textStyle="bold" style="@android:style/TextAppearance.Large" - android:gravity="left" + android:gravity="start" android:paddingBottom="6dp" android:textColor="@color/blue_grey_500" android:background="@drawable/bottom_line"/> @@ -71,6 +71,7 @@ android:hint="@string/server_user_hint" android:id="@+id/server_user" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_toEndOf="@+id/label_server_user" android:layout_toRightOf="@+id/label_server_user" android:layout_alignParentRight="true" @@ -99,11 +100,13 @@ android:hint="@string/server_url_hint" android:id="@+id/server_url" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_toEndOf="@+id/label_server_url" android:layout_toRightOf="@+id/label_server_url" android:layout_toLeftOf="@+id/label_server_port" android:layout_toStartOf="@+id/label_server_port" - android:inputType="textWebEmailAddress" /> + android:inputType="textWebEmailAddress" + tools:ignore="TextFields" /> <TextView android:id="@+id/label_server_port" @@ -122,6 +125,7 @@ android:hint="@string/server_port_hint" android:id="@+id/server_port" android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:inputType="number"/> </RelativeLayout> @@ -147,6 +151,7 @@ android:layout_height="wrap_content" android:hint="@string/server_path_hint" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:id="@+id/server_path" android:layout_toEndOf="@+id/label_server_path" android:layout_toRightOf="@+id/label_server_path" @@ -162,7 +167,7 @@ android:text="@string/server_resulting_url" android:textStyle="bold" style="@android:style/TextAppearance.Large" - android:gravity="left" + android:gravity="start" android:paddingBottom="6dp" android:textColor="@color/blue_grey_500" android:background="@drawable/bottom_line"/> @@ -172,7 +177,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/repository_uri" - android:inputType="textWebEmailAddress" /> + android:inputType="textWebEmailAddress" + tools:ignore="TextFields" /> <TextView android:layout_width="match_parent" diff --git a/app/src/main/res/layout/activity_git_config.xml b/app/src/main/res/layout/activity_git_config.xml index c03ddc05..87db8c9c 100644 --- a/app/src/main/res/layout/activity_git_config.xml +++ b/app/src/main/res/layout/activity_git_config.xml @@ -20,7 +20,7 @@ android:text="@string/git_config" android:textStyle="bold" style="@android:style/TextAppearance.Large" - android:gravity="left" + android:gravity="start" android:paddingBottom="6dp" android:textColor="@color/blue_grey_500" android:background="@drawable/bottom_line"/> @@ -47,6 +47,7 @@ android:hint="@string/git_user_name_hint" android:id="@+id/git_user_name" android:layout_marginLeft="8dp" + android:layout_marginStart="8dp" android:layout_toEndOf="@+id/label_git_user_name" android:layout_toRightOf="@+id/label_git_user_name" android:layout_alignParentRight="true" @@ -76,6 +77,7 @@ android:hint="@string/git_user_email_hint" android:id="@+id/git_user_email" android:layout_marginLeft="35dp" + android:layout_marginStart="35dp" android:layout_toEndOf="@+id/label_git_user_email" android:layout_toRightOf="@+id/label_git_user_email" android:layout_alignParentRight="true" diff --git a/app/src/main/res/layout/autofill_instructions.xml b/app/src/main/res/layout/autofill_instructions.xml index 0316dd91..333cd5fa 100644 --- a/app/src/main/res/layout/autofill_instructions.xml +++ b/app/src/main/res/layout/autofill_instructions.xml @@ -5,7 +5,7 @@ <LinearLayout android:layout_width="fill_parent" - android:layout_height="fill_parent" + android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="20dp" android:paddingLeft="24dp" @@ -26,7 +26,8 @@ android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:adjustViewBounds="true" - android:src="@drawable/autofill_ins_1" /> + android:src="@drawable/autofill_ins_1" + android:contentDescription="@string/autofill_ins_1_hint" /> <ImageView android:id="@+id/imageView2" @@ -34,7 +35,8 @@ android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:adjustViewBounds="true" - android:src="@drawable/autofill_ins_2" /> + android:src="@drawable/autofill_ins_2" + android:contentDescription="@string/autofill_ins_2_hint" /> <TextView android:id="@+id/textView3" @@ -49,7 +51,8 @@ android:layout_height="114dp" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" - android:src="@drawable/autofill_ins_3" /> + android:src="@drawable/autofill_ins_3" + android:contentDescription="@string/autofill_ins_3_hint" /> <TextView android:id="@+id/textView4" diff --git a/app/src/main/res/layout/autofill_recycler_view.xml b/app/src/main/res/layout/autofill_recycler_view.xml index 0b637440..6260be08 100644 --- a/app/src/main/res/layout/autofill_recycler_view.xml +++ b/app/src/main/res/layout/autofill_recycler_view.xml @@ -32,5 +32,6 @@ app:borderWidth="0dp" android:layout_margin="@dimen/fab_compat_margin" android:layout_alignParentBottom="true" - android:layout_alignParentRight="true"/> + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true"/> </RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/autofill_row_layout.xml b/app/src/main/res/layout/autofill_row_layout.xml index 117a76fc..e07a73d3 100644 --- a/app/src/main/res/layout/autofill_row_layout.xml +++ b/app/src/main/res/layout/autofill_row_layout.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="64dp" android:background="@drawable/autofill_row_background" @@ -17,14 +18,16 @@ <ImageView android:id="@+id/app_icon" android:layout_width="48dp" - android:layout_height="48dp" /> + android:layout_height="48dp" + android:contentDescription="@string/app_icon_hint"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:gravity="center_vertical" - android:orientation="vertical"> + android:orientation="vertical" + tools:ignore="RtlHardcoded"> <TextView android:id="@+id/app_name" @@ -41,5 +44,4 @@ </LinearLayout> - </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/decrypt_layout.xml b/app/src/main/res/layout/decrypt_layout.xml index f076dbad..5d9e66ab 100644 --- a/app/src/main/res/layout/decrypt_layout.xml +++ b/app/src/main/res/layout/decrypt_layout.xml @@ -24,6 +24,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" android:text="CATEGORY HERE" android:textColor="@color/grey_500" android:textIsSelectable="false" @@ -35,6 +36,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginStart="@dimen/activity_horizontal_margin" android:text="PASSWORD FILE NAME HERE" android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium" android:textColor="@color/accent" @@ -48,7 +50,8 @@ android:layout_height="wrap_content" android:src="@drawable/divider" android:layout_marginTop="16dp" - android:layout_marginBottom="16dp" /> + android:layout_marginBottom="16dp" + tools:ignore="ContentDescription" /> <LinearLayout android:id="@+id/crypto_container" @@ -127,7 +130,7 @@ android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@id/crypto_copy_username" - android:layout_toEndOf="@id/crypto_copy_username" + android:layout_toStartOf="@id/crypto_copy_username" android:text="@string/username" android:textColor="@android:color/black" android:textStyle="bold" /> @@ -140,7 +143,7 @@ android:layout_alignParentStart="true" android:layout_below="@id/crypto_username_show_label" android:layout_toLeftOf="@id/crypto_copy_username" - android:layout_toEndOf="@id/crypto_copy_username" + android:layout_toStartOf="@id/crypto_copy_username" android:textColor="@android:color/black" android:textIsSelectable="true" android:typeface="monospace" /> diff --git a/app/src/main/res/layout/encrypt_layout.xml b/app/src/main/res/layout/encrypt_layout.xml index ebb5e4dd..fffc9032 100644 --- a/app/src/main/res/layout/encrypt_layout.xml +++ b/app/src/main/res/layout/encrypt_layout.xml @@ -19,6 +19,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginStart="@dimen/activity_horizontal_margin" android:text="CATEGORY HERE" android:textColor="@color/grey_500" android:textIsSelectable="false" @@ -77,7 +78,7 @@ android:id="@+id/generate_password" android:text="@string/pwd_generate_button" android:onClick="handleClick" - android:layout_gravity="right" /> + android:layout_gravity="end" /> <TextView android:layout_width="wrap_content" diff --git a/app/src/main/res/layout/fragment_autofill.xml b/app/src/main/res/layout/fragment_autofill.xml index ef825c4b..652ea1db 100644 --- a/app/src/main/res/layout/fragment_autofill.xml +++ b/app/src/main/res/layout/fragment_autofill.xml @@ -67,7 +67,8 @@ android:layout_height="wrap_content" android:text="+" android:id="@+id/matchButton" - android:layout_gravity="center_horizontal"/> + android:layout_gravity="center_horizontal" + tools:ignore="HardcodedText" /> <RadioButton android:id="@+id/never" diff --git a/app/src/main/res/layout/fragment_pwgen.xml b/app/src/main/res/layout/fragment_pwgen.xml index 4c3812a7..b5293920 100644 --- a/app/src/main/res/layout/fragment_pwgen.xml +++ b/app/src/main/res/layout/fragment_pwgen.xml @@ -1,10 +1,9 @@ -<ScrollView - xmlns:android="http://schemas.android.com/apk/res/android" +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" @@ -25,9 +24,9 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" + android:baselineAligned="false" android:orientation="horizontal" - android:weightSum="2" - android:baselineAligned="false"> + android:weightSum="2"> <LinearLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/fragment_show_ssh_key.xml b/app/src/main/res/layout/fragment_show_ssh_key.xml index 36808f37..f9b3b469 100644 --- a/app/src/main/res/layout/fragment_show_ssh_key.xml +++ b/app/src/main/res/layout/fragment_show_ssh_key.xml @@ -3,9 +3,9 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + <LinearLayout android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="20dp" android:paddingLeft="24dp" diff --git a/app/src/main/res/layout/fragment_ssh_keygen.xml b/app/src/main/res/layout/fragment_ssh_keygen.xml index dc1168d4..5f09e401 100644 --- a/app/src/main/res/layout/fragment_ssh_keygen.xml +++ b/app/src/main/res/layout/fragment_ssh_keygen.xml @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" @@ -23,7 +24,7 @@ android:layout_height="wrap_content" android:spinnerMode="dropdown" /> - <android.support.design.widget.TextInputLayout xmlns:app="http://schemas.android.com/apk/res-auto" + <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" @@ -45,7 +46,7 @@ android:checked="false" android:text="@string/ssh_keygen_show_passphrase" /> - <android.support.design.widget.TextInputLayout xmlns:app="http://schemas.android.com/apk/res-auto" + <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" diff --git a/app/src/main/res/layout/fragment_to_clone_or_not.xml b/app/src/main/res/layout/fragment_to_clone_or_not.xml index 2b5b1619..170bd1aa 100644 --- a/app/src/main/res/layout/fragment_to_clone_or_not.xml +++ b/app/src/main/res/layout/fragment_to_clone_or_not.xml @@ -17,6 +17,7 @@ android:id="@+id/imageView" android:layout_gravity="center" android:src="@drawable/ic_launcher" + android:contentDescription="@string/app_icon_hint" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> @@ -44,7 +45,8 @@ android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginEnd="@dimen/activity_horizontal_margin" android:layout_marginTop="@dimen/activity_vertical_margin" - android:textAllCaps="true"/> + android:textAllCaps="true" + tools:ignore="RelativeOverlap" /> </RelativeLayout> <RelativeLayout @@ -77,7 +79,8 @@ android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" - android:textSize="11sp" /> + android:textSize="11sp" + tools:ignore="RelativeOverlap" /> </RelativeLayout> diff --git a/app/src/main/res/layout/password_recycler_view.xml b/app/src/main/res/layout/password_recycler_view.xml index bef664ba..9c56210f 100644 --- a/app/src/main/res/layout/password_recycler_view.xml +++ b/app/src/main/res/layout/password_recycler_view.xml @@ -26,5 +26,6 @@ app:borderWidth="0dp" android:layout_margin="@dimen/fab_compat_margin" android:layout_alignParentBottom="true" - android:layout_alignParentRight="true"/> + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true"/> </RelativeLayout> diff --git a/app/src/main/res/layout/password_row_layout.xml b/app/src/main/res/layout/password_row_layout.xml index 43df2ecf..285af1cf 100644 --- a/app/src/main/res/layout/password_row_layout.xml +++ b/app/src/main/res/layout/password_row_layout.xml @@ -12,18 +12,21 @@ android:paddingBottom="8dp" android:paddingLeft="16dp" android:paddingRight="16dp" - android:gravity="left"> + android:gravity="start"> <ImageView android:layout_width="40dp" android:layout_height="32dp" android:id="@+id/type_image" android:src="@drawable/ic_folder_grey600_24dp" + android:contentDescription="@string/folder_icon_hint" android:alpha="0.5" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" - android:paddingRight="8dp"/> + android:paddingRight="8dp" + android:paddingEnd="8dp" + tools:ignore="RtlSymmetry" /> <TextView android:id="@+id/type" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 843b7140..80b16cd9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -174,6 +174,9 @@ <string name="send_plaintext_password_to">Passwort senden als Nur-Text mit behilfe von…</string> <string name="show_password">Password wiedergeben</string> <string name="repository_uri">Repository URI</string> + <string name="app_icon_hint">App Icon</string> + <string name="folder_icon_hint">Verzeichnis Icon</string> + <!-- Autofill --> <string name="autofill_description">Füge das Passwort automatisch in Apps ein (Autofill). Funktioniert nur unter Android 4.3 und höher. Dies basiert nicht auf der Zwischenablage für Android 5.0 oder höher.</string> @@ -188,4 +191,7 @@ <string name="autofill_paste">Einfügen</string> <string name="autofill_paste_username">Benutzername einfügen?\n\n%s</string> <string name="autofill_toast_username">Wähle ein editierbares Feld um den Benutzernamen einzufügen.\nDer Benutzername ist für %d Sekunden verfügbar.</string> + <string name="autofill_ins_1_hint">Bildschirmfoto Accessibility Services</string> + <string name="autofill_ins_2_hint">Bildschirmfoto des Schalters in Accessibility Services</string> + <string name="autofill_ins_3_hint">Bildschirmfoto von Autofill in Aktion</string> </resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index edb2347c..8700a917 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -182,6 +182,8 @@ <string name="send_plaintext_password_to">Send password as plaintext using…</string> <string name="show_password">Show password</string> <string name="repository_uri">Repository URI</string> + <string name="app_icon_hint">App icon</string> + <string name="folder_icon_hint">Folder icon</string> <!-- Autofill --> <string name="autofill_description">Autofills password fields in apps. Only works for Android versions 4.3 and up. Does not rely on the clipboard for Android versions 5.0 and up.</string> @@ -196,4 +198,7 @@ <string name="autofill_paste">Paste</string> <string name="autofill_paste_username">Paste username?\n\n%s</string> <string name="autofill_toast_username">Select an editable field to past the username.\nUsername is available for %d seconds.</string> + <string name="autofill_ins_1_hint">Screenshot of accessibility services</string> + <string name="autofill_ins_2_hint">Screenshot of toggle in accessibility services</string> + <string name="autofill_ins_3_hint">Screenshot of autofill service in action</string> </resources> |