Hide custom entries protected #65

This commit is contained in:
J-Jamet
2018-03-30 15:18:58 +02:00
parent 5c1e9bd94f
commit f7fe414597
8 changed files with 81 additions and 30 deletions

View File

@@ -251,7 +251,7 @@ public class EntryActivity extends LockingHideActivity {
mEntry.getFields().doActionToAllCustomProtectedField((label, value) ->
entryContentsView.addExtraField(label, value.toString(), view ->
entryContentsView.addExtraField(label, value, view ->
clipboardHelper.timeoutCopyToClipboard(
value.toString(),
getString(R.string.copy_field, label)

View File

@@ -57,7 +57,7 @@ import com.keepassdroid.tasks.ProgressTask;
import com.keepassdroid.utils.MenuUtil;
import com.keepassdroid.utils.Types;
import com.keepassdroid.utils.Util;
import com.keepassdroid.view.EntryEditNewField;
import com.keepassdroid.view.EntryEditCustomField;
import com.kunzisoft.keepass.R;
import java.util.UUID;
@@ -201,7 +201,7 @@ public class EntryEditActivity extends LockingHideActivity
View add = findViewById(R.id.add_new_field);
add.setVisibility(View.VISIBLE);
add.setOnClickListener(v -> {
EntryEditNewField ees = new EntryEditNewField(EntryEditActivity.this);
EntryEditCustomField ees = new EntryEditCustomField(EntryEditActivity.this);
ees.setData("", new ProtectedString(false, ""));
entryExtraFieldsContainer.addView(ees);
@@ -230,8 +230,8 @@ public class EntryEditActivity extends LockingHideActivity
// Validate extra fields
if (mEntry.allowExtraFields()) {
for (int i = 0; i < entryExtraFieldsContainer.getChildCount(); i++) {
EntryEditNewField entryEditNewField = (EntryEditNewField) entryExtraFieldsContainer.getChildAt(i);
String key = entryEditNewField.getLabel();
EntryEditCustomField entryEditCustomField = (EntryEditCustomField) entryExtraFieldsContainer.getChildAt(i);
String key = entryEditCustomField.getLabel();
if (key == null || key.length() == 0) {
Toast.makeText(this, R.string.error_string_key, Toast.LENGTH_LONG).show();
return false;
@@ -277,7 +277,7 @@ public class EntryEditActivity extends LockingHideActivity
newEntry.removeAllCustomFields();
// Add extra fields from views
for (int i = 0; i < entryExtraFieldsContainer.getChildCount(); i++) {
EntryEditNewField view = (EntryEditNewField) entryExtraFieldsContainer.getChildAt(i);
EntryEditCustomField view = (EntryEditCustomField) entryExtraFieldsContainer.getChildAt(i);
String key = view.getLabel();
String value = view.getValue();
boolean protect = view.isProtected();
@@ -339,10 +339,10 @@ public class EntryEditActivity extends LockingHideActivity
if (mEntry.allowExtraFields()) {
LinearLayout container = findViewById(R.id.advanced_container);
mEntry.getFields().doActionToAllCustomProtectedField((key, value) -> {
EntryEditNewField entryEditNewField = new EntryEditNewField(EntryEditActivity.this);
entryEditNewField.setData(key, value);
entryEditNewField.setFontVisibility(visibilityFontActivated);
container.addView(entryEditNewField);
EntryEditCustomField entryEditCustomField = new EntryEditCustomField(EntryEditActivity.this);
entryEditCustomField.setData(key, value);
entryEditCustomField.setFontVisibility(visibilityFontActivated);
container.addView(entryEditCustomField);
});
}
}

View File

@@ -136,7 +136,6 @@ public abstract class ListNodesActivity extends LockingActivity
protected void assignListToNodeAdapter(RecyclerView recyclerView) {
recyclerView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
// TODO mList.setTextFilterEnabled(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(mAdapter);
}

View File

@@ -64,7 +64,6 @@ public class ExtraFields implements Serializable, Cloneable {
String key = pair.getKey();
if (isNotStandardField(key)) {
protectedFields.put(key, pair.getValue());
// TODO Add hidden style for protection field
}
}
}

View File

@@ -29,6 +29,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.keepassdroid.database.security.ProtectedString;
import com.keepassdroid.utils.Util;
import com.kunzisoft.keepass.R;
@@ -151,6 +152,12 @@ public class EntryContentsView extends LinearLayout {
} else {
passwordView.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
// Hidden style for custom fields
for (int i = 0; i < extrasView.getChildCount(); i++) {
View childCustomView = extrasView.getChildAt(i);
if (childCustomView instanceof EntryCustomFieldProtected)
((EntryCustomFieldProtected) childCustomView).setHiddenPasswordStyle(hiddenStyle);
}
}
public void assignURL(String url) {
@@ -173,10 +180,14 @@ public class EntryContentsView extends LinearLayout {
}
}
public void addExtraField(String title, String value, OnClickListener onActionClickListener) {
EntryNewField entryNewField = new EntryNewField(getContext(), null, title, value, onActionClickListener);
entryNewField.applyFontVisibility(fontInVisibility);
extrasView.addView(entryNewField);
public void addExtraField(String title, ProtectedString value, OnClickListener onActionClickListener) {
EntryCustomField entryCustomField;
if (value.isProtected())
entryCustomField = new EntryCustomFieldProtected(getContext(), null, title, value, onActionClickListener);
else
entryCustomField = new EntryCustomField(getContext(), null, title, value, onActionClickListener);
entryCustomField.applyFontVisibility(fontInVisibility);
extrasView.addView(entryCustomField);
}
public void clearExtraFields() {

View File

@@ -26,28 +26,29 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.keepassdroid.database.security.ProtectedString;
import com.keepassdroid.utils.Util;
import com.kunzisoft.keepass.R;
public class EntryNewField extends LinearLayout {
public class EntryCustomField extends LinearLayout {
private TextView labelView;
private TextView valueView;
private ImageView actionImageView;
protected TextView labelView;
protected TextView valueView;
protected ImageView actionImageView;
public EntryNewField(Context context) {
public EntryCustomField(Context context) {
this(context, null);
}
public EntryNewField(Context context, AttributeSet attrs) {
public EntryCustomField(Context context, AttributeSet attrs) {
this(context, attrs, null, null);
}
public EntryNewField(Context context, AttributeSet attrs, String title, String value) {
public EntryCustomField(Context context, AttributeSet attrs, String title, ProtectedString value) {
this(context, attrs, title, value, null);
}
public EntryNewField(Context context, AttributeSet attrs, String label, String value, OnClickListener onClickActionListener) {
public EntryCustomField(Context context, AttributeSet attrs, String label, ProtectedString value, OnClickListener onClickActionListener) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -74,9 +75,9 @@ public class EntryNewField extends LinearLayout {
}
}
public void setValue(String value) {
public void setValue(ProtectedString value) {
if (value != null) {
valueView.setText(value);
valueView.setText(value.toString());
}
}

View File

@@ -0,0 +1,41 @@
package com.keepassdroid.view;
import android.content.Context;
import android.text.method.PasswordTransformationMethod;
import android.util.AttributeSet;
import com.keepassdroid.database.security.ProtectedString;
public class EntryCustomFieldProtected extends EntryCustomField{
public EntryCustomFieldProtected(Context context) {
super(context);
}
public EntryCustomFieldProtected(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EntryCustomFieldProtected(Context context, AttributeSet attrs, String title, ProtectedString value) {
super(context, attrs, title, value);
}
public EntryCustomFieldProtected(Context context, AttributeSet attrs, String label, ProtectedString value, OnClickListener onClickActionListener) {
super(context, attrs, label, value, onClickActionListener);
}
public void setValue(ProtectedString value) {
if (value != null) {
valueView.setText(value.toString());
setHiddenPasswordStyle(value.isProtected());
}
}
public void setHiddenPasswordStyle(boolean hiddenStyle) {
if ( !hiddenStyle ) {
valueView.setTransformationMethod(null);
} else {
valueView.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
}

View File

@@ -34,21 +34,21 @@ import com.keepassdroid.database.security.ProtectedString;
import com.keepassdroid.utils.Util;
import com.kunzisoft.keepass.R;
public class EntryEditNewField extends RelativeLayout {
public class EntryEditCustomField extends RelativeLayout {
private TextView labelView;
private EditText valueView;
private CompoundButton protectionCheckView;
public EntryEditNewField(Context context) {
public EntryEditCustomField(Context context) {
this(context, null);
}
public EntryEditNewField(Context context, AttributeSet attrs) {
public EntryEditCustomField(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public EntryEditNewField(Context context, AttributeSet attrs, int defStyle) {
public EntryEditCustomField(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);