From 57b18516a1f1529e5199f96b2c0486106b2af3d5 Mon Sep 17 00:00:00 2001 From: Daniel Weigl Date: Thu, 28 Dec 2017 15:49:46 +0100 Subject: [PATCH 01/17] split token with a space every three letters --- .../flocke/andotp/Utilities/ToolsTest.java | 15 +++++++++++++++ .../shadowice/flocke/andotp/Utilities/Tools.java | 12 ++++++++++++ .../flocke/andotp/View/EntryViewHolder.java | 4 +++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java diff --git a/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java b/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java new file mode 100644 index 00000000..79470d9a --- /dev/null +++ b/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java @@ -0,0 +1,15 @@ +package org.shadowice.flocke.andotp.Utilities; + +import junit.framework.TestCase; + +public class ToolsTest extends TestCase { + public void testFormatToken() throws Exception { + assertEquals("123 456", Tools.formatToken("123456", 3)); + assertEquals("1 234 567", Tools.formatToken("1234567", 3)); + assertEquals("1ab 234 567", Tools.formatToken("1ab234567", 3)); + assertEquals("123", Tools.formatToken("123", 3)); + assertEquals("1 234", Tools.formatToken("1234", 3)); + assertEquals("1", Tools.formatToken("1", 3)); + assertEquals("", Tools.formatToken("", 3)); + } +} \ No newline at end of file diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java index faefd08e..dd46c909 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java @@ -80,4 +80,16 @@ public class Tools { return Resources.getSystem().getConfiguration().locale; } } + + public static String formatToken(String s, int chunkSize) { + StringBuilder ret = new StringBuilder(""); + final int len = s.length(); + int index = len; + while (index > 0) { + ret.insert(0, s.substring(Math.max(index - chunkSize, 0), index)); + ret.insert(0, " "); + index = index - chunkSize; + } + return ret.toString().trim(); + } } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java index 68441f87..d6f26f6c 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java @@ -111,8 +111,10 @@ public class EntryViewHolder extends RecyclerView.ViewHolder public void updateValues(String label, String token, List tags, EntryThumbnail.EntryThumbnails thumbnail, boolean isVisible) { Settings settings = new Settings(context); + final String tokenFormatted = Tools.formatToken(token, 3); + this.label.setText(label); - value.setText(token); + value.setText(tokenFormatted); StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i < tags.size(); i++) { From 69a2c5b8fbb542dc767f01a1afa4908ecaeba386 Mon Sep 17 00:00:00 2001 From: Daniel Weigl Date: Thu, 28 Dec 2017 15:56:59 +0100 Subject: [PATCH 02/17] for copy/paste, use the unformatted representation --- .../org/shadowice/flocke/andotp/View/EntryViewHolder.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java index d6f26f6c..318715d8 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java @@ -101,7 +101,7 @@ public class EntryViewHolder extends RecyclerView.ViewHolder @Override public void onClick(View view) { if (callback != null) - callback.onCopyButtonClicked(value.getText().toString(), getAdapterPosition()); + callback.onCopyButtonClicked(value.getTag().toString(), getAdapterPosition()); } }); @@ -115,6 +115,8 @@ public class EntryViewHolder extends RecyclerView.ViewHolder this.label.setText(label); value.setText(tokenFormatted); + // save the unformatted token to the tag of this TextView for copy/paste + value.setTag(token); StringBuilder stringBuilder = new StringBuilder(); for(int i = 0; i < tags.size(); i++) { From 1f601240134d9c83e1cd1fdfeea4d0eba497652f Mon Sep 17 00:00:00 2001 From: RichyHBM Date: Sun, 31 Dec 2017 13:30:53 +0000 Subject: [PATCH 03/17] Add thumbnails for binance, bittrex, blockchaininfo, iconomi, kucoin, liqui --- .../andotp/Utilities/EntryThumbnail.java | 6 +++ app/src/main/res/drawable/thumb_binance.xml | 21 +++++++++ app/src/main/res/drawable/thumb_bittrex.xml | 10 ++++ .../res/drawable/thumb_blockchain_info.xml | 27 +++++++++++ app/src/main/res/drawable/thumb_iconomi.xml | 30 ++++++++++++ app/src/main/res/drawable/thumb_kucoin.xml | 9 ++++ app/src/main/res/drawable/thumb_liqui.xml | 46 +++++++++++++++++++ 7 files changed, 149 insertions(+) create mode 100644 app/src/main/res/drawable/thumb_binance.xml create mode 100644 app/src/main/res/drawable/thumb_bittrex.xml create mode 100644 app/src/main/res/drawable/thumb_blockchain_info.xml create mode 100644 app/src/main/res/drawable/thumb_iconomi.xml create mode 100644 app/src/main/res/drawable/thumb_kucoin.xml create mode 100644 app/src/main/res/drawable/thumb_liqui.xml diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index 0dbea350..af385ded 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -22,10 +22,13 @@ public class EntryThumbnail { Apple(R.drawable.thumb_apple), ArenaNet(R.drawable.thumb_arenanet), BattleNet(R.drawable.thumb_battlenet), + Binance(R.drawable.thumb_binance), BitBucket(R.drawable.thumb_bitbucket), Bitcoin(R.drawable.thumb_bitcoin), Bitstamp(R.mipmap.thumb_bitstamp, AssetType.Bitmap), + Bittrex(R.drawable.thumb_bittrex), Bitwarden(R.mipmap.thumb_bitwarden, AssetType.Bitmap), + BlockchainInfo(R.drawable.thumb_blockchain_info), Cloudflare(R.drawable.thumb_cloudflare), Coinbase(R.drawable.thumb_coinbase), CozyCloud(R.drawable.thumb_cozycloud), @@ -38,10 +41,13 @@ public class EntryThumbnail { Gitlab(R.drawable.thumb_gitlab), Google(R.drawable.thumb_google), HurricaneElectric(R.mipmap.thumb_hurricane_electric, AssetType.Bitmap), + Iconomi(R.drawable.thumb_iconomi), IFTTT(R.drawable.thumb_ifttt), Itchio(R.drawable.thumb_itchio), Kickstarter(R.drawable.thumb_kickstarter), + Kucoin(R.drawable.thumb_kucoin), LastPass(R.drawable.thumb_lastpass), + Liqui(R.drawable.thumb_liqui), Mailgun(R.drawable.thumb_mailgun), Mastodon(R.drawable.thumb_mastodon), Microsoft(R.drawable.thumb_microsoft), diff --git a/app/src/main/res/drawable/thumb_binance.xml b/app/src/main/res/drawable/thumb_binance.xml new file mode 100644 index 00000000..1a3d04dd --- /dev/null +++ b/app/src/main/res/drawable/thumb_binance.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/thumb_bittrex.xml b/app/src/main/res/drawable/thumb_bittrex.xml new file mode 100644 index 00000000..90774fba --- /dev/null +++ b/app/src/main/res/drawable/thumb_bittrex.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/thumb_blockchain_info.xml b/app/src/main/res/drawable/thumb_blockchain_info.xml new file mode 100644 index 00000000..a5a3199a --- /dev/null +++ b/app/src/main/res/drawable/thumb_blockchain_info.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/thumb_iconomi.xml b/app/src/main/res/drawable/thumb_iconomi.xml new file mode 100644 index 00000000..812fc7f8 --- /dev/null +++ b/app/src/main/res/drawable/thumb_iconomi.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/thumb_kucoin.xml b/app/src/main/res/drawable/thumb_kucoin.xml new file mode 100644 index 00000000..dddfff6d --- /dev/null +++ b/app/src/main/res/drawable/thumb_kucoin.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/thumb_liqui.xml b/app/src/main/res/drawable/thumb_liqui.xml new file mode 100644 index 00000000..90e8124a --- /dev/null +++ b/app/src/main/res/drawable/thumb_liqui.xml @@ -0,0 +1,46 @@ + + + + + + + + From 09f0b0d6c085f29a8361aaa28591081f36afb677 Mon Sep 17 00:00:00 2001 From: RichyHBM Date: Mon, 1 Jan 2018 18:52:51 +0000 Subject: [PATCH 04/17] Add email, nintendo and synology --- .../andotp/Utilities/EntryThumbnail.java | 3 + app/src/main/res/drawable/thumb_email.xml | 11 +++ app/src/main/res/drawable/thumb_nintendo.xml | 84 +++++++++++++++++++ app/src/main/res/drawable/thumb_synology.xml | 68 +++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 app/src/main/res/drawable/thumb_email.xml create mode 100644 app/src/main/res/drawable/thumb_nintendo.xml create mode 100644 app/src/main/res/drawable/thumb_synology.xml diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index af385ded..203b1637 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -35,6 +35,7 @@ public class EntryThumbnail { DigitalOcean(R.drawable.thumb_digital_ocean), Discord(R.drawable.thumb_discord), Dropbox(R.drawable.thumb_dropbox), + Email(R.drawable.thumb_email), Facebook(R.drawable.thumb_facebook), Git(R.drawable.thumb_git), Github(R.drawable.thumb_github), @@ -52,6 +53,7 @@ public class EntryThumbnail { Mastodon(R.drawable.thumb_mastodon), Microsoft(R.drawable.thumb_microsoft), NextCloud(R.drawable.thumb_nextcloud), + Nintendo(R.drawable.thumb_nintendo), Origin(R.drawable.thumb_origin), Patreon(R.drawable.thumb_patreon), PayPal(R.drawable.thumb_paypal), @@ -61,6 +63,7 @@ public class EntryThumbnail { Slack(R.drawable.thumb_slack), Steam(R.drawable.thumb_steam), Stripe(R.drawable.thumb_stripe), + Synology(R.drawable.thumb_synology), TeamViewer(R.drawable.thumb_teamviewer), Twitch(R.drawable.thumb_twitch), Twitter(R.drawable.thumb_twitter), diff --git a/app/src/main/res/drawable/thumb_email.xml b/app/src/main/res/drawable/thumb_email.xml new file mode 100644 index 00000000..f7b5ee76 --- /dev/null +++ b/app/src/main/res/drawable/thumb_email.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/thumb_nintendo.xml b/app/src/main/res/drawable/thumb_nintendo.xml new file mode 100644 index 00000000..772ceec1 --- /dev/null +++ b/app/src/main/res/drawable/thumb_nintendo.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/thumb_synology.xml b/app/src/main/res/drawable/thumb_synology.xml new file mode 100644 index 00000000..60be62d3 --- /dev/null +++ b/app/src/main/res/drawable/thumb_synology.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + From 052d72b2dd821fdd82b572fa53abd49704e2fa9e Mon Sep 17 00:00:00 2001 From: Daniel Weigl Date: Tue, 2 Jan 2018 19:10:54 +0100 Subject: [PATCH 05/17] implement settings for formatting (none, 2, 3) --- .../org/shadowice/flocke/andotp/Utilities/ToolsTest.java | 3 +++ .../shadowice/flocke/andotp/Activities/MainActivity.java | 1 + .../org/shadowice/flocke/andotp/Utilities/Settings.java | 7 +++++++ .../java/org/shadowice/flocke/andotp/Utilities/Tools.java | 3 +++ .../org/shadowice/flocke/andotp/View/EntryViewHolder.java | 3 +-- app/src/main/res/values/settings.xml | 8 ++++++++ app/src/main/res/values/strings_settings.xml | 7 +++++++ app/src/main/res/xml/preferences.xml | 8 ++++++++ 8 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java b/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java index 79470d9a..355e15c9 100644 --- a/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java +++ b/app/src/androidTest/java/org/shadowice/flocke/andotp/Utilities/ToolsTest.java @@ -5,6 +5,9 @@ import junit.framework.TestCase; public class ToolsTest extends TestCase { public void testFormatToken() throws Exception { assertEquals("123 456", Tools.formatToken("123456", 3)); + assertEquals("12 34 56", Tools.formatToken("123456", 2)); + assertEquals("123456", Tools.formatToken("123456", 0)); + assertEquals("123456", Tools.formatToken("123456", 10)); assertEquals("1 234 567", Tools.formatToken("1234567", 3)); assertEquals("1ab 234 567", Tools.formatToken("1ab234567", 3)); assertEquals("123", Tools.formatToken("123", 3)); diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java index 6cffff8a..bd0497db 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java @@ -310,6 +310,7 @@ public class MainActivity extends BaseActivity if (key.equals(getString(R.string.settings_key_label_size)) || key.equals(getString(R.string.settings_key_label_scroll)) || key.equals(getString(R.string.settings_key_thumbnail_visible)) || + key.equals(getString(R.string.settings_key_split_group_size)) || key.equals(getString(R.string.settings_key_thumbnail_size))) { adapter.notifyDataSetChanged(); } else if (key.equals(getString(R.string.settings_key_tap_to_reveal)) || diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java index d391e4e6..915fb5e5 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java @@ -365,6 +365,13 @@ public class Settings { } } + public int getTokenSplitGroupSize() { + // the setting is of type "String", because ListPreference does not support integer arrays for its entryValues + return Integer.valueOf( + getString(R.string.settings_key_split_group_size, R.string.settings_default_split_group_size) + ); + } + public boolean getScreenshotsEnabled() { return getBoolean(R.string.settings_key_enable_screenshot, false); } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java index dd46c909..7c7150ae 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java @@ -82,6 +82,9 @@ public class Tools { } public static String formatToken(String s, int chunkSize) { + if (chunkSize==0) { + return s; + } StringBuilder ret = new StringBuilder(""); final int len = s.length(); int index = len; diff --git a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java index 318715d8..f94a2571 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java @@ -110,8 +110,7 @@ public class EntryViewHolder extends RecyclerView.ViewHolder public void updateValues(String label, String token, List tags, EntryThumbnail.EntryThumbnails thumbnail, boolean isVisible) { Settings settings = new Settings(context); - - final String tokenFormatted = Tools.formatToken(token, 3); + final String tokenFormatted = Tools.formatToken(token, settings.getTokenSplitGroupSize()); this.label.setText(label); value.setText(tokenFormatted); diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index 85855b71..666bfe8e 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -18,6 +18,7 @@ pref_label_scroll pref_thumbnail_visible pref_thumbnail_size + pref_split_group_size pref_backup_ask pref_backup_directory @@ -46,6 +47,7 @@ light 18 46dp + 3 @@ -99,6 +101,12 @@ 96dp + + 0 + 2 + 3 + + @string/settings_lang_sys_default English diff --git a/app/src/main/res/values/strings_settings.xml b/app/src/main/res/values/strings_settings.xml index 0e7f0e0a..b03923d7 100644 --- a/app/src/main/res/values/strings_settings.xml +++ b/app/src/main/res/values/strings_settings.xml @@ -21,6 +21,7 @@ Scroll label Show thumbnails Thumbnail size + Split Token with space Ask for filename Backup directory @@ -90,6 +91,12 @@ Large + + Don\'t split + After two characters + After three characters + + System default diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index e680e3a2..6fdb1065 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -88,6 +88,14 @@ android:entryValues="@array/settings_values_thumbnail_size" android:defaultValue="@string/settings_default_thumbnail_size" /> + + Date: Tue, 2 Jan 2018 22:08:16 +0000 Subject: [PATCH 06/17] Move thumbnail toggle into the size selector --- .../andotp/Activities/MainActivity.java | 1 - .../andotp/Utilities/EntryThumbnail.java | 29 ++++++++++--------- .../flocke/andotp/Utilities/Settings.java | 2 +- .../andotp/View/EntriesCardAdapter.java | 4 ++- .../flocke/andotp/View/EntryViewHolder.java | 4 ++- app/src/main/res/values/settings.xml | 2 +- app/src/main/res/values/strings_settings.xml | 2 +- app/src/main/res/xml/preferences.xml | 5 ---- 8 files changed, 24 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java index 6cffff8a..a5ccf2cc 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java @@ -309,7 +309,6 @@ public class MainActivity extends BaseActivity public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if (key.equals(getString(R.string.settings_key_label_size)) || key.equals(getString(R.string.settings_key_label_scroll)) || - key.equals(getString(R.string.settings_key_thumbnail_visible)) || key.equals(getString(R.string.settings_key_thumbnail_size))) { adapter.notifyDataSetChanged(); } else if (key.equals(getString(R.string.settings_key_tap_to_reveal)) || diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index 0dbea350..cdc98922 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -84,24 +84,25 @@ public class EntryThumbnail { } public static Bitmap getThumbnailGraphic(Context context, String label, int size, EntryThumbnails thumbnail) { - if(thumbnail == EntryThumbnails.Default) { + if (thumbnail == EntryThumbnails.Default && size > 0) { LetterBitmap letterBitmap = new LetterBitmap(context); return letterBitmap.getLetterTile(label, label, size, size); - } + } else if (thumbnail != EntryThumbnails.Default) { - try { - if(thumbnail.getAssetType() == AssetType.Vector) { - Drawable drawable = context.getResources().getDrawable(thumbnail.getResource()); - Bitmap bitmap = Bitmap.createBitmap(drawable.getMinimumWidth(), drawable.getMinimumHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); - drawable.draw(canvas); - return bitmap; - } else { - return BitmapFactory.decodeResource(context.getResources(), thumbnail.getResource()); + try { + if (thumbnail.getAssetType() == AssetType.Vector) { + Drawable drawable = context.getResources().getDrawable(thumbnail.getResource()); + Bitmap bitmap = Bitmap.createBitmap(drawable.getMinimumWidth(), drawable.getMinimumHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); + drawable.draw(canvas); + return bitmap; + } else { + return BitmapFactory.decodeResource(context.getResources(), thumbnail.getResource()); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); } return BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher_round); diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java index d391e4e6..38aaa7ef 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Settings.java @@ -352,7 +352,7 @@ public class Settings { } public boolean getThumbnailVisible() { - return getBoolean(R.string.settings_key_thumbnail_visible, true); + return getThumbnailSize() > 0; } public int getThumbnailSize() { diff --git a/app/src/main/java/org/shadowice/flocke/andotp/View/EntriesCardAdapter.java b/app/src/main/java/org/shadowice/flocke/andotp/View/EntriesCardAdapter.java index e7ccda64..bb4504a6 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/View/EntriesCardAdapter.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/View/EntriesCardAdapter.java @@ -168,7 +168,9 @@ public class EntriesCardAdapter extends RecyclerView.Adapter } entryViewHolder.setLabelSize(settings.getLabelSize()); - entryViewHolder.setThumbnailSize(settings.getThumbnailSize()); + if(settings.getThumbnailVisible()) { + entryViewHolder.setThumbnailSize(settings.getThumbnailSize()); + } entryViewHolder.setLabelScroll(settings.getScrollLabel()); } diff --git a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java index 68441f87..d69112af 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/View/EntryViewHolder.java @@ -132,7 +132,9 @@ public class EntryViewHolder extends RecyclerView.ViewHolder thumbnailImg.setVisibility(settings.getThumbnailVisible() ? View.VISIBLE : View.GONE); int thumbnailSize = settings.getThumbnailSize(); - thumbnailImg.setImageBitmap(EntryThumbnail.getThumbnailGraphic(context, label, thumbnailSize, thumbnail)); + if(settings.getThumbnailVisible()) { + thumbnailImg.setImageBitmap(EntryThumbnail.getThumbnailGraphic(context, label, thumbnailSize, thumbnail)); + } if (this.tapToReveal) { if (isVisible) { diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index 85855b71..4b9f0ad1 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -16,7 +16,6 @@ pref_theme pref_label_size_sp pref_label_scroll - pref_thumbnail_visible pref_thumbnail_size pref_backup_ask @@ -93,6 +92,7 @@ + 0dp 32dp 46dp 64dp diff --git a/app/src/main/res/values/strings_settings.xml b/app/src/main/res/values/strings_settings.xml index 0e7f0e0a..2388b659 100644 --- a/app/src/main/res/values/strings_settings.xml +++ b/app/src/main/res/values/strings_settings.xml @@ -19,7 +19,6 @@ Theme Label font size Scroll label - Show thumbnails Thumbnail size Ask for filename @@ -84,6 +83,7 @@ + Hidden Small Default Medium diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index e680e3a2..58cbf103 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -76,11 +76,6 @@ android:summary="@string/settings_desc_label_scroll" android:defaultValue="false" /> - - Date: Thu, 4 Jan 2018 13:58:54 +0000 Subject: [PATCH 07/17] Remove gradient from vector images --- app/src/main/res/drawable/thumb_bitcoin.xml | 15 ++---------- app/src/main/res/drawable/thumb_origin.xml | 15 ++---------- app/src/main/res/drawable/thumb_rss.xml | 24 +++---------------- app/src/main/res/drawable/thumb_skrill.xml | 16 +------------ .../main/res/drawable/thumb_teamviewer.xml | 20 ++++------------ 5 files changed, 12 insertions(+), 78 deletions(-) diff --git a/app/src/main/res/drawable/thumb_bitcoin.xml b/app/src/main/res/drawable/thumb_bitcoin.xml index 7f00dac6..c3b8f706 100644 --- a/app/src/main/res/drawable/thumb_bitcoin.xml +++ b/app/src/main/res/drawable/thumb_bitcoin.xml @@ -1,22 +1,11 @@ - - - - - + android:pathData="M252.17,158.95C235.07,227.56 165.56,269.27 97.05,252.17C28.44,235.06 -13.27,165.55 3.83,97.05C20.94,28.44 90.35,-13.27 158.96,3.83C227.47,20.84 269.27,90.35 252.17,158.95L252.17,158.95L252.17,158.95Z" + android:fillColor="#e87b18" /> diff --git a/app/src/main/res/drawable/thumb_origin.xml b/app/src/main/res/drawable/thumb_origin.xml index 1bf8eceb..06eb5a36 100644 --- a/app/src/main/res/drawable/thumb_origin.xml +++ b/app/src/main/res/drawable/thumb_origin.xml @@ -1,20 +1,9 @@ - - - - - + android:pathData="M127.62,2.37C128.32,4.18 127.11,5.82 126.11,7.22C119.09,17.18 113.57,28.31 111.36,40.28C110.5,42.74 110.69,44.57 111.36,44.77C125,43.58 140.37,43.71 153.8,46.58C178.22,51.5 201.05,63.86 218.59,81.52C236.08,99.01 248.36,121.67 253.33,145.91C258.84,172.16 255.76,200.09 244.74,224.54C221.38,274.46 182.01,316.68 133.82,343.45C132.27,344.17 130.03,344.2 128.97,342.65C127.71,341.03 128.23,338.73 129.47,337.25C135.97,328.19 140.51,317.76 142.97,306.89C143.45,304.64 144.09,302.35 143.9,300.03C143.1,299 141.79,299.31 140.67,299.35C117.29,301.69 93.22,297.51 72.09,287.18C49.45,276.27 30.24,258.45 17.54,236.77C5.78,216.84 -0.41,193.62 0.02,170.46C0.1,149.2 5.9,128.12 16.11,109.51C39.89,63.86 77.22,25.35 122.28,0.46C124.17,-0.59 126.97,0.19 127.62,2.37L127.62,2.37ZM120.97,122.44C107.06,124.31 94.23,132.48 86.44,144.12C81.16,152.12 77.97,161.61 78.03,171.23C77.64,184.11 82.77,197.02 91.67,206.3C99.45,214.67 110.25,220.13 121.58,221.59C133.12,223.11 145.16,220.41 154.93,214.07C164.86,207.77 172.42,197.82 175.81,186.55C182.16,166.98 174.54,144.06 157.97,131.97C147.56,124.05 133.91,120.54 120.97,122.44L120.97,122.44L120.97,122.44Z" + android:fillColor="#e0431d" /> diff --git a/app/src/main/res/drawable/thumb_rss.xml b/app/src/main/res/drawable/thumb_rss.xml index be5ad629..936fe24a 100644 --- a/app/src/main/res/drawable/thumb_rss.xml +++ b/app/src/main/res/drawable/thumb_rss.xml @@ -1,33 +1,15 @@ - + - - - - - - - - - - + android:pathData="M57,10L199,10A47,47 0,0 1,246 57L246,199A47,47 0,0 1,199 246L57,246A47,47 0,0 1,10 199L10,57A47,47 0,0 1,57 10z" + android:fillColor="#FFFB9E3A"/> diff --git a/app/src/main/res/drawable/thumb_skrill.xml b/app/src/main/res/drawable/thumb_skrill.xml index c77ffe2c..78b67b47 100644 --- a/app/src/main/res/drawable/thumb_skrill.xml +++ b/app/src/main/res/drawable/thumb_skrill.xml @@ -1,23 +1,9 @@ - - - - - + android:fillColor="#50104c" /> diff --git a/app/src/main/res/drawable/thumb_teamviewer.xml b/app/src/main/res/drawable/thumb_teamviewer.xml index dee79585..5cfafde6 100644 --- a/app/src/main/res/drawable/thumb_teamviewer.xml +++ b/app/src/main/res/drawable/thumb_teamviewer.xml @@ -1,19 +1,7 @@ + android:viewportWidth="1024.2" android:width="256dp" xmlns:android="http://schemas.android.com/apk/res/android"> - - - - - - - - - + android:pathData="M56.2,52.7h914.8v914.8h-914.8z"/> + From 5415217407651aa9970831f47362558ec5cec743 Mon Sep 17 00:00:00 2001 From: RichyHBM Date: Fri, 5 Jan 2018 20:38:42 +0000 Subject: [PATCH 08/17] Add hackerone and seafile --- .../flocke/andotp/Utilities/EntryThumbnail.java | 2 ++ app/src/main/res/drawable/thumb_hackerone.xml | 4 ++++ app/src/main/res/mipmap-xhdpi/thumb_seafile.png | Bin 0 -> 6699 bytes 3 files changed, 6 insertions(+) create mode 100644 app/src/main/res/drawable/thumb_hackerone.xml create mode 100644 app/src/main/res/mipmap-xhdpi/thumb_seafile.png diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index 203b1637..ecfb0111 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -41,6 +41,7 @@ public class EntryThumbnail { Github(R.drawable.thumb_github), Gitlab(R.drawable.thumb_gitlab), Google(R.drawable.thumb_google), + HackerOne(R.drawable.thumb_hackerone), HurricaneElectric(R.mipmap.thumb_hurricane_electric, AssetType.Bitmap), Iconomi(R.drawable.thumb_iconomi), IFTTT(R.drawable.thumb_ifttt), @@ -59,6 +60,7 @@ public class EntryThumbnail { PayPal(R.drawable.thumb_paypal), ProtonMail(R.drawable.thumb_protonmail), RSS(R.drawable.thumb_rss), + Seafile(R.mipmap.thumb_seafile, AssetType.Bitmap), Skrill(R.drawable.thumb_skrill), Slack(R.drawable.thumb_slack), Steam(R.drawable.thumb_steam), diff --git a/app/src/main/res/drawable/thumb_hackerone.xml b/app/src/main/res/drawable/thumb_hackerone.xml new file mode 100644 index 00000000..9a290cb7 --- /dev/null +++ b/app/src/main/res/drawable/thumb_hackerone.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/mipmap-xhdpi/thumb_seafile.png b/app/src/main/res/mipmap-xhdpi/thumb_seafile.png new file mode 100644 index 0000000000000000000000000000000000000000..d578a9d8c61c92572cf08f2598414949bace51c6 GIT binary patch literal 6699 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 Date: Sun, 7 Jan 2018 19:43:31 +0000 Subject: [PATCH 09/17] Add myself as a developer --- .../andotp/Activities/AboutActivity.java | 37 +++++++-- app/src/main/res/layout/content_about.xml | 82 ++++++++++++++++++- app/src/main/res/values/strings_about.xml | 5 +- 3 files changed, 110 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java index 5f7c4009..fa5e198b 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/AboutActivity.java @@ -49,10 +49,13 @@ public class AboutActivity extends BaseActivity { private static final String MIT_URI = GITHUB_URI + "/blob/master/LICENSE.txt"; private static final String AUTHOR1_GITHUB = "https://github.com/flocke"; - private static final String AUTHOR1_PAYPAL = "https://paypal.me/flocke000"; + private static final String AUTHOR1_EXTRA = "https://paypal.me/flocke000"; - private static final String AUTHOR2_GITHUB = "https://github.com/0xbb"; - private static final String AUTHOR2_APP = AUTHOR2_GITHUB + "/otp-authenticator"; + private static final String AUTHOR2_GITHUB = "https://github.com/richyhbm"; + private static final String AUTHOR2_EXTRA = "bitcoin:1KyLwnxXR577gYUtwRMSMhkpsJVoK2bTLN"; + + private static final String AUTHOR_ORIGINAL_GITHUB = "https://github.com/0xbb"; + private static final String AUTHOR_ORIGINAL_EXTRA = AUTHOR_ORIGINAL_GITHUB + "/otp-authenticator"; private static final String CONTRIBUTORS_URI = GITHUB_URI + "/blob/master/README.md#contributors"; private static final String TRANSLATORS_URI = GITHUB_URI + "/blob/master/README.md#translators"; @@ -62,7 +65,7 @@ public class AboutActivity extends BaseActivity { static final int[] imageResources = { R.id.aboutImgVersion, R.id.aboutImgLicense, R.id.aboutImgChangelog, R.id.aboutImgSource, - R.id.aboutImgOpenSource, R.id.aboutImgAuthor1, R.id.aboutImgAuthor2, R.id.aboutImgContributors, + R.id.aboutImgOpenSource, R.id.aboutImgAuthor1, R.id.aboutImgAuthorOriginal, R.id.aboutImgContributors, R.id.aboutImgTranslators, R.id.aboutImgBugs, R.id.aboutImgTranslate }; @@ -164,7 +167,7 @@ public class AboutActivity extends BaseActivity { }); TextView author1GitHub = v.findViewById(R.id.about_author1_github); - TextView author1Paypal = v.findViewById(R.id.about_author1_paypal); + TextView author1Paypal = v.findViewById(R.id.about_author1_extra); author1GitHub.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -174,22 +177,38 @@ public class AboutActivity extends BaseActivity { author1Paypal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - openURI(AUTHOR1_PAYPAL); + openURI(AUTHOR1_EXTRA); } }); + TextView author2GitHub = v.findViewById(R.id.about_author2_github); - TextView author2App = v.findViewById(R.id.about_author2_app); + TextView author2Paypal = v.findViewById(R.id.about_author2_extra); author2GitHub.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openURI(AUTHOR2_GITHUB); } }); - author2App.setOnClickListener(new View.OnClickListener() { + author2Paypal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - openURI(AUTHOR2_APP); + openURI(AUTHOR2_EXTRA); + } + }); + + TextView authorOriginalGitHub = v.findViewById(R.id.about_author_original_github); + TextView authorOriginalApp = v.findViewById(R.id.about_author_original_extra); + authorOriginalGitHub.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + openURI(AUTHOR_ORIGINAL_GITHUB); + } + }); + authorOriginalApp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + openURI(AUTHOR_ORIGINAL_EXTRA); } }); diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml index 35d1d7ab..33c8c63e 100644 --- a/app/src/main/res/layout/content_about.xml +++ b/app/src/main/res/layout/content_about.xml @@ -313,7 +313,7 @@ android:text="@string/about_label_github" /> - + + android:text="@string/about_label_developer"/> + + + + + + + + + + + + + + + + + + + + + + Authors Main author + Developer Author of the original app Original App + Website Github Donate Jakob Nixdorf - Bruno Bierbaumer + Bruno Bierbaumer + Richy HBM Contributors Translators From d9fb3266bc4a36062a60a35bc90d1128873d8818 Mon Sep 17 00:00:00 2001 From: RichyHBM Date: Tue, 9 Jan 2018 19:24:35 +0000 Subject: [PATCH 10/17] Add couple more thumbnails --- .../andotp/Utilities/EntryThumbnail.java | 4 +- app/src/main/res/drawable/thumb_gitea.xml | 30 ++++++ app/src/main/res/drawable/thumb_godaddy.xml | 100 ++++++++++++++++++ .../res/drawable/thumb_hurricane_electric.xml | 8 ++ .../mipmap-xhdpi/thumb_hurricane_electric.png | Bin 45104 -> 0 bytes 5 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/thumb_gitea.xml create mode 100644 app/src/main/res/drawable/thumb_godaddy.xml create mode 100644 app/src/main/res/drawable/thumb_hurricane_electric.xml delete mode 100644 app/src/main/res/mipmap-xhdpi/thumb_hurricane_electric.png diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index ecfb0111..bf9e2414 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -38,11 +38,13 @@ public class EntryThumbnail { Email(R.drawable.thumb_email), Facebook(R.drawable.thumb_facebook), Git(R.drawable.thumb_git), + Gitea(R.drawable.thumb_gitea), Github(R.drawable.thumb_github), Gitlab(R.drawable.thumb_gitlab), + GoDaddy(R.drawable.thumb_godaddy), Google(R.drawable.thumb_google), HackerOne(R.drawable.thumb_hackerone), - HurricaneElectric(R.mipmap.thumb_hurricane_electric, AssetType.Bitmap), + HurricaneElectric(R.drawable.thumb_hurricane_electric), Iconomi(R.drawable.thumb_iconomi), IFTTT(R.drawable.thumb_ifttt), Itchio(R.drawable.thumb_itchio), diff --git a/app/src/main/res/drawable/thumb_gitea.xml b/app/src/main/res/drawable/thumb_gitea.xml new file mode 100644 index 00000000..e8ea5dd4 --- /dev/null +++ b/app/src/main/res/drawable/thumb_gitea.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/thumb_godaddy.xml b/app/src/main/res/drawable/thumb_godaddy.xml new file mode 100644 index 00000000..88619f4d --- /dev/null +++ b/app/src/main/res/drawable/thumb_godaddy.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/thumb_hurricane_electric.xml b/app/src/main/res/drawable/thumb_hurricane_electric.xml new file mode 100644 index 00000000..1b30b472 --- /dev/null +++ b/app/src/main/res/drawable/thumb_hurricane_electric.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/src/main/res/mipmap-xhdpi/thumb_hurricane_electric.png b/app/src/main/res/mipmap-xhdpi/thumb_hurricane_electric.png deleted file mode 100644 index cdf74fdc1774e15d2dace5d2455224b03ec982f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45104 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 Date: Wed, 10 Jan 2018 22:47:17 +0000 Subject: [PATCH 11/17] Add mixer and tumblr --- .../andotp/Utilities/EntryThumbnail.java | 2 ++ app/src/main/res/drawable/thumb_dropbox.xml | 24 ++++++++++++++----- app/src/main/res/drawable/thumb_mixer.xml | 5 ++++ app/src/main/res/drawable/thumb_tumblr.xml | 4 ++++ 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable/thumb_mixer.xml create mode 100644 app/src/main/res/drawable/thumb_tumblr.xml diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java index bf9e2414..2e4e0ed7 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/EntryThumbnail.java @@ -55,6 +55,7 @@ public class EntryThumbnail { Mailgun(R.drawable.thumb_mailgun), Mastodon(R.drawable.thumb_mastodon), Microsoft(R.drawable.thumb_microsoft), + Mixer(R.drawable.thumb_mixer), NextCloud(R.drawable.thumb_nextcloud), Nintendo(R.drawable.thumb_nintendo), Origin(R.drawable.thumb_origin), @@ -69,6 +70,7 @@ public class EntryThumbnail { Stripe(R.drawable.thumb_stripe), Synology(R.drawable.thumb_synology), TeamViewer(R.drawable.thumb_teamviewer), + Tumblr(R.drawable.thumb_tumblr), Twitch(R.drawable.thumb_twitch), Twitter(R.drawable.thumb_twitter), Ubisoft(R.drawable.thumb_ubisoft), diff --git a/app/src/main/res/drawable/thumb_dropbox.xml b/app/src/main/res/drawable/thumb_dropbox.xml index 12031fa7..8754b98b 100644 --- a/app/src/main/res/drawable/thumb_dropbox.xml +++ b/app/src/main/res/drawable/thumb_dropbox.xml @@ -1,9 +1,21 @@ + android:width="235dp" + android:height="200dp" + android:viewportWidth="235.45" + android:viewportHeight="200.0"> + android:fillColor="#007EE5" + android:pathData="M58.86,0l-58.86,37.5l58.86,37.5l58.87,-37.5l-58.87,-37.5z"/> + + + + diff --git a/app/src/main/res/drawable/thumb_mixer.xml b/app/src/main/res/drawable/thumb_mixer.xml new file mode 100644 index 00000000..a9baaab8 --- /dev/null +++ b/app/src/main/res/drawable/thumb_mixer.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/drawable/thumb_tumblr.xml b/app/src/main/res/drawable/thumb_tumblr.xml new file mode 100644 index 00000000..3c83483d --- /dev/null +++ b/app/src/main/res/drawable/thumb_tumblr.xml @@ -0,0 +1,4 @@ + + + From 584dfc552a22a102b4584409c42613978cf154d0 Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 15:26:57 +0100 Subject: [PATCH 12/17] Fix ApplicationTest --- .../java/org/shadowice/flocke/andotp/ApplicationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/androidTest/java/org/shadowice/flocke/andotp/ApplicationTest.java b/app/src/androidTest/java/org/shadowice/flocke/andotp/ApplicationTest.java index 3c2577b0..07398d2c 100644 --- a/app/src/androidTest/java/org/shadowice/flocke/andotp/ApplicationTest.java +++ b/app/src/androidTest/java/org/shadowice/flocke/andotp/ApplicationTest.java @@ -176,7 +176,7 @@ public class ApplicationTest extends ApplicationTestCase { new File(context.getFilesDir() + "/" + Constants.FILENAME_DATABASE).delete(); new File(context.getFilesDir() + "/" + Constants.FILENAME_ENCRYPTED_KEY).delete(); - SecretKey encryptionKey = KeyStoreHelper.loadEncryptionKeyFromKeyStore(context); + SecretKey encryptionKey = KeyStoreHelper.loadEncryptionKeyFromKeyStore(context, false); ArrayList b = DatabaseHelper.loadDatabase(context, encryptionKey); assertEquals(0, b.size()); From d7e4bd73d1d36bf81472a169a6ce1f98eb3871f5 Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 15:29:08 +0100 Subject: [PATCH 13/17] Fix crash in Tools when the string is null --- .../java/org/shadowice/flocke/andotp/Utilities/Tools.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java index 7c7150ae..198327fe 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Utilities/Tools.java @@ -82,12 +82,11 @@ public class Tools { } public static String formatToken(String s, int chunkSize) { - if (chunkSize==0) { + if (chunkSize ==0 || s == null) return s; - } + StringBuilder ret = new StringBuilder(""); - final int len = s.length(); - int index = len; + int index = s.length(); while (index > 0) { ret.insert(0, s.substring(Math.max(index - chunkSize, 0), index)); ret.insert(0, " "); From a0c9249b15f7585f002e6a94b00ace35d61c8ade Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 15:53:33 +0100 Subject: [PATCH 14/17] Add extra padding to the bottom of the RecyclerView Fixes #95 --- .../flocke/andotp/Activities/MainActivity.java | 16 +--------------- app/src/main/res/layout/content_main.xml | 4 +++- app/src/main/res/values/dimens.xml | 2 ++ 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java index fd8fa3af..ca8ce8a5 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java @@ -82,7 +82,6 @@ public class MainActivity extends BaseActivity private EntriesCardAdapter adapter; private FloatingActionMenu floatingActionMenu; - private SearchView searchView; private MenuItem sortMenu; private SimpleItemTouchHelperCallback touchHelperCallback; @@ -248,19 +247,6 @@ public class MainActivity extends BaseActivity adapter = new EntriesCardAdapter(this, tagsDrawerAdapter); recList.setAdapter(adapter); - recList.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrolled(RecyclerView recyclerView, int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - - if (dy > 0) { - floatingActionMenu.hide(); - } else { - if (searchView == null || searchView.isIconified()) - floatingActionMenu.show(); - } - } - }); touchHelperCallback = new SimpleItemTouchHelperCallback(adapter); ItemTouchHelper touchHelper = new ItemTouchHelper(touchHelperCallback); @@ -462,7 +448,7 @@ public class MainActivity extends BaseActivity } MenuItem searchItem = menu.findItem(R.id.menu_search); - searchView = (SearchView) searchItem.getActionView(); + SearchView searchView = (SearchView) searchItem.getActionView(); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 489c6886..d027e7b9 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -18,7 +18,9 @@ android:id="@+id/cardList" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentStart="true" /> + android:layout_alignParentStart="true" + android:paddingBottom="@dimen/fab_recyclerview_padding" + android:clipToPadding="false" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index f1075f83..ccb74986 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -28,4 +28,6 @@ 8dp 16dp 16dp + + 84dp From da17ff33f79fb3f4c010008dbc78a9829ad90e2c Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 16:15:46 +0100 Subject: [PATCH 15/17] Reformat the title card in About --- app/src/main/res/layout/content_about.xml | 41 ++++++++++------------- app/src/main/res/values/strings_about.xml | 4 +-- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml index 33c8c63e..ba40eb6a 100644 --- a/app/src/main/res/layout/content_about.xml +++ b/app/src/main/res/layout/content_about.xml @@ -22,23 +22,21 @@ + android:padding="@dimen/activity_margin_small" + android:gravity="center_vertical" + android:orientation="horizontal" > + + - - + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground"> - + - + diff --git a/app/src/main/res/values/strings_about.xml b/app/src/main/res/values/strings_about.xml index bcae247f..c4e26645 100644 --- a/app/src/main/res/values/strings_about.xml +++ b/app/src/main/res/values/strings_about.xml @@ -2,9 +2,7 @@ About - - An open-source two-factor authentication App for Android 4.4+. - + Open source two-factor authentication for Android Changelog From 0c8c5018fec9560ba7a202a23adea23abe89e612 Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 16:17:24 +0100 Subject: [PATCH 16/17] Main author -> Main developer (in About) --- app/src/main/res/layout/content_about.xml | 2 +- app/src/main/res/values/strings_about.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/content_about.xml b/app/src/main/res/layout/content_about.xml index ba40eb6a..68b91334 100644 --- a/app/src/main/res/layout/content_about.xml +++ b/app/src/main/res/layout/content_about.xml @@ -288,7 +288,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" - android:text="@string/about_label_main_author"/> + android:text="@string/about_label_main_developer"/> Authors - Main author + Main developer Developer Author of the original app Original App From cceadee413af47ee2960cdf87d1febb9b51c8c6d Mon Sep 17 00:00:00 2001 From: Jakob Nixdorf Date: Thu, 11 Jan 2018 16:43:39 +0100 Subject: [PATCH 17/17] Update README --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 39138f47..e3cb9774 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,9 @@ Don't worry, I will still continue to develop andOTP it will just slow down from * Requires minimal permissions - Camera access for QR code scanning - Storage access for import and export of the database - * Encrypted storage + * Encrypted storage with two backends: + - Android KeyStore + - Password / PIN * Multiple backup options: - Plain-text - Password-protected @@ -76,12 +78,16 @@ So make sure you have a **current backup** before switching! - [XDA thread](https://forum.xda-developers.com/android/apps-games/app-andotp-android-otp-authenticator-t3636993) (please keep off-topic to a minimum) - Telegram group [@andOTP](https://t.me/andOTP) (also check out the read-only announcement channel for important updates: [@andOTP_Broadcast](https://t.me/andOTP_Broadcast)) +#### Developers: + + * [Jakob Nixdorf](https://github.com/flocke) + * [Richy HBM](https://github.com/RichyHBM) + #### Contributors: * [Carlos Melero](https://github.com/carmebar) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=carmebar)) * [SuperVirus](https://github.com/SuperVirus) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=SuperVirus)) - * [RichyHBM](https://github.com/RichyHBM) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=RichyHBM)) - + * [DanielWeigl](https://github.com/DanielWeigl) ([view contributions](https://github.com/andOTP/andOTP/commits/master?author=DanielWeigl)) #### Translators: