use KeyInfoFormatter in more places

This commit is contained in:
Dominik Schürmann
2018-07-03 20:35:42 +02:00
committed by Vincent Breitmoser
parent fada189579
commit 4692f2a39c
5 changed files with 35 additions and 108 deletions

View File

@@ -60,6 +60,7 @@ import org.sufficientlysecure.keychain.daos.KeyRepository;
import org.sufficientlysecure.keychain.remote.ui.RemoteSecurityTokenOperationActivity; import org.sufficientlysecure.keychain.remote.ui.RemoteSecurityTokenOperationActivity;
import org.sufficientlysecure.keychain.remote.ui.dialog.RemoteSelectAuthenticationKeyPresenter.RemoteSelectAuthenticationKeyView; import org.sufficientlysecure.keychain.remote.ui.dialog.RemoteSelectAuthenticationKeyPresenter.RemoteSelectAuthenticationKeyView;
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder; import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
import org.sufficientlysecure.keychain.ui.util.KeyInfoFormatter;
import org.sufficientlysecure.keychain.ui.util.ThemeChanger; import org.sufficientlysecure.keychain.ui.util.ThemeChanger;
import org.sufficientlysecure.keychain.ui.util.recyclerview.DividerItemDecoration; import org.sufficientlysecure.keychain.ui.util.recyclerview.DividerItemDecoration;
import org.sufficientlysecure.keychain.ui.util.recyclerview.RecyclerItemClickListener; import org.sufficientlysecure.keychain.ui.util.recyclerview.RecyclerItemClickListener;
@@ -338,11 +339,8 @@ public class RemoteSelectAuthenticationKeyActivity extends FragmentActivity {
void bind(UnifiedKeyInfo keyInfo, Drawable selectionIcon) { void bind(UnifiedKeyInfo keyInfo, Drawable selectionIcon) {
vName.setText(keyInfo.name()); vName.setText(keyInfo.name());
Context context = vCreation.getContext(); KeyInfoFormatter keyInfoFormatter = new KeyInfoFormatter(itemView.getContext(), keyInfo, null);
String dateTime = DateUtils.formatDateTime(context, keyInfo.creation() * 1000, keyInfoFormatter.formatCreationDate(vCreation);
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME |
DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_ABBREV_MONTH);
vCreation.setText(context.getString(R.string.label_key_created, dateTime));
vIcon.setImageDrawable(selectionIcon); vIcon.setImageDrawable(selectionIcon);
} }

View File

@@ -71,6 +71,7 @@ import org.sufficientlysecure.keychain.ui.MainActivity;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.AbstractCallback; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.AbstractCallback;
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder; import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
import org.sufficientlysecure.keychain.ui.util.KeyInfoFormatter;
import org.sufficientlysecure.keychain.ui.util.ThemeChanger; import org.sufficientlysecure.keychain.ui.util.ThemeChanger;
import org.sufficientlysecure.keychain.ui.util.recyclerview.DividerItemDecoration; import org.sufficientlysecure.keychain.ui.util.recyclerview.DividerItemDecoration;
import org.sufficientlysecure.keychain.ui.util.recyclerview.RecyclerItemClickListener; import org.sufficientlysecure.keychain.ui.util.recyclerview.RecyclerItemClickListener;
@@ -523,10 +524,8 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
vName.setText(context.getString(R.string.use_key_no_name)); vName.setText(context.getString(R.string.use_key_no_name));
} }
String dateTime = DateUtils.formatDateTime(context, keyInfo.creation() * 1000, KeyInfoFormatter keyInfoFormatter = new KeyInfoFormatter(itemView.getContext(), keyInfo, null);
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME | keyInfoFormatter.formatCreationDate(vCreation);
DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_ABBREV_MONTH);
vCreation.setText(context.getString(R.string.label_key_created, dateTime));
vIcon.setImageDrawable(selectionIcon); vIcon.setImageDrawable(selectionIcon);
} }

View File

@@ -1,30 +1,30 @@
package org.sufficientlysecure.keychain.ui.adapter; package org.sufficientlysecure.keychain.ui.adapter;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.ui.adapter.KeyChoiceAdapter.KeyChoiceItem;
import org.sufficientlysecure.keychain.ui.util.KeyInfoFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.RecyclerView;
import android.text.format.DateUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
import eu.davidea.flexibleadapter.items.IFlexible; import eu.davidea.flexibleadapter.items.IFlexible;
import eu.davidea.viewholders.FlexibleViewHolder; import eu.davidea.viewholders.FlexibleViewHolder;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.ui.adapter.KeyChoiceAdapter.KeyChoiceItem;
public class KeyChoiceAdapter extends FlexibleAdapter<KeyChoiceItem> { public class KeyChoiceAdapter extends FlexibleAdapter<KeyChoiceItem> {
@@ -228,16 +228,8 @@ public class KeyChoiceAdapter extends FlexibleAdapter<KeyChoiceItem> {
void bind(UnifiedKeyInfo keyInfo, int choiceMode, boolean isActive, boolean isEnabled) { void bind(UnifiedKeyInfo keyInfo, int choiceMode, boolean isActive, boolean isEnabled) {
vName.setText(keyInfo.name()); vName.setText(keyInfo.name());
Context context = vCreation.getContext(); KeyInfoFormatter keyInfoFormatter = new KeyInfoFormatter(itemView.getContext(), keyInfo, null);
if (keyInfo.has_any_secret() || keyInfo.has_duplicate()) { keyInfoFormatter.formatCreationDate(vCreation);
String dateTime = DateUtils.formatDateTime(context, keyInfo.creation() * 1000,
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME |
DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_ABBREV_MONTH);
vCreation.setText(context.getString(R.string.label_key_created, dateTime));
vCreation.setVisibility(View.VISIBLE);
} else {
vCreation.setVisibility(View.GONE);
}
switch (choiceMode) { switch (choiceMode) {
case Mode.IDLE: { case Mode.IDLE: {

View File

@@ -58,6 +58,8 @@ public class KeyInfoFormatter {
public void greyInvalidKeys(List<TextView> textviews) { public void greyInvalidKeys(List<TextView> textviews) {
int textColor; int textColor;
// Note: order is important!
if (keyInfo.is_revoked()) { if (keyInfo.is_revoked()) {
textColor = ContextCompat.getColor(context, R.color.key_flag_gray); textColor = ContextCompat.getColor(context, R.color.key_flag_gray);
} else if (keyInfo.is_expired()) { } else if (keyInfo.is_expired()) {
@@ -75,6 +77,8 @@ public class KeyInfoFormatter {
} }
public void formatStatusIcon(ImageView statusIcon) { public void formatStatusIcon(ImageView statusIcon) {
// Note: order is important!
if (keyInfo.is_revoked()) { if (keyInfo.is_revoked()) {
KeyFormattingUtils.setStatusImage( KeyFormattingUtils.setStatusImage(
context, context,

View File

@@ -1,11 +1,8 @@
package org.sufficientlysecure.keychain.ui.widget; package org.sufficientlysecure.keychain.ui.widget;
import java.util.List;
import android.content.Context; import android.content.Context;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.text.format.DateUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -15,9 +12,10 @@ import android.widget.TextView;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.ui.util.FormattingUtils; import org.sufficientlysecure.keychain.ui.util.KeyInfoFormatter;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State; import java.util.Arrays;
import java.util.List;
class KeyChoiceSpinnerAdapter extends BaseAdapter { class KeyChoiceSpinnerAdapter extends BaseAdapter {
@@ -137,75 +135,11 @@ class KeyChoiceSpinnerAdapter extends BaseAdapter {
} }
public void bind(Context context, UnifiedKeyInfo keyInfo, boolean enabled) { public void bind(Context context, UnifiedKeyInfo keyInfo, boolean enabled) {
{ // set name and stuff, common to both key types KeyInfoFormatter keyInfoFormatter = new KeyInfoFormatter(context, keyInfo, null);
if (keyInfo.name() != null) { keyInfoFormatter.formatUserId(mMainUserId, mMainUserIdRest);
mMainUserId.setText(keyInfo.name()); keyInfoFormatter.formatCreationDate(mCreationDate);
} else { keyInfoFormatter.formatStatusIcon(mStatus);
mMainUserId.setText(R.string.user_id_no_name); keyInfoFormatter.greyInvalidKeys(Arrays.asList(mMainUserId, mMainUserIdRest, mCreationDate));
}
if (keyInfo.email() != null) {
mMainUserIdRest.setText(keyInfo.email());
mMainUserIdRest.setVisibility(View.VISIBLE);
} else {
mMainUserIdRest.setVisibility(View.GONE);
}
}
// sort of a hack: if this item isn't enabled, we make it clickable
// to intercept its click events. either way, no listener!
mView.setClickable(!enabled);
{ // set edit button and status, specific by key type
int textColor;
// Note: order is important!
if (keyInfo.is_revoked()) {
KeyFormattingUtils
.setStatusImage(context, mStatus, null, State.REVOKED, R.color.key_flag_gray);
mStatus.setVisibility(View.VISIBLE);
textColor = context.getResources().getColor(R.color.key_flag_gray);
} else if (keyInfo.is_expired()) {
KeyFormattingUtils.setStatusImage(context, mStatus, null, State.EXPIRED, R.color.key_flag_gray);
mStatus.setVisibility(View.VISIBLE);
textColor = context.getResources().getColor(R.color.key_flag_gray);
} else if (!keyInfo.is_secure()) {
KeyFormattingUtils.setStatusImage(context, mStatus, null, State.INSECURE, R.color.key_flag_gray);
mStatus.setVisibility(View.VISIBLE);
textColor = context.getResources().getColor(R.color.key_flag_gray);
} else if (keyInfo.has_any_secret()) {
mStatus.setVisibility(View.GONE);
textColor = FormattingUtils.getColorFromAttr(context, R.attr.colorText);
} else {
// this is a public key - show if it's verified
if (keyInfo.is_verified()) {
KeyFormattingUtils.setStatusImage(context, mStatus, State.VERIFIED);
mStatus.setVisibility(View.VISIBLE);
} else {
KeyFormattingUtils.setStatusImage(context, mStatus, State.UNVERIFIED);
mStatus.setVisibility(View.VISIBLE);
}
textColor = FormattingUtils.getColorFromAttr(context, R.attr.colorText);
}
mMainUserId.setTextColor(textColor);
mMainUserIdRest.setTextColor(textColor);
if (keyInfo.has_duplicate()) {
String dateTime = DateUtils.formatDateTime(context,
keyInfo.creation() * 1000,
DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_YEAR
| DateUtils.FORMAT_ABBREV_MONTH);
mCreationDate.setText(context.getString(R.string.label_key_created,
dateTime));
mCreationDate.setTextColor(textColor);
mCreationDate.setVisibility(View.VISIBLE);
} else {
mCreationDate.setVisibility(View.GONE);
}
}
} }
} }
} }