aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik <dominik@dominikschuermann.de>2012-03-09 18:43:10 +0100
committerDominik <dominik@dominikschuermann.de>2012-03-09 18:43:10 +0100
commit4a8d9694c495d445a824696e95ded3337bc7beea (patch)
tree40870158ddf43c93b640664d2794937223f72c9d
parent8452fb62b7d80c297395a8d12acd55a0375bff44 (diff)
downloadopen-keychain-4a8d9694c495d445a824696e95ded3337bc7beea.tar.gz
open-keychain-4a8d9694c495d445a824696e95ded3337bc7beea.tar.bz2
open-keychain-4a8d9694c495d445a824696e95ded3337bc7beea.zip
new icon, new about dialog, some refactorings
-rw-r--r--AndroidManifest.xml7
-rw-r--r--LICENSE16
-rw-r--r--Resources/icon.svg739
-rw-r--r--Resources/icon_sizes.txt21
-rw-r--r--res/drawable-hdpi-finger/btn_circle_disable.png (renamed from res/drawable-hdpi-finger-v4/btn_circle_disable.png)bin2631 -> 2631 bytes
-rw-r--r--res/drawable-hdpi-finger/btn_circle_disable_focused.png (renamed from res/drawable-hdpi-finger-v4/btn_circle_disable_focused.png)bin3001 -> 3001 bytes
-rw-r--r--res/drawable-hdpi-finger/btn_circle_normal.png (renamed from res/drawable-hdpi-finger-v4/btn_circle_normal.png)bin1974 -> 1974 bytes
-rw-r--r--res/drawable-hdpi-finger/btn_circle_pressed.png (renamed from res/drawable-hdpi-finger-v4/btn_circle_pressed.png)bin2624 -> 2624 bytes
-rw-r--r--res/drawable-hdpi-finger/btn_circle_selected.png (renamed from res/drawable-hdpi-finger-v4/btn_circle_selected.png)bin2554 -> 2554 bytes
-rw-r--r--res/drawable-hdpi-finger/ic_btn_round_minus.png (renamed from res/drawable-hdpi-finger-v4/ic_btn_round_minus.png)bin536 -> 536 bytes
-rw-r--r--res/drawable-hdpi-finger/ic_btn_round_plus.png (renamed from res/drawable-hdpi-finger-v4/ic_btn_round_plus.png)bin1316 -> 1316 bytes
-rw-r--r--res/drawable-hdpi-v4/icon.pngbin6505 -> 0 bytes
-rw-r--r--res/drawable-hdpi/encrypted.png (renamed from res/drawable-hdpi-v4/encrypted.png)bin3561 -> 3561 bytes
-rw-r--r--res/drawable-hdpi/encrypted_large.png (renamed from res/drawable-hdpi-v4/encrypted_large.png)bin5244 -> 5244 bytes
-rw-r--r--res/drawable-hdpi/encrypted_small.png (renamed from res/drawable-hdpi-v4/encrypted_small.png)bin2187 -> 2187 bytes
-rw-r--r--res/drawable-hdpi/ic_next.png (renamed from res/drawable-hdpi-v4/ic_next.png)bin1722 -> 1722 bytes
-rw-r--r--res/drawable-hdpi/ic_previous.png (renamed from res/drawable-hdpi-v4/ic_previous.png)bin1712 -> 1712 bytes
-rw-r--r--res/drawable-hdpi/icon.pngbin0 -> 3949 bytes
-rw-r--r--res/drawable-hdpi/key.png (renamed from res/drawable-hdpi-v4/key.png)bin3675 -> 3675 bytes
-rw-r--r--res/drawable-hdpi/key_large.png (renamed from res/drawable-hdpi-v4/key_large.png)bin5550 -> 5550 bytes
-rw-r--r--res/drawable-hdpi/key_small.png (renamed from res/drawable-hdpi-v4/key_small.png)bin2088 -> 2088 bytes
-rw-r--r--res/drawable-hdpi/overlay_error.png (renamed from res/drawable-hdpi-v4/overlay_error.png)bin1986 -> 1986 bytes
-rw-r--r--res/drawable-hdpi/overlay_ok.png (renamed from res/drawable-hdpi-v4/overlay_ok.png)bin1702 -> 1702 bytes
-rw-r--r--res/drawable-hdpi/signed.png (renamed from res/drawable-hdpi-v4/signed.png)bin3858 -> 3858 bytes
-rw-r--r--res/drawable-hdpi/signed_large.png (renamed from res/drawable-hdpi-v4/signed_large.png)bin5928 -> 5928 bytes
-rw-r--r--res/drawable-hdpi/signed_small.png (renamed from res/drawable-hdpi-v4/signed_small.png)bin2219 -> 2219 bytes
-rw-r--r--res/drawable-ldpi-v4/icon.pngbin2426 -> 0 bytes
-rw-r--r--res/drawable-ldpi/encrypted.png (renamed from res/drawable-ldpi-v4/encrypted.png)bin1513 -> 1513 bytes
-rw-r--r--res/drawable-ldpi/encrypted_large.png (renamed from res/drawable-ldpi-v4/encrypted_large.png)bin2486 -> 2486 bytes
-rw-r--r--res/drawable-ldpi/encrypted_small.png (renamed from res/drawable-ldpi-v4/encrypted_small.png)bin1176 -> 1176 bytes
-rw-r--r--res/drawable-ldpi/ic_next.png (renamed from res/drawable-ldpi-v4/ic_next.png)bin916 -> 916 bytes
-rw-r--r--res/drawable-ldpi/ic_previous.png (renamed from res/drawable-ldpi-v4/ic_previous.png)bin922 -> 922 bytes
-rw-r--r--res/drawable-ldpi/icon.pngbin0 -> 1795 bytes
-rw-r--r--res/drawable-ldpi/key.png (renamed from res/drawable-ldpi-v4/key.png)bin1484 -> 1484 bytes
-rw-r--r--res/drawable-ldpi/key_large.png (renamed from res/drawable-ldpi-v4/key_large.png)bin2462 -> 2462 bytes
-rw-r--r--res/drawable-ldpi/key_small.png (renamed from res/drawable-ldpi-v4/key_small.png)bin1074 -> 1074 bytes
-rw-r--r--res/drawable-ldpi/overlay_error.png (renamed from res/drawable-ldpi-v4/overlay_error.png)bin1192 -> 1192 bytes
-rw-r--r--res/drawable-ldpi/overlay_ok.png (renamed from res/drawable-ldpi-v4/overlay_ok.png)bin1038 -> 1038 bytes
-rw-r--r--res/drawable-ldpi/signed.png (renamed from res/drawable-ldpi-v4/signed.png)bin1576 -> 1576 bytes
-rw-r--r--res/drawable-ldpi/signed_large.png (renamed from res/drawable-ldpi-v4/signed_large.png)bin2611 -> 2611 bytes
-rw-r--r--res/drawable-ldpi/signed_small.png (renamed from res/drawable-ldpi-v4/signed_small.png)bin1149 -> 1149 bytes
-rw-r--r--res/drawable-mdpi-finger/btn_circle_disable.png (renamed from res/drawable-mdpi-finger-v4/btn_circle_disable.png)bin938 -> 938 bytes
-rw-r--r--res/drawable-mdpi-finger/btn_circle_disable_focused.png (renamed from res/drawable-mdpi-finger-v4/btn_circle_disable_focused.png)bin1436 -> 1436 bytes
-rw-r--r--res/drawable-mdpi-finger/btn_circle_normal.png (renamed from res/drawable-mdpi-finger-v4/btn_circle_normal.png)bin1249 -> 1249 bytes
-rw-r--r--res/drawable-mdpi-finger/btn_circle_pressed.png (renamed from res/drawable-mdpi-finger-v4/btn_circle_pressed.png)bin1613 -> 1613 bytes
-rw-r--r--res/drawable-mdpi-finger/btn_circle_selected.png (renamed from res/drawable-mdpi-finger-v4/btn_circle_selected.png)bin1645 -> 1645 bytes
-rw-r--r--res/drawable-mdpi-finger/ic_btn_round_minus.png (renamed from res/drawable-mdpi-finger-v4/ic_btn_round_minus.png)bin288 -> 288 bytes
-rw-r--r--res/drawable-mdpi-finger/ic_btn_round_plus.png (renamed from res/drawable-mdpi-finger-v4/ic_btn_round_plus.png)bin526 -> 526 bytes
-rw-r--r--res/drawable-mdpi-v4/icon.pngbin3582 -> 0 bytes
-rw-r--r--res/drawable-mdpi/encrypted.png (renamed from res/drawable-mdpi-v4/encrypted.png)bin2486 -> 2486 bytes
-rw-r--r--res/drawable-mdpi/encrypted_large.png (renamed from res/drawable-mdpi-v4/encrypted_large.png)bin3561 -> 3561 bytes
-rw-r--r--res/drawable-mdpi/encrypted_small.png (renamed from res/drawable-mdpi-v4/encrypted_small.png)bin1513 -> 1513 bytes
-rw-r--r--res/drawable-mdpi/ic_next.png (renamed from res/drawable-mdpi-v4/ic_next.png)bin1360 -> 1360 bytes
-rw-r--r--res/drawable-mdpi/ic_previous.png (renamed from res/drawable-mdpi-v4/ic_previous.png)bin1352 -> 1352 bytes
-rw-r--r--res/drawable-mdpi/icon.pngbin0 -> 2516 bytes
-rw-r--r--res/drawable-mdpi/key.png (renamed from res/drawable-mdpi-v4/key.png)bin2462 -> 2462 bytes
-rw-r--r--res/drawable-mdpi/key_large.png (renamed from res/drawable-mdpi-v4/key_large.png)bin3675 -> 3675 bytes
-rw-r--r--res/drawable-mdpi/key_small.png (renamed from res/drawable-mdpi-v4/key_small.png)bin1484 -> 1484 bytes
-rw-r--r--res/drawable-mdpi/overlay_error.png (renamed from res/drawable-mdpi-v4/overlay_error.png)bin1539 -> 1539 bytes
-rw-r--r--res/drawable-mdpi/overlay_ok.png (renamed from res/drawable-mdpi-v4/overlay_ok.png)bin1305 -> 1305 bytes
-rw-r--r--res/drawable-mdpi/signed.png (renamed from res/drawable-mdpi-v4/signed.png)bin2611 -> 2611 bytes
-rw-r--r--res/drawable-mdpi/signed_large.png (renamed from res/drawable-mdpi-v4/signed_large.png)bin3858 -> 3858 bytes
-rw-r--r--res/drawable-mdpi/signed_small.png (renamed from res/drawable-mdpi-v4/signed_small.png)bin1576 -> 1576 bytes
-rw-r--r--res/drawable-xhdpi/icon.pngbin0 -> 5909 bytes
-rw-r--r--res/drawable/icon.pngbin2947 -> 0 bytes
-rw-r--r--res/layout/about_activity.xml97
-rw-r--r--res/values/static_strings.xml3
-rw-r--r--res/values/strings.xml11
-rw-r--r--src/org/apg/Apg.java4
-rw-r--r--src/org/apg/Constants.java38
-rw-r--r--src/org/apg/Id.java2
-rw-r--r--src/org/apg/Preferences.java46
-rw-r--r--src/org/apg/provider/ApgServiceBlobProvider.java2
-rw-r--r--src/org/apg/ui/AboutActivity.java51
-rw-r--r--src/org/apg/ui/BaseActivity.java53
-rw-r--r--src/org/apg/ui/DecryptActivity.java26
-rw-r--r--src/org/apg/ui/EditKeyActivity.java2
-rw-r--r--src/org/apg/ui/EncryptActivity.java4
-rw-r--r--src/org/apg/ui/ImportFromQRCodeActivity.java6
-rw-r--r--src/org/apg/ui/KeyListActivity.java10
-rw-r--r--src/org/apg/ui/KeyServerQueryActivity.java2
-rw-r--r--src/org/apg/ui/PreferencesActivity.java18
-rw-r--r--src/org/apg/ui/PublicKeyListActivity.java2
-rw-r--r--src/org/apg/ui/SecretKeyListActivity.java2
-rw-r--r--src/org/apg/ui/SendKeyActivity.java2
-rw-r--r--src/org/apg/ui/SignKeyActivity.java12
86 files changed, 1044 insertions, 132 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index b3f818239..4ab346b7d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -8,7 +8,7 @@
android:versionName="1.1" >
<uses-sdk
- android:minSdkVersion="3"
+ android:minSdkVersion="4"
android:targetSdkVersion="14" />
<permission
@@ -197,6 +197,11 @@
android:name=".ui.ImportFromQRCodeActivity"
android:configChanges="keyboardHidden|orientation|keyboard"
android:label="@string/title_importFromQRCode" />
+ <activity
+ android:name=".ui.AboutActivity"
+ android:excludeFromRecents="true"
+ android:label="@string/title_about"
+ android:theme="@android:style/Theme.Dialog" />
<service android:name=".Service" />
<service
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..f2b2cd327
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,16 @@
+The following open source projects are used in APG:
+
+ * ZXing QRCode Integration
+ http://code.google.com/p/zxing/
+ Apache License v2
+
+ * SpongyCastle
+ https://github.com/rtyley/spongycastle
+ MIT X11 License
+
+Images:
+
+ * icon.svg
+ modified version of GnuPG Logo (not)
+ http://openclipart.org/detail/15078/gnupg-logo-(not)-by-mrbordello
+ Public Domain
diff --git a/Resources/icon.svg b/Resources/icon.svg
new file mode 100644
index 000000000..902b6d374
--- /dev/null
+++ b/Resources/icon.svg
@@ -0,0 +1,739 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="16.879999"
+ inkscape:export-xdpi="16.879999"
+ inkscape:export-filename="/home/ds1/Projekte/APG Plus/res/drawable-xhdpi/icon.png"
+ version="1.0"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:docname="icon.svg"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:version="0.32"
+ id="svg2"
+ height="512"
+ width="512">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient7008">
+ <stop
+ style="stop-color:#666666;stop-opacity:1;"
+ offset="0"
+ id="stop7010" />
+ <stop
+ style="stop-color:#d2d6d0;stop-opacity:1;"
+ offset="1"
+ id="stop7012" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5479"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop5481" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4957">
+ <stop
+ id="stop4959"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop4961"
+ offset="1"
+ style="stop-color:#b6b3ac;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4905">
+ <stop
+ style="stop-color:#00c2e6;stop-opacity:1;"
+ offset="0"
+ id="stop4907" />
+ <stop
+ style="stop-color:#007fa2;stop-opacity:1;"
+ offset="1"
+ id="stop4909" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3861">
+ <stop
+ style="stop-color:#75a5ce;stop-opacity:1;"
+ offset="0"
+ id="stop3863" />
+ <stop
+ style="stop-color:#75a5ce;stop-opacity:1;"
+ offset="1"
+ id="stop3865" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ style="stop-color:#00789a;stop-opacity:1;"
+ offset="0"
+ id="stop3851" />
+ <stop
+ style="stop-color:#50789a;stop-opacity:1;"
+ offset="1"
+ id="stop3853" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2201">
+ <stop
+ id="stop2203"
+ offset="0"
+ style="stop-color:#d5d5d5;stop-opacity:1;" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0.22727273"
+ id="stop2207" />
+ <stop
+ id="stop3082"
+ offset="0.87706614"
+ style="stop-color:#d1d1d1;stop-opacity:1;" />
+ <stop
+ id="stop2205"
+ offset="1"
+ style="stop-color:#afafaf;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2191">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop2193" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop2195" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2201"
+ id="linearGradient2199"
+ x1="320.69421"
+ y1="285.6604"
+ x2="253.32147"
+ y2="591.70483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.93617,296.44,-189.045)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4905"
+ id="linearGradient4911"
+ x1="277.07236"
+ y1="211.8645"
+ x2="276.87354"
+ y2="552.9649"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.0112027,0,-2.3678154)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient4955"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5065"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5067"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5069"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5071"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5073"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5075"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5079"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5082"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5085"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5088"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5091"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298"
+ gradientTransform="translate(-8.0847263,-100.8597)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5137"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298"
+ gradientTransform="translate(-8.0847263,-100.8597)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5140"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5148"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5151"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient5154"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <filter
+ id="filter5214"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur5216"
+ in="SourceAlpha"
+ stdDeviation="2"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix5218"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.5 0 " />
+ <feOffset
+ id="feOffset5220"
+ in="bluralpha"
+ dx="0"
+ dy="6"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge5222">
+ <feMergeNode
+ id="feMergeNode5224"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode5226"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter5475">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.1836883"
+ id="feGaussianBlur5477" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter6936">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.72311148"
+ id="feGaussianBlur6938" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter6944">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.69609809"
+ id="feGaussianBlur6946" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ id="filter6952">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.68277711"
+ id="feGaussianBlur6954" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient6956"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient6978"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient6980"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient6982"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-8.0847263,-100.8597)"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4957"
+ id="linearGradient6984"
+ gradientUnits="userSpaceOnUse"
+ x1="265.73489"
+ y1="232.44435"
+ x2="262.43457"
+ y2="535.43298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7008"
+ id="linearGradient7014"
+ x1="215.32114"
+ y1="561.41132"
+ x2="215.79901"
+ y2="207.90399"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.37106997"
+ inkscape:cx="202.2058"
+ inkscape:cy="175.87027"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ inkscape:window-width="1278"
+ inkscape:window-height="779"
+ inkscape:window-x="0"
+ inkscape:window-y="19"
+ showgrid="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-8.0847263,-100.8597)">
+ <image
+ y="-80.79155"
+ x="-799.50232"
+ id="image4902"
+ xlink:href="data:image/png;base64,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
+"
+ height="697.32062"
+ width="697.32062" />
+ <rect
+ style="fill:#cab6b2;fill-opacity:1;stroke:#e6e6e6;stroke-width:7.59385872;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter6952)"
+ id="rect5269-9"
+ width="415.09143"
+ height="40.093307"
+ x="54.771664"
+ y="161.00397"
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)" />
+ <rect
+ style="fill:#00bee3;fill-rule:evenodd;stroke:#00e0f4;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter6944)"
+ x="48.620232"
+ y="178.68233"
+ clip-rule="evenodd"
+ width="430.92899"
+ height="33.13641"
+ id="rect4077"
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)" />
+ <rect
+ style="fill:#cab6b2;fill-opacity:1;stroke:#ececec;stroke-width:6.39377022;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter6936)"
+ id="rect5269"
+ width="449.6232"
+ height="32.451118"
+ x="38.901093"
+ y="193.63016"
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)" />
+ <path
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)"
+ style="fill:url(#linearGradient4911);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7014);stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;filter:url(#filter5475)"
+ d="m 38.873764,211.36108 451.425746,0 -6.45086,342.72265 -438.524022,1.29017 z"
+ id="rect4081"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <g
+ id="g6972"
+ transform="translate(0,30.267528)">
+ <path
+ id="path4097"
+ transform="matrix(1.0443987,0,0,1.0443987,-1.0923835,85.001022)"
+ d="m 162.03125,133.9375 c -49.54172,0 -89.6875,39.31605 -89.6875,87.875 0,48.52912 40.14578,87.90625 89.6875,87.90625 49.52683,0 89.65625,-39.36219 89.65625,-87.90625 0,-48.55895 -40.12942,-87.8898 -89.65625,-87.875 z M 127,179.5 c 15.431,-0.18063 30.22296,9.49659 36.53125,23.53125 1.1589,2.33661 2.03044,4.7691 2.625,7.25 l 67.84375,0 0,13.96875 0,6.96875 0,27.9375 -17.15625,0 0,-27.9375 -5.0625,0 0,22.4375 -16.28125,0 0,-22.4375 -30.28125,0 c -3.71161,11.68619 -12.49891,21.87072 -24.25,25.90625 -21.85981,8.94251 -48.933986,-6.26108 -53.15625,-29.3125 -5.704275,-23.08531 13.88377,-48.31905 37.71875,-48.28125 0.49884,-0.0265 0.97098,-0.0254 1.46875,-0.0312 z m 0.28125,15.25 c -4.75625,-0.039 -9.49795,1.29027 -13.53125,3.875 -13.9155,8.00528 -15.08095,29.07247 -3.3125,39.375 11.76556,11.32313 32.91529,6.54173 39.3125,-8.375 7.63441,-15.14179 -5.42735,-35.43389 -22.46875,-34.875 z"
+ style="fill:url(#linearGradient6978);fill-opacity:1;fill-rule:evenodd;filter:url(#filter5214)"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)"
+ id="path4099"
+ d="M 170.0922,462.95886 H 65.648064 c 0,-53.26442 61.677736,-48.23134 61.677736,-48.23134 12.71675,6.77529 27.27996,10.61716 42.7664,10.61716 15.47154,0 30.03476,-3.84187 42.73661,-10.61716 0,0 61.67774,-5.03308 61.67774,48.23134 H 170.0922 z"
+ clip-rule="evenodd"
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient6980);fill-opacity:1;fill-rule:evenodd;filter:url(#filter5214)" />
+ <path
+ id="path4097-5"
+ transform="matrix(1.0443987,0,0,1.0443987,-1.0923835,85.001022)"
+ d="m 350.03125,133.8125 c -49.54172,0 -89.6875,39.31605 -89.6875,87.875 0,48.52912 40.14578,87.90625 89.6875,87.90625 49.52683,0 89.6875,-39.36219 89.6875,-87.90625 0,-48.55895 -40.16067,-87.8898 -89.6875,-87.875 z m -1.875,32 c 14.41604,-0.16876 28.26288,8.8572 34.15625,21.96875 2.40913,4.85738 3.44286,10.15179 3.34375,15.4375 l 3.8125,0 0,63.21875 -82.5625,0 0,-63.21875 3.71875,0 c 10e-4,-19.10536 16.53325,-37.40611 36.15625,-37.375 0.46603,-0.0248 0.90997,-0.0258 1.375,-0.0312 z m 0.25,14.25 c -4.4434,-0.0364 -8.85699,1.21027 -12.625,3.625 -7.09533,4.08178 -10.62297,11.79948 -10.59375,19.53125 l 46.28125,0 C 371.16721,191.329 360.94367,179.65133 348.40625,180.0625 z"
+ style="fill:url(#linearGradient6982);fill-opacity:1;fill-rule:evenodd;filter:url(#filter5214)"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.0443987,0,0,1.0443987,-9.5360611,-20.336718)"
+ id="path4099-4"
+ d="M 358.10704,462.8403 H 253.66291 c 0,-53.26442 61.67773,-48.23134 61.67773,-48.23134 12.71675,6.77529 27.27995,10.61717 42.7664,10.61717 15.47154,0 30.03476,-3.84188 42.73661,-10.61717 0,0 61.67774,-5.03308 61.67774,48.23134 H 358.10704 z"
+ clip-rule="evenodd"
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient6984);fill-opacity:1;fill-rule:evenodd;filter:url(#filter5214)" />
+ </g>
+ </g>
+</svg>
diff --git a/Resources/icon_sizes.txt b/Resources/icon_sizes.txt
new file mode 100644
index 000000000..b6d698752
--- /dev/null
+++ b/Resources/icon_sizes.txt
@@ -0,0 +1,21 @@
+Launcher Icon:
+-----------------------
+ldpi: 36x36
+mdpi: 48x48
+hdpi: 72x72
+xhdpi: 96x96
+google code: 55x55
+android market: 512x512
+
+Status Bar Icon:
+-----------------------
+Android < 3.0
+ldpi: 12x19
+mdpi: 16x25
+hdpi: 24x38
+
+Android > 3.0
+ldpi: 18x18
+mdpi: 24x24
+hdpi: 36x36
+xhdpi: 48x48
diff --git a/res/drawable-hdpi-finger-v4/btn_circle_disable.png b/res/drawable-hdpi-finger/btn_circle_disable.png
index ae063b545..ae063b545 100644
--- a/res/drawable-hdpi-finger-v4/btn_circle_disable.png
+++ b/res/drawable-hdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/btn_circle_disable_focused.png b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
index 7a5d4fe4e..7a5d4fe4e 100644
--- a/res/drawable-hdpi-finger-v4/btn_circle_disable_focused.png
+++ b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/btn_circle_normal.png b/res/drawable-hdpi-finger/btn_circle_normal.png
index 5eda66883..5eda66883 100644
--- a/res/drawable-hdpi-finger-v4/btn_circle_normal.png
+++ b/res/drawable-hdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/btn_circle_pressed.png b/res/drawable-hdpi-finger/btn_circle_pressed.png
index 88848bac2..88848bac2 100644
--- a/res/drawable-hdpi-finger-v4/btn_circle_pressed.png
+++ b/res/drawable-hdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/btn_circle_selected.png b/res/drawable-hdpi-finger/btn_circle_selected.png
index 74690705f..74690705f 100644
--- a/res/drawable-hdpi-finger-v4/btn_circle_selected.png
+++ b/res/drawable-hdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/ic_btn_round_minus.png b/res/drawable-hdpi-finger/ic_btn_round_minus.png
index 27af3faf4..27af3faf4 100644
--- a/res/drawable-hdpi-finger-v4/ic_btn_round_minus.png
+++ b/res/drawable-hdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-hdpi-finger-v4/ic_btn_round_plus.png b/res/drawable-hdpi-finger/ic_btn_round_plus.png
index b24168c32..b24168c32 100644
--- a/res/drawable-hdpi-finger-v4/ic_btn_round_plus.png
+++ b/res/drawable-hdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/icon.png b/res/drawable-hdpi-v4/icon.png
deleted file mode 100644
index 072f0a089..000000000
--- a/res/drawable-hdpi-v4/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi-v4/encrypted.png b/res/drawable-hdpi/encrypted.png
index 541781cd1..541781cd1 100644
--- a/res/drawable-hdpi-v4/encrypted.png
+++ b/res/drawable-hdpi/encrypted.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/encrypted_large.png b/res/drawable-hdpi/encrypted_large.png
index 209278377..209278377 100644
--- a/res/drawable-hdpi-v4/encrypted_large.png
+++ b/res/drawable-hdpi/encrypted_large.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/encrypted_small.png b/res/drawable-hdpi/encrypted_small.png
index 3ff8e9b97..3ff8e9b97 100644
--- a/res/drawable-hdpi-v4/encrypted_small.png
+++ b/res/drawable-hdpi/encrypted_small.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/ic_next.png b/res/drawable-hdpi/ic_next.png
index d71058055..d71058055 100644
--- a/res/drawable-hdpi-v4/ic_next.png
+++ b/res/drawable-hdpi/ic_next.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/ic_previous.png b/res/drawable-hdpi/ic_previous.png
index d610e4667..d610e4667 100644
--- a/res/drawable-hdpi-v4/ic_previous.png
+++ b/res/drawable-hdpi/ic_previous.png
Binary files differ
diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png
new file mode 100644
index 000000000..d36080251
--- /dev/null
+++ b/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/key.png b/res/drawable-hdpi/key.png
index af4742ec0..af4742ec0 100644
--- a/res/drawable-hdpi-v4/key.png
+++ b/res/drawable-hdpi/key.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/key_large.png b/res/drawable-hdpi/key_large.png
index 590f7d5a4..590f7d5a4 100644
--- a/res/drawable-hdpi-v4/key_large.png
+++ b/res/drawable-hdpi/key_large.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/key_small.png b/res/drawable-hdpi/key_small.png
index 6966048a1..6966048a1 100644
--- a/res/drawable-hdpi-v4/key_small.png
+++ b/res/drawable-hdpi/key_small.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/overlay_error.png b/res/drawable-hdpi/overlay_error.png
index e6d7e60ba..e6d7e60ba 100644
--- a/res/drawable-hdpi-v4/overlay_error.png
+++ b/res/drawable-hdpi/overlay_error.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/overlay_ok.png b/res/drawable-hdpi/overlay_ok.png
index 0672f869d..0672f869d 100644
--- a/res/drawable-hdpi-v4/overlay_ok.png
+++ b/res/drawable-hdpi/overlay_ok.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/signed.png b/res/drawable-hdpi/signed.png
index ab9495e7b..ab9495e7b 100644
--- a/res/drawable-hdpi-v4/signed.png
+++ b/res/drawable-hdpi/signed.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/signed_large.png b/res/drawable-hdpi/signed_large.png
index c209f4167..c209f4167 100644
--- a/res/drawable-hdpi-v4/signed_large.png
+++ b/res/drawable-hdpi/signed_large.png
Binary files differ
diff --git a/res/drawable-hdpi-v4/signed_small.png b/res/drawable-hdpi/signed_small.png
index 54c4906e8..54c4906e8 100644
--- a/res/drawable-hdpi-v4/signed_small.png
+++ b/res/drawable-hdpi/signed_small.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/icon.png b/res/drawable-ldpi-v4/icon.png
deleted file mode 100644
index e310c42e8..000000000
--- a/res/drawable-ldpi-v4/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldpi-v4/encrypted.png b/res/drawable-ldpi/encrypted.png
index bcd8cfc8e..bcd8cfc8e 100644
--- a/res/drawable-ldpi-v4/encrypted.png
+++ b/res/drawable-ldpi/encrypted.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/encrypted_large.png b/res/drawable-ldpi/encrypted_large.png
index 34c3d3f97..34c3d3f97 100644
--- a/res/drawable-ldpi-v4/encrypted_large.png
+++ b/res/drawable-ldpi/encrypted_large.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/encrypted_small.png b/res/drawable-ldpi/encrypted_small.png
index 5e7294a4b..5e7294a4b 100644
--- a/res/drawable-ldpi-v4/encrypted_small.png
+++ b/res/drawable-ldpi/encrypted_small.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/ic_next.png b/res/drawable-ldpi/ic_next.png
index 474ed8faa..474ed8faa 100644
--- a/res/drawable-ldpi-v4/ic_next.png
+++ b/res/drawable-ldpi/ic_next.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/ic_previous.png b/res/drawable-ldpi/ic_previous.png
index 6fd885e6b..6fd885e6b 100644
--- a/res/drawable-ldpi-v4/ic_previous.png
+++ b/res/drawable-ldpi/ic_previous.png
Binary files differ
diff --git a/res/drawable-ldpi/icon.png b/res/drawable-ldpi/icon.png
new file mode 100644
index 000000000..5b9c33f0c
--- /dev/null
+++ b/res/drawable-ldpi/icon.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/key.png b/res/drawable-ldpi/key.png
index c806b6041..c806b6041 100644
--- a/res/drawable-ldpi-v4/key.png
+++ b/res/drawable-ldpi/key.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/key_large.png b/res/drawable-ldpi/key_large.png
index aa499a5e1..aa499a5e1 100644
--- a/res/drawable-ldpi-v4/key_large.png
+++ b/res/drawable-ldpi/key_large.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/key_small.png b/res/drawable-ldpi/key_small.png
index 073b95029..073b95029 100644
--- a/res/drawable-ldpi-v4/key_small.png
+++ b/res/drawable-ldpi/key_small.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/overlay_error.png b/res/drawable-ldpi/overlay_error.png
index e5a88e18f..e5a88e18f 100644
--- a/res/drawable-ldpi-v4/overlay_error.png
+++ b/res/drawable-ldpi/overlay_error.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/overlay_ok.png b/res/drawable-ldpi/overlay_ok.png
index 63374d47f..63374d47f 100644
--- a/res/drawable-ldpi-v4/overlay_ok.png
+++ b/res/drawable-ldpi/overlay_ok.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/signed.png b/res/drawable-ldpi/signed.png
index 4202c3f97..4202c3f97 100644
--- a/res/drawable-ldpi-v4/signed.png
+++ b/res/drawable-ldpi/signed.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/signed_large.png b/res/drawable-ldpi/signed_large.png
index d2917644c..d2917644c 100644
--- a/res/drawable-ldpi-v4/signed_large.png
+++ b/res/drawable-ldpi/signed_large.png
Binary files differ
diff --git a/res/drawable-ldpi-v4/signed_small.png b/res/drawable-ldpi/signed_small.png
index 19d45f8da..19d45f8da 100644
--- a/res/drawable-ldpi-v4/signed_small.png
+++ b/res/drawable-ldpi/signed_small.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/btn_circle_disable.png b/res/drawable-mdpi-finger/btn_circle_disable.png
index 33b74a66c..33b74a66c 100644
--- a/res/drawable-mdpi-finger-v4/btn_circle_disable.png
+++ b/res/drawable-mdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/btn_circle_disable_focused.png b/res/drawable-mdpi-finger/btn_circle_disable_focused.png
index 005ad8dca..005ad8dca 100644
--- a/res/drawable-mdpi-finger-v4/btn_circle_disable_focused.png
+++ b/res/drawable-mdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/btn_circle_normal.png b/res/drawable-mdpi-finger/btn_circle_normal.png
index fc5af1c9f..fc5af1c9f 100644
--- a/res/drawable-mdpi-finger-v4/btn_circle_normal.png
+++ b/res/drawable-mdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/btn_circle_pressed.png b/res/drawable-mdpi-finger/btn_circle_pressed.png
index 8f40afdfc..8f40afdfc 100644
--- a/res/drawable-mdpi-finger-v4/btn_circle_pressed.png
+++ b/res/drawable-mdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/btn_circle_selected.png b/res/drawable-mdpi-finger/btn_circle_selected.png
index c74fac227..c74fac227 100644
--- a/res/drawable-mdpi-finger-v4/btn_circle_selected.png
+++ b/res/drawable-mdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/ic_btn_round_minus.png b/res/drawable-mdpi-finger/ic_btn_round_minus.png
index 96dbb17d2..96dbb17d2 100644
--- a/res/drawable-mdpi-finger-v4/ic_btn_round_minus.png
+++ b/res/drawable-mdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-mdpi-finger-v4/ic_btn_round_plus.png b/res/drawable-mdpi-finger/ic_btn_round_plus.png
index 1ec8a956a..1ec8a956a 100644
--- a/res/drawable-mdpi-finger-v4/ic_btn_round_plus.png
+++ b/res/drawable-mdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/icon.png b/res/drawable-mdpi-v4/icon.png
deleted file mode 100644
index 3c165f9bd..000000000
--- a/res/drawable-mdpi-v4/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi-v4/encrypted.png b/res/drawable-mdpi/encrypted.png
index 34c3d3f97..34c3d3f97 100644
--- a/res/drawable-mdpi-v4/encrypted.png
+++ b/res/drawable-mdpi/encrypted.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/encrypted_large.png b/res/drawable-mdpi/encrypted_large.png
index 541781cd1..541781cd1 100644
--- a/res/drawable-mdpi-v4/encrypted_large.png
+++ b/res/drawable-mdpi/encrypted_large.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/encrypted_small.png b/res/drawable-mdpi/encrypted_small.png
index bcd8cfc8e..bcd8cfc8e 100644
--- a/res/drawable-mdpi-v4/encrypted_small.png
+++ b/res/drawable-mdpi/encrypted_small.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/ic_next.png b/res/drawable-mdpi/ic_next.png
index 8271c1380..8271c1380 100644
--- a/res/drawable-mdpi-v4/ic_next.png
+++ b/res/drawable-mdpi/ic_next.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/ic_previous.png b/res/drawable-mdpi/ic_previous.png
index ef90db972..ef90db972 100644
--- a/res/drawable-mdpi-v4/ic_previous.png
+++ b/res/drawable-mdpi/ic_previous.png
Binary files differ
diff --git a/res/drawable-mdpi/icon.png b/res/drawable-mdpi/icon.png
new file mode 100644
index 000000000..fec2d62ce
--- /dev/null
+++ b/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/key.png b/res/drawable-mdpi/key.png
index aa499a5e1..aa499a5e1 100644
--- a/res/drawable-mdpi-v4/key.png
+++ b/res/drawable-mdpi/key.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/key_large.png b/res/drawable-mdpi/key_large.png
index af4742ec0..af4742ec0 100644
--- a/res/drawable-mdpi-v4/key_large.png
+++ b/res/drawable-mdpi/key_large.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/key_small.png b/res/drawable-mdpi/key_small.png
index c806b6041..c806b6041 100644
--- a/res/drawable-mdpi-v4/key_small.png
+++ b/res/drawable-mdpi/key_small.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/overlay_error.png b/res/drawable-mdpi/overlay_error.png
index 5fe017433..5fe017433 100644
--- a/res/drawable-mdpi-v4/overlay_error.png
+++ b/res/drawable-mdpi/overlay_error.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/overlay_ok.png b/res/drawable-mdpi/overlay_ok.png
index b4f332260..b4f332260 100644
--- a/res/drawable-mdpi-v4/overlay_ok.png
+++ b/res/drawable-mdpi/overlay_ok.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/signed.png b/res/drawable-mdpi/signed.png
index d2917644c..d2917644c 100644
--- a/res/drawable-mdpi-v4/signed.png
+++ b/res/drawable-mdpi/signed.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/signed_large.png b/res/drawable-mdpi/signed_large.png
index ab9495e7b..ab9495e7b 100644
--- a/res/drawable-mdpi-v4/signed_large.png
+++ b/res/drawable-mdpi/signed_large.png
Binary files differ
diff --git a/res/drawable-mdpi-v4/signed_small.png b/res/drawable-mdpi/signed_small.png
index 4202c3f97..4202c3f97 100644
--- a/res/drawable-mdpi-v4/signed_small.png
+++ b/res/drawable-mdpi/signed_small.png
Binary files differ
diff --git a/res/drawable-xhdpi/icon.png b/res/drawable-xhdpi/icon.png
new file mode 100644
index 000000000..ffeb8cdf3
--- /dev/null
+++ b/res/drawable-xhdpi/icon.png
Binary files differ
diff --git a/res/drawable/icon.png b/res/drawable/icon.png
deleted file mode 100644
index b4e4db40e..000000000
--- a/res/drawable/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/about_activity.xml b/res/layout/about_activity.xml
new file mode 100644
index 000000000..0388f5c06
--- /dev/null
+++ b/res/layout/about_activity.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:isScrollContainer="true"
+ android:orientation="vertical"
+ android:paddingBottom="15dp"
+ android:paddingLeft="15dp"
+ android:paddingRight="15dp"
+ android:scrollbars="vertical" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal" >
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"
+ android:layout_marginRight="10dp"
+ android:src="@drawable/icon" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/app_name"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/about_version"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@android:style/TextAppearance.Small" />
+ </LinearLayout>
+ </LinearLayout>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:autoLink="web"
+ android:text="@string/about_url"
+ android:textAppearance="@android:style/TextAppearance.Small" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/about_description"
+ android:textAppearance="@android:style/TextAppearance.Small" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/about_license"
+ android:textAppearance="@android:style/TextAppearance.Small" />
+
+<!-- <TextView -->
+<!-- android:layout_width="wrap_content" -->
+<!-- android:layout_height="wrap_content" -->
+<!-- android:layout_marginTop="8dp" -->
+<!-- android:text="@string/about_developer" -->
+<!-- android:textAppearance="@android:style/TextAppearance.Small" /> -->
+
+<!-- <TextView -->
+<!-- android:layout_width="wrap_content" -->
+<!-- android:layout_height="wrap_content" -->
+<!-- android:layout_marginTop="8dp" -->
+<!-- android:text="@string/about_icons" -->
+<!-- android:textAppearance="@android:style/TextAppearance.Small" /> -->
+
+<!-- <TextView -->
+<!-- android:layout_width="wrap_content" -->
+<!-- android:layout_height="wrap_content" -->
+<!-- android:layout_marginTop="8dp" -->
+<!-- android:text="@string/about_libs" -->
+<!-- android:textAppearance="@android:style/TextAppearance.Small" /> -->
+ </LinearLayout>
+
+</ScrollView> \ No newline at end of file
diff --git a/res/values/static_strings.xml b/res/values/static_strings.xml
index 41adbfad7..c8a6a5026 100644
--- a/res/values/static_strings.xml
+++ b/res/values/static_strings.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name">APG Plus</string>
+ <string name="app_name" translate="false">APG+</string>
+ <string name="about_url" translate="false">https://github.com/dschuermann/apg</string>
</resources> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2e6386182..455b97717 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -46,7 +46,8 @@
<string name="title_unknownSignatureKey">Unknown Signature Key</string>
<string name="title_importFromQRCode">Import from QR Code</string>
<string name="title_signKey">Sign Key</string>
-
+ <string name="title_about">About</string>
+
<!-- section_lowerCase: capitalized words, no punctuation -->
<string name="section_userIds">User IDs</string>
<string name="section_keys">Keys</string>
@@ -314,7 +315,13 @@
<string name="fast">fast</string>
<string name="slow">slow</string>
<string name="very_slow">very slow</string>
-
+
+ <!-- about -->
+ <string name="about_description">Android Privacy Guard (APG) is a OpenPGP implementation for Android.</string>
+ <string name="about_license">License: Apache License 2.0</string>
+ <string name="about_version">Version:</string>
+ <string name="about_developer">Developer: ...</string>
+
<!-- texts -->
<!-- "OI File Manager", "ASTRO", and "K-9 Mail" must not be translated in order for the links to the market to work. -->
<string name="text_help">Install K-9 Mail for the best integration, it supports APG for PGP/INLINE and lets you directly encrypt/decrypt emails.
diff --git a/src/org/apg/Apg.java b/src/org/apg/Apg.java
index d0e54f4d8..2bfdb31e6 100644
--- a/src/org/apg/Apg.java
+++ b/src/org/apg/Apg.java
@@ -1966,8 +1966,8 @@ public class Apg {
}
if (signatureKey == null) {
Bundle pauseData = new Bundle();
- pauseData.putInt(Constants.extras.status, Id.message.unknown_signature_key);
- pauseData.putLong(Constants.extras.key_id, signatureKeyId);
+ pauseData.putInt(Constants.extras.STATUS, Id.message.unknown_signature_key);
+ pauseData.putLong(Constants.extras.KEY_ID, signatureKeyId);
Message msg = new Message();
msg.setData(pauseData);
context.sendMessage(msg);
diff --git a/src/org/apg/Constants.java b/src/org/apg/Constants.java
index 90822189a..9669d4b0d 100644
--- a/src/org/apg/Constants.java
+++ b/src/org/apg/Constants.java
@@ -20,35 +20,35 @@ import android.os.Environment;
public final class Constants {
- public static final String tag = "APG";
+ public static final String TAG = "APG";
public static final class path {
- public static final String app_dir = Environment.getExternalStorageDirectory() + "/APG";
+ public static final String APP_DIR = Environment.getExternalStorageDirectory() + "/APG";
}
public static final class pref {
- public static final String has_seen_help = "seenHelp";
- public static final String has_seen_change_log = "seenChangeLogDialog";
- public static final String default_encryption_algorithm = "defaultEncryptionAlgorithm";
- public static final String default_hash_algorithm = "defaultHashAlgorithm";
- public static final String default_ascii_armour = "defaultAsciiArmour";
- public static final String default_message_compression = "defaultMessageCompression";
- public static final String default_file_compression = "defaultFileCompression";
- public static final String pass_phrase_cache_ttl = "passPhraseCacheTtl";
- public static final String language = "language";
- public static final String force_v3_signatures = "forceV3Signatures";
- public static final String key_servers = "keyServers";
+ public static final String HAS_SEEN_HELP = "seenHelp";
+ public static final String HAS_SEEN_CHANGE_LOG = "seenChangeLogDialog";
+ public static final String DEFAULT_ENCRYPTION_ALGORITHM = "defaultEncryptionAlgorithm";
+ public static final String DEFAULT_HASH_ALGORITHM = "defaultHashAlgorithm";
+ public static final String DEFAULT_ASCII_ARMOUR = "defaultAsciiArmour";
+ public static final String DEFAULT_MESSAGE_COMPRESSION = "defaultMessageCompression";
+ public static final String DEFAULT_FILE_COMPRESSION = "defaultFileCompression";
+ public static final String PASS_PHRASE_CACHE_TTL = "passPhraseCacheTtl";
+ public static final String LANGUAGE = "language";
+ public static final String FORCE_V3_SIGNATURES = "forceV3Signatures";
+ public static final String KEY_SERVERS = "keyServers";
}
public static final class defaults {
- public static final String key_servers = "pool.sks-keyservers.net, subkeys.pgp.net, pgp.mit.edu";
+ public static final String KEY_SERVERS = "pool.sks-keyservers.net, subkeys.pgp.net, pgp.mit.edu";
}
public static final class extras {
- public static final String progress = "progress";
- public static final String progress_max = "max";
- public static final String status = "status";
- public static final String message = "message";
- public static final String key_id = "keyId";
+ public static final String PROGRESS = "progress";
+ public static final String PROGRESS_MAX = "max";
+ public static final String STATUS = "status";
+ public static final String MESSAGE = "message";
+ public static final String KEY_ID = "keyId";
}
}
diff --git a/src/org/apg/Id.java b/src/org/apg/Id.java
index e0ffa95cd..adcad0534 100644
--- a/src/org/apg/Id.java
+++ b/src/org/apg/Id.java
@@ -88,7 +88,7 @@ public final class Id {
public static final int export_keys = 0x2107000c;
public static final int exporting = 0x2107000d;
public static final int new_account = 0x2107000e;
- public static final int about = 0x2107000f;
+// public static final int about = 0x2107000f;
public static final int change_log = 0x21070010;
public static final int output_filename = 0x21070011;
public static final int delete_file = 0x21070012;
diff --git a/src/org/apg/Preferences.java b/src/org/apg/Preferences.java
index 0bd79290f..f4800e064 100644
--- a/src/org/apg/Preferences.java
+++ b/src/org/apg/Preferences.java
@@ -28,17 +28,17 @@ public class Preferences {
}
public String getLanguage() {
- return mSharedPreferences.getString(Constants.pref.language, "");
+ return mSharedPreferences.getString(Constants.pref.LANGUAGE, "");
}
public void setLanguage(String value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putString(Constants.pref.language, value);
+ editor.putString(Constants.pref.LANGUAGE, value);
editor.commit();
}
public int getPassPhraseCacheTtl() {
- int ttl = mSharedPreferences.getInt(Constants.pref.pass_phrase_cache_ttl, 180);
+ int ttl = mSharedPreferences.getInt(Constants.pref.PASS_PHRASE_CACHE_TTL, 180);
// fix the value if it was set to "never" in previous versions, which currently is not
// supported
if (ttl == 0) {
@@ -49,97 +49,97 @@ public class Preferences {
public void setPassPhraseCacheTtl(int value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putInt(Constants.pref.pass_phrase_cache_ttl, value);
+ editor.putInt(Constants.pref.PASS_PHRASE_CACHE_TTL, value);
editor.commit();
}
public int getDefaultEncryptionAlgorithm() {
- return mSharedPreferences.getInt(Constants.pref.default_encryption_algorithm,
+ return mSharedPreferences.getInt(Constants.pref.DEFAULT_ENCRYPTION_ALGORITHM,
PGPEncryptedData.AES_256);
}
public void setDefaultEncryptionAlgorithm(int value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putInt(Constants.pref.default_encryption_algorithm, value);
+ editor.putInt(Constants.pref.DEFAULT_ENCRYPTION_ALGORITHM, value);
editor.commit();
}
public int getDefaultHashAlgorithm() {
- return mSharedPreferences.getInt(Constants.pref.default_hash_algorithm,
+ return mSharedPreferences.getInt(Constants.pref.DEFAULT_HASH_ALGORITHM,
HashAlgorithmTags.SHA256);
}
public void setDefaultHashAlgorithm(int value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putInt(Constants.pref.default_hash_algorithm, value);
+ editor.putInt(Constants.pref.DEFAULT_HASH_ALGORITHM, value);
editor.commit();
}
public int getDefaultMessageCompression() {
- return mSharedPreferences.getInt(Constants.pref.default_message_compression,
+ return mSharedPreferences.getInt(Constants.pref.DEFAULT_MESSAGE_COMPRESSION,
Id.choice.compression.zlib);
}
public void setDefaultMessageCompression(int value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putInt(Constants.pref.default_message_compression, value);
+ editor.putInt(Constants.pref.DEFAULT_MESSAGE_COMPRESSION, value);
editor.commit();
}
public int getDefaultFileCompression() {
- return mSharedPreferences.getInt(Constants.pref.default_file_compression,
+ return mSharedPreferences.getInt(Constants.pref.DEFAULT_FILE_COMPRESSION,
Id.choice.compression.none);
}
public void setDefaultFileCompression(int value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putInt(Constants.pref.default_file_compression, value);
+ editor.putInt(Constants.pref.DEFAULT_FILE_COMPRESSION, value);
editor.commit();
}
public boolean getDefaultAsciiArmour() {
- return mSharedPreferences.getBoolean(Constants.pref.default_ascii_armour, false);
+ return mSharedPreferences.getBoolean(Constants.pref.DEFAULT_ASCII_ARMOUR, false);
}
public void setDefaultAsciiArmour(boolean value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putBoolean(Constants.pref.default_ascii_armour, value);
+ editor.putBoolean(Constants.pref.DEFAULT_ASCII_ARMOUR, value);
editor.commit();
}
public boolean getForceV3Signatures() {
- return mSharedPreferences.getBoolean(Constants.pref.force_v3_signatures, false);
+ return mSharedPreferences.getBoolean(Constants.pref.FORCE_V3_SIGNATURES, false);
}
public void setForceV3Signatures(boolean value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putBoolean(Constants.pref.force_v3_signatures, value);
+ editor.putBoolean(Constants.pref.FORCE_V3_SIGNATURES, value);
editor.commit();
}
public boolean hasSeenChangeLog(String version) {
- return mSharedPreferences.getBoolean(Constants.pref.has_seen_change_log + version, false);
+ return mSharedPreferences.getBoolean(Constants.pref.HAS_SEEN_CHANGE_LOG + version, false);
}
public void setHasSeenChangeLog(String version, boolean value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putBoolean(Constants.pref.has_seen_change_log + version, value);
+ editor.putBoolean(Constants.pref.HAS_SEEN_CHANGE_LOG + version, value);
editor.commit();
}
public boolean hasSeenHelp() {
- return mSharedPreferences.getBoolean(Constants.pref.has_seen_help, false);
+ return mSharedPreferences.getBoolean(Constants.pref.HAS_SEEN_HELP, false);
}
public void setHasSeenHelp(boolean value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
- editor.putBoolean(Constants.pref.has_seen_help, value);
+ editor.putBoolean(Constants.pref.HAS_SEEN_HELP, value);
editor.commit();
}
public String[] getKeyServers() {
- String rawData = mSharedPreferences.getString(Constants.pref.key_servers,
- Constants.defaults.key_servers);
+ String rawData = mSharedPreferences.getString(Constants.pref.KEY_SERVERS,
+ Constants.defaults.KEY_SERVERS);
Vector<String> servers = new Vector<String>();
String chunks[] = rawData.split(",");
for (int i = 0; i < chunks.length; ++i) {
@@ -164,7 +164,7 @@ public class Preferences {
}
rawData += tmp;
}
- editor.putString(Constants.pref.key_servers, rawData);
+ editor.putString(Constants.pref.KEY_SERVERS, rawData);
editor.commit();
}
}
diff --git a/src/org/apg/provider/ApgServiceBlobProvider.java b/src/org/apg/provider/ApgServiceBlobProvider.java
index 18aa76d5e..f2d5377a4 100644
--- a/src/org/apg/provider/ApgServiceBlobProvider.java
+++ b/src/org/apg/provider/ApgServiceBlobProvider.java
@@ -24,7 +24,7 @@ public class ApgServiceBlobProvider extends ContentProvider {
private static final String COLUMN_KEY = "key";
- private static final String STORE_PATH = Constants.path.app_dir+"/ApgServiceBlobs";
+ private static final String STORE_PATH = Constants.path.APP_DIR+"/ApgServiceBlobs";
private ApgServiceBlobDatabase mDb = null;
diff --git a/src/org/apg/ui/AboutActivity.java b/src/org/apg/ui/AboutActivity.java
new file mode 100644
index 000000000..308a1e06e
--- /dev/null
+++ b/src/org/apg/ui/AboutActivity.java
@@ -0,0 +1,51 @@
+package org.apg.ui;
+
+import org.apg.Constants;
+import org.apg.R;
+
+import android.app.Activity;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.TextView;
+
+public class AboutActivity extends Activity {
+ Activity mActivity;
+
+ /**
+ * Instantiate View for this Activity
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.about_activity);
+
+ mActivity = this;
+
+ TextView versionText = (TextView) findViewById(R.id.about_version);
+ versionText.setText(getString(R.string.about_version) + " " + getVersion());
+ }
+
+ /**
+ * Get the current package version.
+ *
+ * @return The current version.
+ */
+ private String getVersion() {
+ String result = "";
+ try {
+ PackageManager manager = mActivity.getPackageManager();
+ PackageInfo info = manager.getPackageInfo(mActivity.getPackageName(), 0);
+
+ result = String.format("%s (%s)", info.versionName, info.versionCode);
+ } catch (NameNotFoundException e) {
+ Log.w(Constants.TAG, "Unable to get application version: " + e.getMessage());
+ result = "Unable to get application version.";
+ }
+
+ return result;
+ }
+}
diff --git a/src/org/apg/ui/BaseActivity.java b/src/org/apg/ui/BaseActivity.java
index 6e61b1412..9b5039a5d 100644
--- a/src/org/apg/ui/BaseActivity.java
+++ b/src/org/apg/ui/BaseActivity.java
@@ -79,7 +79,7 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
Apg.initialize(this);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
- File dir = new File(Constants.path.app_dir);
+ File dir = new File(Constants.path.APP_DIR);
if (!dir.exists() && !dir.mkdirs()) {
// ignore this for now, it's not crucial
// that the directory doesn't exist at this point
@@ -108,7 +108,7 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Id.menu.option.about: {
- showDialog(Id.dialog.about);
+ startActivity(new Intent(this, AboutActivity.class));
return true;
}
@@ -187,31 +187,6 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
mProgressDialog = null;
switch (id) {
- case Id.dialog.about: {
- AlertDialog.Builder alert = new AlertDialog.Builder(this);
-
- alert.setTitle("About " + Apg.getFullVersion(this));
-
- LayoutInflater inflater = (LayoutInflater) this
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View layout = inflater.inflate(R.layout.info, null);
- TextView message = (TextView) layout.findViewById(R.id.message);
- message.setText("This is an attempt to bring OpenPGP to Android. "
- + "It is far from complete, but more features are planned (see website).\n\n"
- + "Feel free to send bug reports, suggestions, feature requests, feedback, "
- + "photographs.\n\n" + "mail: thi@thialfihar.org\n"
- + "site: http://apg.thialfihar.org\n\n"
- + "This software is provided \"as is\", without warranty of any kind.");
- alert.setView(layout);
-
- alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- BaseActivity.this.removeDialog(Id.dialog.about);
- }
- });
-
- return alert.create();
- }
case Id.dialog.pass_phrase: {
return AskForSecretKeyPassPhrase.createDialog(this, getSecretKeyId(), this);
@@ -266,7 +241,7 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
mDeletingThread = new Thread(new Runnable() {
public void run() {
Bundle data = new Bundle();
- data.putInt(Constants.extras.status, Id.message.delete_done);
+ data.putInt(Constants.extras.STATUS, Id.message.delete_done);
try {
Apg.deleteFileSecurely(BaseActivity.this, file, BaseActivity.this);
} catch (FileNotFoundException e) {
@@ -330,9 +305,9 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
public void setProgress(int progress, int max) {
Message msg = new Message();
Bundle data = new Bundle();
- data.putInt(Constants.extras.status, Id.message.progress_update);
- data.putInt(Constants.extras.progress, progress);
- data.putInt(Constants.extras.progress_max, max);
+ data.putInt(Constants.extras.STATUS, Id.message.progress_update);
+ data.putInt(Constants.extras.PROGRESS, progress);
+ data.putInt(Constants.extras.PROGRESS_MAX, max);
msg.setData(data);
mHandler.sendMessage(msg);
}
@@ -340,10 +315,10 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
public void setProgress(String message, int progress, int max) {
Message msg = new Message();
Bundle data = new Bundle();
- data.putInt(Constants.extras.status, Id.message.progress_update);
- data.putString(Constants.extras.message, message);
- data.putInt(Constants.extras.progress, progress);
- data.putInt(Constants.extras.progress_max, max);
+ data.putInt(Constants.extras.STATUS, Id.message.progress_update);
+ data.putString(Constants.extras.MESSAGE, message);
+ data.putInt(Constants.extras.PROGRESS, progress);
+ data.putInt(Constants.extras.PROGRESS_MAX, max);
msg.setData(data);
mHandler.sendMessage(msg);
}
@@ -354,16 +329,16 @@ public class BaseActivity extends Activity implements Runnable, ProgressDialogUp
return;
}
- int type = data.getInt(Constants.extras.status);
+ int type = data.getInt(Constants.extras.STATUS);
switch (type) {
case Id.message.progress_update: {
- String message = data.getString(Constants.extras.message);
+ String message = data.getString(Constants.extras.MESSAGE);
if (mProgressDialog != null) {
if (message != null) {
mProgressDialog.setMessage(message);
}
- mProgressDialog.setMax(data.getInt(Constants.extras.progress_max));
- mProgressDialog.setProgress(data.getInt(Constants.extras.progress));
+ mProgressDialog.setMax(data.getInt(Constants.extras.PROGRESS_MAX));
+ mProgressDialog.setProgress(data.getInt(Constants.extras.PROGRESS));
}
break;
}
diff --git a/src/org/apg/ui/DecryptActivity.java b/src/org/apg/ui/DecryptActivity.java
index 48884cbfc..cb58dfb09 100644
--- a/src/org/apg/ui/DecryptActivity.java
+++ b/src/org/apg/ui/DecryptActivity.java
@@ -196,28 +196,28 @@ public class DecryptActivity extends BaseActivity {
// ignore, then
}
} else if (Apg.Intent.DECRYPT.equals(mIntent.getAction())) {
- Log.d(Constants.tag, "Apg Intent DECRYPT startet");
+ Log.d(Constants.TAG, "Apg Intent DECRYPT startet");
Bundle extras = mIntent.getExtras();
if (extras == null) {
- Log.d(Constants.tag, "extra bundle was null");
+ Log.d(Constants.TAG, "extra bundle was null");
extras = new Bundle();
} else {
- Log.d(Constants.tag, "got extras");
+ Log.d(Constants.TAG, "got extras");
}
mData = extras.getByteArray(Apg.EXTRA_DATA);
String textData = null;
if (mData == null) {
- Log.d(Constants.tag, "EXTRA_DATA was null");
+ Log.d(Constants.TAG, "EXTRA_DATA was null");
textData = extras.getString(Apg.EXTRA_TEXT);
} else {
- Log.d(Constants.tag, "Got data from EXTRA_DATA");
+ Log.d(Constants.TAG, "Got data from EXTRA_DATA");
}
if (textData != null) {
- Log.d(Constants.tag, "textData null, matching text ...");
+ Log.d(Constants.TAG, "textData null, matching text ...");
Matcher matcher = Apg.PGP_MESSAGE.matcher(textData);
if (matcher.matches()) {
- Log.d(Constants.tag, "PGP_MESSAGE matched");
+ Log.d(Constants.TAG, "PGP_MESSAGE matched");
textData = matcher.group(1);
// replace non breakable spaces
textData = textData.replaceAll("\\xa0", " ");
@@ -225,14 +225,14 @@ public class DecryptActivity extends BaseActivity {
} else {
matcher = Apg.PGP_SIGNED_MESSAGE.matcher(textData);
if (matcher.matches()) {
- Log.d(Constants.tag, "PGP_SIGNED_MESSAGE matched");
+ Log.d(Constants.TAG, "PGP_SIGNED_MESSAGE matched");
textData = matcher.group(1);
// replace non breakable spaces
textData = textData.replaceAll("\\xa0", " ");
mMessage.setText(textData);
mDecryptButton.setText(R.string.btn_verify);
} else {
- Log.d(Constants.tag, "Nothing matched!");
+ Log.d(Constants.TAG, "Nothing matched!");
}
}
}
@@ -377,7 +377,7 @@ public class DecryptActivity extends BaseActivity {
if (filename.endsWith(".asc") || filename.endsWith(".gpg") || filename.endsWith(".pgp")) {
filename = filename.substring(0, filename.length() - 4);
}
- mOutputFilename = Constants.path.app_dir + "/" + filename;
+ mOutputFilename = Constants.path.APP_DIR + "/" + filename;
}
private void updateSource() {
@@ -564,7 +564,7 @@ public class DecryptActivity extends BaseActivity {
error = "" + e;
}
- data.putInt(Constants.extras.status, Id.message.done);
+ data.putInt(Constants.extras.STATUS, Id.message.done);
if (error != null) {
data.putString(Apg.EXTRA_ERROR, error);
@@ -581,8 +581,8 @@ public class DecryptActivity extends BaseActivity {
return;
}
- if (data.getInt(Constants.extras.status) == Id.message.unknown_signature_key) {
- mUnknownSignatureKeyId = data.getLong(Constants.extras.key_id);
+ if (data.getInt(Constants.extras.STATUS) == Id.message.unknown_signature_key) {
+ mUnknownSignatureKeyId = data.getLong(Constants.extras.KEY_ID);
showDialog(Id.dialog.lookup_unknown_key);
return;
}
diff --git a/src/org/apg/ui/EditKeyActivity.java b/src/org/apg/ui/EditKeyActivity.java
index 6e1eab63e..c3945d4ed 100644
--- a/src/org/apg/ui/EditKeyActivity.java
+++ b/src/org/apg/ui/EditKeyActivity.java
@@ -257,7 +257,7 @@ public class EditKeyActivity extends BaseActivity implements OnClickListener {
error = "" + e;
}
- data.putInt(Constants.extras.status, Id.message.done);
+ data.putInt(Constants.extras.STATUS, Id.message.done);
if (error != null) {
data.putString(Apg.EXTRA_ERROR, error);
diff --git a/src/org/apg/ui/EncryptActivity.java b/src/org/apg/ui/EncryptActivity.java
index 603d1a04d..e5892a4d5 100644
--- a/src/org/apg/ui/EncryptActivity.java
+++ b/src/org/apg/ui/EncryptActivity.java
@@ -421,7 +421,7 @@ public class EncryptActivity extends BaseActivity {
mInputFilename = mFilename.getText().toString();
File file = new File(mInputFilename);
String ending = (mAsciiArmour.isChecked() ? ".asc" : ".gpg");
- mOutputFilename = Constants.path.app_dir + "/" + file.getName() + ending;
+ mOutputFilename = Constants.path.APP_DIR + "/" + file.getName() + ending;
}
private void updateSource() {
@@ -731,7 +731,7 @@ public class EncryptActivity extends BaseActivity {
error = "" + e;
}
- data.putInt(Constants.extras.status, Id.message.done);
+ data.putInt(Constants.extras.STATUS, Id.message.done);
if (error != null) {
data.putString(Apg.EXTRA_ERROR, error);
diff --git a/src/org/apg/ui/ImportFromQRCodeActivity.java b/src/org/apg/ui/ImportFromQRCodeActivity.java
index 0d9209991..593c841df 100644
--- a/src/org/apg/ui/ImportFromQRCodeActivity.java
+++ b/src/org/apg/ui/ImportFromQRCodeActivity.java
@@ -69,11 +69,11 @@ public class ImportFromQRCodeActivity extends BaseActivity {
} catch (QueryException e) {
Log.e(TAG, "Failed to query KeyServer", e);
status.putString(Apg.EXTRA_ERROR, "Failed to query KeyServer");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
} catch (IOException e) {
Log.e(TAG, "Failed to query KeyServer", e);
status.putString(Apg.EXTRA_ERROR, "Failed to query KeyServer");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
}
}
};
@@ -107,7 +107,7 @@ public class ImportFromQRCodeActivity extends BaseActivity {
case Id.request.sign_key: {
// signals the end of processing. Signature was either applied, or it wasnt
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
msg.setData(status);
sendMessage(msg);
diff --git a/src/org/apg/ui/KeyListActivity.java b/src/org/apg/ui/KeyListActivity.java
index 00be0321a..6c76f02bc 100644
--- a/src/org/apg/ui/KeyListActivity.java
+++ b/src/org/apg/ui/KeyListActivity.java
@@ -74,8 +74,8 @@ public class KeyListActivity extends BaseActivity {
protected int mSelectedItem = -1;
protected int mTask = 0;
- protected String mImportFilename = Constants.path.app_dir + "/";
- protected String mExportFilename = Constants.path.app_dir + "/";
+ protected String mImportFilename = Constants.path.APP_DIR + "/";
+ protected String mExportFilename = Constants.path.APP_DIR + "/";
protected String mImportData;
protected boolean mDeleteAfterImport = false;
@@ -352,9 +352,9 @@ public class KeyListActivity extends BaseActivity {
mImportData = null;
if (mTask == Id.task.import_keys) {
- data.putInt(Constants.extras.status, Id.message.import_done);
+ data.putInt(Constants.extras.STATUS, Id.message.import_done);
} else {
- data.putInt(Constants.extras.status, Id.message.export_done);
+ data.putInt(Constants.extras.STATUS, Id.message.export_done);
}
if (error != null) {
@@ -381,7 +381,7 @@ public class KeyListActivity extends BaseActivity {
Bundle data = msg.getData();
if (data != null) {
- int type = data.getInt(Constants.extras.status);
+ int type = data.getInt(Constants.extras.STATUS);
switch (type) {
case Id.message.import_done: {
removeDialog(Id.dialog.importing);
diff --git a/src/org/apg/ui/KeyServerQueryActivity.java b/src/org/apg/ui/KeyServerQueryActivity.java
index f1f6466e3..606acb575 100644
--- a/src/org/apg/ui/KeyServerQueryActivity.java
+++ b/src/org/apg/ui/KeyServerQueryActivity.java
@@ -144,7 +144,7 @@ public class KeyServerQueryActivity extends BaseActivity {
error = "Too many responses.";
}
- data.putInt(Constants.extras.status, Id.message.done);
+ data.putInt(Constants.extras.STATUS, Id.message.done);
if (error != null) {
data.putString(Apg.EXTRA_ERROR, error);
diff --git a/src/org/apg/ui/PreferencesActivity.java b/src/org/apg/ui/PreferencesActivity.java
index 749f70657..421c9cc39 100644
--- a/src/org/apg/ui/PreferencesActivity.java
+++ b/src/org/apg/ui/PreferencesActivity.java
@@ -61,7 +61,7 @@ public class PreferencesActivity extends PreferenceActivity {
addPreferencesFromResource(R.xml.apg_preferences);
- mLanguage = (ListPreference) findPreference(Constants.pref.language);
+ mLanguage = (ListPreference) findPreference(Constants.pref.LANGUAGE);
Vector<CharSequence> entryVector = new Vector<CharSequence>(Arrays.asList(mLanguage.getEntries()));
Vector<CharSequence> entryValueVector = new Vector<CharSequence>(Arrays.asList(mLanguage.getEntryValues()));
String supportedLanguages[] = getResources().getStringArray(R.array.supported_languages);
@@ -90,7 +90,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mPassPhraseCacheTtl = (IntegerListPreference) findPreference(Constants.pref.pass_phrase_cache_ttl);
+ mPassPhraseCacheTtl = (IntegerListPreference) findPreference(Constants.pref.PASS_PHRASE_CACHE_TTL);
mPassPhraseCacheTtl.setValue("" + mPreferences.getPassPhraseCacheTtl());
mPassPhraseCacheTtl.setSummary(mPassPhraseCacheTtl.getEntry());
mPassPhraseCacheTtl.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
@@ -105,7 +105,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mEncryptionAlgorithm = (IntegerListPreference) findPreference(Constants.pref.default_encryption_algorithm);
+ mEncryptionAlgorithm = (IntegerListPreference) findPreference(Constants.pref.DEFAULT_ENCRYPTION_ALGORITHM);
int valueIds[] = {
PGPEncryptedData.AES_128, PGPEncryptedData.AES_192, PGPEncryptedData.AES_256,
PGPEncryptedData.BLOWFISH, PGPEncryptedData.TWOFISH, PGPEncryptedData.CAST5,
@@ -135,7 +135,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mHashAlgorithm = (IntegerListPreference) findPreference(Constants.pref.default_hash_algorithm);
+ mHashAlgorithm = (IntegerListPreference) findPreference(Constants.pref.DEFAULT_HASH_ALGORITHM);
valueIds = new int[] {
HashAlgorithmTags.MD5, HashAlgorithmTags.RIPEMD160, HashAlgorithmTags.SHA1,
HashAlgorithmTags.SHA224, HashAlgorithmTags.SHA256, HashAlgorithmTags.SHA384,
@@ -165,7 +165,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mMessageCompression = (IntegerListPreference) findPreference(Constants.pref.default_message_compression);
+ mMessageCompression = (IntegerListPreference) findPreference(Constants.pref.DEFAULT_MESSAGE_COMPRESSION);
valueIds = new int[] {
Id.choice.compression.none,
Id.choice.compression.zip,
@@ -197,7 +197,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mFileCompression = (IntegerListPreference) findPreference(Constants.pref.default_file_compression);
+ mFileCompression = (IntegerListPreference) findPreference(Constants.pref.DEFAULT_FILE_COMPRESSION);
mFileCompression.setEntries(entries);
mFileCompression.setEntryValues(values);
mFileCompression.setValue("" + mPreferences.getDefaultFileCompression());
@@ -213,7 +213,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mAsciiArmour = (CheckBoxPreference) findPreference(Constants.pref.default_ascii_armour);
+ mAsciiArmour = (CheckBoxPreference) findPreference(Constants.pref.DEFAULT_ASCII_ARMOUR);
mAsciiArmour.setChecked(mPreferences.getDefaultAsciiArmour());
mAsciiArmour.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
{
@@ -225,7 +225,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mForceV3Signatures = (CheckBoxPreference) findPreference(Constants.pref.force_v3_signatures);
+ mForceV3Signatures = (CheckBoxPreference) findPreference(Constants.pref.FORCE_V3_SIGNATURES);
mForceV3Signatures.setChecked(mPreferences.getForceV3Signatures());
mForceV3Signatures.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
{
@@ -237,7 +237,7 @@ public class PreferencesActivity extends PreferenceActivity {
}
});
- mKeyServerPreference = (PreferenceScreen) findPreference(Constants.pref.key_servers);
+ mKeyServerPreference = (PreferenceScreen) findPreference(Constants.pref.KEY_SERVERS);
String servers[] = mPreferences.getKeyServers();
mKeyServerPreference.setSummary(getResources().getString(R.string.nKeyServers, servers.length));
mKeyServerPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
diff --git a/src/org/apg/ui/PublicKeyListActivity.java b/src/org/apg/ui/PublicKeyListActivity.java
index a9c5dbc15..81a79ce33 100644
--- a/src/org/apg/ui/PublicKeyListActivity.java
+++ b/src/org/apg/ui/PublicKeyListActivity.java
@@ -40,7 +40,7 @@ import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
public class PublicKeyListActivity extends KeyListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
- mExportFilename = Constants.path.app_dir + "/pubexport.asc";
+ mExportFilename = Constants.path.APP_DIR + "/pubexport.asc";
mKeyType = Id.type.public_key;
super.onCreate(savedInstanceState);
}
diff --git a/src/org/apg/ui/SecretKeyListActivity.java b/src/org/apg/ui/SecretKeyListActivity.java
index c8a5c9866..a5d351bc6 100644
--- a/src/org/apg/ui/SecretKeyListActivity.java
+++ b/src/org/apg/ui/SecretKeyListActivity.java
@@ -45,7 +45,7 @@ import com.google.zxing.integration.android.IntentIntegrator;
public class SecretKeyListActivity extends KeyListActivity implements OnChildClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
- mExportFilename = Constants.path.app_dir + "/secexport.asc";
+ mExportFilename = Constants.path.APP_DIR + "/secexport.asc";
mKeyType = Id.type.secret_key;
super.onCreate(savedInstanceState);
mList.setOnChildClickListener(this);
diff --git a/src/org/apg/ui/SendKeyActivity.java b/src/org/apg/ui/SendKeyActivity.java
index 2dcb08d3d..c44e87469 100644
--- a/src/org/apg/ui/SendKeyActivity.java
+++ b/src/org/apg/ui/SendKeyActivity.java
@@ -73,7 +73,7 @@ public class SendKeyActivity extends BaseActivity {
}
}
- data.putInt(Constants.extras.status, Id.message.export_done);
+ data.putInt(Constants.extras.STATUS, Id.message.export_done);
if (error != null) {
data.putString(Apg.EXTRA_ERROR, error);
diff --git a/src/org/apg/ui/SignKeyActivity.java b/src/org/apg/ui/SignKeyActivity.java
index 6fad76dff..ab145c921 100644
--- a/src/org/apg/ui/SignKeyActivity.java
+++ b/src/org/apg/ui/SignKeyActivity.java
@@ -141,7 +141,7 @@ public class SignKeyActivity extends BaseActivity {
status.putString(Apg.EXTRA_ERROR, "Key has already been signed");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
msg.setData(status);
sendMessage(msg);
@@ -221,26 +221,26 @@ public class SignKeyActivity extends BaseActivity {
} catch (PGPException e) {
Log.e(TAG, "Failed to sign key", e);
status.putString(Apg.EXTRA_ERROR, "Failed to sign key");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
return;
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "Failed to sign key", e);
status.putString(Apg.EXTRA_ERROR, "Failed to sign key");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
return;
} catch (NoSuchProviderException e) {
Log.e(TAG, "Failed to sign key", e);
status.putString(Apg.EXTRA_ERROR, "Failed to sign key");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
return;
} catch (SignatureException e) {
Log.e(TAG, "Failed to sign key", e);
status.putString(Apg.EXTRA_ERROR, "Failed to sign key");
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
return;
}
- status.putInt(Constants.extras.status, Id.message.done);
+ status.putInt(Constants.extras.STATUS, Id.message.done);
msg.setData(status);
sendMessage(msg);