Fix more lint (#325)

* fix/ignore lint errors, run lint on travis

* fix/ignore some lint warnings
This commit is contained in:
Felix Bechstein 2017-08-02 11:15:31 +02:00 committed by Mohamed Zenadi
parent 37329a67f7
commit e169235d96
42 changed files with 152 additions and 163 deletions

View file

@ -1,18 +1,5 @@
language: android
jdk: oraclejdk8
android:
components:
- platform-tools
- tools
- build-tools-23.0.3
- build-tools-24.0.2
- build-tools-25.0.2
- build-tools-25.0.3
- android-23
- android-24
- android-25
- extra-google-m2repository
- extra-android-m2repository
licenses:
- 'android-sdk-preview-license-.+'
@ -26,7 +13,15 @@ cache:
# ok no tests for now
# - sys-img-x86-android-22
before_script:
install:
- echo y | android update sdk -u -a -t tools
- echo y | android update sdk -u -a -t platform-tools
- echo y | android update sdk -u -a -t build-tools-25.0.3
- echo y | android update sdk -u -a -t android-25
- echo y | android update sdk -u -a -t extra-google-m2repository
- echo y | android update sdk -u -a -t extra-android-m2repository
env:
- GRADLE_OPTS="-Xms40m -Xmx3g -XX:MaxPermSize=3g"
script: "./gradlew clean build test -Dpre-dex=false"
script: "./gradlew clean build test lintDebug -Dpre-dex=false"

View file

@ -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'

View file

@ -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() {

View file

@ -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{
}

View file

@ -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" />

View file

@ -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);
}

View file

@ -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)

View file

@ -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) {

View file

@ -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;

View file

@ -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!!");

View file

@ -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) {

View file

@ -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;

View file

@ -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

View file

@ -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) {

View file

@ -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;

View file

@ -1,6 +1,6 @@
package com.zeapo.pwdstore.pwgen;
public class pw_rand {
class pw_rand {
/**
* Generates a completely random password.

View file

@ -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 {

View file

@ -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());

View file

@ -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));
}
}

View file

@ -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;
}

View file

@ -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);
}

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -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>

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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>

View file

@ -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>

View file

@ -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" />

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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>

View file

@ -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>

View file

@ -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"

View file

@ -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>

View file

@ -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>

View file

@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files