aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main
diff options
context:
space:
mode:
authorTheo Franzén <franzen.theo@gmail.com>2016-01-27 16:40:30 +0100
committerfranzaine <franzen.theo@gmail.com>2016-02-10 15:28:59 +0100
commit0191cf92dba72c066c355dc0f67b332c00e659de (patch)
treece26bb1ef93e25d79276ab6b18167e7e927d4cb7 /OpenKeychain/src/main
parent751298a4d832f316244fd6345c46ba806dcfc860 (diff)
downloadopen-keychain-0191cf92dba72c066c355dc0f67b332c00e659de.tar.gz
open-keychain-0191cf92dba72c066c355dc0f67b332c00e659de.tar.bz2
open-keychain-0191cf92dba72c066c355dc0f67b332c00e659de.zip
Better transaction animation
Diffstat (limited to 'OpenKeychain/src/main')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java16
-rw-r--r--OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.pngbin709 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.pngbin493 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.pngbin922 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.pngbin1346 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.pngbin1812 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable/yubikey_phone.pngbin347902 -> 0 bytes
-rw-r--r--OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml23
-rw-r--r--OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml9
-rw-r--r--OpenKeychain/src/main/res/layout/security_token_operation_activity.xml209
-rw-r--r--OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml129
11 files changed, 183 insertions, 203 deletions
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
deleted file mode 100644
index 1c2ddcd5f..000000000
--- a/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 86bf38e98..000000000
--- a/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 872b578c8..000000000
--- a/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 6d3b6449c..000000000
--- a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0e3b23964..000000000
--- a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png
+++ /dev/null
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable/yubikey_phone.png b/OpenKeychain/src/main/res/drawable/yubikey_phone.png
deleted file mode 100644
index 3cdfbba0f..000000000
--- a/OpenKeychain/src/main/res/drawable/yubikey_phone.png
+++ /dev/null
Binary files differ
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>