Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbinsky08 <timo@binsky.org>2022-08-25 13:00:55 +0300
committerbinsky08 <timo@binsky.org>2022-08-25 13:03:16 +0300
commitae1230c58ed383a4763cbcf6c6c216db5a9a80e8 (patch)
tree34566932c469df6c01498eed3cd9abbdd276792b
parent8222d5f1380a56681364ba550312d1a9c931719e (diff)
improve custom field value style and password value inputimprove-custom-fields
Signed-off-by: binsky08 <timo@binsky.org>
-rw-r--r--app/src/main/java/es/wolfi/app/passman/EditPasswordTextItem.java9
-rw-r--r--app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java51
-rw-r--r--app/src/main/java/es/wolfi/app/passman/fragments/CredentialEditFragment.java2
-rw-r--r--app/src/main/res/layout/fragment_credential_custom_field_item.xml30
-rw-r--r--app/src/main/res/layout/fragment_credential_display.xml2
-rw-r--r--app/src/main/res/values/strings.xml1
6 files changed, 83 insertions, 12 deletions
diff --git a/app/src/main/java/es/wolfi/app/passman/EditPasswordTextItem.java b/app/src/main/java/es/wolfi/app/passman/EditPasswordTextItem.java
index 5365ea1..1fc7e39 100644
--- a/app/src/main/java/es/wolfi/app/passman/EditPasswordTextItem.java
+++ b/app/src/main/java/es/wolfi/app/passman/EditPasswordTextItem.java
@@ -26,6 +26,7 @@ import android.content.Context;
import android.graphics.Canvas;
import android.text.Editable;
import android.text.InputType;
+import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -85,6 +86,10 @@ public class EditPasswordTextItem extends LinearLayout {
super.onDraw(canvas);
}
+ public void addTextChangedListener(TextWatcher watcher) {
+ this.password.addTextChangedListener(watcher);
+ }
+
public void setText(String password) {
this.password.setText(password);
}
@@ -93,6 +98,10 @@ public class EditPasswordTextItem extends LinearLayout {
return this.password.getText();
}
+ public void setHint(String hint) {
+ this.password.setHint(hint);
+ }
+
public void setEnabled(boolean enabled) {
password.setEnabled(enabled);
}
diff --git a/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java b/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
index 0f949dc..c483895 100644
--- a/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
+++ b/app/src/main/java/es/wolfi/app/passman/adapters/CustomFieldEditAdapter.java
@@ -27,6 +27,7 @@ import android.os.Build;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -49,6 +50,7 @@ import java.util.Timer;
import java.util.TimerTask;
import es.wolfi.app.ResponseHandlers.CustomFieldFileDeleteResponseHandler;
+import es.wolfi.app.passman.EditPasswordTextItem;
import es.wolfi.app.passman.R;
import es.wolfi.passman.API.Credential;
import es.wolfi.passman.API.CustomField;
@@ -110,7 +112,18 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
e.printStackTrace();
}
} else {
- holder.mValueEdit.setText(customField.getValue());
+ if (holder.mItem.getFieldType().equals("password")) {
+ Log.d("customfield", "got password field");
+ holder.mValueEdit.setVisibility(View.GONE);
+ holder.mValuePasswordEdit.setVisibility(View.VISIBLE);
+ holder.mValuePasswordEdit.setText(customField.getValue());
+ holder.mValueEdit.setEnabled(false);
+ } else {
+ Log.d("customfield", "got default field");
+ holder.mValueEdit.setText(customField.getValue());
+ holder.mValuePasswordEdit.setEnabled(false);
+ holder.mValuePasswordEdit.setVisibility(View.GONE);
+ }
}
holder.mLabelEdit.addTextChangedListener(new TextWatcher() {
@@ -179,6 +192,39 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
}
});
+ holder.mValuePasswordEdit.addTextChangedListener(new TextWatcher() {
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count,
+ int after) {
+ }
+
+ private Timer timer = new Timer();
+ private final long DELAY = 100; // milliseconds
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ timer.cancel();
+ timer = new Timer();
+ timer.schedule(
+ new TimerTask() {
+ @Override
+ public void run() {
+ // you will probably need to use runOnUiThread(Runnable action) for some specific actions (e.g. manipulating views)
+ int itemIndex = mValues.indexOf(holder.mItem);
+ holder.mItem.setValue(s.toString());
+ mValues.set(itemIndex, holder.mItem);
+ }
+ },
+ DELAY
+ );
+ }
+ });
+
CustomFieldEditAdapter self = this;
holder.deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
@@ -214,6 +260,7 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
public final TextView mLabelView;
public final EditText mLabelEdit;
public final EditText mValueEdit;
+ public final EditPasswordTextItem mValuePasswordEdit;
public final AppCompatImageButton deleteButton;
public final LinearLayout displayCustomFieldLayout;
public final LinearLayout editCustomFieldLayout;
@@ -226,6 +273,7 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
mLabelView = (TextView) view.findViewById(R.id.customFieldLabel);
mLabelEdit = (EditText) view.findViewById(R.id.customFieldEditLabel);
mValueEdit = (EditText) view.findViewById(R.id.customFieldEditValue);
+ mValuePasswordEdit = (EditPasswordTextItem) view.findViewById(R.id.customFieldEditValuePassword);
deleteButton = (AppCompatImageButton) view.findViewById(R.id.deleteCustomFieldButton);
displayCustomFieldLayout = (LinearLayout) view.findViewById(R.id.displayCustomFieldLayout);
editCustomFieldLayout = (LinearLayout) view.findViewById(R.id.editCustomFieldLayout);
@@ -236,6 +284,7 @@ public class CustomFieldEditAdapter extends RecyclerView.Adapter<CustomFieldEdit
mValueEdit.setVisibility(View.VISIBLE);
mLabelView.setVisibility(View.INVISIBLE);
mLabelEdit.setVisibility(View.VISIBLE);
+ mValuePasswordEdit.setHint(mView.getContext().getString(R.string.password));
WindowManager vm = (WindowManager) mView.getContext().getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
diff --git a/app/src/main/java/es/wolfi/app/passman/fragments/CredentialEditFragment.java b/app/src/main/java/es/wolfi/app/passman/fragments/CredentialEditFragment.java
index 158200b..5457dae 100644
--- a/app/src/main/java/es/wolfi/app/passman/fragments/CredentialEditFragment.java
+++ b/app/src/main/java/es/wolfi/app/passman/fragments/CredentialEditFragment.java
@@ -228,7 +228,7 @@ public class CredentialEditFragment extends Fragment implements View.OnClickList
((PasswordListActivity) requireActivity()).selectFileToAdd(FileUtils.activityRequestFileCode.credentialEditCustomFieldFile.ordinal());
} else {
CustomField cf = new CustomField();
- cf.setLabel("newLabel" + (cfed.getItemCount() + 1));
+ //cf.setLabel("newLabel" + (cfed.getItemCount() + 1));
cf.setSecret(customFieldType.getSelectedItem().toString().toLowerCase().equals("password"));
cf.setFieldType(customFieldType.getSelectedItem().toString().toLowerCase());
cf.setValue("");
diff --git a/app/src/main/res/layout/fragment_credential_custom_field_item.xml b/app/src/main/res/layout/fragment_credential_custom_field_item.xml
index 746ac21..7b001f0 100644
--- a/app/src/main/res/layout/fragment_credential_custom_field_item.xml
+++ b/app/src/main/res/layout/fragment_credential_custom_field_item.xml
@@ -21,17 +21,16 @@
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/customFieldsRelativeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
+ android:layout_marginStart="10dp"
android:layout_marginTop="11dp"
- android:layout_marginStart="10dp">
+ android:orientation="horizontal">
<TextView
- style="@style/Label"
android:id="@+id/customFieldLabel"
+ style="@style/Label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
@@ -39,22 +38,22 @@
android:text="@string/label" />
<EditText
- style="@style/Label"
android:id="@+id/customFieldEditLabel"
+ style="@style/Label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:layout_marginBottom="@dimen/text_margin"
- android:text="@string/label"
+ android:hint="@string/label"
android:visibility="invisible" />
- <LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
+ <LinearLayout
android:id="@+id/displayCustomFieldLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
android:layout_marginTop="11dp"
+ android:orientation="horizontal"
android:visibility="visible">
<TextView
@@ -86,19 +85,32 @@
<EditText
android:id="@+id/customFieldEditValue"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginBottom="@dimen/text_margin"
+ android:layout_marginEnd="30dp"
+ android:hint="@string/value"
android:textAppearance="?attr/textAppearanceListItem"
android:visibility="invisible" />
+ <es.wolfi.app.passman.EditPasswordTextItem
+ android:id="@+id/customFieldEditValuePassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
+ android:layout_marginBottom="@dimen/text_margin"
+ android:layout_marginEnd="45dp"
+ android:paddingRight="-10dp"
+ android:visibility="invisible" />
+
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/deleteCustomFieldButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginTop="0dp"
+ android:layout_marginStart="-27dp"
android:backgroundTint="@color/transparent"
android:src="@drawable/ic_baseline_delete_24"
android:tint="@color/danger" />
diff --git a/app/src/main/res/layout/fragment_credential_display.xml b/app/src/main/res/layout/fragment_credential_display.xml
index cbfac73..3307da3 100644
--- a/app/src/main/res/layout/fragment_credential_display.xml
+++ b/app/src/main/res/layout/fragment_credential_display.xml
@@ -32,7 +32,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingBottom="@dimen/floating_button_parent_padding"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bc0d6ed..cdfe103 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -87,4 +87,5 @@
<string name="nextcloud_single_sign_on">Nextcloud Single Sign On</string>
<string name="manual_login">Manual Login</string>
<string name="confirm_account_logout">Are you sure you want to log out?</string>
+ <string name="value">Value</string>
</resources>