changes to implement material design/fix flaws and issues in the major activities. More testing pending.
This commit is contained in:
@@ -140,15 +140,13 @@ namespace keepass2android
|
||||
CreateDatabase(Intent.GetBooleanExtra("MakeCurrent",true));
|
||||
};
|
||||
|
||||
ImageButton btnTogglePassword = (ImageButton)FindViewById(Resource.Id.toggle_password);
|
||||
Button btnTogglePassword = (Button)FindViewById(Resource.Id.toggle_password);
|
||||
btnTogglePassword.Click += (sender, e) =>
|
||||
{
|
||||
_showPassword = !_showPassword;
|
||||
MakePasswordMaskedOrVisible();
|
||||
};
|
||||
Android.Graphics.PorterDuff.Mode mMode = Android.Graphics.PorterDuff.Mode.SrcAtop;
|
||||
Android.Graphics.Color color = new Android.Graphics.Color (224, 224, 224);
|
||||
btnTogglePassword.SetColorFilter (color, mMode);
|
||||
|
||||
|
||||
Util.SetNoPersonalizedLearning(FindViewById(Resource.Id.root));
|
||||
|
||||
|
@@ -1211,10 +1211,13 @@ namespace keepass2android
|
||||
if (PreferenceManager.GetDefaultSharedPreferences(this).GetBoolean(
|
||||
"ShowGroupInEntry", false))
|
||||
{
|
||||
groupName = Entry.ParentGroup.GetFullPath();
|
||||
groupName = Entry.ParentGroup?.GetFullPath();
|
||||
}
|
||||
PopulateText(viewId, containerViewId, groupName);
|
||||
_stringViews.Add (key, new StandardStringView (new List<int>{viewId}, containerViewId, this));
|
||||
|
||||
PopulateText(viewId, containerViewId, groupName);
|
||||
_stringViews.Add(key, new StandardStringView(new List<int> { viewId }, containerViewId, this));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void RequiresRefresh()
|
||||
|
@@ -52,6 +52,7 @@ using File = System.IO.File;
|
||||
using Object = Java.Lang.Object;
|
||||
using Uri = Android.Net.Uri;
|
||||
using Resource = keepass2android_appSdkStyle.Resource;
|
||||
using Google.Android.Material.TextField;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
@@ -260,16 +261,6 @@ namespace keepass2android
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
SupportActionBar.SetHomeButtonEnabled(true);
|
||||
|
||||
// Respect mask password setting
|
||||
MakePasswordVisibleOrHidden();
|
||||
|
||||
Button btnTogglePassword = (Button)FindViewById(Resource.Id.toggle_password);
|
||||
btnTogglePassword.Click += (sender, e) =>
|
||||
{
|
||||
State.ShowPassword = !State.ShowPassword;
|
||||
MakePasswordVisibleOrHidden();
|
||||
};
|
||||
|
||||
|
||||
Button addButton = (Button) FindViewById(Resource.Id.add_advanced);
|
||||
addButton.Visibility = ViewStates.Visible;
|
||||
@@ -437,24 +428,7 @@ namespace keepass2android
|
||||
;
|
||||
}
|
||||
|
||||
private void MakePasswordVisibleOrHidden()
|
||||
{
|
||||
EditText password = (EditText) FindViewById(Resource.Id.entry_password);
|
||||
TextView confpassword = (TextView) FindViewById(Resource.Id.entry_confpassword);
|
||||
int selStart = password.SelectionStart, selEnd = password.SelectionEnd;
|
||||
if (State.ShowPassword)
|
||||
{
|
||||
password.InputType = InputTypes.ClassText | InputTypes.TextVariationVisiblePassword;
|
||||
_passwordFont.ApplyTo(password);
|
||||
confpassword.Visibility = ViewStates.Gone;
|
||||
}
|
||||
else
|
||||
{
|
||||
password.InputType = InputTypes.ClassText | InputTypes.TextVariationPassword;
|
||||
confpassword.Visibility = ViewStates.Visible;
|
||||
}
|
||||
password.SetSelection(selStart, selEnd);
|
||||
}
|
||||
|
||||
|
||||
void SaveEntry()
|
||||
{
|
||||
@@ -1092,11 +1066,12 @@ namespace keepass2android
|
||||
RelativeLayout ees = (RelativeLayout)LayoutInflater.Inflate(Resource.Layout.entry_edit_section, null);
|
||||
ees.Tag = pair.Key;
|
||||
var keyView = ((TextView)ees.FindViewById(Resource.Id.extrakey));
|
||||
var titleView = ((TextView)ees.FindViewById(Resource.Id.title));
|
||||
|
||||
keyView.Text = pair.Key;
|
||||
titleView.Text = title;
|
||||
|
||||
((TextView)ees.FindViewById(Resource.Id.value)).Text = pair.Value.ReadString();
|
||||
((TextView)ees.FindViewById(Resource.Id.value)).TextChanged += (sender, e) => State.EntryModified = true;
|
||||
((TextInputLayout)ees.FindViewById(Resource.Id.value_container)).Hint = pair.Key;
|
||||
((TextView)ees.FindViewById(Resource.Id.value)).TextChanged += (sender, e) => State.EntryModified = true;
|
||||
_passwordFont.ApplyTo(((TextView)ees.FindViewById(Resource.Id.value)));
|
||||
((CheckBox)ees.FindViewById(Resource.Id.protection)).Checked = pair.Value.IsProtected;
|
||||
|
||||
@@ -1346,10 +1321,15 @@ namespace keepass2android
|
||||
builder.SetPositiveButton(Android.Resource.String.Ok, (o, args) =>
|
||||
{
|
||||
CopyFieldFromExtraDialog(sender, o, Resource.Id.title, Resource.Id.extrakey);
|
||||
CopyFieldFromExtraDialog(sender, o, Resource.Id.title, Resource.Id.title);
|
||||
CopyFieldFromExtraDialog(sender, o, Resource.Id.value, Resource.Id.value);
|
||||
|
||||
CopyCheckboxFromExtraDialog(sender, o, Resource.Id.protection);
|
||||
});
|
||||
var sourceFieldTitle = (EditText)((Dialog)o).FindViewById(Resource.Id.title);
|
||||
var sourceFieldValue = (EditText)((Dialog)o).FindViewById(Resource.Id.value);
|
||||
var targetField = ((TextView)((View)sender.Parent).FindViewById(Resource.Id.value));
|
||||
var targetFieldContainer = ((TextInputLayout)((View)sender.Parent).FindViewById(Resource.Id.value_container));
|
||||
targetField.Text = sourceFieldValue.Text;
|
||||
targetFieldContainer.Hint = sourceFieldTitle.Text;
|
||||
});
|
||||
Dialog dialog = builder.Create();
|
||||
|
||||
//setup delete button:
|
||||
@@ -1410,7 +1390,7 @@ namespace keepass2android
|
||||
|
||||
String password = State.Entry.Strings.ReadSafe(PwDefs.PasswordField);
|
||||
PopulateText(Resource.Id.entry_password, password);
|
||||
PopulateText(Resource.Id.entry_confpassword, password);
|
||||
|
||||
|
||||
_passwordFont.ApplyTo(FindViewById<EditText>(Resource.Id.entry_password));
|
||||
|
||||
@@ -1510,17 +1490,6 @@ namespace keepass2android
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!State.ShowPassword)
|
||||
{
|
||||
// Validate password
|
||||
String pass = Util.GetEditText(this, Resource.Id.entry_password);
|
||||
String conf = Util.GetEditText(this, Resource.Id.entry_confpassword);
|
||||
if (!pass.Equals(conf))
|
||||
{
|
||||
Toast.MakeText(this, Resource.String.error_pass_match, ToastLength.Long).Show();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Validate expiry date
|
||||
|
@@ -141,6 +141,7 @@ namespace keepass2android
|
||||
|
||||
SetContentView(Resource.Layout.generate_password);
|
||||
SetResult(KeePass.ExitNormal);
|
||||
|
||||
|
||||
var prefs = GetPreferences(FileCreationMode.Private);
|
||||
|
||||
@@ -195,6 +196,7 @@ namespace keepass2android
|
||||
_updateDisabled = true;
|
||||
PopulateFieldsFromOptions(_profiles.LastUsedSettings);
|
||||
_updateDisabled = false;
|
||||
|
||||
|
||||
var profileSpinner = UpdateProfileSpinner();
|
||||
|
||||
@@ -462,36 +464,51 @@ namespace keepass2android
|
||||
{
|
||||
if (_updateDisabled)
|
||||
return;
|
||||
String password = GeneratePassword();
|
||||
|
||||
EditText txtPassword = (EditText) FindViewById(Resource.Id.password_edit);
|
||||
txtPassword.Text = password;
|
||||
|
||||
var progressBar = FindViewById<ProgressBar>(Resource.Id.pb_password_strength);
|
||||
var passwordBits = QualityEstimation.EstimatePasswordBits(password.ToCharArray());
|
||||
progressBar.Progress = (int)passwordBits;
|
||||
progressBar.Max = 128;
|
||||
|
||||
Color color = new Color(196, 63, 49);
|
||||
if (passwordBits > 40)
|
||||
{
|
||||
color = new Color(219, 152, 55);
|
||||
}
|
||||
if (passwordBits > 64)
|
||||
{
|
||||
color = new Color(96, 138, 38);
|
||||
}
|
||||
if (passwordBits > 100)
|
||||
{
|
||||
color = new Color(31, 128, 31);
|
||||
}
|
||||
progressBar.ProgressDrawable.SetColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SrcIn));
|
||||
|
||||
FindViewById<TextView>(Resource.Id.tv_password_strength).Text = " " + passwordBits + " bits";
|
||||
|
||||
String password = "";
|
||||
uint passwordBits = 0;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
password = GeneratePassword();
|
||||
passwordBits = QualityEstimation.EstimatePasswordBits(password.ToCharArray());
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
EditText txtPassword = (EditText)FindViewById(Resource.Id.password_edit);
|
||||
txtPassword.Text = password;
|
||||
|
||||
UpdateProfileSpinnerSelection();
|
||||
var progressBar = FindViewById<ProgressBar>(Resource.Id.pb_password_strength);
|
||||
|
||||
progressBar.Progress = (int)passwordBits;
|
||||
progressBar.Max = 128;
|
||||
|
||||
Color color = new Color(196, 63, 49);
|
||||
if (passwordBits > 40)
|
||||
{
|
||||
color = new Color(219, 152, 55);
|
||||
}
|
||||
|
||||
if (passwordBits > 64)
|
||||
{
|
||||
color = new Color(96, 138, 38);
|
||||
}
|
||||
|
||||
if (passwordBits > 100)
|
||||
{
|
||||
color = new Color(31, 128, 31);
|
||||
}
|
||||
|
||||
progressBar.ProgressDrawable.SetColorFilter(new PorterDuffColorFilter(color,
|
||||
PorterDuff.Mode.SrcIn));
|
||||
|
||||
FindViewById<TextView>(Resource.Id.tv_password_strength).Text = " " + passwordBits + " bits";
|
||||
|
||||
|
||||
|
||||
UpdateProfileSpinnerSelection();
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void UpdateProfileSpinnerSelection()
|
||||
|
@@ -27,7 +27,7 @@ using KeePassLib.Utility;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
[Activity(Label = "@string/app_name")]
|
||||
[Activity(Label = "@string/app_name", Theme= "@style/Kp2aTheme_Dialog")]
|
||||
public class GroupEditActivity : LifecycleAwareActivity
|
||||
{
|
||||
public const String KeyParent = "parent";
|
||||
|
@@ -722,7 +722,7 @@ namespace keepass2android
|
||||
mDrawerTitle = Title;
|
||||
|
||||
|
||||
var btn = FindViewById<ImageButton>(Resource.Id.fingerprintbtn);
|
||||
var btn = FindViewById(Resource.Id.fingerprintbtn);
|
||||
btn.Click += (sender, args) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty((string)btn.Tag))
|
||||
|
@@ -0,0 +1,17 @@
|
||||
<vector
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:name="path"
|
||||
android:pathData="M 10.713 9.311 C 10.059 7.451 8.286 6.118 6.203 6.118 C 3.561 6.118 1.413 8.265 1.413 10.908 C 1.413 13.55 3.561 15.697 6.203 15.697 C 8.286 15.697 10.059 14.364 10.713 12.504 L 14.186 12.504 L 14.186 15.697 C 14.473 15.697 14.039 15.702 14.778 15.702 C 15.441 13.968 16.983 12.833 18.897 12.854 L 19.005 12.859 L 18.975 9.311 Z M 6.203 12.504 C 5.325 12.504 4.606 11.786 4.606 10.908 C 4.606 10.03 5.325 9.311 6.203 9.311 C 7.081 9.311 7.8 10.03 7.8 10.908 C 7.8 11.786 7.081 12.504 6.203 12.504 Z"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:strokeWidth="1"/>
|
||||
<path
|
||||
android:name="path_1"
|
||||
android:pathData="M 19.161 15.207 L 18.389 15.207 L 18.389 16.751 L 16.845 16.751 L 16.845 17.523 L 18.389 17.523 L 18.389 19.066 L 19.161 19.066 L 19.161 17.523 L 20.705 17.523 L 20.705 16.751 L 19.161 16.751 Z M 18.775 13.277 C 16.644 13.277 14.915 15.006 14.915 17.137 C 14.915 19.267 16.644 20.996 18.775 20.996 C 20.906 20.996 22.635 19.267 22.635 17.137 C 22.635 15.006 20.906 13.277 18.775 13.277 Z M 18.775 20.224 C 17.073 20.224 15.687 18.839 15.687 17.137 C 15.687 15.434 17.073 14.049 18.775 14.049 C 20.477 14.049 21.863 15.434 21.863 17.137 C 21.863 18.839 20.477 20.224 18.775 20.224 Z"
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:strokeWidth="1"/>
|
||||
</vector>
|
@@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Button xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/EditEntryButton"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_marginTop="-4dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableLeft="@drawable/baseline_add_circle_outline_24" />
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_add_circle_outline_24"
|
||||
/>
|
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Button xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
style="@style/EditEntryButton"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_marginTop="-4dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableLeft="@drawable/baseline_delete_24" />
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_delete_24" />
|
@@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:padding="12dp"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<EditText
|
||||
@@ -64,7 +66,9 @@
|
||||
android:id="@+id/totp_length" />
|
||||
|
||||
<Button
|
||||
android:drawableLeft="@drawable/baseline_camera_alt_24"
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_camera_alt_24"
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/totp_scan"
|
||||
|
@@ -87,18 +87,23 @@ android:layout_height="wrap_content">
|
||||
|
||||
<Button
|
||||
android:id="@+id/generate_button"
|
||||
style="?attr/materialIconButtonFilledStyle"
|
||||
app:icon="@drawable/add_key"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:text="@string/ellipsis" />
|
||||
<ImageButton
|
||||
android:id="@+id/toggle_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/baseline_visibility_24"
|
||||
android:layout_alignTop="@id/generate_button"
|
||||
android:layout_toLeftOf="@id/generate_button"
|
||||
/>
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/toggle_password"
|
||||
style="?attr/materialIconButtonFilledStyle"
|
||||
app:icon="@drawable/baseline_visibility_24"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@id/generate_button"
|
||||
android:layout_toLeftOf="@id/generate_button"
|
||||
/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/entry_password"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
|
@@ -1,9 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<AutoCompleteTextView
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
style="@style/Widget.MaterialComponents.AutoCompleteTextView.FilledBox"
|
||||
android:id="@+id/title"
|
||||
android:singleLine="true"
|
||||
android:inputType="text"
|
||||
@@ -12,23 +18,27 @@
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<EditText
|
||||
android:id="@+id/value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/title"
|
||||
android:inputType="textMultiLine"
|
||||
android:hint="@string/field_value"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<CheckBox
|
||||
android:id="@+id/protection"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/value"
|
||||
android:text="@string/protection"/>
|
||||
<Button
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_delete_24"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/protection"
|
||||
android:text="@string/delete_extra_string"
|
||||
android:id="@+id/delete_extra" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
@@ -48,11 +48,10 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/user_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_account_circle_24" />
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
style="@style/EntryEditSingleLine_TextInputLayout"
|
||||
app:startIconDrawable="@drawable/baseline_account_circle_24"
|
||||
>
|
||||
<EditText
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
android:id="@+id/entry_user_name"
|
||||
@@ -65,9 +64,6 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/password_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_password_24" />
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -77,6 +73,8 @@
|
||||
android:layout_height="wrap_content">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_weight="1"
|
||||
app:startIconDrawable="@drawable/baseline_password_24"
|
||||
app:endIconMode="password_toggle"
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
<EditText
|
||||
android:id="@+id/entry_password"
|
||||
@@ -89,51 +87,30 @@
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:paddingBottom="12dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical ="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
style="?attr/materialIconButtonStyle"
|
||||
android:id="@+id/toggle_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:layout_height="fill_parent"
|
||||
app:icon="@drawable/baseline_visibility_24"
|
||||
/>
|
||||
<ImageButton
|
||||
android:id="@+id/generate_button"
|
||||
android:layout_gravity="center_vertical"
|
||||
style="?attr/materialIconButtonFilledStyle"
|
||||
app:icon="@drawable/add_key"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:src="@drawable/baseline_add_circle_outline_24"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<EditText
|
||||
android:id="@+id/entry_confpassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="0dp"
|
||||
android:singleLine="true"
|
||||
android:inputType="textPassword"
|
||||
android:hint="confirm password"
|
||||
android:importantForAccessibility="no"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<!-- URL -->
|
||||
<LinearLayout
|
||||
android:id="@+id/url_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_link_24" />
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
app:startIconDrawable="@drawable/baseline_link_24"
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
<EditText
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
@@ -147,10 +124,8 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/comments_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_comment_24" />
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
app:startIconDrawable="@drawable/baseline_comment_24"
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
<EditText
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
@@ -177,11 +152,9 @@
|
||||
android:orientation="vertical" />
|
||||
<Button
|
||||
android:id="@+id/add_advanced"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textAllCaps="true"
|
||||
android:drawableLeft="@drawable/baseline_add_circle_outline_24"
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_add_24"
|
||||
|
||||
android:paddingLeft="8dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_weight="1"
|
||||
@@ -228,10 +201,9 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/tags_section"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_label_24" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
app:startIconDrawable="@drawable/baseline_label_24"
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
<EditText
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
@@ -245,10 +217,8 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/entry_override_url_container"
|
||||
style="@style/EntryEditSingleLine_container">
|
||||
<ImageView
|
||||
style="@style/EntryEditSingleLine_ImageView"
|
||||
android:src="@drawable/baseline_link_24" />
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
app:startIconDrawable="@drawable/baseline_link_24"
|
||||
style="@style/EntryEditSingleLine_TextInputLayout">
|
||||
<EditText
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
|
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:paddingTop="1dip"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<Button
|
||||
style="?attr/materialIconButtonStyle"
|
||||
app:icon="@drawable/baseline_edit_24"
|
||||
android:id="@+id/edit_extra"
|
||||
android:text="…"
|
||||
android:layout_width="40dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginRight="0dip"
|
||||
@@ -30,20 +32,18 @@
|
||||
android:layout_marginRight="0dip"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="0dip"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/value_container"
|
||||
style="?attr/textInputOutlinedDenseStyle"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<EditText
|
||||
android:id="@+id/value"
|
||||
android:hint="@string/field_value"
|
||||
android:inputType="textMultiLine"
|
||||
style="@style/EntryEditSingleLine_EditText"
|
||||
android:layout_marginRight="0dip" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/protection"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/entry_table"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -33,11 +34,13 @@
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
<Button
|
||||
style="?attr/materialIconButtonStyle"
|
||||
app:icon="@drawable/baseline_more_vert_24"
|
||||
android:id="@+id/group_name_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/baseline_more_vert_24"
|
||||
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true" />
|
||||
<TextView
|
||||
@@ -466,9 +469,11 @@
|
||||
style="@style/EntryItem" />
|
||||
|
||||
<Button android:id="@+id/btn_restore_history"
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_history_24"
|
||||
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableLeft="@drawable/baseline_history_24"
|
||||
android:text="@string/restore_history"
|
||||
|
||||
/>
|
||||
@@ -476,7 +481,9 @@
|
||||
<Button android:id="@+id/btn_remove_history"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableLeft="@drawable/baseline_delete_24"
|
||||
style="?attr/materialButtonOutlinedStyle"
|
||||
app:icon="@drawable/baseline_delete_24"
|
||||
|
||||
android:text="@string/remove_history"
|
||||
|
||||
/>
|
||||
|
@@ -206,36 +206,42 @@
|
||||
|
||||
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length6"
|
||||
android:text="6"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="50sp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length8"
|
||||
android:text="8"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="50sp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length12"
|
||||
android:text="12"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="50sp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length16"
|
||||
android:text="16"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="50sp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length24"
|
||||
android:text="24"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="50sp"
|
||||
/>
|
||||
<Button
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:id="@+id/btn_length32"
|
||||
android:text="32"
|
||||
android:layout_width="50sp"
|
||||
|
@@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="16dp"
|
||||
>
|
||||
<ImageButton
|
||||
android:id="@+id/icon_button"
|
||||
android:layout_width="64dp"
|
||||
@@ -24,6 +26,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/group_name"
|
||||
android:minWidth="100sp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@android:string/ok" />
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
@@ -31,6 +35,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/group_name"
|
||||
android:layout_toRightOf="@id/ok"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@android:string/cancel"
|
||||
android:minWidth="100sp" />
|
||||
</RelativeLayout>
|
@@ -1,5 +1,7 @@
|
||||
<resources>
|
||||
<color name="md_theme_primary">#ACE668</color>
|
||||
<color name="statusbar_color_green">#4B662C</color>
|
||||
|
||||
<color name="md_theme_primary">#ACE668</color>
|
||||
<color name="md_theme_onPrimary">#1E3700</color>
|
||||
<color name="md_theme_primaryContainer">#84BB43</color>
|
||||
<color name="md_theme_onPrimaryContainer">#132600</color>
|
||||
|
@@ -1,5 +1,7 @@
|
||||
<resources>
|
||||
<color name="md_theme_primary">#4B662C</color>
|
||||
<color name="statusbar_color_green">#4B662C</color>
|
||||
|
||||
<color name="md_theme_primary">#4B662C</color>
|
||||
<color name="md_theme_onPrimary">#FFFFFF</color>
|
||||
<color name="md_theme_primaryContainer">#CCEDA4</color>
|
||||
<color name="md_theme_onPrimaryContainer">#0F2000</color>
|
||||
|
@@ -91,9 +91,6 @@
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_SubElement">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
|
@@ -197,13 +197,69 @@
|
||||
<item name="colorSurfaceContainerHigh">@color/md_theme_surfaceContainerHigh</item>
|
||||
<item name="colorSurfaceContainerHighest">@color/md_theme_surfaceContainerHighest</item>
|
||||
</style>
|
||||
|
||||
<style name="Kp2aTheme_Dialog" parent="Theme.Material3.DayNight.Dialog">
|
||||
<item name="kp2aToolbarWithCloseButtonStyle">@style/Widget.Kp2a.Toolbar.WithCloseButton</item>
|
||||
<item name="colorSecondary">@color/md_theme_primary</item>
|
||||
<item name="colorOnSecondary">@color/md_theme_onPrimary</item>
|
||||
<item name="colorSecondaryContainer">@color/md_theme_primaryContainer</item>
|
||||
<item name="colorOnSecondaryContainer">@color/md_theme_onPrimaryContainer</item>
|
||||
<item name="colorPrimary">@color/md_theme_secondary</item>
|
||||
<item name="colorOnPrimary">@color/md_theme_onSecondary</item>
|
||||
<item name="colorPrimaryContainer">@color/md_theme_secondaryContainer</item>
|
||||
<item name="colorOnPrimaryContainer">@color/md_theme_onSecondaryContainer</item>
|
||||
<item name="colorTertiary">@color/md_theme_tertiary</item>
|
||||
<item name="colorOnTertiary">@color/md_theme_onTertiary</item>
|
||||
<item name="colorTertiaryContainer">@color/md_theme_tertiaryContainer</item>
|
||||
<item name="colorOnTertiaryContainer">@color/md_theme_onTertiaryContainer</item>
|
||||
<item name="colorError">@color/md_theme_error</item>
|
||||
<item name="colorOnError">@color/md_theme_onError</item>
|
||||
<item name="colorErrorContainer">@color/md_theme_errorContainer</item>
|
||||
<item name="colorOnErrorContainer">@color/md_theme_onErrorContainer</item>
|
||||
<item name="android:colorBackground">@color/md_theme_background</item>
|
||||
<item name="colorOnBackground">@color/md_theme_onBackground</item>
|
||||
<item name="colorSurface">@color/md_theme_surface</item>
|
||||
<item name="colorOnSurface">@color/md_theme_onSurface</item>
|
||||
<item name="colorSurfaceVariant">@color/md_theme_surfaceVariant</item>
|
||||
<item name="colorOnSurfaceVariant">@color/md_theme_onSurfaceVariant</item>
|
||||
<item name="colorOutline">@color/md_theme_outline</item>
|
||||
<item name="colorOutlineVariant">@color/md_theme_outlineVariant</item>
|
||||
<item name="colorSurfaceInverse">@color/md_theme_inverseSurface</item>
|
||||
<item name="colorOnSurfaceInverse">@color/md_theme_inverseOnSurface</item>
|
||||
<item name="colorPrimaryInverse">@color/md_theme_inversePrimary</item>
|
||||
<item name="colorSecondaryFixed">@color/md_theme_primaryFixed</item>
|
||||
<item name="colorOnSecondaryFixed">@color/md_theme_onPrimaryFixed</item>
|
||||
<item name="colorSecondaryFixedDim">@color/md_theme_primaryFixedDim</item>
|
||||
<item name="colorOnSecondaryFixedVariant">@color/md_theme_onPrimaryFixedVariant</item>
|
||||
<item name="colorPrimaryFixed">@color/md_theme_secondaryFixed</item>
|
||||
<item name="colorOnPrimaryFixed">@color/md_theme_onSecondaryFixed</item>
|
||||
<item name="colorPrimaryFixedDim">@color/md_theme_secondaryFixedDim</item>
|
||||
<item name="colorOnPrimaryFixedVariant">@color/md_theme_onSecondaryFixedVariant</item>
|
||||
<item name="colorTertiaryFixed">@color/md_theme_tertiaryFixed</item>
|
||||
<item name="colorOnTertiaryFixed">@color/md_theme_onTertiaryFixed</item>
|
||||
<item name="colorTertiaryFixedDim">@color/md_theme_tertiaryFixedDim</item>
|
||||
<item name="colorOnTertiaryFixedVariant">@color/md_theme_onTertiaryFixedVariant</item>
|
||||
<item name="colorSurfaceDim">@color/md_theme_surfaceDim</item>
|
||||
<item name="colorSurfaceBright">@color/md_theme_surfaceBright</item>
|
||||
<item name="colorSurfaceContainerLowest">@color/md_theme_surfaceContainerLowest</item>
|
||||
<item name="colorSurfaceContainerLow">@color/md_theme_surfaceContainerLow</item>
|
||||
<item name="colorSurfaceContainer">@color/md_theme_surfaceContainer</item>
|
||||
<item name="colorSurfaceContainerHigh">@color/md_theme_surfaceContainerHigh</item>
|
||||
<item name="colorSurfaceContainerHighest">@color/md_theme_surfaceContainerHighest</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="Kp2aTheme_ActionBar" parent="AppTheme.Primary"></style>
|
||||
<style name="Kp2aTheme_ActionBar" parent="AppTheme.Primary">
|
||||
<item name="android:statusBarColor">@color/statusbar_color_green</item></style>
|
||||
<style name="Kp2aTheme_BlueActionBar" parent="AppTheme.Secondary"></style>
|
||||
|
||||
<style name="Kp2aTheme_NoActionBar" parent="AppTheme.Primary.NoActionBar"></style>
|
||||
<style name="Kp2aTheme_BlueNoActionBar" parent="AppTheme.Secondary.NoActionBar"></style>
|
||||
<style name="Kp2aTheme_NoActionBar" parent="AppTheme.Primary.NoActionBar">
|
||||
<item name="android:statusBarColor">@color/statusbar_color_green</item>
|
||||
</style>
|
||||
<style name="Kp2aTheme_BlueNoActionBar" parent="AppTheme.Secondary.NoActionBar">
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
<style name="Widget.Kp2a.Toolbar" parent="Widget.Material3.Toolbar.OnSurface" />
|
||||
|
||||
|
@@ -107,7 +107,7 @@ namespace keepass2android
|
||||
public void ApplyDialogTheme()
|
||||
{
|
||||
|
||||
//TODO still needed? _activity.SetTheme(Resource.Style.Base_Dialog);
|
||||
_activity.SetTheme(Resource.Style.Kp2aTheme_Dialog);
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user