From eaf7e5e0051da5a49001283321e8e722ab3b1bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 6 Mar 2015 01:12:33 +0100 Subject: Fix elevation --- .../keychain/ui/ViewKeyAdvActivity.java | 4 +- OpenKeychain/src/main/res/layout/help_activity.xml | 35 +++++------------- .../src/main/res/layout/toolbar_inner_layout.xml | 26 +++++++++++++ .../src/main/res/layout/toolbar_standalone.xml | 26 ++----------- .../main/res/layout/toolbar_standalone_orange.xml | 26 ++----------- OpenKeychain/src/main/res/layout/toolbar_tabs.xml | 24 ++++++++++++ .../src/main/res/layout/view_key_adv_activity.xml | 43 +++++----------------- 7 files changed, 78 insertions(+), 106 deletions(-) create mode 100644 OpenKeychain/src/main/res/layout/toolbar_inner_layout.xml create mode 100644 OpenKeychain/src/main/res/layout/toolbar_tabs.xml diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java index 9390e8a69..0654f0c9a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java @@ -76,8 +76,8 @@ public class ViewKeyAdvActivity extends BaseActivity implements mExportHelper = new ExportHelper(this); mProviderHelper = new ProviderHelper(this); - mViewPager = (ViewPager) findViewById(R.id.view_key_pager); - mSlidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.view_key_sliding_tab_layout); + mViewPager = (ViewPager) findViewById(R.id.pager); + mSlidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.sliding_tab_layout); int switchToTab = TAB_MAIN; Intent intent = getIntent(); diff --git a/OpenKeychain/src/main/res/layout/help_activity.xml b/OpenKeychain/src/main/res/layout/help_activity.xml index 1722f03ea..0b309a8b1 100644 --- a/OpenKeychain/src/main/res/layout/help_activity.xml +++ b/OpenKeychain/src/main/res/layout/help_activity.xml @@ -1,33 +1,16 @@ - + android:layout_height="match_parent" + android:orientation="vertical"> + android:id="@+id/toolbar_tabs" + layout="@layout/toolbar_tabs" /> - + android:layout_height="match_parent" /> - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/toolbar_inner_layout.xml b/OpenKeychain/src/main/res/layout/toolbar_inner_layout.xml new file mode 100644 index 000000000..047225394 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/toolbar_inner_layout.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/toolbar_standalone.xml b/OpenKeychain/src/main/res/layout/toolbar_standalone.xml index 950c2f2ae..4ab94060c 100644 --- a/OpenKeychain/src/main/res/layout/toolbar_standalone.xml +++ b/OpenKeychain/src/main/res/layout/toolbar_standalone.xml @@ -1,31 +1,13 @@ - - - - + diff --git a/OpenKeychain/src/main/res/layout/toolbar_standalone_orange.xml b/OpenKeychain/src/main/res/layout/toolbar_standalone_orange.xml index 0336b51fd..b8c190a36 100644 --- a/OpenKeychain/src/main/res/layout/toolbar_standalone_orange.xml +++ b/OpenKeychain/src/main/res/layout/toolbar_standalone_orange.xml @@ -1,31 +1,13 @@ - - - - + diff --git a/OpenKeychain/src/main/res/layout/toolbar_tabs.xml b/OpenKeychain/src/main/res/layout/toolbar_tabs.xml new file mode 100644 index 000000000..91efda682 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/toolbar_tabs.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_activity.xml b/OpenKeychain/src/main/res/layout/view_key_adv_activity.xml index 59888c25a..0b309a8b1 100644 --- a/OpenKeychain/src/main/res/layout/view_key_adv_activity.xml +++ b/OpenKeychain/src/main/res/layout/view_key_adv_activity.xml @@ -1,41 +1,16 @@ - + android:layout_height="match_parent" + android:orientation="vertical"> + android:id="@+id/toolbar_tabs" + layout="@layout/toolbar_tabs" /> - + android:layout_height="match_parent" /> - - - - - - - - \ No newline at end of file + \ No newline at end of file -- cgit v1.2.3 From d74a662614489e86e842b4ca241aebee81f38ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 6 Mar 2015 01:52:06 +0100 Subject: Tryout design for encrypt, decrypt --- Graphics/drawables/ic_action_encrypt_copy.svg | 59 +++++++++++++++++++++ Graphics/drawables/ic_action_encrypt_save.svg | 59 +++++++++++++++++++++ Graphics/drawables/ic_action_encrypt_share.svg | 59 +++++++++++++++++++++ .../drawable-hdpi/ic_comment_text_black_18dp.png | Bin 0 -> 405 bytes .../drawable-hdpi/ic_comment_text_black_24dp.png | Bin 0 -> 352 bytes .../drawable-hdpi/ic_comment_text_black_36dp.png | Bin 0 -> 486 bytes .../drawable-hdpi/ic_comment_text_black_48dp.png | Bin 0 -> 507 bytes .../drawable-hdpi/ic_comment_text_grey600_18dp.png | Bin 0 -> 485 bytes .../drawable-hdpi/ic_comment_text_grey600_24dp.png | Bin 0 -> 455 bytes .../drawable-hdpi/ic_comment_text_grey600_36dp.png | Bin 0 -> 644 bytes .../drawable-hdpi/ic_comment_text_grey600_48dp.png | Bin 0 -> 748 bytes .../drawable-hdpi/ic_comment_text_white_18dp.png | Bin 0 -> 409 bytes .../drawable-hdpi/ic_comment_text_white_24dp.png | Bin 0 -> 368 bytes .../drawable-hdpi/ic_comment_text_white_36dp.png | Bin 0 -> 529 bytes .../drawable-hdpi/ic_comment_text_white_48dp.png | Bin 0 -> 572 bytes .../drawable-mdpi/ic_comment_text_black_18dp.png | Bin 0 -> 310 bytes .../drawable-mdpi/ic_comment_text_black_24dp.png | Bin 0 -> 249 bytes .../drawable-mdpi/ic_comment_text_black_36dp.png | Bin 0 -> 352 bytes .../drawable-mdpi/ic_comment_text_black_48dp.png | Bin 0 -> 364 bytes .../drawable-mdpi/ic_comment_text_grey600_18dp.png | Bin 0 -> 376 bytes .../drawable-mdpi/ic_comment_text_grey600_24dp.png | Bin 0 -> 308 bytes .../drawable-mdpi/ic_comment_text_grey600_36dp.png | Bin 0 -> 455 bytes .../drawable-mdpi/ic_comment_text_grey600_48dp.png | Bin 0 -> 469 bytes .../drawable-mdpi/ic_comment_text_white_18dp.png | Bin 0 -> 317 bytes .../drawable-mdpi/ic_comment_text_white_24dp.png | Bin 0 -> 267 bytes .../drawable-mdpi/ic_comment_text_white_36dp.png | Bin 0 -> 368 bytes .../drawable-mdpi/ic_comment_text_white_48dp.png | Bin 0 -> 414 bytes .../drawable-xhdpi/ic_comment_text_black_18dp.png | Bin 0 -> 352 bytes .../drawable-xhdpi/ic_comment_text_black_24dp.png | Bin 0 -> 364 bytes .../drawable-xhdpi/ic_comment_text_black_36dp.png | Bin 0 -> 507 bytes .../drawable-xhdpi/ic_comment_text_black_48dp.png | Bin 0 -> 635 bytes .../ic_comment_text_grey600_18dp.png | Bin 0 -> 455 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 469 bytes .../ic_comment_text_grey600_36dp.png | Bin 0 -> 748 bytes .../ic_comment_text_grey600_48dp.png | Bin 0 -> 882 bytes .../drawable-xhdpi/ic_comment_text_white_18dp.png | Bin 0 -> 368 bytes .../drawable-xhdpi/ic_comment_text_white_24dp.png | Bin 0 -> 414 bytes .../drawable-xhdpi/ic_comment_text_white_36dp.png | Bin 0 -> 572 bytes .../drawable-xhdpi/ic_comment_text_white_48dp.png | Bin 0 -> 725 bytes .../drawable-xxhdpi/ic_comment_text_black_18dp.png | Bin 0 -> 486 bytes .../drawable-xxhdpi/ic_comment_text_black_24dp.png | Bin 0 -> 507 bytes .../drawable-xxhdpi/ic_comment_text_black_36dp.png | Bin 0 -> 767 bytes .../drawable-xxhdpi/ic_comment_text_black_48dp.png | Bin 0 -> 1020 bytes .../ic_comment_text_grey600_18dp.png | Bin 0 -> 644 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 748 bytes .../ic_comment_text_grey600_36dp.png | Bin 0 -> 1034 bytes .../ic_comment_text_grey600_48dp.png | Bin 0 -> 1343 bytes .../drawable-xxhdpi/ic_comment_text_white_18dp.png | Bin 0 -> 529 bytes .../drawable-xxhdpi/ic_comment_text_white_24dp.png | Bin 0 -> 572 bytes .../drawable-xxhdpi/ic_comment_text_white_36dp.png | Bin 0 -> 900 bytes .../drawable-xxhdpi/ic_comment_text_white_48dp.png | Bin 0 -> 1156 bytes .../ic_comment_text_black_18dp.png | Bin 0 -> 507 bytes .../ic_comment_text_black_24dp.png | Bin 0 -> 635 bytes .../ic_comment_text_black_36dp.png | Bin 0 -> 1020 bytes .../ic_comment_text_black_48dp.png | Bin 0 -> 1419 bytes .../ic_comment_text_grey600_18dp.png | Bin 0 -> 748 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 882 bytes .../ic_comment_text_grey600_36dp.png | Bin 0 -> 1343 bytes .../ic_comment_text_grey600_48dp.png | Bin 0 -> 1781 bytes .../ic_comment_text_white_18dp.png | Bin 0 -> 572 bytes .../ic_comment_text_white_24dp.png | Bin 0 -> 725 bytes .../ic_comment_text_white_36dp.png | Bin 0 -> 1156 bytes .../ic_comment_text_white_48dp.png | Bin 0 -> 1546 bytes .../comment-text/drawable/comment-text.xml | 8 +++ .../drawables/originals/comment-text/readme.txt | 5 ++ Graphics/drawables/originals/content-copy.svg | 1 + Graphics/drawables/originals/content-save.svg | 1 + Graphics/drawables/originals/ic_cloud_24dp.svg | 1 + Graphics/drawables/originals/ic_cloud_24px.svg | 1 - Graphics/drawables/originals/ic_search_24dp.svg | 1 + Graphics/drawables/originals/ic_search_24px.svg | 1 - Graphics/drawables/originals/share-variant.svg | 1 + Graphics/update-drawables.sh | 2 +- .../drawable-hdpi/ic_action_encrypt_copy_24dp.png | Bin 0 -> 869 bytes .../drawable-hdpi/ic_action_encrypt_save_24dp.png | Bin 0 -> 871 bytes .../drawable-hdpi/ic_action_encrypt_share_24dp.png | Bin 0 -> 960 bytes .../drawable-hdpi/ic_comment_text_grey600_24dp.png | Bin 0 -> 455 bytes .../drawable-mdpi/ic_action_encrypt_copy_24dp.png | Bin 0 -> 627 bytes .../drawable-mdpi/ic_action_encrypt_save_24dp.png | Bin 0 -> 635 bytes .../drawable-mdpi/ic_action_encrypt_share_24dp.png | Bin 0 -> 674 bytes .../drawable-mdpi/ic_comment_text_grey600_24dp.png | Bin 0 -> 308 bytes .../drawable-xhdpi/ic_action_encrypt_copy_24dp.png | Bin 0 -> 1071 bytes .../drawable-xhdpi/ic_action_encrypt_save_24dp.png | Bin 0 -> 1122 bytes .../ic_action_encrypt_share_24dp.png | Bin 0 -> 1281 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 469 bytes .../ic_action_encrypt_copy_24dp.png | Bin 0 -> 1490 bytes .../ic_action_encrypt_save_24dp.png | Bin 0 -> 1567 bytes .../ic_action_encrypt_share_24dp.png | Bin 0 -> 1880 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 748 bytes .../ic_action_encrypt_copy_24dp.png | Bin 0 -> 1881 bytes .../ic_action_encrypt_save_24dp.png | Bin 0 -> 2080 bytes .../ic_action_encrypt_share_24dp.png | Bin 0 -> 2490 bytes .../ic_comment_text_grey600_24dp.png | Bin 0 -> 882 bytes .../layout/encrypt_decrypt_overview_fragment.xml | 2 +- .../src/main/res/layout/encrypt_files_activity.xml | 2 +- .../src/main/res/layout/encrypt_text_activity.xml | 2 +- .../main/res/layout/toolbar_inner_layout_white.xml | 26 +++++++++ .../main/res/layout/toolbar_standalone_white.xml | 13 +++++ .../src/main/res/menu/encrypt_file_activity.xml | 16 +++++- .../src/main/res/menu/encrypt_text_activity.xml | 16 +++++- OpenKeychain/src/main/res/values/strings.xml | 6 ++- 101 files changed, 272 insertions(+), 10 deletions(-) create mode 100644 Graphics/drawables/ic_action_encrypt_copy.svg create mode 100644 Graphics/drawables/ic_action_encrypt_save.svg create mode 100644 Graphics/drawables/ic_action_encrypt_share.svg create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_18dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_24dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_36dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_48dp.png create mode 100644 Graphics/drawables/originals/comment-text/drawable/comment-text.xml create mode 100644 Graphics/drawables/originals/comment-text/readme.txt create mode 100644 Graphics/drawables/originals/content-copy.svg create mode 100644 Graphics/drawables/originals/content-save.svg create mode 100644 Graphics/drawables/originals/ic_cloud_24dp.svg delete mode 100644 Graphics/drawables/originals/ic_cloud_24px.svg create mode 100644 Graphics/drawables/originals/ic_search_24dp.svg delete mode 100644 Graphics/drawables/originals/ic_search_24px.svg create mode 100644 Graphics/drawables/originals/share-variant.svg create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_comment_text_grey600_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_comment_text_grey600_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_comment_text_grey600_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_comment_text_grey600_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png create mode 100644 OpenKeychain/src/main/res/layout/toolbar_inner_layout_white.xml create mode 100644 OpenKeychain/src/main/res/layout/toolbar_standalone_white.xml diff --git a/Graphics/drawables/ic_action_encrypt_copy.svg b/Graphics/drawables/ic_action_encrypt_copy.svg new file mode 100644 index 000000000..473178295 --- /dev/null +++ b/Graphics/drawables/ic_action_encrypt_copy.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/Graphics/drawables/ic_action_encrypt_save.svg b/Graphics/drawables/ic_action_encrypt_save.svg new file mode 100644 index 000000000..09af0dc88 --- /dev/null +++ b/Graphics/drawables/ic_action_encrypt_save.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/Graphics/drawables/ic_action_encrypt_share.svg b/Graphics/drawables/ic_action_encrypt_share.svg new file mode 100644 index 000000000..6509675e6 --- /dev/null +++ b/Graphics/drawables/ic_action_encrypt_share.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_18dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_18dp.png new file mode 100644 index 000000000..48a199076 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_24dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_24dp.png new file mode 100644 index 000000000..c714df0c5 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_36dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_36dp.png new file mode 100644 index 000000000..8c79f01cd Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_48dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_48dp.png new file mode 100644 index 000000000..1462c86c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_black_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_18dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_18dp.png new file mode 100644 index 000000000..43249ddf8 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_24dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..c48a3b463 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_36dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_36dp.png new file mode 100644 index 000000000..36e7c5ab2 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_48dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_48dp.png new file mode 100644 index 000000000..de5de6042 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_grey600_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_18dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_18dp.png new file mode 100644 index 000000000..d182f623e Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_24dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_24dp.png new file mode 100644 index 000000000..b6eee07b7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_36dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_36dp.png new file mode 100644 index 000000000..07f15d82b Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_48dp.png b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_48dp.png new file mode 100644 index 000000000..64182c537 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-hdpi/ic_comment_text_white_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_18dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_18dp.png new file mode 100644 index 000000000..a5677ee1f Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_24dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_24dp.png new file mode 100644 index 000000000..c477421c7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_36dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_36dp.png new file mode 100644 index 000000000..c714df0c5 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_48dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_48dp.png new file mode 100644 index 000000000..0ddeb8411 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_black_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_18dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_18dp.png new file mode 100644 index 000000000..86169288c Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_24dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..d50c008c7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_36dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_36dp.png new file mode 100644 index 000000000..c48a3b463 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_48dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_48dp.png new file mode 100644 index 000000000..0e14a9500 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_grey600_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_18dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_18dp.png new file mode 100644 index 000000000..d83ee85a4 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_24dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_24dp.png new file mode 100644 index 000000000..a0ec2d374 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_36dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_36dp.png new file mode 100644 index 000000000..b6eee07b7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_48dp.png b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_48dp.png new file mode 100644 index 000000000..edfd394c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-mdpi/ic_comment_text_white_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_18dp.png new file mode 100644 index 000000000..c714df0c5 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_24dp.png new file mode 100644 index 000000000..0ddeb8411 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_36dp.png new file mode 100644 index 000000000..1462c86c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_48dp.png new file mode 100644 index 000000000..b27583006 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_black_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_18dp.png new file mode 100644 index 000000000..c48a3b463 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..0e14a9500 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_36dp.png new file mode 100644 index 000000000..de5de6042 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_48dp.png new file mode 100644 index 000000000..9dae1a4a0 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_grey600_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_18dp.png new file mode 100644 index 000000000..b6eee07b7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_24dp.png new file mode 100644 index 000000000..edfd394c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_36dp.png new file mode 100644 index 000000000..64182c537 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_48dp.png new file mode 100644 index 000000000..2bbe5a4fb Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xhdpi/ic_comment_text_white_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_18dp.png new file mode 100644 index 000000000..8c79f01cd Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_24dp.png new file mode 100644 index 000000000..1462c86c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_36dp.png new file mode 100644 index 000000000..dcbed74fc Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_48dp.png new file mode 100644 index 000000000..b06e29150 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_black_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_18dp.png new file mode 100644 index 000000000..36e7c5ab2 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..de5de6042 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_36dp.png new file mode 100644 index 000000000..adc9c1349 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_48dp.png new file mode 100644 index 000000000..6532b6aa4 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_grey600_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_18dp.png new file mode 100644 index 000000000..07f15d82b Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_24dp.png new file mode 100644 index 000000000..64182c537 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_36dp.png new file mode 100644 index 000000000..6d6107cea Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_48dp.png new file mode 100644 index 000000000..2ce4c9935 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxhdpi/ic_comment_text_white_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_18dp.png new file mode 100644 index 000000000..1462c86c6 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_24dp.png new file mode 100644 index 000000000..b27583006 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_36dp.png new file mode 100644 index 000000000..b06e29150 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_48dp.png new file mode 100644 index 000000000..5fc7d8ab7 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_black_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_18dp.png new file mode 100644 index 000000000..de5de6042 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..9dae1a4a0 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_36dp.png new file mode 100644 index 000000000..6532b6aa4 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_48dp.png new file mode 100644 index 000000000..71a9e5dea Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_grey600_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_18dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_18dp.png new file mode 100644 index 000000000..64182c537 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_18dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_24dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_24dp.png new file mode 100644 index 000000000..2bbe5a4fb Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_24dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_36dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_36dp.png new file mode 100644 index 000000000..2ce4c9935 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_36dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_48dp.png b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_48dp.png new file mode 100644 index 000000000..34ac08b53 Binary files /dev/null and b/Graphics/drawables/originals/comment-text/drawable-xxxhdpi/ic_comment_text_white_48dp.png differ diff --git a/Graphics/drawables/originals/comment-text/drawable/comment-text.xml b/Graphics/drawables/originals/comment-text/drawable/comment-text.xml new file mode 100644 index 000000000..507b362c3 --- /dev/null +++ b/Graphics/drawables/originals/comment-text/drawable/comment-text.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/Graphics/drawables/originals/comment-text/readme.txt b/Graphics/drawables/originals/comment-text/readme.txt new file mode 100644 index 000000000..3adf02a3d --- /dev/null +++ b/Graphics/drawables/originals/comment-text/readme.txt @@ -0,0 +1,5 @@ +Thanks for visiting MaterialDesignIcons.com +Check back often for new icons and follow @MaterialIcons for updates. + +Icon: comment-text +By: Austin Andrews \ No newline at end of file diff --git a/Graphics/drawables/originals/content-copy.svg b/Graphics/drawables/originals/content-copy.svg new file mode 100644 index 000000000..0968db1a7 --- /dev/null +++ b/Graphics/drawables/originals/content-copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Graphics/drawables/originals/content-save.svg b/Graphics/drawables/originals/content-save.svg new file mode 100644 index 000000000..bbd8d5910 --- /dev/null +++ b/Graphics/drawables/originals/content-save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Graphics/drawables/originals/ic_cloud_24dp.svg b/Graphics/drawables/originals/ic_cloud_24dp.svg new file mode 100644 index 000000000..63f946c3e --- /dev/null +++ b/Graphics/drawables/originals/ic_cloud_24dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Graphics/drawables/originals/ic_cloud_24px.svg b/Graphics/drawables/originals/ic_cloud_24px.svg deleted file mode 100644 index 63f946c3e..000000000 --- a/Graphics/drawables/originals/ic_cloud_24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Graphics/drawables/originals/ic_search_24dp.svg b/Graphics/drawables/originals/ic_search_24dp.svg new file mode 100644 index 000000000..12440059b --- /dev/null +++ b/Graphics/drawables/originals/ic_search_24dp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Graphics/drawables/originals/ic_search_24px.svg b/Graphics/drawables/originals/ic_search_24px.svg deleted file mode 100644 index 12440059b..000000000 --- a/Graphics/drawables/originals/ic_search_24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Graphics/drawables/originals/share-variant.svg b/Graphics/drawables/originals/share-variant.svg new file mode 100644 index 000000000..a13fd3521 --- /dev/null +++ b/Graphics/drawables/originals/share-variant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Graphics/update-drawables.sh b/Graphics/update-drawables.sh index 4784af204..8da894725 100755 --- a/Graphics/update-drawables.sh +++ b/Graphics/update-drawables.sh @@ -22,7 +22,7 @@ SRC_DIR=./drawables/ #inkscape -w 512 -h 512 -e "$PLAY_DIR/$NAME.png" $NAME.svg -for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign" +for NAME in "ic_cloud_search" "ic_action_encrypt_file" "ic_action_encrypt_text" "ic_action_verified_cutout" "ic_action_encrypt_copy" "ic_action_encrypt_save" "ic_action_encrypt_share" "status_lock_closed" "status_lock_error" "status_lock_open" "status_signature_expired_cutout" "status_signature_invalid_cutout" "status_signature_revoked_cutout" "status_signature_unknown_cutout" "status_signature_unverified_cutout" "status_signature_verified_cutout" "key_flag_authenticate" "key_flag_certify" "key_flag_encrypt" "key_flag_sign" do echo $NAME inkscape -w 24 -h 24 -e "$MDPI_DIR/${NAME}_24dp.png" "$SRC_DIR/$NAME.svg" diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..f079dce18 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png new file mode 100644 index 000000000..102a54006 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png new file mode 100644 index 000000000..1060be81b Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_comment_text_grey600_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..c48a3b463 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_comment_text_grey600_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..0759d63cd Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png new file mode 100644 index 000000000..a72a7775a Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png new file mode 100644 index 000000000..9497d6445 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_comment_text_grey600_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..d50c008c7 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_comment_text_grey600_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..ed110c7b2 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png new file mode 100644 index 000000000..ee0c3aa1b Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png new file mode 100644 index 000000000..e9872e275 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_comment_text_grey600_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..0e14a9500 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..438b2a9e6 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png new file mode 100644 index 000000000..24e3da727 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png new file mode 100644 index 000000000..7c0309114 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_comment_text_grey600_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..de5de6042 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..560648d52 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png new file mode 100644 index 000000000..c4e7e8a6d Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png new file mode 100644 index 000000000..f93079dfc Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png new file mode 100644 index 000000000..9dae1a4a0 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_comment_text_grey600_24dp.png differ diff --git a/OpenKeychain/src/main/res/layout/encrypt_decrypt_overview_fragment.xml b/OpenKeychain/src/main/res/layout/encrypt_decrypt_overview_fragment.xml index 3ef8e3551..bd640d9af 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_decrypt_overview_fragment.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_decrypt_overview_fragment.xml @@ -45,7 +45,7 @@ android:clickable="true" style="?android:attr/borderlessButtonStyle" android:text="@string/btn_encrypt_text" - android:drawableRight="@drawable/ic_content_copy_grey_24dp" + android:drawableRight="@drawable/ic_comment_text_grey600_24dp" android:drawablePadding="8dp" android:gravity="center_vertical" /> diff --git a/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml index f9efd81b4..ce8b1302c 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml @@ -5,7 +5,7 @@ + layout="@layout/toolbar_standalone_white" /> + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/toolbar_standalone_white.xml b/OpenKeychain/src/main/res/layout/toolbar_standalone_white.xml new file mode 100644 index 000000000..d4269c2ba --- /dev/null +++ b/OpenKeychain/src/main/res/layout/toolbar_standalone_white.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml b/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml index 9a26d1757..f4aeb76c9 100644 --- a/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml +++ b/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml @@ -1,5 +1,19 @@ - + + + + + + - + + + + + + "Select Keys" "Select Your Key" - "Encrypt Text" - "Encrypt Files" + "Encrypt" + "Encrypt" "Decrypt" "Unlock Key" "Add subkey" @@ -75,6 +75,7 @@ "Decrypt and verify message" "Encrypt and save file" "Encrypt and share file" + "Encrypt and save file" "Save" "Cancel" "Delete" @@ -87,6 +88,7 @@ "Fingerprints match" "Lookup key" "Encrypt and share message" + "Encrypt and copy message" "View certification key" "Create key" "Add file(s)" -- cgit v1.2.3 From a03f6d35d6a39e18c81a794e746863792c14a447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 6 Mar 2015 11:14:27 +0100 Subject: Improve way of getting possible names by filtering out emails --- .../keychain/util/ContactHelper.java | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java index c66dc04d0..1de5fca30 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java @@ -43,9 +43,11 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; public class ContactHelper { @@ -54,6 +56,17 @@ public class ContactHelper { public static List getPossibleUserEmails(Context context) { Set accountMails = getAccountEmails(context); accountMails.addAll(getMainProfileContactEmails(context)); + + // remove items that are not an email + Iterator it = accountMails.iterator(); + while (it.hasNext()) { + String email = it.next(); + Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(email); + if (!emailMatcher.matches()) { + it.remove(); + } + } + // now return the Set (without duplicates) as a List return new ArrayList<>(accountMails); } @@ -62,6 +75,17 @@ public class ContactHelper { Set accountMails = getAccountEmails(context); Set names = getContactNamesFromEmails(context, accountMails); names.addAll(getMainProfileContactName(context)); + + // remove items that are an email + Iterator it = names.iterator(); + while (it.hasNext()) { + String email = it.next(); + Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(email); + if (emailMatcher.matches()) { + it.remove(); + } + } + return new ArrayList<>(names); } @@ -256,7 +280,7 @@ public class ContactHelper { } public static Bitmap loadPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId, - boolean highRes) { + boolean highRes) { if (masterKeyId == -1) { return null; } -- cgit v1.2.3 From 4013a36276004e28e25e83684fc3f6b4690d2748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 6 Mar 2015 11:20:45 +0100 Subject: Remove dublicate email check --- .../main/java/org/sufficientlysecure/keychain/util/ContactHelper.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java index 1de5fca30..08c7c02fb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java @@ -99,9 +99,7 @@ public class ContactHelper { final Account[] accounts = AccountManager.get(context).getAccounts(); final Set emailSet = new HashSet<>(); for (Account account : accounts) { - if (Patterns.EMAIL_ADDRESS.matcher(account.name).matches()) { - emailSet.add(account.name); - } + emailSet.add(account.name); } return emailSet; } -- cgit v1.2.3 From c5093433f58d019116ac2d4396f81abae98dbac8 Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Fri, 6 Mar 2015 21:05:54 +0530 Subject: added PassphraseEditText --- .../keychain/ui/CreateKeyInputFragment.java | 19 ++--- .../keychain/ui/widget/PassphraseEditText.java | 84 ++++++++++++++++++++++ .../main/res/layout/create_key_input_fragment.xml | 20 +----- 3 files changed, 92 insertions(+), 31 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java index b496d40fd..d784f0b21 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java @@ -20,6 +20,8 @@ package org.sufficientlysecure.keychain.ui; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -32,6 +34,7 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; import org.sufficientlysecure.keychain.ui.widget.PasswordEditText; +import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; import org.sufficientlysecure.keychain.util.ContactHelper; @@ -39,10 +42,9 @@ public class CreateKeyInputFragment extends Fragment { CreateKeyActivity mCreateKeyActivity; - PasswordStrengthView mPassphraseStrengthView; AutoCompleteTextView mNameEdit; EmailEditText mEmailEdit; - PasswordEditText mPassphraseEdit; + PassphraseEditText mPassphraseEdit; EditText mPassphraseEditAgain; View mCreateButton; @@ -68,11 +70,9 @@ public class CreateKeyInputFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.create_key_input_fragment, container, false); - mPassphraseStrengthView = (PasswordStrengthView) view.findViewById(R.id - .create_key_passphrase_strength); mNameEdit = (AutoCompleteTextView) view.findViewById(R.id.create_key_name); + mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email); - mPassphraseEdit = (PasswordEditText) view.findViewById(R.id.create_key_passphrase); mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); mCreateButton = view.findViewById(R.id.create_key_button); @@ -106,15 +106,6 @@ public class CreateKeyInputFragment extends Fragment { ) ); - // Edit text padding doesn't work via xml (http://code.google.com/p/android/issues/detail?id=77982) - // so we set the right padding programmatically. - mPassphraseEdit.setPadding(mPassphraseEdit.getPaddingLeft(), - mPassphraseEdit.getPaddingTop(), - (int) (56 * getResources().getDisplayMetrics().density), - mPassphraseEdit.getPaddingBottom()); - - mPassphraseEdit.setPasswordStrengthView(mPassphraseStrengthView); - mCreateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java new file mode 100644 index 000000000..bd623165f --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui.widget; + +import android.content.Context; +import android.graphics.Canvas; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.widget.EditText; +import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthBarView; + +/** + * Created by abraham on 6/3/15. + */ +public class PassphraseEditText extends EditText { + + PasswordStrengthBarView mPasswordStrengthBarView; + int mPasswordBarWidth; + int mPasswordBarHeight; + float barGap; + + public PassphraseEditText(Context context, AttributeSet attrs) { + super(context, attrs); + mPasswordBarHeight = (int) (8 * getResources().getDisplayMetrics().density); + mPasswordBarWidth = (int) (50 * getResources().getDisplayMetrics().density); + + barGap = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, + getContext().getResources().getDisplayMetrics()); + + this.setPadding(getPaddingLeft(), getPaddingTop(), + getPaddingRight() + (int) barGap + mPasswordBarWidth, getPaddingBottom()); + + mPasswordStrengthBarView = new PasswordStrengthBarView(context, attrs); + this.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) { + mPasswordStrengthBarView.setPassword(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + mPasswordStrengthBarView.layout(0, 0, mPasswordBarWidth, mPasswordBarHeight); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + float translateX = getScrollX() + canvas.getWidth() - mPasswordBarWidth; + float translateY = (canvas.getHeight() - mPasswordBarHeight) / 2; + canvas.translate(translateX, translateY); + mPasswordStrengthBarView.draw(canvas); + canvas.translate(-translateX, -translateY); + } +} \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index b320885d0..791eda88c 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -58,34 +58,20 @@ android:layout_height="wrap_content" android:text="@string/label_passphrase" /> - - - - - - - Date: Fri, 6 Mar 2015 22:00:30 +0530 Subject: added PassphraseEditText to SetPassphraseDialogFragment --- .../keychain/ui/dialog/SetPassphraseDialogFragment.java | 8 +++----- .../sufficientlysecure/keychain/ui/widget/PassphraseEditText.java | 2 ++ OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java index 9e1f21f60..93d445467 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java @@ -43,6 +43,7 @@ import android.widget.Toast; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; import org.sufficientlysecure.keychain.ui.widget.PasswordEditText; import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; import org.sufficientlysecure.keychain.util.Log; @@ -57,10 +58,9 @@ public class SetPassphraseDialogFragment extends DialogFragment implements OnEdi public static final String MESSAGE_NEW_PASSPHRASE = "new_passphrase"; private Messenger mMessenger; - private PasswordEditText mPassphraseEditText; + private PassphraseEditText mPassphraseEditText; private EditText mPassphraseAgainEditText; private CheckBox mNoPassphraseCheckBox; - private PasswordStrengthView mPassphraseStrengthView; /** * Creates new instance of this dialog fragment @@ -100,11 +100,9 @@ public class SetPassphraseDialogFragment extends DialogFragment implements OnEdi View view = inflater.inflate(R.layout.passphrase_repeat_dialog, null); alert.setView(view); - mPassphraseEditText = (PasswordEditText) view.findViewById(R.id.passphrase_passphrase); + mPassphraseEditText = (PassphraseEditText) view.findViewById(R.id.passphrase_passphrase); mPassphraseAgainEditText = (EditText) view.findViewById(R.id.passphrase_passphrase_again); mNoPassphraseCheckBox = (CheckBox) view.findViewById(R.id.passphrase_no_passphrase); - mPassphraseStrengthView = (PasswordStrengthView) view.findViewById(R.id.passphrase_repeat_passphrase_strength); - mPassphraseEditText.setPasswordStrengthView(mPassphraseStrengthView); if (TextUtils.isEmpty(oldPassphrase)) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java index bd623165f..09aeba5dd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -48,6 +48,8 @@ public class PassphraseEditText extends EditText { getPaddingRight() + (int) barGap + mPasswordBarWidth, getPaddingBottom()); mPasswordStrengthBarView = new PasswordStrengthBarView(context, attrs); + mPasswordStrengthBarView.setShowGuides(false); + this.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { diff --git a/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml b/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml index 11355bbc0..ed14b81c9 100644 --- a/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml +++ b/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml @@ -21,7 +21,7 @@ android:layout_marginTop="8dp" android:layout_marginBottom="8dp"> - Date: Fri, 6 Mar 2015 22:11:33 +0530 Subject: changed default colors for PasswordStrengthView --- .../ui/widget/passwordstrengthindicator/PasswordStrengthView.java | 8 +++++--- OpenKeychain/src/main/res/layout/create_key_input_fragment.xml | 6 +----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java index d7270ff58..bc5018497 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java @@ -56,9 +56,6 @@ import org.sufficientlysecure.keychain.R; */ public class PasswordStrengthView extends View { - protected static final int COLOR_FAIL = Color.parseColor("#e74c3c"); - protected static final int COLOR_WEAK = Color.parseColor("#e67e22"); - protected static final int COLOR_STRONG = Color.parseColor("#2ecc71"); protected int mMinWidth; protected int mMinHeight; @@ -100,6 +97,11 @@ public class PasswordStrengthView extends View { public PasswordStrengthView(Context context, AttributeSet attrs) { super(context, attrs); + + int COLOR_FAIL = context.getResources().getColor(R.color.android_red_light); + int COLOR_WEAK = context.getResources().getColor(R.color.android_orange_light); + int COLOR_STRONG = context.getResources().getColor(R.color.android_green_light); + TypedArray style = context.getTheme().obtainStyledAttributes( attrs, R.styleable.PasswordStrengthView, diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index 791eda88c..1131bf4fc 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -66,11 +66,7 @@ android:inputType="textPassword" android:hint="@string/label_passphrase" android:ems="10" - android:layout_gravity="center_horizontal" - custom:showGuides="false" - custom:color_fail="@color/android_red_light" - custom:color_weak="@color/android_orange_light" - custom:color_strong="@color/android_green_light" /> + android:layout_gravity="center_horizontal" /> Date: Fri, 6 Mar 2015 22:25:35 +0530 Subject: cleaned up code --- .../keychain/ui/CreateKeyInputFragment.java | 79 ++++++++++------------ .../ui/dialog/SetPassphraseDialogFragment.java | 10 +-- .../main/res/layout/passphrase_repeat_dialog.xml | 1 + 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java index d784f0b21..b3de6091e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java @@ -20,8 +20,6 @@ package org.sufficientlysecure.keychain.ui; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.text.Editable; -import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,28 +27,23 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.EditText; - import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; -import org.sufficientlysecure.keychain.ui.widget.PasswordEditText; import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; -import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; import org.sufficientlysecure.keychain.util.ContactHelper; public class CreateKeyInputFragment extends Fragment { + public static final String ARG_NAME = "name"; + public static final String ARG_EMAIL = "email"; CreateKeyActivity mCreateKeyActivity; - AutoCompleteTextView mNameEdit; EmailEditText mEmailEdit; PassphraseEditText mPassphraseEdit; EditText mPassphraseEditAgain; View mCreateButton; - public static final String ARG_NAME = "name"; - public static final String ARG_EMAIL = "email"; - /** * Creates new instance of this fragment */ @@ -66,6 +59,40 @@ public class CreateKeyInputFragment extends Fragment { return frag; } + /** + * Checks if text of given EditText is not empty. If it is empty an error is + * set and the EditText gets the focus. + * + * @param context + * @param editText + * @return true if EditText is not empty + */ + private static boolean isEditTextNotEmpty(Context context, EditText editText) { + boolean output = true; + if (editText.getText().toString().length() == 0) { + editText.setError(context.getString(R.string.create_key_empty)); + editText.requestFocus(); + output = false; + } else { + editText.setError(null); + } + + return output; + } + + private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) { + boolean output = true; + if (!editText1.getText().toString().equals(editText2.getText().toString())) { + editText2.setError(context.getString(R.string.create_key_passphrases_not_equal)); + editText2.requestFocus(); + output = false; + } else { + editText2.setError(null); + } + + return output; + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.create_key_input_fragment, container, false); @@ -156,38 +183,4 @@ public class CreateKeyInputFragment extends Fragment { inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); } - /** - * Checks if text of given EditText is not empty. If it is empty an error is - * set and the EditText gets the focus. - * - * @param context - * @param editText - * @return true if EditText is not empty - */ - private static boolean isEditTextNotEmpty(Context context, EditText editText) { - boolean output = true; - if (editText.getText().toString().length() == 0) { - editText.setError(context.getString(R.string.create_key_empty)); - editText.requestFocus(); - output = false; - } else { - editText.setError(null); - } - - return output; - } - - private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) { - boolean output = true; - if (!editText1.getText().toString().equals(editText2.getText().toString())) { - editText2.setError(context.getString(R.string.create_key_passphrases_not_equal)); - editText2.requestFocus(); - output = false; - } else { - editText2.setError(null); - } - - return output; - } - } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java index 93d445467..21f711eca 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java @@ -33,19 +33,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.TextView; +import android.widget.*; import android.widget.TextView.OnEditorActionListener; -import android.widget.Toast; - import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; -import org.sufficientlysecure.keychain.ui.widget.PasswordEditText; -import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; import org.sufficientlysecure.keychain.util.Log; public class SetPassphraseDialogFragment extends DialogFragment implements OnEditorActionListener { diff --git a/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml b/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml index ed14b81c9..5f323716c 100644 --- a/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml +++ b/OpenKeychain/src/main/res/layout/passphrase_repeat_dialog.xml @@ -29,6 +29,7 @@ android:layout_marginBottom="8dp" android:imeOptions="actionNext" android:hint="@string/label_passphrase" + android:inputType="textPassword" android:ems="10" android:layout_gravity="center_horizontal" /> -- cgit v1.2.3 From 976c40e45f0cf3b3e5884aecfda2ba5ba0dcc549 Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Fri, 6 Mar 2015 22:42:37 +0530 Subject: removed created by comment --- .../org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java index 09aeba5dd..949959120 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -26,9 +26,6 @@ import android.util.TypedValue; import android.widget.EditText; import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthBarView; -/** - * Created by abraham on 6/3/15. - */ public class PassphraseEditText extends EditText { PasswordStrengthBarView mPasswordStrengthBarView; -- cgit v1.2.3 From f181a1ecbe02c5fd157c8f4718af226ac39a017f Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Sat, 7 Mar 2015 13:07:28 +0530 Subject: minor code style correction --- .../sufficientlysecure/keychain/ui/CreateKeyInputFragment.java | 1 + .../keychain/ui/dialog/SetPassphraseDialogFragment.java | 8 +++++++- .../sufficientlysecure/keychain/ui/widget/PassphraseEditText.java | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java index b3de6091e..ecc609212 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java @@ -27,6 +27,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.EditText; + import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java index 21f711eca..b34dc2edc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java @@ -33,8 +33,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; -import android.widget.*; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; +import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; +import android.widget.Toast; + import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java index 949959120..11d9e8fd0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -24,6 +24,7 @@ import android.text.TextWatcher; import android.util.AttributeSet; import android.util.TypedValue; import android.widget.EditText; + import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthBarView; public class PassphraseEditText extends EditText { @@ -40,7 +41,7 @@ public class PassphraseEditText extends EditText { barGap = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getContext().getResources().getDisplayMetrics()); - + this.setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight() + (int) barGap + mPasswordBarWidth, getPaddingBottom()); -- cgit v1.2.3 From 820005bc378ba91a9851902b651dfff7836c9bbf Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Sun, 8 Mar 2015 12:57:37 +0530 Subject: minor xml code style correction --- .../src/main/res/layout/create_key_input_fragment.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index 1131bf4fc..850f22716 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -59,14 +59,14 @@ android:text="@string/label_passphrase" /> + android:id="@+id/create_key_passphrase" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionNext" + android:inputType="textPassword" + android:hint="@string/label_passphrase" + android:ems="10" + android:layout_gravity="center_horizontal" /> Date: Mon, 9 Mar 2015 12:59:35 +0100 Subject: Removed unused PasswordEditText --- .../keychain/ui/widget/PasswordEditText.java | 101 --------------------- 1 file changed, 101 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java deleted file mode 100644 index 04c48922b..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui.widget; - -import android.annotation.TargetApi; -import android.content.Context; -import android.os.Build; -import android.text.Editable; -import android.text.InputType; -import android.text.TextWatcher; -import android.util.AttributeSet; -import android.widget.EditText; - -import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; - -/** - * Developer: chipset - * Package : org.sufficientlysecure.keychain.layouts - * Project : open-keychain - * Date : 6/3/15 - */ -public class PasswordEditText extends EditText { - - PasswordEditText passwordEditText; - PasswordStrengthView passwordStrengthView; - - public PasswordEditText(Context context) { - super(context); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - public PasswordEditText(Context context, AttributeSet attrs) { - super(context, attrs); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - public PasswordEditText(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - @TargetApi(Build.VERSION_CODES.LOLLIPOP) - public PasswordEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - - TextWatcher textWatcher = 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 editable) { - String passphrase = editable.toString(); - passwordStrengthView.setPassword(passphrase); - } - }; - -// public PasswordStrengthView getPasswordStrengthView() { -// return passwordStrengthView; -// } - - public void setPasswordStrengthView(PasswordStrengthView mPasswordStrengthView) { - this.passwordStrengthView = mPasswordStrengthView; - } -} -- cgit v1.2.3 From cf2aa349707bd393691ad69db205827a91412410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 13:18:21 +0100 Subject: Fix padding in create key --- OpenKeychain/src/main/res/layout/create_key_input_fragment.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index 850f22716..211c04d77 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -62,6 +62,8 @@ android:id="@+id/create_key_passphrase" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" android:imeOptions="actionNext" android:inputType="textPassword" android:hint="@string/label_passphrase" -- cgit v1.2.3 From e2c502a51131927ddc9cd9fba5e56c2642dd377a Mon Sep 17 00:00:00 2001 From: chipset95 Date: Mon, 9 Mar 2015 17:55:46 +0530 Subject: Improved EmailEditText, Added NameEditText, Removed PasswordEditText #1106 --- .../keychain/ui/widget/EmailEditText.java | 21 +++++ .../keychain/ui/widget/NameEditText.java | 64 +++++++++++++ .../keychain/ui/widget/PasswordEditText.java | 101 --------------------- 3 files changed, 85 insertions(+), 101 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java index 697f5a61e..e7ef788d8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java @@ -25,6 +25,7 @@ import android.text.InputType; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.Patterns; +import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; @@ -41,6 +42,8 @@ public class EmailEditText extends AutoCompleteTextView { emailEditText = this; this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); this.addTextChangedListener(textWatcher); + removeFlag(); + makeAdapter(); } public EmailEditText(Context context, AttributeSet attrs) { @@ -48,6 +51,8 @@ public class EmailEditText extends AutoCompleteTextView { emailEditText = this; this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); this.addTextChangedListener(textWatcher); + removeFlag(); + makeAdapter(); } public EmailEditText(Context context, AttributeSet attrs, int defStyleAttr) { @@ -55,6 +60,8 @@ public class EmailEditText extends AutoCompleteTextView { emailEditText = this; this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); this.addTextChangedListener(textWatcher); + removeFlag(); + makeAdapter(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) @@ -63,6 +70,8 @@ public class EmailEditText extends AutoCompleteTextView { emailEditText = this; this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); this.addTextChangedListener(textWatcher); + removeFlag(); + makeAdapter(); } TextWatcher textWatcher = new TextWatcher() { @@ -94,4 +103,16 @@ public class EmailEditText extends AutoCompleteTextView { } } }; + + private void makeAdapter() { + this.setThreshold(1); // Start working from first character + this.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, + ContactHelper.getPossibleUserEmails(getContext()))); + } + + private void removeFlag() { + int inputType = getInputType(); + inputType &= ~EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE; + setRawInputType(inputType); + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java new file mode 100644 index 000000000..c7dfa6359 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui.widget; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.inputmethod.EditorInfo; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; + +import org.sufficientlysecure.keychain.util.ContactHelper; + +public class NameEditText extends AutoCompleteTextView { + public NameEditText(Context context) { + super(context); + removeFlag(); + } + + public NameEditText(Context context, AttributeSet attrs) { + super(context, attrs); + removeFlag(); + } + + public NameEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + removeFlag(); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public NameEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + removeFlag(); + } + + private void removeFlag() { + int inputType = getInputType(); + inputType &= ~EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE; + setRawInputType(inputType); + } + + private void makeAdapter() { + this.setThreshold(1); // Start working from first character + this.setAdapter(new ArrayAdapter<>( + getContext(), android.R.layout.simple_spinner_dropdown_item, + ContactHelper.getPossibleUserNames(getContext()))); + } +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java deleted file mode 100644 index 04c48922b..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PasswordEditText.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui.widget; - -import android.annotation.TargetApi; -import android.content.Context; -import android.os.Build; -import android.text.Editable; -import android.text.InputType; -import android.text.TextWatcher; -import android.util.AttributeSet; -import android.widget.EditText; - -import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; - -/** - * Developer: chipset - * Package : org.sufficientlysecure.keychain.layouts - * Project : open-keychain - * Date : 6/3/15 - */ -public class PasswordEditText extends EditText { - - PasswordEditText passwordEditText; - PasswordStrengthView passwordStrengthView; - - public PasswordEditText(Context context) { - super(context); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - public PasswordEditText(Context context, AttributeSet attrs) { - super(context, attrs); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - public PasswordEditText(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - @TargetApi(Build.VERSION_CODES.LOLLIPOP) - public PasswordEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - passwordEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - this.addTextChangedListener(textWatcher); - } - - - TextWatcher textWatcher = 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 editable) { - String passphrase = editable.toString(); - passwordStrengthView.setPassword(passphrase); - } - }; - -// public PasswordStrengthView getPasswordStrengthView() { -// return passwordStrengthView; -// } - - public void setPasswordStrengthView(PasswordStrengthView mPasswordStrengthView) { - this.passwordStrengthView = mPasswordStrengthView; - } -} -- cgit v1.2.3 From c50dceab32cd84349cfd414f8b64b8dea5bb209b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 13:27:24 +0100 Subject: Improve icons --- Graphics/drawables/ic_action_encrypt_copy.svg | 12 +++++------ Graphics/drawables/ic_action_encrypt_save.svg | 18 ++++++++--------- Graphics/drawables/ic_action_encrypt_share.svg | 22 ++++++++++----------- .../drawable-hdpi/ic_action_encrypt_copy_24dp.png | Bin 869 -> 594 bytes .../drawable-hdpi/ic_action_encrypt_save_24dp.png | Bin 871 -> 638 bytes .../drawable-hdpi/ic_action_encrypt_share_24dp.png | Bin 960 -> 686 bytes .../drawable-mdpi/ic_action_encrypt_copy_24dp.png | Bin 627 -> 464 bytes .../drawable-mdpi/ic_action_encrypt_save_24dp.png | Bin 635 -> 447 bytes .../drawable-mdpi/ic_action_encrypt_share_24dp.png | Bin 674 -> 487 bytes .../drawable-xhdpi/ic_action_encrypt_copy_24dp.png | Bin 1071 -> 698 bytes .../drawable-xhdpi/ic_action_encrypt_save_24dp.png | Bin 1122 -> 750 bytes .../ic_action_encrypt_share_24dp.png | Bin 1281 -> 887 bytes .../ic_action_encrypt_copy_24dp.png | Bin 1490 -> 944 bytes .../ic_action_encrypt_save_24dp.png | Bin 1567 -> 1105 bytes .../ic_action_encrypt_share_24dp.png | Bin 1880 -> 1334 bytes .../ic_action_encrypt_copy_24dp.png | Bin 1881 -> 1208 bytes .../ic_action_encrypt_save_24dp.png | Bin 2080 -> 1417 bytes .../ic_action_encrypt_share_24dp.png | Bin 2490 -> 1872 bytes OpenKeychain/src/main/res/values/strings.xml | 14 ++++++------- 19 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Graphics/drawables/ic_action_encrypt_copy.svg b/Graphics/drawables/ic_action_encrypt_copy.svg index 473178295..229c2524b 100644 --- a/Graphics/drawables/ic_action_encrypt_copy.svg +++ b/Graphics/drawables/ic_action_encrypt_copy.svg @@ -36,24 +36,24 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1364" - inkscape:window-height="747" + inkscape:window-width="2558" + inkscape:window-height="1419" id="namedview6" showgrid="false" inkscape:zoom="9.8333333" - inkscape:cx="12" + inkscape:cx="12.20339" inkscape:cy="12" inkscape:window-x="0" inkscape:window-y="19" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> + style="fill:#000000" /> diff --git a/Graphics/drawables/ic_action_encrypt_save.svg b/Graphics/drawables/ic_action_encrypt_save.svg index 09af0dc88..7bb435a5d 100644 --- a/Graphics/drawables/ic_action_encrypt_save.svg +++ b/Graphics/drawables/ic_action_encrypt_save.svg @@ -36,24 +36,24 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1364" - inkscape:window-height="747" + inkscape:window-width="2558" + inkscape:window-height="1419" id="namedview6" showgrid="false" inkscape:zoom="9.8333333" - inkscape:cx="12" + inkscape:cx="12.20339" inkscape:cy="12" inkscape:window-x="0" inkscape:window-y="19" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> + inkscape:connector-curvature="0" + d="M 12.355932,11.847458 H 4.7288135 V 8.7966102 H 12.355932 M 10.067797,19.474576 a 2.2881356,2.2881356 0 0 1 -2.288136,-2.288135 2.2881356,2.2881356 0 0 1 2.288136,-2.288136 2.2881356,2.2881356 0 0 1 2.288135,2.288136 2.2881356,2.2881356 0 0 1 -2.288135,2.288135 M 13.881356,7.2711864 H 4.7288135 c -0.8466101,0 -1.5254237,0.6864407 -1.5254237,1.5254238 V 19.474576 A 1.5254237,1.5254237 0 0 0 4.7288135,21 H 15.40678 a 1.5254237,1.5254237 0 0 0 1.525424,-1.525424 V 10.322034 L 13.881356,7.2711864 z" + id="path4-7" /> + style="fill:#000000" /> diff --git a/Graphics/drawables/ic_action_encrypt_share.svg b/Graphics/drawables/ic_action_encrypt_share.svg index 6509675e6..35d0d3960 100644 --- a/Graphics/drawables/ic_action_encrypt_share.svg +++ b/Graphics/drawables/ic_action_encrypt_share.svg @@ -36,24 +36,24 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1364" - inkscape:window-height="747" + inkscape:window-width="2558" + inkscape:window-height="1419" id="namedview6" showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12" - inkscape:cy="12" + inkscape:zoom="13.906433" + inkscape:cx="16.307191" + inkscape:cy="17.104487" inkscape:window-x="0" inkscape:window-y="19" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> + inkscape:connector-curvature="0" + d="m 13.957374,17.775285 c -0.544868,0 -1.032382,0.215079 -1.405187,0.552038 L 7.4404597,15.352054 c 0.035847,-0.164895 0.064524,-0.329789 0.064524,-0.501853 0,-0.172063 -0.028677,-0.336958 -0.064524,-0.501852 l 5.0543733,-2.946592 c 0.387142,0.358465 0.896165,0.580715 1.462541,0.580715 a 2.1507969,2.1507969 0 0 0 2.150798,-2.1507972 2.1507969,2.1507969 0 0 0 -2.150798,-2.150797 2.1507969,2.1507969 0 0 0 -2.150796,2.150797 c 0,0.1720642 0.02868,0.3369582 0.06452,0.5018532 l -5.0543685,2.94659 C 6.4295852,12.921653 5.9205632,12.699404 5.3541867,12.699404 a 2.1507969,2.1507969 0 0 0 -2.1507969,2.150797 2.1507969,2.1507969 0 0 0 2.1507969,2.150796 c 0.5663765,0 1.0753985,-0.222248 1.4625419,-0.580715 l 5.1045584,2.975269 c -0.03585,0.150556 -0.05735,0.308281 -0.05735,0.473176 0,1.154261 0.939182,2.086273 2.093442,2.086273 1.154262,0 2.093443,-0.932012 2.093443,-2.086273 a 2.0934423,2.0934423 0 0 0 -2.093443,-2.093442 z" + id="path4-9" /> + style="fill:#000000" /> diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png index f079dce18..25a7ed445 100644 Binary files a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png index 102a54006..ef17796fb 100644 Binary files a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png index 1060be81b..402d792c0 100644 Binary files a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png and b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png index 0759d63cd..9517e1fec 100644 Binary files a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png index a72a7775a..162981140 100644 Binary files a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png index 9497d6445..779ba94d3 100644 Binary files a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png and b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png index ed110c7b2..9df8ff01a 100644 Binary files a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png index ee0c3aa1b..eef0635b7 100644 Binary files a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png index e9872e275..d359cd6ab 100644 Binary files a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png index 438b2a9e6..cf184c78d 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png index 24e3da727..5620e2595 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png index 7c0309114..b364c7603 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png index 560648d52..c3078ee92 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png index c4e7e8a6d..4146f9262 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_save_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png index f93079dfc..925cb2d9e 100644 Binary files a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_share_24dp.png differ diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index a53558532..39af9ca28 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -25,7 +25,7 @@ "Share fingerprint with…" "Share key with…" "Share file with…" - "Share message with…" + "Share text with…" "Encrypt To File" "Decrypt To File" "Import Keys" @@ -72,7 +72,7 @@ "Decrypt, verify, and save file" - "Decrypt and verify message" + "Decrypt and verify text" "Encrypt and save file" "Encrypt and share file" "Encrypt and save file" @@ -87,8 +87,8 @@ "No" "Fingerprints match" "Lookup key" - "Encrypt and share message" - "Encrypt and copy message" + "Encrypt and share text" + "Encrypt and copy text" "View certification key" "Create key" "Add file(s)" @@ -120,7 +120,7 @@ "Export Log" - "Message" + "Text" "File" "File(s)" "File:" @@ -145,7 +145,7 @@ "Encrypt with passphrase" "Cache time" "Cache passphrases by subkey" - "Message compression" + "Text compression" "File compression" "Keyservers" "Key ID" @@ -558,7 +558,7 @@ "This key is neither revoked nor expired.\nYou haven’t confirmed it, but you may choose to trust it." "This key has been revoked by its owner. You should not trust it." "This key has expired. You should not trust it." - " It may be OK to use this to decrypt an old message dating from the time when this key was valid." + "It may be OK to use this to decrypt an old message dating from the time when this key was valid." "No proof from the cloud on this key’s trustworthiness." "Start search" "Keybase.io offers “proofs” which assert that the owner of this key: " -- cgit v1.2.3 From c55353e2b80faca6886293f744a48753b6435f71 Mon Sep 17 00:00:00 2001 From: chipset95 Date: Mon, 9 Mar 2015 18:12:44 +0530 Subject: Implemented NameEditText --- .../keychain/ui/CreateKeyInputFragment.java | 26 ++--------- .../ui/dialog/AddUserIdDialogFragment.java | 25 ++--------- .../ui/widget/AutoCorrectAutoCompleteTextView.java | 51 ---------------------- .../keychain/ui/widget/NameEditText.java | 4 ++ .../src/main/res/layout/add_user_id_dialog.xml | 2 +- .../main/res/layout/create_key_input_fragment.xml | 2 +- 6 files changed, 12 insertions(+), 98 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java index ecc609212..05408e21e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java @@ -24,22 +24,20 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; -import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; import android.widget.EditText; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; +import org.sufficientlysecure.keychain.ui.widget.NameEditText; import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; -import org.sufficientlysecure.keychain.util.ContactHelper; public class CreateKeyInputFragment extends Fragment { public static final String ARG_NAME = "name"; public static final String ARG_EMAIL = "email"; CreateKeyActivity mCreateKeyActivity; - AutoCompleteTextView mNameEdit; + NameEditText mNameEdit; EmailEditText mEmailEdit; PassphraseEditText mPassphraseEdit; EditText mPassphraseEditAgain; @@ -98,7 +96,7 @@ public class CreateKeyInputFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.create_key_input_fragment, container, false); - mNameEdit = (AutoCompleteTextView) view.findViewById(R.id.create_key_name); + mNameEdit = (NameEditText) view.findViewById(R.id.create_key_name); mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email); mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); @@ -116,24 +114,6 @@ public class CreateKeyInputFragment extends Fragment { } else if (name != null) { mEmailEdit.requestFocus(); } - - mEmailEdit.setThreshold(1); // Start working from first character - mEmailEdit.setAdapter( - new ArrayAdapter<> - (getActivity(), android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserEmails(getActivity()) - ) - ); - - - mNameEdit.setThreshold(1); // Start working from first character - mNameEdit.setAdapter( - new ArrayAdapter<> - (getActivity(), android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserNames(getActivity()) - ) - ); - mCreateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddUserIdDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddUserIdDialogFragment.java index ee4af8cbe..5dd675fd3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddUserIdDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddUserIdDialogFragment.java @@ -33,8 +33,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; -import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; @@ -44,7 +42,7 @@ import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; -import org.sufficientlysecure.keychain.util.ContactHelper; +import org.sufficientlysecure.keychain.ui.widget.NameEditText; import org.sufficientlysecure.keychain.util.Log; public class AddUserIdDialogFragment extends DialogFragment implements OnEditorActionListener { @@ -57,7 +55,7 @@ public class AddUserIdDialogFragment extends DialogFragment implements OnEditorA public static final String MESSAGE_DATA_USER_ID = "user_id"; private Messenger mMessenger; - private AutoCompleteTextView mName; + private NameEditText mName; private EmailEditText mEmail; private EditText mComment; @@ -81,11 +79,6 @@ public class AddUserIdDialogFragment extends DialogFragment implements OnEditorA mMessenger = getArguments().getParcelable(ARG_MESSENGER); String predefinedName = getArguments().getString(ARG_NAME); - ArrayAdapter autoCompleteEmailAdapter = new ArrayAdapter<> - (getActivity(), android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserEmails(getActivity()) - ); - CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(activity); alert.setTitle(R.string.edit_key_action_add_identity); @@ -94,16 +87,12 @@ public class AddUserIdDialogFragment extends DialogFragment implements OnEditorA View view = inflater.inflate(R.layout.add_user_id_dialog, null); alert.setView(view); - mName = (AutoCompleteTextView) view.findViewById(R.id.add_user_id_name); + mName = (NameEditText) view.findViewById(R.id.add_user_id_name); mEmail = (EmailEditText) view.findViewById(R.id.add_user_id_address); mComment = (EditText) view.findViewById(R.id.add_user_id_comment); mName.setText(predefinedName); - - mEmail.setThreshold(1); // Start working from first character - mEmail.setAdapter(autoCompleteEmailAdapter); - alert.setPositiveButton(android.R.string.ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { @@ -118,14 +107,6 @@ public class AddUserIdDialogFragment extends DialogFragment implements OnEditorA } }); - mName.setThreshold(1); // Start working from first character - mName.setAdapter( - new ArrayAdapter<> - (getActivity(), android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserNames(getActivity()) - ) - ); - alert.setNegativeButton(android.R.string.cancel, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java deleted file mode 100644 index ed373a938..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui.widget; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.inputmethod.EditorInfo; -import android.widget.AutoCompleteTextView; - -/** - * Hack to re-enable keyboard auto correction in AutoCompleteTextView. - * From http://stackoverflow.com/a/22512858 - */ -public class AutoCorrectAutoCompleteTextView extends AutoCompleteTextView { - - public AutoCorrectAutoCompleteTextView(Context context) { - super(context); - removeFlag(); - } - - public AutoCorrectAutoCompleteTextView(Context context, AttributeSet attrs) { - super(context, attrs); - removeFlag(); - } - - public AutoCorrectAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - removeFlag(); - } - - private void removeFlag() { - int inputType = getInputType(); - inputType &= ~EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE; - setRawInputType(inputType); - } -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java index c7dfa6359..895cd45ec 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java @@ -31,22 +31,26 @@ public class NameEditText extends AutoCompleteTextView { public NameEditText(Context context) { super(context); removeFlag(); + makeAdapter(); } public NameEditText(Context context, AttributeSet attrs) { super(context, attrs); removeFlag(); + makeAdapter(); } public NameEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); removeFlag(); + makeAdapter(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NameEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); removeFlag(); + makeAdapter(); } private void removeFlag() { diff --git a/OpenKeychain/src/main/res/layout/add_user_id_dialog.xml b/OpenKeychain/src/main/res/layout/add_user_id_dialog.xml index c1b97b02c..ffb7493f6 100644 --- a/OpenKeychain/src/main/res/layout/add_user_id_dialog.xml +++ b/OpenKeychain/src/main/res/layout/add_user_id_dialog.xml @@ -16,7 +16,7 @@ android:imeOptions="actionNext" android:textAppearance="?android:attr/textAppearanceMedium" /> - - Date: Mon, 9 Mar 2015 16:03:58 +0100 Subject: Redesign of encrypt activites finished --- Graphics/get-material-icons.sh | 1 + .../keychain/ui/BaseActivity.java | 12 ++- .../keychain/ui/DecryptFilesActivity.java | 11 +++ .../keychain/ui/DecryptTextActivity.java | 10 +++ .../keychain/ui/EncryptActivity.java | 33 ++++++++ .../keychain/ui/EncryptFilesActivity.java | 32 +++----- .../keychain/ui/EncryptFilesFragment.java | 41 +++++----- .../keychain/ui/EncryptTextFragment.java | 41 ++++++---- .../main/res/drawable-hdpi/ic_close_black_24dp.png | Bin 0 -> 301 bytes .../main/res/drawable-mdpi/ic_close_black_24dp.png | Bin 0 -> 257 bytes .../res/drawable-xhdpi/ic_close_black_24dp.png | Bin 0 -> 360 bytes .../res/drawable-xxhdpi/ic_close_black_24dp.png | Bin 0 -> 425 bytes .../res/drawable-xxxhdpi/ic_close_black_24dp.png | Bin 0 -> 565 bytes .../src/main/res/layout/decrypt_files_activity.xml | 2 +- .../src/main/res/layout/decrypt_text_activity.xml | 2 +- .../src/main/res/layout/encrypt_files_fragment.xml | 83 ++++----------------- .../src/main/res/layout/encrypt_text_fragment.xml | 45 ----------- 17 files changed, 141 insertions(+), 172 deletions(-) create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_close_black_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_close_black_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_close_black_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_close_black_24dp.png diff --git a/Graphics/get-material-icons.sh b/Graphics/get-material-icons.sh index d34e572fc..3bfec249f 100755 --- a/Graphics/get-material-icons.sh +++ b/Graphics/get-material-icons.sh @@ -11,6 +11,7 @@ python copy OpenKeychain av white repeat 24 python copy OpenKeychain av grey repeat 24 python copy OpenKeychain editor white mode_edit 24 python copy OpenKeychain content white save 24 +python copy OpenKeychain navigation black close 24 python copy OpenKeychain action grey delete 24 python copy OpenKeychain action grey done 24 diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BaseActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BaseActivity.java index e6c2542a2..41fa50705 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BaseActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BaseActivity.java @@ -88,12 +88,20 @@ public abstract class BaseActivity extends ActionBarActivity { /** * Close button only */ - protected void setFullScreenDialogClose(View.OnClickListener cancelOnClickListener) { - setActionBarIcon(R.drawable.ic_close_white_24dp); + protected void setFullScreenDialogClose(View.OnClickListener cancelOnClickListener, boolean white) { + if (white) { + setActionBarIcon(R.drawable.ic_close_white_24dp); + } else { + setActionBarIcon(R.drawable.ic_close_black_24dp); + } getSupportActionBar().setDisplayShowTitleEnabled(true); mToolbar.setNavigationOnClickListener(cancelOnClickListener); } + protected void setFullScreenDialogClose(View.OnClickListener cancelOnClickListener) { + setFullScreenDialogClose(cancelOnClickListener, true); + } + /** * Inflate custom design with two buttons using drawables. * This does not conform to the Material Design Guidelines, but we deviate here as this is used diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesActivity.java index 89dd4970b..162b10eca 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesActivity.java @@ -17,9 +17,12 @@ package org.sufficientlysecure.keychain.ui; +import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.os.PersistableBundle; +import android.view.View; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; @@ -40,6 +43,14 @@ public class DecryptFilesActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setFullScreenDialogClose(new View.OnClickListener() { + @Override + public void onClick(View v) { + setResult(Activity.RESULT_CANCELED); + finish(); + } + }, false); + // Handle intent actions handleActions(savedInstanceState, getIntent()); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java index 81a8a2ac4..1e9e7bcb1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java @@ -18,9 +18,11 @@ package org.sufficientlysecure.keychain.ui; +import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; +import android.view.View; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; @@ -49,6 +51,14 @@ public class DecryptTextActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setFullScreenDialogClose(new View.OnClickListener() { + @Override + public void onClick(View v) { + setResult(Activity.RESULT_CANCELED); + finish(); + } + }, false); + // Handle intent actions handleActions(savedInstanceState, getIntent()); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java index 0d7e6056e..c595cc5b8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -1,10 +1,30 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package org.sufficientlysecure.keychain.ui; +import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.os.Messenger; +import android.os.PersistableBundle; +import android.view.View; import org.openintents.openpgp.util.OpenPgpApi; import org.sufficientlysecure.keychain.R; @@ -26,6 +46,19 @@ public abstract class EncryptActivity extends BaseActivity { protected Date mNfcTimestamp = null; protected byte[] mNfcHash = null; + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setFullScreenDialogClose(new View.OnClickListener() { + @Override + public void onClick(View v) { + setResult(Activity.RESULT_CANCELED); + finish(); + } + }, false); + } + protected void startPassphraseDialog(long subkeyId) { Intent intent = new Intent(this, PassphraseDialogActivity.class); intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, subkeyId); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index 11b596c24..eba19df6d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -314,15 +314,6 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // if called with an intent action, do not init drawer navigation - if (ACTION_ENCRYPT_DATA.equals(getIntent().getAction())) { - // lock drawer -// deactivateDrawerNavigation(); - // TODO: back button to key? - } else { -// activateDrawerNavigation(savedInstanceState); - } - // Handle intent actions handleActions(getIntent()); updateModeFragment(); @@ -339,17 +330,6 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi return super.onCreateOptionsMenu(menu); } - private void updateModeFragment() { - getSupportFragmentManager().beginTransaction() - .replace(R.id.encrypt_pager_mode, - mCurrentMode == MODE_SYMMETRIC - ? new EncryptSymmetricFragment() - : new EncryptAsymmetricFragment() - ) - .commitAllowingStateLoss(); - getSupportFragmentManager().executePendingTransactions(); - } - @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.isCheckable()) { @@ -384,6 +364,17 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi return true; } + private void updateModeFragment() { + getSupportFragmentManager().beginTransaction() + .replace(R.id.encrypt_pager_mode, + mCurrentMode == MODE_SYMMETRIC + ? new EncryptSymmetricFragment() + : new EncryptAsymmetricFragment() + ) + .commitAllowingStateLoss(); + getSupportFragmentManager().executePendingTransactions(); + } + /** * Handles all actions with this intent * @@ -428,7 +419,6 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi // Save uris mInputUris = uris; - } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java index 860bd8502..ace58b165 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java @@ -27,6 +27,7 @@ import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; @@ -56,7 +57,6 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt // view private View mAddView; - private View mShareFile; private ListView mSelectedFiles; private SelectedFilesAdapter mAdapter = new SelectedFilesAdapter(); private final Map thumbnailCache = new HashMap<>(); @@ -78,21 +78,6 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.encrypt_files_fragment, container, false); - View vEncryptFile = view.findViewById(R.id.action_encrypt_file); - vEncryptFile.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - encryptClicked(false); - } - }); - mShareFile = view.findViewById(R.id.action_encrypt_share); - mShareFile.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - encryptClicked(true); - } - }); - mAddView = inflater.inflate(R.layout.file_list_entry_add, null); mAddView.setOnClickListener(new View.OnClickListener() { @Override @@ -108,8 +93,10 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt } @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setHasOptionsMenu(true); } private void addInputUri() { @@ -191,6 +178,24 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt return false; } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.encrypt_save: { + encryptClicked(false); + break; + } + case R.id.encrypt_share: { + encryptClicked(true); + break; + } + default: { + return super.onOptionsItemSelected(item); + } + } + return true; + } + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextFragment.java index b13cb7837..5d9994c5c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextFragment.java @@ -23,6 +23,7 @@ import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -33,8 +34,6 @@ public class EncryptTextFragment extends Fragment { public static final String ARG_TEXT = "text"; private TextView mText; - private View mEncryptShare; - private View mEncryptClipboard; private EncryptActivityInterface mEncryptInterface; @@ -72,24 +71,16 @@ public class EncryptTextFragment extends Fragment { mEncryptInterface.setMessage(s.toString()); } }); - mEncryptClipboard = view.findViewById(R.id.action_encrypt_clipboard); - mEncryptShare = view.findViewById(R.id.action_encrypt_share); - mEncryptClipboard.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mEncryptInterface.startEncrypt(false); - } - }); - mEncryptShare.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mEncryptInterface.startEncrypt(true); - } - }); return view; } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setHasOptionsMenu(true); + } @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -100,4 +91,22 @@ public class EncryptTextFragment extends Fragment { mText.setText(text); } } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.encrypt_copy: { + mEncryptInterface.startEncrypt(false); + break; + } + case R.id.encrypt_share: { + mEncryptInterface.startEncrypt(true); + break; + } + default: { + return super.onOptionsItemSelected(item); + } + } + return true; + } } diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_close_black_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_close_black_24dp.png new file mode 100644 index 000000000..d5a928783 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_close_black_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_close_black_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_close_black_24dp.png new file mode 100644 index 000000000..4ebf8a227 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_close_black_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_close_black_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_close_black_24dp.png new file mode 100644 index 000000000..ed2b2525f Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_close_black_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png new file mode 100644 index 000000000..08f59ea1e Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_close_black_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_close_black_24dp.png new file mode 100644 index 000000000..c5d79caff Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_close_black_24dp.png differ diff --git a/OpenKeychain/src/main/res/layout/decrypt_files_activity.xml b/OpenKeychain/src/main/res/layout/decrypt_files_activity.xml index 3cf4a9e7b..3d214dbf6 100644 --- a/OpenKeychain/src/main/res/layout/decrypt_files_activity.xml +++ b/OpenKeychain/src/main/res/layout/decrypt_files_activity.xml @@ -5,7 +5,7 @@ + layout="@layout/toolbar_standalone_white" /> - - - - - - - - + android:layout_height="match_parent" /> - - - \ No newline at end of file + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/encrypt_text_fragment.xml b/OpenKeychain/src/main/res/layout/encrypt_text_fragment.xml index 6f7b636e1..3c21291cd 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_text_fragment.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_text_fragment.xml @@ -21,50 +21,5 @@ android:hint="@string/encrypt_content_edit_text_hint" android:layout_weight="1" /> - - - - - - - - - - - - -- cgit v1.2.3 From bd1705410ada57f882bea051c1ec397d14908ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 16:17:12 +0100 Subject: Cleanup new widgets --- .../keychain/ui/widget/EmailEditText.java | 42 ++++++++++------------ .../keychain/ui/widget/NameEditText.java | 33 +++++++++-------- .../keychain/ui/widget/PassphraseEditText.java | 4 +++ 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java index e7ef788d8..1bdec7b84 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java @@ -35,43 +35,33 @@ import org.sufficientlysecure.keychain.util.ContactHelper; import java.util.regex.Matcher; public class EmailEditText extends AutoCompleteTextView { - EmailEditText emailEditText; public EmailEditText(Context context) { super(context); - emailEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); - this.addTextChangedListener(textWatcher); - removeFlag(); - makeAdapter(); + init(); } public EmailEditText(Context context, AttributeSet attrs) { super(context, attrs); - emailEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); - this.addTextChangedListener(textWatcher); - removeFlag(); - makeAdapter(); + init(); } public EmailEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - emailEditText = this; - this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); - this.addTextChangedListener(textWatcher); - removeFlag(); - makeAdapter(); + init(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public EmailEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - emailEditText = this; + init(); + } + + private void init() { this.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); this.addTextChangedListener(textWatcher); removeFlag(); - makeAdapter(); + initAdapter(); } TextWatcher textWatcher = new TextWatcher() { @@ -91,25 +81,29 @@ public class EmailEditText extends AutoCompleteTextView { if (email.length() > 0) { Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(email); if (emailMatcher.matches()) { - emailEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, + EmailEditText.this.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.uid_mail_ok, 0); } else { - emailEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, + EmailEditText.this.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.uid_mail_bad, 0); } } else { // remove drawable if email is empty - emailEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); + EmailEditText.this.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } } }; - private void makeAdapter() { - this.setThreshold(1); // Start working from first character - this.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, + private void initAdapter() { + setThreshold(1); // Start working from first character + setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, ContactHelper.getPossibleUserEmails(getContext()))); } + /** + * Hack to re-enable keyboard auto correction in AutoCompleteTextView. + * From http://stackoverflow.com/a/22512858 + */ private void removeFlag() { int inputType = getInputType(); inputType &= ~EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java index 895cd45ec..f086c5696 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java @@ -30,39 +30,44 @@ import org.sufficientlysecure.keychain.util.ContactHelper; public class NameEditText extends AutoCompleteTextView { public NameEditText(Context context) { super(context); - removeFlag(); - makeAdapter(); + init(); } public NameEditText(Context context, AttributeSet attrs) { super(context, attrs); - removeFlag(); - makeAdapter(); + init(); } public NameEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - removeFlag(); - makeAdapter(); + init(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NameEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + private void init() { removeFlag(); - makeAdapter(); + initAdapter(); } + private void initAdapter() { + setThreshold(1); // Start working from first character + setAdapter(new ArrayAdapter<>( + getContext(), android.R.layout.simple_spinner_dropdown_item, + ContactHelper.getPossibleUserNames(getContext()))); + } + + /** + * Hack to re-enable keyboard auto correction in AutoCompleteTextView. + * From http://stackoverflow.com/a/22512858 + */ private void removeFlag() { int inputType = getInputType(); inputType &= ~EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE; setRawInputType(inputType); } - - private void makeAdapter() { - this.setThreshold(1); // Start working from first character - this.setAdapter(new ArrayAdapter<>( - getContext(), android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserNames(getContext()))); - } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java index 11d9e8fd0..377f701d1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -36,6 +36,10 @@ public class PassphraseEditText extends EditText { public PassphraseEditText(Context context, AttributeSet attrs) { super(context, attrs); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { mPasswordBarHeight = (int) (8 * getResources().getDisplayMetrics().density); mPasswordBarWidth = (int) (50 * getResources().getDisplayMetrics().density); -- cgit v1.2.3 From b2e5ac282089cc13a1b819264f18b0467f3a41ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 16:55:23 +0100 Subject: Fix colors for remote activity --- .../sufficientlysecure/keychain/remote/OpenPgpService.java | 2 +- .../src/main/res/layout/api_app_settings_activity.xml | 12 ++++++------ .../src/main/res/layout/api_app_settings_fragment.xml | 7 ------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 03fa41984..1da88018a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -288,7 +288,7 @@ public class OpenPgpService extends RemoteService { } } else if (pgpResult.success()) { Intent result = new Intent(); - if (!cleartextSign) { + if (pgpResult.getDetachedSignature() != null && !cleartextSign) { result.putExtra(OpenPgpApi.RESULT_DETACHED_SIGNATURE, pgpResult.getDetachedSignature()); } result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_SUCCESS); diff --git a/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml b/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml index 6df5c84f5..c3f6e33cb 100644 --- a/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml +++ b/OpenKeychain/src/main/res/layout/api_app_settings_activity.xml @@ -78,27 +78,27 @@ android:orientation="vertical"> + android:visibility="gone" + android:text="@string/api_settings_accounts" /> + android:text="@string/api_settings_allowed_keys" /> diff --git a/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml b/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml index ed3e33aab..1ea0a520d 100644 --- a/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml +++ b/OpenKeychain/src/main/res/layout/api_app_settings_fragment.xml @@ -1,7 +1,6 @@ @@ -29,14 +28,12 @@ android:gravity="center_vertical" android:orientation="vertical" android:text="Name (set in-code)" - android:textColor="@color/icons" android:textAppearance="?android:attr/textAppearanceMedium" /> @@ -44,7 +41,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_settings_package_name" - android:textColor="@color/icons" android:textAppearance="?android:attr/textAppearanceMedium" /> -- cgit v1.2.3 From 3fe7fa202c790bb66d0f1b7e1396f3b9c62c90e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 17:12:46 +0100 Subject: API: If signature key is known return pi to show key --- .../keychain/remote/OpenPgpService.java | 145 ++++++++++----------- 1 file changed, 72 insertions(+), 73 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 1da88018a..390e85ef8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -38,8 +38,6 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.LogEnt import org.sufficientlysecure.keychain.operations.results.PgpSignEncryptResult; import org.sufficientlysecure.keychain.pgp.PgpConstants; import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify; -import org.sufficientlysecure.keychain.pgp.PgpHelper; -import org.sufficientlysecure.keychain.pgp.PgpKeyOperation; import org.sufficientlysecure.keychain.pgp.PgpSignEncryptInput; import org.sufficientlysecure.keychain.pgp.PgpSignEncryptOperation; import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException; @@ -55,7 +53,6 @@ import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity; import org.sufficientlysecure.keychain.ui.ViewKeyActivity; import org.sufficientlysecure.keychain.util.InputData; import org.sufficientlysecure.keychain.util.Log; -import org.sufficientlysecure.keychain.util.Preferences; import java.io.IOException; import java.io.InputStream; @@ -83,7 +80,7 @@ public class OpenPgpService extends RemoteService { * @param encryptionUserIds * @return */ - private Intent getKeyIdsFromEmails(Intent data, String[] encryptionUserIds) { + private Intent returnKeyIdsFromEmails(Intent data, String[] encryptionUserIds) { boolean noUserIdsCheck = (encryptionUserIds == null || encryptionUserIds.length == 0); boolean missingUserIdsCheck = false; boolean duplicateUserIdsCheck = false; @@ -164,7 +161,24 @@ public class OpenPgpService extends RemoteService { } } - private Intent getNfcSignIntent(Intent data, long keyId, String pin, byte[] hashToSign, int hashAlgo) { + private Intent returnPassphraseIntent(Intent data, long keyId) { + // build PendingIntent for passphrase input + Intent intent = new Intent(getBaseContext(), PassphraseDialogActivity.class); + intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, keyId); + // pass params through to activity that it can be returned again later to repeat pgp operation + intent.putExtra(PassphraseDialogActivity.EXTRA_DATA, data); + PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, + intent, + PendingIntent.FLAG_CANCEL_CURRENT); + + // return PendingIntent to be executed by client + Intent result = new Intent(); + result.putExtra(OpenPgpApi.RESULT_INTENT, pi); + result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); + return result; + } + + private PendingIntent getNfcSignPendingIntent(Intent data, long keyId, String pin, byte[] hashToSign, int hashAlgo) { // build PendingIntent for Yubikey NFC operations Intent intent = new Intent(getBaseContext(), NfcActivity.class); intent.setAction(NfcActivity.ACTION_SIGN_HASH); @@ -175,18 +189,12 @@ public class OpenPgpService extends RemoteService { intent.putExtra(NfcActivity.EXTRA_NFC_HASH_TO_SIGN, hashToSign); intent.putExtra(NfcActivity.EXTRA_NFC_HASH_ALGO, hashAlgo); - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, + return PendingIntent.getActivity(getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); - - // return PendingIntent to be executed by client - Intent result = new Intent(); - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); - result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); - return result; } - private Intent getNfcDecryptIntent(Intent data, long subKeyId, String pin, byte[] encryptedSessionKey) { + private PendingIntent getNfcDecryptPendingIntent(Intent data, long subKeyId, String pin, byte[] encryptedSessionKey) { // build PendingIntent for Yubikey NFC operations Intent intent = new Intent(getBaseContext(), NfcActivity.class); intent.setAction(NfcActivity.ACTION_DECRYPT_SESSION_KEY); @@ -196,32 +204,31 @@ public class OpenPgpService extends RemoteService { intent.putExtra(NfcActivity.EXTRA_KEY_ID, subKeyId); intent.putExtra(NfcActivity.EXTRA_NFC_ENC_SESSION_KEY, encryptedSessionKey); - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, + return PendingIntent.getActivity(getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); - - // return PendingIntent to be executed by client - Intent result = new Intent(); - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); - result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); - return result; } - private Intent getPassphraseIntent(Intent data, long keyId) { - // build PendingIntent for passphrase input - Intent intent = new Intent(getBaseContext(), PassphraseDialogActivity.class); - intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, keyId); - // pass params through to activity that it can be returned again later to repeat pgp operation - intent.putExtra(PassphraseDialogActivity.EXTRA_DATA, data); - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, + private PendingIntent getKeyserverPendingIntent(Intent data, long masterKeyId) { + // If signature is unknown we return an _additional_ PendingIntent + // to retrieve the missing key + Intent intent = new Intent(getBaseContext(), ImportKeysActivity.class); + intent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_TO_SERVICE); + intent.putExtra(ImportKeysActivity.EXTRA_KEY_ID, masterKeyId); + intent.putExtra(ImportKeysActivity.EXTRA_PENDING_INTENT_DATA, data); + + return PendingIntent.getActivity(getBaseContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); + } - // return PendingIntent to be executed by client - Intent result = new Intent(); - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); - result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); - return result; + private PendingIntent getShowKeyPendingIntent(long masterKeyId) { + Intent intent = new Intent(getBaseContext(), ViewKeyActivity.class); + intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); + + return PendingIntent.getActivity(getBaseContext(), 0, + intent, + PendingIntent.FLAG_CANCEL_CURRENT); } private Intent signImpl(Intent data, ParcelFileDescriptor input, @@ -274,14 +281,20 @@ public class OpenPgpService extends RemoteService { if (pgpResult.isPending()) { if ((pgpResult.getResult() & PgpSignEncryptResult.RESULT_PENDING_PASSPHRASE) == PgpSignEncryptResult.RESULT_PENDING_PASSPHRASE) { - return getPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); + return returnPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); } else if ((pgpResult.getResult() & PgpSignEncryptResult.RESULT_PENDING_NFC) == PgpSignEncryptResult.RESULT_PENDING_NFC) { // return PendingIntent to execute NFC activity // pass through the signature creation timestamp to be used again on second execution // of PgpSignEncrypt when we have the signed hash! data.putExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, pgpResult.getNfcTimestamp().getTime()); - return getNfcSignIntent(data, pgpResult.getNfcKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcHash(), pgpResult.getNfcAlgo()); + + // return PendingIntent to be executed by client + Intent result = new Intent(); + result.putExtra(OpenPgpApi.RESULT_INTENT, + getNfcSignPendingIntent(data, pgpResult.getNfcKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcHash(), pgpResult.getNfcAlgo())); + result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); + return result; } else { throw new PgpGeneralException( "Encountered unhandled type of pending action not supported by API!"); @@ -340,7 +353,7 @@ public class OpenPgpService extends RemoteService { // get key ids based on given user ids String[] userIds = data.getStringArrayExtra(OpenPgpApi.EXTRA_USER_IDS); // give params through to activity... - Intent result = getKeyIdsFromEmails(data, userIds); + Intent result = returnKeyIdsFromEmails(data, userIds); if (result.getIntExtra(OpenPgpApi.RESULT_CODE, 0) == OpenPgpApi.RESULT_CODE_SUCCESS) { keyIds = result.getLongArrayExtra(OpenPgpApi.RESULT_KEY_IDS); @@ -391,14 +404,19 @@ public class OpenPgpService extends RemoteService { if (pgpResult.isPending()) { if ((pgpResult.getResult() & PgpSignEncryptResult.RESULT_PENDING_PASSPHRASE) == PgpSignEncryptResult.RESULT_PENDING_PASSPHRASE) { - return getPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); + return returnPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); } else if ((pgpResult.getResult() & PgpSignEncryptResult.RESULT_PENDING_NFC) == PgpSignEncryptResult.RESULT_PENDING_NFC) { // return PendingIntent to execute NFC activity // pass through the signature creation timestamp to be used again on second execution // of PgpSignEncrypt when we have the signed hash! data.putExtra(OpenPgpApi.EXTRA_NFC_SIG_CREATION_TIMESTAMP, pgpResult.getNfcTimestamp().getTime()); - return getNfcSignIntent(data, pgpResult.getNfcKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcHash(), pgpResult.getNfcAlgo()); + // return PendingIntent to be executed by client + Intent result = new Intent(); + result.putExtra(OpenPgpApi.RESULT_INTENT, + getNfcSignPendingIntent(data, pgpResult.getNfcKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcHash(), pgpResult.getNfcAlgo())); + result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); + return result; } else { throw new PgpGeneralException( "Encountered unhandled type of pending action not supported by API!"); @@ -478,15 +496,20 @@ public class OpenPgpService extends RemoteService { if (pgpResult.isPending()) { if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) == DecryptVerifyResult.RESULT_PENDING_ASYM_PASSPHRASE) { - return getPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); + return returnPassphraseIntent(data, pgpResult.getKeyIdPassphraseNeeded()); } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) == DecryptVerifyResult.RESULT_PENDING_SYM_PASSPHRASE) { throw new PgpGeneralException( "Decryption of symmetric content not supported by API!"); } else if ((pgpResult.getResult() & DecryptVerifyResult.RESULT_PENDING_NFC) == DecryptVerifyResult.RESULT_PENDING_NFC) { - return getNfcDecryptIntent( - data, pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey()); + + // return PendingIntent to be executed by client + Intent result = new Intent(); + result.putExtra(OpenPgpApi.RESULT_INTENT, + getNfcDecryptPendingIntent(data, pgpResult.getNfcSubKeyId(), pgpResult.getNfcPassphrase(), pgpResult.getNfcEncryptedSessionKey())); + result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); + return result; } else { throw new PgpGeneralException( "Encountered unhandled type of pending action not supported by API!"); @@ -509,16 +532,10 @@ public class OpenPgpService extends RemoteService { if (signatureResult.getStatus() == OpenPgpSignatureResult.SIGNATURE_KEY_MISSING) { // If signature is unknown we return an _additional_ PendingIntent // to retrieve the missing key - Intent intent = new Intent(getBaseContext(), ImportKeysActivity.class); - intent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_TO_SERVICE); - intent.putExtra(ImportKeysActivity.EXTRA_KEY_ID, signatureResult.getKeyId()); - intent.putExtra(ImportKeysActivity.EXTRA_PENDING_INTENT_DATA, data); - - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, - intent, - PendingIntent.FLAG_CANCEL_CURRENT); - - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); + result.putExtra(OpenPgpApi.RESULT_INTENT, getKeyserverPendingIntent(data, signatureResult.getKeyId())); + } else { + // If signature key is known, return PendingIntent to show key + result.putExtra(OpenPgpApi.RESULT_INTENT, getShowKeyPendingIntent(signatureResult.getKeyId())); } } @@ -576,33 +593,15 @@ public class OpenPgpService extends RemoteService { Intent result = new Intent(); result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_SUCCESS); - // also return PendingIntent that opens the key view activity - Intent intent = new Intent(getBaseContext(), ViewKeyActivity.class); - intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId)); - - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, - intent, - PendingIntent.FLAG_CANCEL_CURRENT); - - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); + result.putExtra(OpenPgpApi.RESULT_INTENT, getShowKeyPendingIntent(masterKeyId)); return result; } catch (ProviderHelper.NotFoundException e) { - Intent result = new Intent(); - // If keys are not in db we return an additional PendingIntent // to retrieve the missing key - Intent intent = new Intent(getBaseContext(), ImportKeysActivity.class); - intent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_TO_SERVICE); - intent.putExtra(ImportKeysActivity.EXTRA_KEY_ID, masterKeyId); - intent.putExtra(ImportKeysActivity.EXTRA_PENDING_INTENT_DATA, data); - - PendingIntent pi = PendingIntent.getActivity(getBaseContext(), 0, - intent, - PendingIntent.FLAG_CANCEL_CURRENT); - - result.putExtra(OpenPgpApi.RESULT_INTENT, pi); + Intent result = new Intent(); + result.putExtra(OpenPgpApi.RESULT_INTENT, getKeyserverPendingIntent(data, masterKeyId)); result.putExtra(OpenPgpApi.RESULT_CODE, OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED); return result; } @@ -629,7 +628,7 @@ public class OpenPgpService extends RemoteService { } else { // get key ids based on given user ids String[] userIds = data.getStringArrayExtra(OpenPgpApi.EXTRA_USER_IDS); - return getKeyIdsFromEmails(data, userIds); + return returnKeyIdsFromEmails(data, userIds); } } @@ -669,7 +668,7 @@ public class OpenPgpService extends RemoteService { return result; } - // check if caller is allowed to access openpgp keychain + // check if caller is allowed to access OpenKeychain Intent result = isAllowed(data); if (result != null) { return result; -- cgit v1.2.3 From 009e8e9e393ff2a1a435c44509538e2b75f45380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 18:21:54 +0100 Subject: Fix compression check in activities --- .../main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java | 1 - .../java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java | 4 ++-- .../java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java index c595cc5b8..ed5920cde 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -23,7 +23,6 @@ import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.os.Messenger; -import android.os.PersistableBundle; import android.view.View; import org.openintents.openpgp.util.OpenPgpApi; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index eba19df6d..8ab5680d0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -67,8 +67,8 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi private String mEncryptionUserIds[] = null; private long mSigningKeyId = Constants.key.none; private String mPassphrase = ""; - private boolean mUseArmor; - private boolean mUseCompression; + private boolean mUseArmor = false; + private boolean mUseCompression = true; private boolean mDeleteAfterEncrypt = false; private boolean mShareAfterEncrypt = false; private ArrayList mInputUris; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java index 08ff5b962..ee15cf7b5 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java @@ -72,7 +72,7 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv private ArrayList mInputUris; private ArrayList mOutputUris; private String mMessage = ""; - private boolean mUseCompression; + private boolean mUseCompression = true; public boolean isModeSymmetric() { return MODE_SYMMETRIC == mCurrentMode; -- cgit v1.2.3 From 7c22fc843b7f00f63c0f85cbd3565700b5e73698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 18:33:20 +0100 Subject: Fix ascii armor in encrypt activity --- .../org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index 8ab5680d0..d95b5cda3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -209,6 +209,7 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi } else { data.setCompressionId(CompressionAlgorithmTags.UNCOMPRESSED); } + data.setEnableAsciiArmorOutput(mUseArmor); data.setSymmetricEncryptionAlgorithm(PgpConstants.OpenKeychainSymmetricKeyAlgorithmTags.USE_PREFERRED); data.setSignatureHashAlgorithm(PgpConstants.OpenKeychainSymmetricKeyAlgorithmTags.USE_PREFERRED); @@ -409,9 +410,7 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); } - if (extras.containsKey(EXTRA_ASCII_ARMOR)) { - mUseArmor = extras.getBoolean(EXTRA_ASCII_ARMOR, true); - } + mUseArmor = extras.getBoolean(EXTRA_ASCII_ARMOR, false); // preselect keys given by intent mSigningKeyId = extras.getLong(EXTRA_SIGNATURE_KEY_ID); -- cgit v1.2.3 From cc66435e38248880fee3af795619b5794b65d222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 18:59:15 +0100 Subject: Some fixes for delete after encryption --- .../ui/dialog/DeleteFileDialogFragment.java | 49 ++++++++++++---------- .../src/main/res/layout/file_list_entry_add.xml | 34 +++++++-------- OpenKeychain/src/main/res/values/strings.xml | 4 +- 3 files changed, 46 insertions(+), 41 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java index 07462b4ff..c4b437593 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/DeleteFileDialogFragment.java @@ -28,8 +28,10 @@ import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.widget.Toast; +import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.util.FileHelper; +import org.sufficientlysecure.keychain.util.Log; import java.io.File; @@ -69,41 +71,44 @@ public class DeleteFileDialogFragment extends DialogFragment { @Override public void onClick(DialogInterface dialog, int id) { dismiss(); - String scheme = deleteUri.getScheme(); - if(scheme.equals(ContentResolver.SCHEME_FILE)) { - if(new File(deleteUri.getPath()).delete()) { - Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show(); - return; - } - } - else if(scheme.equals(ContentResolver.SCHEME_CONTENT)) { - // We can not securely delete Uris, so just use usual delete on them - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + // NOTE: Use Toasts, not Snackbars. When sharing to another application snackbars + // would not show up! + + // Use DocumentsContract on Android >= 4.4 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + try { if (DocumentsContract.deleteDocument(getActivity().getContentResolver(), deleteUri)) { - Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show(); + Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, + deleteFilename), Toast.LENGTH_LONG).show(); return; } + } catch (UnsupportedOperationException e) { + Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e); } + } + try { if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) { - Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show(); - return; - } - - // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete - // via the path of the Uri - if(new File(deleteUri.getPath()).delete()) { - Toast.makeText(getActivity(), R.string.file_delete_successful, Toast.LENGTH_SHORT).show(); + Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, + deleteFilename), Toast.LENGTH_LONG).show(); return; } + } catch (UnsupportedOperationException e) { + Log.d(Constants.TAG, "Catched UnsupportedOperationException, can happen when delete is not supported!", e); } - Toast.makeText(getActivity(), getActivity().getString(R.string.error_file_delete_failed, - deleteFilename), Toast.LENGTH_SHORT).show(); + // some Uri's a ContentResolver fails to delete is handled by the java.io.File's delete + // via the path of the Uri + if (new File(deleteUri.getPath()).delete()) { + Toast.makeText(getActivity(), getActivity().getString(R.string.file_delete_successful, + deleteFilename), Toast.LENGTH_LONG).show(); + return; + } // Note: We can't delete every file... - // If possible we should find out if deletion is possible before even showing the option to do so. + Toast.makeText(getActivity(), getActivity().getString(R.string.error_file_delete_failed, + deleteFilename), Toast.LENGTH_LONG).show(); } }); alert.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { diff --git a/OpenKeychain/src/main/res/layout/file_list_entry_add.xml b/OpenKeychain/src/main/res/layout/file_list_entry_add.xml index f2ee4079e..d7f4513d9 100644 --- a/OpenKeychain/src/main/res/layout/file_list_entry_add.xml +++ b/OpenKeychain/src/main/res/layout/file_list_entry_add.xml @@ -1,21 +1,21 @@ + - + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_gravity="center" + android:text="@string/btn_add_files" + android:drawableLeft="@drawable/ic_folder_grey_24dp" + android:drawablePadding="8dp" + android:gravity="center" /> \ No newline at end of file diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 39af9ca28..2c83ac070 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -220,7 +220,7 @@ "Enter PIN to access YubiKey for '%s'" "Hold YubiKey against the back of your device." "Are you sure you want to delete\n%s?" - "Successfully deleted." + "'%s' has been deleted." "Select a file first." "Successfully signed and/or encrypted." "Successfully signed and/or encrypted to clipboard." @@ -261,7 +261,7 @@ no punctuation, all lowercase, they will be put after "error_message", e.g. "Error: file not found" --> - "deleting '%s' failed" + "Deleting '%s' failed. Please do this manually!" "file not found" "no suitable secret key found" "external storage not ready" -- cgit v1.2.3 From 67076b20196cd522f519e6ea156ddc34e20977d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 22:00:44 +0100 Subject: Make create key wizard step-by-step --- Graphics/get-material-icons.sh | 3 + OpenKeychain/src/main/AndroidManifest.xml | 2 +- .../keychain/ui/CreateKeyActivity.java | 4 +- .../keychain/ui/CreateKeyEmailFragment.java | 134 ++++++++++++++++ .../keychain/ui/CreateKeyFinalFragment.java | 2 +- .../keychain/ui/CreateKeyInputFragment.java | 167 -------------------- .../keychain/ui/CreateKeyNameFragment.java | 140 +++++++++++++++++ .../keychain/ui/CreateKeyPassphraseFragment.java | 170 +++++++++++++++++++++ .../drawable-hdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 276 bytes .../drawable-hdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 271 bytes .../main/res/drawable-hdpi/ic_person_grey_48dp.png | Bin 0 -> 576 bytes .../drawable-mdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 240 bytes .../drawable-mdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 225 bytes .../main/res/drawable-mdpi/ic_person_grey_48dp.png | Bin 0 -> 431 bytes .../drawable-xhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 314 bytes .../drawable-xhdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 305 bytes .../res/drawable-xhdpi/ic_person_grey_48dp.png | Bin 0 -> 751 bytes .../drawable-xxhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 382 bytes .../drawable-xxhdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 388 bytes .../res/drawable-xxhdpi/ic_person_grey_48dp.png | Bin 0 -> 1121 bytes .../drawable-xxxhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 481 bytes .../ic_chevron_right_grey_24dp.png | Bin 0 -> 472 bytes .../res/drawable-xxxhdpi/ic_person_grey_48dp.png | Bin 0 -> 1488 bytes .../main/res/layout/create_key_email_fragment.xml | 84 ++++++++++ .../main/res/layout/create_key_final_fragment.xml | 46 ++---- .../main/res/layout/create_key_input_fragment.xml | 145 ------------------ .../main/res/layout/create_key_name_fragment.xml | 83 ++++++++++ .../res/layout/create_key_passphrase_fragment.xml | 96 ++++++++++++ OpenKeychain/src/main/res/values-cs/strings.xml | 2 +- OpenKeychain/src/main/res/values-de/strings.xml | 2 +- OpenKeychain/src/main/res/values-es/strings.xml | 2 +- OpenKeychain/src/main/res/values-fr/strings.xml | 2 +- OpenKeychain/src/main/res/values-it/strings.xml | 2 +- OpenKeychain/src/main/res/values-ja/strings.xml | 2 +- OpenKeychain/src/main/res/values-nl/strings.xml | 2 +- OpenKeychain/src/main/res/values-pl/strings.xml | 2 +- OpenKeychain/src/main/res/values-ru/strings.xml | 2 +- OpenKeychain/src/main/res/values-sr/strings.xml | 2 +- OpenKeychain/src/main/res/values-sv/strings.xml | 2 +- OpenKeychain/src/main/res/values-tr/strings.xml | 2 +- OpenKeychain/src/main/res/values-uk/strings.xml | 2 +- .../src/main/res/values-zh-rTW/strings.xml | 2 +- OpenKeychain/src/main/res/values/strings.xml | 6 +- 43 files changed, 747 insertions(+), 363 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/layout/create_key_email_fragment.xml delete mode 100644 OpenKeychain/src/main/res/layout/create_key_input_fragment.xml create mode 100644 OpenKeychain/src/main/res/layout/create_key_name_fragment.xml create mode 100644 OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml diff --git a/Graphics/get-material-icons.sh b/Graphics/get-material-icons.sh index 3bfec249f..248dcd532 100755 --- a/Graphics/get-material-icons.sh +++ b/Graphics/get-material-icons.sh @@ -37,6 +37,9 @@ python copy OpenKeychain social grey person 24 python copy OpenKeychain social grey person_add 24 python copy OpenKeychain social grey share 24 python copy OpenKeychain communication grey vpn_key 24 +python copy OpenKeychain navigation grey chevron_left 24 +python copy OpenKeychain navigation grey chevron_right 24 +python copy OpenKeychain social grey person 48 # navigation drawer sections python copy OpenKeychain communication black vpn_key 24 diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index a1a6ed02e..fbe89bc28 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -93,7 +93,7 @@ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; +import org.sufficientlysecure.keychain.ui.widget.EmailEditText; + +public class CreateKeyEmailFragment extends Fragment { + + public static final String ARG_NAME = "name"; + public static final String ARG_EMAIL = "email"; + + CreateKeyActivity mCreateKeyActivity; + EmailEditText mEmailEdit; + View mBackButton; + View mNextButton; + + String mName; + + /** + * Creates new instance of this fragment + */ + public static CreateKeyEmailFragment newInstance(String name, String email) { + CreateKeyEmailFragment frag = new CreateKeyEmailFragment(); + + Bundle args = new Bundle(); + args.putString(ARG_NAME, name); + args.putString(ARG_EMAIL, email); + + frag.setArguments(args); + + return frag; + } + + /** + * Checks if text of given EditText is not empty. If it is empty an error is + * set and the EditText gets the focus. + * + * @param context + * @param editText + * @return true if EditText is not empty + */ + private static boolean isEditTextNotEmpty(Context context, EditText editText) { + boolean output = true; + if (editText.getText().toString().length() == 0) { + editText.setError(context.getString(R.string.create_key_empty)); + editText.requestFocus(); + output = false; + } else { + editText.setError(null); + } + + return output; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.create_key_email_fragment, container, false); + + mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email); + mBackButton = view.findViewById(R.id.create_key_back_button); + mNextButton = view.findViewById(R.id.create_key_next_button); + + // initial values + mName = getArguments().getString(ARG_NAME); + String email = getArguments().getString(ARG_EMAIL); + mEmailEdit.setText(email); + + // focus empty edit fields + if (email == null) { + mEmailEdit.requestFocus(); + } + mBackButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mCreateKeyActivity.loadFragment(null, null, FragAction.TO_LEFT); + } + }); + mNextButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + createKeyCheck(); + } + }); + + return view; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mCreateKeyActivity = (CreateKeyActivity) getActivity(); + } + + private void createKeyCheck() { + if (isEditTextNotEmpty(getActivity(), mEmailEdit)) { + + CreateKeyPassphraseFragment frag = + CreateKeyPassphraseFragment.newInstance( + mName, + mEmailEdit.getText().toString() + ); + + mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); + } + } + +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index 920488e3e..dc9f3d4ad 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -95,7 +95,7 @@ public class CreateKeyFinalFragment extends Fragment { mEmailEdit = (TextView) view.findViewById(R.id.email); mUploadCheckbox = (CheckBox) view.findViewById(R.id.create_key_upload); mBackButton = view.findViewById(R.id.create_key_back_button); - mCreateButton = view.findViewById(R.id.create_key_create_button); + mCreateButton = view.findViewById(R.id.create_key_next_button); mEditText = (TextView) view.findViewById(R.id.create_key_edit_text); mEditButton = view.findViewById(R.id.create_key_edit_button); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java deleted file mode 100644 index 05408e21e..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui; - -import android.content.Context; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; - -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; -import org.sufficientlysecure.keychain.ui.widget.EmailEditText; -import org.sufficientlysecure.keychain.ui.widget.NameEditText; -import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; - -public class CreateKeyInputFragment extends Fragment { - - public static final String ARG_NAME = "name"; - public static final String ARG_EMAIL = "email"; - CreateKeyActivity mCreateKeyActivity; - NameEditText mNameEdit; - EmailEditText mEmailEdit; - PassphraseEditText mPassphraseEdit; - EditText mPassphraseEditAgain; - View mCreateButton; - - /** - * Creates new instance of this fragment - */ - public static CreateKeyInputFragment newInstance(String name, String email) { - CreateKeyInputFragment frag = new CreateKeyInputFragment(); - - Bundle args = new Bundle(); - args.putString(ARG_NAME, name); - args.putString(ARG_EMAIL, email); - - frag.setArguments(args); - - return frag; - } - - /** - * Checks if text of given EditText is not empty. If it is empty an error is - * set and the EditText gets the focus. - * - * @param context - * @param editText - * @return true if EditText is not empty - */ - private static boolean isEditTextNotEmpty(Context context, EditText editText) { - boolean output = true; - if (editText.getText().toString().length() == 0) { - editText.setError(context.getString(R.string.create_key_empty)); - editText.requestFocus(); - output = false; - } else { - editText.setError(null); - } - - return output; - } - - private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) { - boolean output = true; - if (!editText1.getText().toString().equals(editText2.getText().toString())) { - editText2.setError(context.getString(R.string.create_key_passphrases_not_equal)); - editText2.requestFocus(); - output = false; - } else { - editText2.setError(null); - } - - return output; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.create_key_input_fragment, container, false); - - mNameEdit = (NameEditText) view.findViewById(R.id.create_key_name); - mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); - mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email); - mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); - mCreateButton = view.findViewById(R.id.create_key_button); - - // initial values - String name = getArguments().getString(ARG_NAME); - String email = getArguments().getString(ARG_EMAIL); - mNameEdit.setText(name); - mEmailEdit.setText(email); - - // focus non-empty edit fields - if (name != null && email != null) { - mPassphraseEdit.requestFocus(); - } else if (name != null) { - mEmailEdit.requestFocus(); - } - mCreateButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - createKeyCheck(); - } - }); - - return view; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - mCreateKeyActivity = (CreateKeyActivity) getActivity(); - } - - private void createKeyCheck() { - if (isEditTextNotEmpty(getActivity(), mNameEdit) - && isEditTextNotEmpty(getActivity(), mEmailEdit) - && isEditTextNotEmpty(getActivity(), mPassphraseEdit) - && areEditTextsEqual(getActivity(), mPassphraseEdit, mPassphraseEditAgain)) { - - CreateKeyFinalFragment frag = - CreateKeyFinalFragment.newInstance( - mNameEdit.getText().toString(), - mEmailEdit.getText().toString(), - mPassphraseEdit.getText().toString() - ); - - hideKeyboard(); - mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); - } - } - - private void hideKeyboard() { - if (getActivity() == null) { - return; - } - InputMethodManager inputManager = (InputMethodManager) getActivity() - .getSystemService(Context.INPUT_METHOD_SERVICE); - - // check if no view has focus - View v = getActivity().getCurrentFocus(); - if (v == null) - return; - - inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); - } - -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java new file mode 100644 index 000000000..50a3bd655 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; +import org.sufficientlysecure.keychain.ui.widget.EmailEditText; +import org.sufficientlysecure.keychain.ui.widget.NameEditText; + +public class CreateKeyNameFragment extends Fragment { + + public static final String ARG_NAME = "name"; + public static final String ARG_EMAIL = "email"; + + CreateKeyActivity mCreateKeyActivity; + NameEditText mNameEdit; + View mNextButton; + + String mEmail; + + /** + * Creates new instance of this fragment + */ + public static CreateKeyNameFragment newInstance(String name, String email) { + CreateKeyNameFragment frag = new CreateKeyNameFragment(); + + Bundle args = new Bundle(); + args.putString(ARG_NAME, name); + args.putString(ARG_EMAIL, email); + + frag.setArguments(args); + + return frag; + } + + /** + * Checks if text of given EditText is not empty. If it is empty an error is + * set and the EditText gets the focus. + * + * @param context + * @param editText + * @return true if EditText is not empty + */ + private static boolean isEditTextNotEmpty(Context context, EditText editText) { + boolean output = true; + if (editText.getText().toString().length() == 0) { + editText.setError(context.getString(R.string.create_key_empty)); + editText.requestFocus(); + output = false; + } else { + editText.setError(null); + } + + return output; + } + + private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) { + boolean output = true; + if (!editText1.getText().toString().equals(editText2.getText().toString())) { + editText2.setError(context.getString(R.string.create_key_passphrases_not_equal)); + editText2.requestFocus(); + output = false; + } else { + editText2.setError(null); + } + + return output; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.create_key_name_fragment, container, false); + + mNameEdit = (NameEditText) view.findViewById(R.id.create_key_name); + mNextButton = view.findViewById(R.id.create_key_next_button); + + // initial values + String name = getArguments().getString(ARG_NAME); + mEmail = getArguments().getString(ARG_EMAIL); + mNameEdit.setText(name); + + // focus empty edit fields + if (name == null) { + mNameEdit.requestFocus(); + } + mNextButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + createKeyCheck(); + } + }); + + return view; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mCreateKeyActivity = (CreateKeyActivity) getActivity(); + } + + private void createKeyCheck() { + if (isEditTextNotEmpty(getActivity(), mNameEdit)) { + + CreateKeyEmailFragment frag = + CreateKeyEmailFragment.newInstance( + mNameEdit.getText().toString(), + mEmail + ); + + mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); + } + } + +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java new file mode 100644 index 000000000..be77d5042 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; +import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; + +public class CreateKeyPassphraseFragment extends Fragment { + + public static final String ARG_NAME = "name"; + public static final String ARG_EMAIL = "email"; + + // model + String mName; + String mEmail; + + // view + CreateKeyActivity mCreateKeyActivity; + PassphraseEditText mPassphraseEdit; + EditText mPassphraseEditAgain; + View mBackButton; + View mNextButton; + + /** + * Creates new instance of this fragment + */ + public static CreateKeyPassphraseFragment newInstance(String name, String email) { + CreateKeyPassphraseFragment frag = new CreateKeyPassphraseFragment(); + + Bundle args = new Bundle(); + args.putString(ARG_NAME, name); + args.putString(ARG_EMAIL, email); + + frag.setArguments(args); + + return frag; + } + + /** + * Checks if text of given EditText is not empty. If it is empty an error is + * set and the EditText gets the focus. + * + * @param context + * @param editText + * @return true if EditText is not empty + */ + private static boolean isEditTextNotEmpty(Context context, EditText editText) { + boolean output = true; + if (editText.getText().toString().length() == 0) { + editText.setError(context.getString(R.string.create_key_empty)); + editText.requestFocus(); + output = false; + } else { + editText.setError(null); + } + + return output; + } + + private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) { + boolean output = true; + if (!editText1.getText().toString().equals(editText2.getText().toString())) { + editText2.setError(context.getString(R.string.create_key_passphrases_not_equal)); + editText2.requestFocus(); + output = false; + } else { + editText2.setError(null); + } + + return output; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.create_key_passphrase_fragment, container, false); + + mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); + mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); + mBackButton = view.findViewById(R.id.create_key_back_button); + mNextButton = view.findViewById(R.id.create_key_next_button); + + // initial values + mName = getArguments().getString(ARG_NAME); + mEmail = getArguments().getString(ARG_EMAIL); + mPassphraseEdit.requestFocus(); + mBackButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + back(); + } + }); + mNextButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + createKeyCheck(); + } + }); + + return view; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mCreateKeyActivity = (CreateKeyActivity) getActivity(); + } + + private void back() { + hideKeyboard(); + mCreateKeyActivity.loadFragment(null, null, FragAction.TO_LEFT); + } + + private void createKeyCheck() { + if (isEditTextNotEmpty(getActivity(), mPassphraseEdit) + && areEditTextsEqual(getActivity(), mPassphraseEdit, mPassphraseEditAgain)) { + + CreateKeyFinalFragment frag = + CreateKeyFinalFragment.newInstance( + mName, + mEmail, + mPassphraseEdit.getText().toString() + ); + + hideKeyboard(); + mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); + } + } + + private void hideKeyboard() { + if (getActivity() == null) { + return; + } + InputMethodManager inputManager = (InputMethodManager) getActivity() + .getSystemService(Context.INPUT_METHOD_SERVICE); + + // check if no view has focus + View v = getActivity().getCurrentFocus(); + if (v == null) + return; + + inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); + } + +} diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..12e39d39d Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..7eef500d4 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..de2a86e89 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..56ab24da9 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..d6581fe23 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..738e3490d Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..df0518a68 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..7b82b8a57 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..e664e94ac Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..10643ae3f Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..360d3c5ec Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..5f00cf8a2 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..a5fb05c28 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..a71c5b3fc Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..001fe6607 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml new file mode 100644 index 000000000..a24d1a2ee --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml index 84625d1fd..830f039f7 100644 --- a/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml @@ -6,7 +6,7 @@ + android:layout_above="@+id/create_key_buttons"> - - + style="?android:attr/borderlessButtonStyle" /> + style="?android:attr/borderlessButtonStyle" /> - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml deleted file mode 100644 index 2178fcb1f..000000000 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml new file mode 100644 index 000000000..ea064b00c --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml new file mode 100644 index 000000000..4b09c6cac --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index 903cc50f3..ce4f1cdcf 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -464,7 +464,7 @@ Vytvoření klíče může chvíli trvat, mezitím si dejte třeba šálek dobré kávy... (3 podklíče, RSA, 4096 bit) (uživatelská konfigurace klíče) - Zadejte své celé jméno, emailovou adresu a zvolte heslo. + Zadejte své celé jméno, emailovou adresu a zvolte heslo. Celé jméno, např. Jan Novák Změnit konfiguraci klíče diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index 63b0c4c09..245de82ec 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -528,7 +528,7 @@ Einen Schlüssel zu erzeugen braucht eine Weile, trink in der Zeit einen Kaffee... (3 Unterschlüssel, RSA, 4096 Bit) (Benutzerdefinierte Schlüsseleinstellung) - Vollen Namen und Emailadresse angeben und Passwort wählen. + Vollen Namen und Emailadresse angeben und Passwort wählen. Vollständiger Name, z.B. Max Mustermann Schlüsselkonfiguration ändern diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index 0d7444c47..d5d8440af 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -575,7 +575,7 @@ Crear una clave puede llevar un tiempo, tómese una taza de café entre tanto... (3 subclaves, RSA, 4096 bits) (configuración de clave personalizada) - Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña. + Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña. Nombre completo, ej. Max Mustermann Cambiar configuración de clave diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index 50bd53921..8cc1cc735 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -573,7 +573,7 @@ Créer une clef peut prendre du temps, prenez donc un café en attendant... (3 sous-clefs, RSA, 4096 bits) (configuration personnalisée de la clef) - Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe. + Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe. Nom complet, p. ex. Marc-Olivier Lagacé Changer la configuration de la clef diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index d741f7111..f55d16dfc 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -482,7 +482,7 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars La creazione di una chiave richiede un po\' di tempo, prendi un caffè nel frattempo... (3 sottochiavi, RSA, 4096 bit) (personalizza la configurazione della chiave) - Inserisci Nome Completo, Email e scegli una Frase di Accesso. + Inserisci Nome Completo, Email e scegli una Frase di Accesso. Nome completo, es: Mario Rossi Cambia configurazione della chiave diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index c5318db36..ef817f398 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -532,7 +532,7 @@ しばらくの間鍵を生成しています、その間はコーヒーでもどうぞ.... (3副鍵、RSA, 4096 bit) (個別の鍵設定) - フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。 + フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。 フルネーム、例えば Max Mustermann 鍵の設定変更 diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 34b8f1627..f8ee75750 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -575,7 +575,7 @@ Een sleutel aanmaken kan even duren, maak intussen een tasje thee klaar… (3 subsleutels, RSA, 4096 bit) (aangepaste sleutelconfiguratie) - Voer je volledige naam en e-mailadres in, en kies een wachtwoord. + Voer je volledige naam en e-mailadres in, en kies een wachtwoord. Volledige naam, bv. Max Mustermann Sleutelconfiguratie wijzigen diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 3dc6a2a35..46dd8c313 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -540,7 +540,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Tworzenie klucza może zająć trochę czasu... w międzyczasie idź się napij kawy. (3 pod-klucze, RSA, 4096 bit) (niestandardowa konfiguracja kluczy) - Wpisz swoje imię, adres email oraz wybierz hasło. + Wpisz swoje imię, adres email oraz wybierz hasło. Imię i nazwisko, na przykład, Jan Kowalski Zmień klucz konfiguracji diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index dc1c81bb4..211433d26 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -490,7 +490,7 @@ Создание ключа займет некоторое время, можете пока выпить чашечку кофе... (3 доп. ключа, RSA, 4096 bit) (произвольная конфигурация ключа) - Укажите полное имя, адрес почты и придумайте надежный пароль. + Укажите полное имя, адрес почты и придумайте надежный пароль. Полное имя, напр. Иван Хлестаков Изменить конфигурацию ключа diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index 11639e2eb..73094c5a4 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -558,7 +558,7 @@ Прављење кључа може да потраје, попијте кафу у међувремену… (3 поткључа, РСА, 4096 бита) (прилагођена конфигурација кључа) - Унесите пуно име, адресу е-поште и укуцајте лозинку. + Унесите пуно име, адресу е-поште и укуцајте лозинку. Пуно име, нпр. Петар Петровић Промени конфигурацију кључа diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index a24fe7ee7..d22eea22a 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -521,7 +521,7 @@ Att skapa en nyckel kan ta ett tag, drick en kopp kaffe under tiden… (3 undernycklar, RSA, 4096 bit) (anpassad nyckelkonfiguration) - Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras. + Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras. Fullständigt namn, t.ex. Kalle Svensson Ändra nyckelkonfiguration diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index 7b6a976f5..ee5306cc7 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -449,7 +449,7 @@ Anahtar oluşturma biraz zaman alabilir, bu sırada bir çay için... (3 alt anahtar, RSA, 4096 bit) (özel anahtar yapılandırması) - Tam isminizi, e-posta adresinizi girin ve bir parola seçin. + Tam isminizi, e-posta adresinizi girin ve bir parola seçin. Tam Ad, örneğin: Max Mustermann Anahtar yapılandırmasını değiştir. diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index cf586b2d5..365821f4a 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -449,7 +449,7 @@ Це поле - обов\'язкове Паролі фрази не збігаються Ви ввели наступну сутність: - Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу. + Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу. Повне ім\'я, наприклад Степан Бандера diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index b6ab2c8a4..b5b57d91f 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -377,7 +377,7 @@ 必填欄位 口令不相符 建立金鑰可能需要一點時間,來杯咖啡吧… - 輸入你的全名、電子郵件,並選擇一組口令。 + 輸入你的全名、電子郵件,並選擇一組口令。 金鑰 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 2c83ac070..b45fb1c27 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -626,8 +626,10 @@ "Creating a key may take a while, have a cup of coffee in the meantime…" "(3 subkeys, RSA, 4096 bit)" "(custom key configuration)" - "Enter your full name, email address, and choose a passhrase." - "Full Name, e.g. Max Mustermann" + "Choose a name associated with this key. This can be a full name, e.g., 'John Doe', or a nickname, e.g., 'Johnny'." + "Choose the email address used for encrypted communication." + "Choose a strong passphrase. It protects your key when your device gets stolen." + "Full Name or Nickname" "Change key configuration" -- cgit v1.2.3 From e3547b497932a1c0219c11d586858754c82d19da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 22:09:48 +0100 Subject: Show passphrase checkbox in create key --- .../keychain/ui/CreateKeyPassphraseFragment.java | 19 +++++++++++++++++++ .../res/layout/create_key_passphrase_fragment.xml | 7 +++++++ OpenKeychain/src/main/res/values/strings.xml | 1 + 3 files changed, 27 insertions(+) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java index be77d5042..00ac00ff4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java @@ -21,10 +21,14 @@ import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.text.method.HideReturnsTransformationMethod; +import android.text.method.PasswordTransformationMethod; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.EditText; import org.sufficientlysecure.keychain.R; @@ -44,6 +48,7 @@ public class CreateKeyPassphraseFragment extends Fragment { CreateKeyActivity mCreateKeyActivity; PassphraseEditText mPassphraseEdit; EditText mPassphraseEditAgain; + CheckBox mShowPassphrase; View mBackButton; View mNextButton; @@ -102,6 +107,7 @@ public class CreateKeyPassphraseFragment extends Fragment { mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); + mShowPassphrase = (CheckBox) view.findViewById(R.id.create_key_show_passphrase); mBackButton = view.findViewById(R.id.create_key_back_button); mNextButton = view.findViewById(R.id.create_key_next_button); @@ -121,6 +127,19 @@ public class CreateKeyPassphraseFragment extends Fragment { createKeyCheck(); } }); + mShowPassphrase.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) { + mPassphraseEdit.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); + mPassphraseEditAgain.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); + } else { + mPassphraseEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); + mPassphraseEditAgain.setTransformationMethod(PasswordTransformationMethod.getInstance()); + } + } + }); + return view; } diff --git a/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml index 4b09c6cac..48b86765a 100644 --- a/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml @@ -46,6 +46,13 @@ android:ems="10" android:layout_gravity="center_horizontal" /> + + diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index b45fb1c27..a9d7e10c7 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -128,6 +128,7 @@ "Passphrase" "Unlocking…" "Repeat Passphrase" + "Show Passphrase" "Algorithm" "File ASCII Armor" "Enable ASCII Armor" -- cgit v1.2.3