From 3aba0f3f4754b5deb237929138dac3dd139bbb81 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Wed, 6 Jun 2018 16:27:56 +0200 Subject: [PATCH] Generate TextDrawable based on issuer and use account name as fallback --- .../aegis/helpers/TextDrawableHelper.java | 13 ++++--- .../me/impy/aegis/ui/EditEntryActivity.java | 35 ++++++++++--------- .../me/impy/aegis/ui/views/EntryHolder.java | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java b/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java index 7f4afeec..bcfc8497 100644 --- a/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java +++ b/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java @@ -8,13 +8,16 @@ public class TextDrawableHelper { } - public static TextDrawable generate(String s) { - if (s == null || s.length() <= 1) { - return null; + public static TextDrawable generate(String text, String fallback) { + if (text == null || text.isEmpty()) { + if (fallback == null || fallback.isEmpty()) { + return null; + } + text = fallback; } ColorGenerator generator = ColorGenerator.MATERIAL; - int color = generator.getColor(s); - return TextDrawable.builder().buildRound(s.substring(0, 1).toUpperCase(), color); + int color = generator.getColor(text); + return TextDrawable.builder().buildRound(text.substring(0, 1).toUpperCase(), color); } } diff --git a/app/src/main/java/me/impy/aegis/ui/EditEntryActivity.java b/app/src/main/java/me/impy/aegis/ui/EditEntryActivity.java index d8b7a325..a694659b 100644 --- a/app/src/main/java/me/impy/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/EditEntryActivity.java @@ -97,7 +97,7 @@ public class EditEntryActivity extends AegisActivity { // fill the fields with values if possible if (_entry != null) { - TextDrawable drawable = TextDrawableHelper.generate(_entry.getName()); + TextDrawable drawable = TextDrawableHelper.generate(_entry.getIssuer(), _entry.getName()); _iconView.setImageDrawable(drawable); _textName.setText(_entry.getName()); @@ -142,21 +142,8 @@ public class EditEntryActivity extends AegisActivity { _spinnerDigits.setOnItemSelectedListener(_selectedListener); // update the icon if the text changed - _textName.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - - @Override - public void afterTextChanged(Editable s) { - TextDrawable drawable = TextDrawableHelper.generate(s.toString()); - _iconView.setImageDrawable(drawable); - } - }); + _textIssuer.addTextChangedListener(_iconChangeListener); + _textName.addTextChangedListener(_iconChangeListener); // show/hide period and counter fields on type change _spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -406,6 +393,22 @@ public class EditEntryActivity extends AegisActivity { } }; + private TextWatcher _iconChangeListener = new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(Editable s) { + TextDrawable drawable = TextDrawableHelper.generate(_textIssuer.getText().toString(), _textName.getText().toString()); + _iconView.setImageDrawable(drawable); + } + }; + private class SpinnerItemSelectedListener implements AdapterView.OnItemSelectedListener, View.OnTouchListener { private boolean _userSelect = false; diff --git a/app/src/main/java/me/impy/aegis/ui/views/EntryHolder.java b/app/src/main/java/me/impy/aegis/ui/views/EntryHolder.java index 8024833c..70b868c0 100644 --- a/app/src/main/java/me/impy/aegis/ui/views/EntryHolder.java +++ b/app/src/main/java/me/impy/aegis/ui/views/EntryHolder.java @@ -64,7 +64,7 @@ public class EntryHolder extends RecyclerView.ViewHolder { _profileIssuer.setText(" - " + entry.getIssuer()); } - TextDrawable drawable = TextDrawableHelper.generate(entry.getName()); + TextDrawable drawable = TextDrawableHelper.generate(entry.getIssuer(), entry.getName()); _profileDrawable.setImageDrawable(drawable); refreshCode();