diff options
12 files changed, 186 insertions, 207 deletions
diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index bd535a9c9..b6f8f21a0 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -70,8 +70,7 @@ dependencies { compile 'com.mikepenz:community-material-typeface:1.3.41.1@aar' // Nordpol - compile 'com.fidesmo:nordpol-android:0.1.15@aar' - compile 'com.fidesmo:nordpol-core:0.1.15' + compile 'com.fidesmo:nordpol-android:0.1.18' // libs as submodules compile project(':extern:openpgp-api-lib:openpgp-api') @@ -117,8 +116,8 @@ dependencyVerification { 'com.mikepenz:iconics-core:d2495547db9d881168b1b502b1934f6a000ed5086c6c6a7114f3bbcbbb7ec306', 'com.mikepenz:community-material-typeface:990acfcfb892a733d36748fe29176bd61dd5ab34bc8ca1c591200e639d955b99', 'com.mikepenz:fontawesome-typeface:69cb09934a83bac607e78a29459868d537f766224b4a65a042d1f84c98c7b05d', - 'com.fidesmo:nordpol-core:fe09e65379f2c7300b669ef7df2bfbde47729dac19edacc26b5ddb44b94ff67d', - 'com.fidesmo:nordpol-android:012f93c2c78bd5e3b35af3e8a6676c4fac56755abee252dcfdbb8b35df19e3dd', + 'com.fidesmo:nordpol-core:3de58e850a00bba5b4d3a604d1399bcd89f695ea191ec0b03a57222e18062d15', + 'com.fidesmo:nordpol-android:56f43fe2b1676817bcb4085926de14a08282ef6729c855c198d81aec62b20d65', // 'OpenKeychain.extern.bouncycastle:core:b22dfb37e09fb520683dd0ba089351787560a75b59b60822143f633ec984cab5', // 'OpenKeychain.extern.openpgp-api-lib:openpgp-api:8a53012b9df6d62174ebdc11e0ab56700501a915930db5c12e32d565f136fc06', // 'OpenKeychain.extern.openkeychain-api-lib:openkeychain-intents:9263330c00497b7bb70502160f50c8396228129376f48f4f5656d28360a2edac', diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java index 130dd6a79..772dfe070 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java @@ -49,6 +49,8 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; +import nordpol.android.NfcGuideView; + /** * This class provides a communication interface to OpenPGP applications on ISO SmartCard compliant * NFC devices. @@ -67,6 +69,7 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity public ViewAnimator vAnimator; public TextView vErrorText; public Button vErrorTryAgainButton; + public NfcGuideView nfcGuideView; private RequiredInputParcel mRequiredInput; private Intent mServiceIntent; @@ -88,6 +91,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity super.onCreate(savedInstanceState); Log.d(Constants.TAG, "NfcOperationActivity.onCreate"); + nfcGuideView = (NfcGuideView) findViewById(R.id.nfc_guide_view); + // prevent annoying orientation changes while fumbling with the device OrientationUtils.lockOrientation(this); // prevent close when touching outside of the dialog (happens easily when fumbling with the device) @@ -101,6 +106,9 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity vAnimator = (ViewAnimator) findViewById(R.id.view_animator); vAnimator.setDisplayedChild(0); + + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.STARTING_POSITION); + vErrorText = (TextView) findViewById(R.id.security_token_activity_3_error_text); vErrorTryAgainButton = (Button) findViewById(R.id.security_token_activity_3_error_try_again); vErrorTryAgainButton.setOnClickListener(new View.OnClickListener() { @@ -110,6 +118,9 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity obtainPassphraseIfRequired(); vAnimator.setDisplayedChild(0); + + nfcGuideView.setVisibility(View.VISIBLE); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.STARTING_POSITION); } }); Button vCancel = (Button) findViewById(R.id.security_token_activity_0_cancel); @@ -147,6 +158,7 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity public void onNfcPreExecute() { // start with indeterminate progress vAnimator.setDisplayedChild(1); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.TRANSFERRING); } @Override @@ -277,6 +289,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity // show finish vAnimator.setDisplayedChild(2); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.DONE); + new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { @@ -307,6 +321,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity vErrorText.setText(error + "\n\n" + getString(R.string.security_token_nfc_try_again_text)); vAnimator.setDisplayedChild(3); + + nfcGuideView.setVisibility(View.GONE); } @Override diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 1c2ddcd5f..000000000 --- a/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 86bf38e98..000000000 --- a/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 872b578c8..000000000 --- a/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 6d3b6449c..000000000 --- a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 0e3b23964..000000000 --- a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable/yubikey_phone.png b/OpenKeychain/src/main/res/drawable/yubikey_phone.png Binary files differdeleted file mode 100644 index 3cdfbba0f..000000000 --- a/OpenKeychain/src/main/res/drawable/yubikey_phone.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml b/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml new file mode 100644 index 000000000..cf0edac8c --- /dev/null +++ b/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="24dp"> + + <nordpol.android.NfcGuideView + android:id="@+id/nfc_guide_view" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + custom:nfc_device="card_black"/> + + <include + layout="@layout/security_token_operation_activity_toolable_view_animator" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="match_parent" /> + +</LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml index 4436cfe01..f4efb7c01 100644 --- a/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -21,13 +22,15 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginLeft="8dp" + android:layout_marginBottom="24dp" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/security_token_create" /> - <ImageView - android:layout_width="match_parent" + <nordpol.android.NfcGuideView + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/yubikey_phone" /> + android:layout_gravity="center_horizontal" + custom:nfc_device="usb_black"/> </LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml index 1644f6a6f..19f241825 100644 --- a/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml +++ b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml @@ -3,207 +3,16 @@ xmlns:custom="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="24dp"> - <org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator - android:id="@+id/view_animator" + <nordpol.android.NfcGuideView + android:id="@+id/nfc_guide_view" android:layout_width="match_parent" - android:layout_height="match_parent" - android:animateLayoutChanges="true" - android:inAnimation="@anim/fade_in" - android:measureAllChildren="false" - android:minHeight="?listPreferredItemHeightSmall" - android:outAnimation="@anim/fade_out" - custom:initialView="3"> + android:layout_height="wrap_content" + custom:nfc_device="usb_black"/> - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> + <include layout="@layout/security_token_operation_activity_toolable_view_animator" /> - <TextView - android:id="@+id/security_token_activity_0_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_text" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <ImageView - android:id="@+id/security_token_activity_0_image" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_0_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" /> - - <Button - android:id="@+id/security_token_activity_0_cancel" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_0_image" - android:layout_margin="8dp" - android:text="@string/progress_cancel" /> - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_1_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_wait" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <ProgressBar - style="?android:attr/progressBarStyleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:padding="8dp" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_1_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_1_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <Button - android:id="@+id/security_token_activity_1_button_placeholder" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_1_placeholder" - android:layout_margin="8dp" - android:text="" - android:visibility="invisible" /> - - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_2_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_finished" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_2_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_2_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/ic_check_circle_black_48dp" /> - - <Button - android:id="@+id/security_token_activity_2_button_placeholder" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_2_placeholder" - android:layout_margin="8dp" - android:text="" - android:visibility="invisible" /> - - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_3_text_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignEnd="@+id/security_token_activity_3_placeholder" - android:layout_alignRight="@+id/security_token_activity_3_placeholder" - android:layout_marginLeft="24dp" - android:layout_marginTop="24dp" - android:text="" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_3_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_3_text_placeholder" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <TextView - android:id="@+id/security_token_activity_3_error_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:layout_margin="24dp" - android:textAppearance="@android:style/TextAppearance.Medium" - android:textColor="@color/android_red_dark" - tools:text="Error text" /> - - <Button - android:id="@+id/security_token_activity_3_error_try_again" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_below="@+id/security_token_activity_3_placeholder" - android:layout_margin="8dp" - android:text="@string/security_token_error_try_again" /> - - </RelativeLayout> - - </org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator> - -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml b/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml new file mode 100644 index 000000000..35ddf398b --- /dev/null +++ b/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8"?> +<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" + android:id="@+id/view_animator" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:animateLayoutChanges="true" + android:inAnimation="@anim/fade_in" + android:measureAllChildren="false" + android:minHeight="?listPreferredItemHeightSmall" + android:outAnimation="@anim/fade_out" + custom:initialView="3" + tools:showIn="@layout/security_token_operation_activity"> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_0_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_text" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_0_cancel" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="@string/progress_cancel" /> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_1_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_wait" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_1_button_placeholder" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="" + android:visibility="invisible" /> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_2_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_finished" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_2_button_placeholder" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="" + android:visibility="invisible" /> + + </LinearLayout> + + <ScrollView + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_3_text_placeholder" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginTop="24dp" + android:text="" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <TextView + android:id="@+id/security_token_activity_3_error_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="24dp" + android:textAppearance="@android:style/TextAppearance.Medium" + android:textColor="@color/android_red_dark" + tools:text="Error text" /> + + <Button + android:id="@+id/security_token_activity_3_error_try_again" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="@string/security_token_error_try_again" /> + + </LinearLayout> + + </ScrollView> + +</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator> |