diff --git a/Graphics/drawables/ic_action_encrypt_copy.svg b/Graphics/drawables/ic_action_encrypt_copy.svg new file mode 100644 index 000000000..229c2524b --- /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..7bb435a5d --- /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..35d0d3960 --- /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_24px.svg b/Graphics/drawables/originals/ic_cloud_24dp.svg similarity index 100% rename from Graphics/drawables/originals/ic_cloud_24px.svg rename to Graphics/drawables/originals/ic_cloud_24dp.svg diff --git a/Graphics/drawables/originals/ic_search_24px.svg b/Graphics/drawables/originals/ic_search_24dp.svg similarity index 100% rename from Graphics/drawables/originals/ic_search_24px.svg rename to Graphics/drawables/originals/ic_search_24dp.svg 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/get-material-icons.sh b/Graphics/get-material-icons.sh index d34e572fc..248dcd532 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 @@ -36,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/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/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index 886a8f7a5..3030cdbf2 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/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/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java similarity index 54% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java index b496d40fd..00ac00ff4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java @@ -17,43 +17,46 @@ 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.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.ArrayAdapter; -import android.widget.AutoCompleteTextView; +import android.widget.CheckBox; +import android.widget.CompoundButton; 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.passwordstrengthindicator.PasswordStrengthView; -import org.sufficientlysecure.keychain.util.ContactHelper; +import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; -public class CreateKeyInputFragment extends Fragment { - - CreateKeyActivity mCreateKeyActivity; - - PasswordStrengthView mPassphraseStrengthView; - AutoCompleteTextView mNameEdit; - EmailEditText mEmailEdit; - PasswordEditText mPassphraseEdit; - EditText mPassphraseEditAgain; - View mCreateButton; +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; + CheckBox mShowPassphrase; + View mBackButton; + View mNextButton; + /** * Creates new instance of this fragment */ - public static CreateKeyInputFragment newInstance(String name, String email) { - CreateKeyInputFragment frag = new CreateKeyInputFragment(); + public static CreateKeyPassphraseFragment newInstance(String name, String email) { + CreateKeyPassphraseFragment frag = new CreateKeyPassphraseFragment(); Bundle args = new Bundle(); args.putString(ARG_NAME, name); @@ -64,107 +67,6 @@ public class CreateKeyInputFragment extends Fragment { return frag; } - @Override - 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); - 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); - - // 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(); - } - - 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()) - ) - ); - - // 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) { - 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); - } - /** * Checks if text of given EditText is not empty. If it is empty an error is * set and the EditText gets the focus. @@ -199,4 +101,89 @@ public class CreateKeyInputFragment extends Fragment { 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); + 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); + + // 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(); + } + }); + 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; + } + + @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/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..ed5920cde 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,29 @@ +/* + * 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.view.View; import org.openintents.openpgp.util.OpenPgpApi; import org.sufficientlysecure.keychain.R; @@ -26,6 +45,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..d95b5cda3 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; @@ -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); @@ -314,15 +315,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 +331,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 +365,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 * @@ -418,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); @@ -428,7 +418,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/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; 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/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/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/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; } - } - - 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(); - 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(); + try { + if (getActivity().getContentResolver().delete(deleteUri, null, null) > 0) { + 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); + } + + // 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/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java index 9e1f21f60..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 @@ -43,8 +43,7 @@ import android.widget.Toast; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.ui.widget.PasswordEditText; -import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView; +import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; import org.sufficientlysecure.keychain.util.Log; public class SetPassphraseDialogFragment extends DialogFragment implements OnEditorActionListener { @@ -57,10 +56,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 +98,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/EmailEditText.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/EmailEditText.java index 697f5a61e..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 @@ -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; @@ -34,35 +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); + 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); + 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); + 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(); + initAdapter(); } TextWatcher textWatcher = new TextWatcher() { @@ -82,16 +81,32 @@ 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 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; + setRawInputType(inputType); + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java similarity index 50% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java index ed373a938..f086c5696 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/AutoCorrectAutoCompleteTextView.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/NameEditText.java @@ -17,32 +17,54 @@ 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; -/** - * Hack to re-enable keyboard auto correction in AutoCompleteTextView. - * From http://stackoverflow.com/a/22512858 - */ -public class AutoCorrectAutoCompleteTextView extends AutoCompleteTextView { +import org.sufficientlysecure.keychain.util.ContactHelper; - public AutoCorrectAutoCompleteTextView(Context context) { +public class NameEditText extends AutoCompleteTextView { + public NameEditText(Context context) { super(context); - removeFlag(); + init(); } - public AutoCorrectAutoCompleteTextView(Context context, AttributeSet attrs) { + public NameEditText(Context context, AttributeSet attrs) { super(context, attrs); - removeFlag(); + init(); } - public AutoCorrectAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - removeFlag(); + public NameEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + 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(); + 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; 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..377f701d1 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/PassphraseEditText.java @@ -0,0 +1,88 @@ +/* + * 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; + +public class PassphraseEditText extends EditText { + + PasswordStrengthBarView mPasswordStrengthBarView; + int mPasswordBarWidth; + int mPasswordBarHeight; + float barGap; + + 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); + + 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); + mPasswordStrengthBarView.setShowGuides(false); + + 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/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; - } -} 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/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java index c66dc04d0..08c7c02fb 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); } @@ -75,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; } @@ -256,7 +278,7 @@ public class ContactHelper { } public static Bitmap loadPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId, - boolean highRes) { + boolean highRes) { if (masterKeyId == -1) { return null; } 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..25a7ed445 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..ef17796fb 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..402d792c0 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_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_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-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-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_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..9517e1fec 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..162981140 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..779ba94d3 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_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_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-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-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_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..9df8ff01a 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..eef0635b7 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..d359cd6ab 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_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_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-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-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_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..cf184c78d 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..5620e2595 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..b364c7603 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_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_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-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-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_action_encrypt_copy_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_action_encrypt_copy_24dp.png new file mode 100644 index 000000000..c3078ee92 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..4146f9262 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..925cb2d9e 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_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_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/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/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/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" /> - - - - - + + + + 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" /> 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 b320885d0..000000000 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ /dev/null @@ -1,161 +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..48b86765a --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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" /> - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml index 67f17fa81..809e64f02 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_text_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_inner_layout_white.xml b/OpenKeychain/src/main/res/layout/toolbar_inner_layout_white.xml new file mode 100644 index 000000000..a626efb09 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/toolbar_inner_layout_white.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_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/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 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 @@ - + + + + + + - + + + + + + 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 4a2be2eb8..9753e4d60 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -11,8 +11,8 @@ "Select Keys" "Select Your Key" - "Encrypt Text" - "Encrypt Files" + "Encrypt" + "Encrypt" "Decrypt" "Unlock Key" "Add subkey" @@ -26,7 +26,7 @@ "Share fingerprint with…" "Share key with…" "Share file with…" - "Share message with…" + "Share text with…" "Encrypt To File" "Decrypt To File" "Import Keys" @@ -73,9 +73,10 @@ "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" "Save" "Cancel" "Delete" @@ -87,7 +88,8 @@ "No" "Fingerprints match" "Lookup key" - "Encrypt and share message" + "Encrypt and share text" + "Encrypt and copy text" "View certification key" "Create key" "Add file(s)" @@ -119,7 +121,7 @@ "Export Log" - "Message" + "Text" "File" "File(s)" "File:" @@ -127,6 +129,7 @@ "Passphrase" "Unlocking…" "Repeat Passphrase" + "Show Passphrase" "Algorithm" "File ASCII Armor" "Enable ASCII Armor" @@ -144,7 +147,7 @@ "Encrypt with passphrase" "Cache time" "Cache passphrases by subkey" - "Message compression" + "Text compression" "File compression" "Keyservers" "Key ID" @@ -219,7 +222,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." @@ -260,7 +263,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" @@ -557,7 +560,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: " @@ -625,8 +628,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"