diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 3cff213df..d5309889a 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -1,6 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/app.iml b/app/app.iml
index 1f01e1168..5426740f7 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -116,14 +116,6 @@
-
-
-
-
-
-
-
-
@@ -132,6 +124,14 @@
+
+
+
+
+
+
+
+
@@ -159,7 +159,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 7e66b65bc..918e257f4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,29 +1,19 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion = 22
- buildToolsVersion = "25.0.0"
+ compileSdkVersion = 25
+ buildToolsVersion = "25.0.3"
defaultConfig {
applicationId = "com.android.keepass"
- minSdkVersion = 3
- targetSdkVersion = 12
+ minSdkVersion 3
+ targetSdkVersion 12
versionCode = 154
- versionName = "2.0.6.4"
+ versionName = "2.5.0.0"
testApplicationId = "com.keepassdroid.tests"
testInstrumentationRunner = "android.test.InstrumentationTestRunner"
-
- /*
- buildConfigFields.with {
- create() {
- type = "int"
- name = "VALUE"
- value = "1"
- }
- }
- */
}
externalNativeBuild {
@@ -44,13 +34,10 @@ android {
applicationId = "com.android.keepass"
}
}
-
-
}
dependencies {
androidTestCompile files('libs/junit4.jar')
-
compile 'com.madgag.spongycastle:core:1.54.0.0'
compile 'com.madgag.spongycastle:prov:1.54.0.0'
compile 'joda-time:joda-time:2.9.4'
diff --git a/app/src/main/java/com/keepassdroid/EntryActivity.java b/app/src/main/java/com/keepassdroid/EntryActivity.java
index c8ba6c318..5c021be90 100644
--- a/app/src/main/java/com/keepassdroid/EntryActivity.java
+++ b/app/src/main/java/com/keepassdroid/EntryActivity.java
@@ -20,12 +20,6 @@
*/
package com.keepassdroid;
-import java.text.DateFormat;
-import java.util.Date;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.UUID;
-
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
@@ -38,6 +32,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
@@ -45,6 +40,7 @@ import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.method.PasswordTransformationMethod;
import android.text.util.Linkify;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -67,6 +63,14 @@ import com.keepassdroid.utils.EmptyUtils;
import com.keepassdroid.utils.Types;
import com.keepassdroid.utils.Util;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+
public class EntryActivity extends LockCloseHideActivity {
public static final String KEY_ENTRY = "entry";
public static final String KEY_REFRESH_POS = "refresh_pos";
@@ -227,15 +231,32 @@ public class EntryActivity extends LockCloseHideActivity {
}
private Notification getNotification(String intentText, int descResId) {
- String desc = getString(descResId);
- Notification notify = new Notification(R.drawable.notify, desc, System.currentTimeMillis());
-
+ String description = getString(descResId);
+
Intent intent = new Intent(intentText);
PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
-
- notify.setLatestEventInfo(this, getString(R.string.app_name), desc, pending);
-
- return notify;
+
+ Notification notification;
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+ notification = new Notification(R.drawable.notify, description, System.currentTimeMillis());
+ try {
+ Method deprecatedMethod = notification.getClass().getMethod("setLatestEventInfo", Context.class, CharSequence.class, CharSequence.class, PendingIntent.class);
+ deprecatedMethod.invoke(notification, this, getString(R.string.app_name), description, pending);
+ } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException
+ | InvocationTargetException e) {
+ Log.w("EntryActivity", "Method not found", e);
+ }
+ } else {
+ // Use new API
+ Notification.Builder builder = new Notification.Builder(this)
+ .setContentIntent(pending)
+ .setSmallIcon(R.drawable.notify)
+ .setContentTitle(getString(R.string.app_name));
+ notification = builder.getNotification();
+ }
+
+ return notification;
}
private String getDateTime(Date dt) {
diff --git a/app/src/main/java/com/keepassdroid/EntryEditActivityV4.java b/app/src/main/java/com/keepassdroid/EntryEditActivityV4.java
index 03256f959..69bd39050 100644
--- a/app/src/main/java/com/keepassdroid/EntryEditActivityV4.java
+++ b/app/src/main/java/com/keepassdroid/EntryEditActivityV4.java
@@ -79,7 +79,7 @@ public class EntryEditActivityV4 extends EntryEditActivity {
scroll = (ScrollView) findViewById(R.id.entry_scroll);
- ImageButton add = (ImageButton) findViewById(R.id.add_advanced);
+ View add = findViewById(R.id.add_advanced);
add.setVisibility(View.VISIBLE);
add.setOnClickListener(new View.OnClickListener() {
@@ -102,14 +102,14 @@ public class EntryEditActivityV4 extends EntryEditActivity {
}
});
- ImageButton iconPicker = (ImageButton) findViewById(R.id.icon_button);
+ View iconPicker = findViewById(R.id.icon_button);
iconPicker.setVisibility(View.GONE);
- View divider = (View) findViewById(R.id.divider_title);
+ View divider = findViewById(R.id.divider_title);
RelativeLayout.LayoutParams lp_div = (RelativeLayout.LayoutParams) divider.getLayoutParams();
lp_div.addRule(RelativeLayout.BELOW, R.id.entry_title);
- View user_label = (View) findViewById(R.id.entry_user_name_label);
+ View user_label = findViewById(R.id.entry_user_name_label);
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) user_label.getLayoutParams();
lp.addRule(RelativeLayout.BELOW, R.id.divider_title);
}
diff --git a/app/src/main/java/com/keepassdroid/GroupActivity.java b/app/src/main/java/com/keepassdroid/GroupActivity.java
index fdf320ca6..531890263 100644
--- a/app/src/main/java/com/keepassdroid/GroupActivity.java
+++ b/app/src/main/java/com/keepassdroid/GroupActivity.java
@@ -140,7 +140,7 @@ public abstract class GroupActivity extends GroupBaseActivity {
setContentView(new GroupRootView(this));
} else if ( addEntryEnabled ) {
setContentView(new GroupAddEntryView(this));
- Button addGroup = (Button) findViewById(R.id.add_group);
+ View addGroup = findViewById(R.id.add_group);
addGroup.setVisibility(View.GONE);
} else {
setContentView(new GroupViewOnlyView(this));
@@ -149,7 +149,7 @@ public abstract class GroupActivity extends GroupBaseActivity {
if ( addGroupEnabled ) {
// Add Group button
- Button addGroup = (Button) findViewById(R.id.add_group);
+ View addGroup = findViewById(R.id.add_group);
addGroup.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
@@ -160,7 +160,7 @@ public abstract class GroupActivity extends GroupBaseActivity {
if ( addEntryEnabled ) {
// Add Entry button
- Button addEntry = (Button) findViewById(R.id.add_entry);
+ View addEntry = findViewById(R.id.add_entry);
addEntry.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
diff --git a/app/src/main/java/com/keepassdroid/GroupBaseActivity.java b/app/src/main/java/com/keepassdroid/GroupBaseActivity.java
index bf5d66af5..041cb6c06 100644
--- a/app/src/main/java/com/keepassdroid/GroupBaseActivity.java
+++ b/app/src/main/java/com/keepassdroid/GroupBaseActivity.java
@@ -55,7 +55,6 @@ public abstract class GroupBaseActivity extends LockCloseListActivity {
protected ListAdapter mAdapter;
public static final String KEY_ENTRY = "entry";
- public static final String KEY_MODE = "mode";
private SharedPreferences prefs;
diff --git a/app/src/main/java/com/keepassdroid/GroupEditActivity.java b/app/src/main/java/com/keepassdroid/GroupEditActivity.java
index 38c99e37c..9d7936e7d 100644
--- a/app/src/main/java/com/keepassdroid/GroupEditActivity.java
+++ b/app/src/main/java/com/keepassdroid/GroupEditActivity.java
@@ -30,6 +30,7 @@ import android.widget.Toast;
import com.android.keepass.R;
import com.keepassdroid.icons.Icons;
+import com.keepassdroid.utils.Util;
public class GroupEditActivity extends Activity
{
@@ -48,6 +49,8 @@ public class GroupEditActivity extends Activity
super.onCreate(savedInstanceState);
setContentView(R.layout.group_edit);
setTitle(R.string.add_group_title);
+
+ Util.colorStatusBar(this);
ImageButton iconButton = (ImageButton) findViewById(R.id.icon_button);
iconButton.setOnClickListener(new View.OnClickListener()
diff --git a/app/src/main/java/com/keepassdroid/LockingActivity.java b/app/src/main/java/com/keepassdroid/LockingActivity.java
index b614777c2..9cc929e31 100644
--- a/app/src/main/java/com/keepassdroid/LockingActivity.java
+++ b/app/src/main/java/com/keepassdroid/LockingActivity.java
@@ -22,6 +22,7 @@ package com.keepassdroid;
import android.app.Activity;
import com.keepassdroid.timeout.TimeoutHelper;
+import com.keepassdroid.utils.Util;
public abstract class LockingActivity extends Activity {
@@ -36,6 +37,8 @@ public abstract class LockingActivity extends Activity {
protected void onResume() {
super.onResume();
+ Util.colorStatusBar(this);
+
TimeoutHelper.resume(this);
}
}
diff --git a/app/src/main/java/com/keepassdroid/LockingPreferenceActivity.java b/app/src/main/java/com/keepassdroid/LockingPreferenceActivity.java
index 1d52d5292..f4ca1abf2 100644
--- a/app/src/main/java/com/keepassdroid/LockingPreferenceActivity.java
+++ b/app/src/main/java/com/keepassdroid/LockingPreferenceActivity.java
@@ -22,6 +22,7 @@ package com.keepassdroid;
import android.preference.PreferenceActivity;
import com.keepassdroid.timeout.TimeoutHelper;
+import com.keepassdroid.utils.Util;
public abstract class LockingPreferenceActivity extends PreferenceActivity {
@@ -36,6 +37,8 @@ public abstract class LockingPreferenceActivity extends PreferenceActivity {
protected void onResume() {
super.onResume();
+ Util.colorStatusBar(this);
+
TimeoutHelper.resume(this);
}
}
diff --git a/app/src/main/java/com/keepassdroid/PasswordActivity.java b/app/src/main/java/com/keepassdroid/PasswordActivity.java
index 8efe2bd94..95424a08a 100644
--- a/app/src/main/java/com/keepassdroid/PasswordActivity.java
+++ b/app/src/main/java/com/keepassdroid/PasswordActivity.java
@@ -19,17 +19,14 @@
*/
package com.keepassdroid;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ActivityNotFoundException;
-import android.content.ClipData;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
diff --git a/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java b/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
index 8cc2f2bd8..94dc9ab4b 100644
--- a/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
+++ b/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
@@ -90,6 +90,8 @@ public class FileSelectActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ Util.colorStatusBar(this);
fileHistory = App.getFileHistory();
diff --git a/app/src/main/java/com/keepassdroid/utils/Util.java b/app/src/main/java/com/keepassdroid/utils/Util.java
index 53d4b8c3a..9801cdf4f 100644
--- a/app/src/main/java/com/keepassdroid/utils/Util.java
+++ b/app/src/main/java/com/keepassdroid/utils/Util.java
@@ -22,7 +22,9 @@ package com.keepassdroid.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.ref.WeakReference;
+import com.android.keepass.R;
import com.keepassdroid.database.exception.SamsungClipboardException;
import android.app.Activity;
@@ -30,7 +32,10 @@ import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Build;
import android.text.ClipboardManager;
+import android.view.Window;
+import android.view.WindowManager;
import android.widget.TextView;
public class Util {
@@ -91,6 +96,13 @@ public class Util {
}
}
-
+ public static void colorStatusBar(Activity activity) {
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ Window window = activity.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ window.setStatusBarColor(activity.getResources().getColor(R.color.green_dark));
+ }
+ }
}
diff --git a/app/src/main/java/com/keepassdroid/view/GroupAddEntryView.java b/app/src/main/java/com/keepassdroid/view/GroupAddEntryView.java
index 15a83f127..d2b805756 100644
--- a/app/src/main/java/com/keepassdroid/view/GroupAddEntryView.java
+++ b/app/src/main/java/com/keepassdroid/view/GroupAddEntryView.java
@@ -22,12 +22,30 @@ package com.keepassdroid.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
+import android.view.View;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.AlphaAnimation;
+import android.view.animation.Animation;
+import android.view.animation.RotateAnimation;
import android.widget.RelativeLayout;
import com.android.keepass.R;
public class GroupAddEntryView extends RelativeLayout {
+ protected View addButton;
+
+ protected View addEntry;
+ protected boolean addEntryActivated;
+ protected View addGroup;
+ protected boolean addGroupActivated;
+
+
+ private boolean animInProgress;
+ private AddButtonAnimation viewButtonMenuAnimation;
+ private ViewMenuAnimation viewMenuAnimationAddEntry;
+ private ViewMenuAnimation viewMenuAnimationAddGroup;
+
public GroupAddEntryView(Context context) {
this(context, null);
}
@@ -38,11 +56,128 @@ public class GroupAddEntryView extends RelativeLayout {
inflate(context);
}
- private void inflate(Context context) {
+ protected void inflate(Context context) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.group_add_entry, this);
-
+
+ addEntryActivated = true;
+ addGroupActivated = true;
+
+ addButton = findViewById(R.id.add_button);
+ addEntry = findViewById(R.id.add_entry);
+ addGroup = findViewById(R.id.add_group);
+
+ viewButtonMenuAnimation = new AddButtonAnimation(addButton);
+ viewMenuAnimationAddEntry = new ViewMenuAnimation(addEntry);
+ viewMenuAnimationAddGroup = new ViewMenuAnimation(addGroup);
+
+ addButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if(!animInProgress) {
+ viewButtonMenuAnimation.startAnimation();
+ if (addEntryActivated) {
+ viewMenuAnimationAddEntry.startAnimation();
+ }
+ if (addGroupActivated) {
+ viewMenuAnimationAddGroup.startAnimation();
+ }
+ }
+ }
+ });
}
+ private class AddButtonAnimation implements Animation.AnimationListener {
+ private View view;
+
+ private boolean isRotate;
+
+ private Animation rightAnim;
+ private Animation leftAnim;
+
+ AddButtonAnimation(View view) {
+ this.view = view;
+
+ this.isRotate = false;
+
+ rightAnim = new RotateAnimation(0f, 135f,
+ Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+ rightAnim.setDuration(300);
+ rightAnim.setInterpolator(new AccelerateDecelerateInterpolator());
+ rightAnim.setFillAfter(true);
+ leftAnim = new RotateAnimation(135f, 0f,
+ Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+ leftAnim.setDuration(300);
+ leftAnim.setInterpolator(new AccelerateDecelerateInterpolator());
+ leftAnim.setFillAfter(true);
+
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ animInProgress = true;
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ animInProgress = false;
+ isRotate = !isRotate;
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {}
+
+ void startAnimation() {
+ Animation animation;
+ if(!isRotate)
+ animation = rightAnim;
+ else
+ animation = leftAnim;
+ animation.setAnimationListener(this);
+ view.startAnimation(animation);
+ }
+ }
+
+ private class ViewMenuAnimation implements Animation.AnimationListener {
+
+ private View view;
+
+ private Animation animViewShow;
+ private Animation animViewHide;
+
+ ViewMenuAnimation(View view) {
+ this.view = view;
+
+ animViewShow = new AlphaAnimation(0.0f, 1.0f);
+ animViewShow.setDuration(300);
+
+ animViewHide = new AlphaAnimation(1.0f, 0.0f);
+ animViewHide.setDuration(300);
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {}
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ if(view.getVisibility() == VISIBLE)
+ view.setVisibility(GONE);
+ else
+ view.setVisibility(VISIBLE);
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {}
+
+ void startAnimation() {
+ Animation animation;
+ if(view.getVisibility() == VISIBLE)
+ animation = animViewHide;
+ else
+ animation = animViewShow;
+ animation.setAnimationListener(this);
+ view.startAnimation(animation);
+ }
+ }
}
diff --git a/app/src/main/java/com/keepassdroid/view/GroupRootView.java b/app/src/main/java/com/keepassdroid/view/GroupRootView.java
index 2253bfcb1..d7fc170a3 100644
--- a/app/src/main/java/com/keepassdroid/view/GroupRootView.java
+++ b/app/src/main/java/com/keepassdroid/view/GroupRootView.java
@@ -21,32 +21,26 @@ package com.keepassdroid.view;
import android.content.Context;
import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.widget.Button;
-import android.widget.RelativeLayout;
+import android.view.View;
import com.android.keepass.R;
-public class GroupRootView extends RelativeLayout {
+public class GroupRootView extends GroupAddEntryView {
public GroupRootView(Context context) {
this(context, null);
}
-
+
public GroupRootView(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
inflate(context);
}
-
- private void inflate(Context context) {
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.group_add_entry, this);
-
- Button addEntry = (Button) findViewById(R.id.add_entry);
- addEntry.setVisibility(INVISIBLE);
-
+
+ @Override
+ protected void inflate(Context context) {
+ super.inflate(context);
+
+ addEntryActivated = false;
}
-
-
}
diff --git a/app/src/main/java/com/keepassdroid/view/GroupViewOnlyView.java b/app/src/main/java/com/keepassdroid/view/GroupViewOnlyView.java
index 1c8b33d61..67167d763 100644
--- a/app/src/main/java/com/keepassdroid/view/GroupViewOnlyView.java
+++ b/app/src/main/java/com/keepassdroid/view/GroupViewOnlyView.java
@@ -21,13 +21,8 @@ package com.keepassdroid.view;
import android.content.Context;
import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.RelativeLayout;
-import com.android.keepass.R;
-
-public class GroupViewOnlyView extends RelativeLayout {
+public class GroupViewOnlyView extends GroupAddEntryView {
public GroupViewOnlyView(Context context) {
this(context, null);
@@ -38,27 +33,13 @@ public class GroupViewOnlyView extends RelativeLayout {
inflate(context);
}
-
- private void inflate(Context context) {
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.group_add_entry, this);
+
+ @Override
+ protected void inflate(Context context) {
+ super.inflate(context);
// Hide the buttons
- View addGroup = findViewById(R.id.add_group);
- addGroup.setVisibility(INVISIBLE);
-
- View addEntry = findViewById(R.id.add_entry);
- addEntry.setVisibility(INVISIBLE);
-
- View divider2 = findViewById(R.id.divider2);
- divider2.setVisibility(INVISIBLE);
-
- View list = findViewById(R.id.group_list);
- LayoutParams lp = (RelativeLayout.LayoutParams) list.getLayoutParams();
- lp.addRule(ALIGN_PARENT_BOTTOM, TRUE);
-
-
+ addButton.setVisibility(GONE);
}
-
}
diff --git a/app/src/main/res/drawable-v21/button_background.xml b/app/src/main/res/drawable-v21/button_background.xml
new file mode 100644
index 000000000..09bb31e1c
--- /dev/null
+++ b/app/src/main/res/drawable-v21/button_background.xml
@@ -0,0 +1,30 @@
+
+
+ -
+
+
-
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/button_small_background.xml b/app/src/main/res/drawable-v21/button_small_background.xml
new file mode 100644
index 000000000..f2d331711
--- /dev/null
+++ b/app/src/main/res/drawable-v21/button_small_background.xml
@@ -0,0 +1,30 @@
+
+
+ -
+
+
-
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v21/fab_background.xml b/app/src/main/res/drawable-v21/fab_background.xml
new file mode 100644
index 000000000..6046e3ac3
--- /dev/null
+++ b/app/src/main/res/drawable-v21/fab_background.xml
@@ -0,0 +1,14 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_background.xml b/app/src/main/res/drawable/button_background.xml
index 09bb31e1c..a0a1f6eee 100644
--- a/app/src/main/res/drawable/button_background.xml
+++ b/app/src/main/res/drawable/button_background.xml
@@ -1,30 +1,23 @@
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
+
+ -
+
+
+
+
-
\ No newline at end of file
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_small_background.xml b/app/src/main/res/drawable/button_small_background.xml
new file mode 100644
index 000000000..022f1e2cc
--- /dev/null
+++ b/app/src/main/res/drawable/button_small_background.xml
@@ -0,0 +1,23 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/fab_background.xml b/app/src/main/res/drawable/fab_background.xml
new file mode 100644
index 000000000..7abc4b0bc
--- /dev/null
+++ b/app/src/main/res/drawable/fab_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add_white_24dp.xml b/app/src/main/res/drawable/ic_add_white_24dp.xml
new file mode 100644
index 000000000..b9b8eca8b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_white_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout-v11/entry_section.xml b/app/src/main/res/layout-v11/entry_section.xml
index dd73b2603..6e8caf1b1 100644
--- a/app/src/main/res/layout-v11/entry_section.xml
+++ b/app/src/main/res/layout-v11/entry_section.xml
@@ -24,7 +24,7 @@
.
-->
diff --git a/app/src/main/res/layout/browser_install.xml b/app/src/main/res/layout/browser_install.xml
index b3c8d6b4d..225e2b7b0 100644
--- a/app/src/main/res/layout/browser_install.xml
+++ b/app/src/main/res/layout/browser_install.xml
@@ -18,7 +18,7 @@
along with KeePassDroid. If not, see .
-->
diff --git a/app/src/main/res/layout/database_settings.xml b/app/src/main/res/layout/database_settings.xml
index a998f23c5..a8d471690 100644
--- a/app/src/main/res/layout/database_settings.xml
+++ b/app/src/main/res/layout/database_settings.xml
@@ -18,7 +18,7 @@
along with KeePassDroid. If not, see .
-->
.
-->
- .
-->
.
-->
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:stretchColumns="1">
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="5dp"
+ android:scaleType="fitXY"
+ android:src="@drawable/ic99_blank"/>
+ android:id="@+id/entry_text"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ style="@style/DefaultTextStyle"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/entry_section.xml b/app/src/main/res/layout/entry_section.xml
index 4daf58172..82ae022f9 100644
--- a/app/src/main/res/layout/entry_section.xml
+++ b/app/src/main/res/layout/entry_section.xml
@@ -24,7 +24,7 @@
.
-->
@@ -27,21 +27,21 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
- style="@style/WhiteOnBlack">
+ style="@style/DefaultTextStyle">
+ style="@style/DefaultTextStyle"/>
+ style="@style/DefaultTextStyle"/>
.
-->
.
-->
+ android:layout_margin="@dimen/default_margin"
+ android:id="@+id/parent"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ android:layout_alignParentTop="true"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:padding="2dp"
+ style="@style/DefaultTextStyle">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left|center_vertical"
+ android:layout_weight="1"
+ android:minHeight="32dp"
+ style="@style/DefaultTextStyle"/>
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="right|center_vertical"
+ android:scaleType="fitXY"
+ android:src="@drawable/ic99_blank"
+ style="@style/DefaultTextStyle"/>
+ android:text="@string/menu_edit"
+ android:layout_width="100sp"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentBottom="true"/>
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_above="@id/entry_edit"
+ android:scaleType="fitXY"
+ android:src="@android:drawable/divider_horizontal_dark"/>
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_above="@id/entry_divider2"
+ android:layout_below="@id/title_block"
+ android:fillViewport="true"
+ android:scrollbarStyle="insideOverlay"
+ android:padding="0sp">
+ android:layout_height="wrap_content"
+ android:layout_width="fill_parent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/file_row.xml b/app/src/main/res/layout/file_row.xml
index f48146979..c26ea78b6 100644
--- a/app/src/main/res/layout/file_row.xml
+++ b/app/src/main/res/layout/file_row.xml
@@ -18,7 +18,10 @@
along with KeePassDroid. If not, see .
-->
\ No newline at end of file
+ android:paddingTop="4dp"
+ android:paddingLeft="18dp"
+ android:paddingRight="18dp"
+ android:paddingBottom="4dp"
+ style="@style/DefaultTextStyle"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/file_selection.xml b/app/src/main/res/layout/file_selection.xml
index e4f8f0006..e6726f755 100644
--- a/app/src/main/res/layout/file_selection.xml
+++ b/app/src/main/res/layout/file_selection.xml
@@ -17,21 +17,23 @@
You should have received a copy of the GNU General Public License
along with KeePassDroid. If not, see .
-->
-
-
+
+
-
-
\ No newline at end of file
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/file_selection_filename.xml b/app/src/main/res/layout/file_selection_filename.xml
index d72d0a2fe..7821da1b4 100644
--- a/app/src/main/res/layout/file_selection_filename.xml
+++ b/app/src/main/res/layout/file_selection_filename.xml
@@ -18,7 +18,7 @@
along with KeePassDroid. If not, see .
-->
.
-->
.
-->
-
+
+
+
-
-
-
+ android:text="@string/add_group"
+ android:visibility="invisible"
+ android:background="@drawable/button_small_background"
+ tools:ignore="UnusedAttribute" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/group_edit.xml b/app/src/main/res/layout/group_edit.xml
index 81a60b3e7..fdb5f1971 100644
--- a/app/src/main/res/layout/group_edit.xml
+++ b/app/src/main/res/layout/group_edit.xml
@@ -18,7 +18,7 @@
along with KeePassDroid. If not, see .
-->
.
-->
.
-->
+ android:layout_margin="@dimen/list_margin"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/read_only"
+ android:visibility="gone"
+ style="@style/WarningTextStyle" />
+ style="@style/DefaultTextStyle">
+ style="@style/DefaultTextStyle" />
+ style="@style/DefaultTextStyle" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/group_list_entry.xml b/app/src/main/res/layout/group_list_entry.xml
index 9f80a9545..80dcffa48 100644
--- a/app/src/main/res/layout/group_list_entry.xml
+++ b/app/src/main/res/layout/group_list_entry.xml
@@ -18,29 +18,29 @@
along with KeePassDroid. If not, see .
-->
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:stretchColumns="1">
+ android:gravity="center_vertical"
+ android:layout_height="wrap_content">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="5dp"
+ android:scaleType="fitXY"
+ android:src="@drawable/ic99_blank"/>
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="2dp"
+ android:paddingBottom="2dp"
+ style="@style/DefaultTextStyle"/>
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/SecondaryText"
+ android:text="@string/group"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/password.xml b/app/src/main/res/layout/password.xml
index ac12272d5..db56cb2c5 100644
--- a/app/src/main/res/layout/password.xml
+++ b/app/src/main/res/layout/password.xml
@@ -18,7 +18,7 @@
along with KeePassDroid. If not, see .
-->
.
-->
- @color/green
-
-
-
-
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index 0ddf43a09..c2292893b 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -18,8 +18,9 @@
along with KeePassDroid. If not, see .
-->
-
-
-
-
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index ee2736644..fed809a0f 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -23,9 +23,7 @@
#43a047
#388e3c
#0000dd
- #ffffff
#303030
#555555
#000000
- #888888
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 8d9a4eccb..5222bb186 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -15,6 +15,8 @@
limitations under the License.
-->
- 12dp
+ 5dp
+ 12dp
5dp
+ 24dp
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index dd4ce9501..3a1a1f460 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -37,50 +37,34 @@
- @color/white
- @drawable/button_background
-
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
+
+
-
-
+