enc-export: add "back" button to fail state

This commit is contained in:
Vincent Breitmoser
2015-09-29 04:03:44 +02:00
parent 91c3577073
commit 2b6335e90b
5 changed files with 439 additions and 20 deletions

View File

@@ -79,7 +79,9 @@ public class BackupCodeFragment extends CryptoOperationFragment<ExportKeyringPar
private EditText[] mCodeEditText;
private ViewAnimator mStatusAnimator, mTitleAnimator, mCodeFieldsAnimator;
private int mBackStackLevel;
private Uri mCachedExportUri;
private boolean mShareNotSave;
@@ -130,7 +132,8 @@ public class BackupCodeFragment extends CryptoOperationFragment<ExportKeyringPar
case STATE_INPUT_ERROR: {
mStatusAnimator.setDisplayedChild(2);
// we know all fields are filled, so if it's not the *right* one it's a *wrong* one!
hideKeyboard();
@ColorInt int black = mCodeEditText[0].getCurrentTextColor();
@ColorInt int red = getResources().getColor(R.color.android_red_dark);
animateFlashText(mCodeEditText, black, red, false);
@@ -213,10 +216,7 @@ public class BackupCodeFragment extends CryptoOperationFragment<ExportKeyringPar
}
});
View backupSave = view.findViewById(R.id.button_backup_save);
View backupShare = view.findViewById(R.id.button_backup_share);
backupSave.setOnClickListener(new OnClickListener() {
view.findViewById(R.id.button_backup_save).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mShareNotSave = false;
@@ -224,7 +224,7 @@ public class BackupCodeFragment extends CryptoOperationFragment<ExportKeyringPar
}
});
backupShare.setOnClickListener(new OnClickListener() {
view.findViewById(R.id.button_backup_share).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mShareNotSave = true;
@@ -232,6 +232,16 @@ public class BackupCodeFragment extends CryptoOperationFragment<ExportKeyringPar
}
});
view.findViewById(R.id.button_backup_back).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragMan = getFragmentManager();
if (fragMan != null) {
fragMan.popBackStack();
}
}
});
return view;
}

View File

@@ -0,0 +1,364 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="50dp">
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="center_horizontal"
android:id="@+id/title_animator"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out"
custom:initialView="0">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="@string/backup_code_explanation"
style="?android:textAppearanceMedium"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="@string/backup_code_enter"
style="?android:textAppearanceMedium"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="@string/backup_code_ok"
style="?android:textAppearanceMedium"
/>
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="center_horizontal"
android:id="@+id/code_animator"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
custom:initialView="0">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_display_1"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
style="@android:style/Widget.EditText"
android:clickable="false"
android:focusable="false"
tools:text="ABCDEF"
tools:ignore="SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_display_2"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
style="@android:style/Widget.EditText"
android:clickable="false"
android:focusable="false"
tools:text="GHIJKL"
tools:ignore="SpUsage" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_display_3"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
style="@android:style/Widget.EditText"
android:clickable="false"
android:focusable="false"
tools:text="MNOPQR"
tools:ignore="SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_display_4"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:singleLine="true"
style="@android:style/Widget.EditText"
android:clickable="false"
android:focusable="false"
tools:text="STUVWX"
tools:ignore="SpUsage"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
>
<!--
The most reliable way to correctly size these I found was to put a transparent hint on them.
Theoretically, this should be what the android:ems attribute is for - didn't work for me.
-->
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_1"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:singleLine="true"
android:inputType="textNoSuggestions|textCapCharacters"
android:hint="ABCDEF"
android:textColorHint="@android:color/transparent"
android:maxLength="6"
tools:ignore="HardcodedText,SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_2"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:singleLine="true"
android:inputType="textNoSuggestions|textCapCharacters"
android:hint="ABCDEF"
android:textColorHint="@android:color/transparent"
android:maxLength="6"
tools:ignore="HardcodedText,SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_3"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:singleLine="true"
android:inputType="textNoSuggestions|textCapCharacters"
android:hint="ABCDEF"
android:textColorHint="@android:color/transparent"
android:maxLength="6"
tools:ignore="HardcodedText,SpUsage"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:text="-"
tools:ignore="HardcodedText,SpUsage"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/backup_code_4"
android:textStyle="bold"
android:typeface="monospace"
android:textSize="18dp"
android:singleLine="true"
android:inputType="textNoSuggestions|textCapCharacters"
android:hint="ABCDEF"
android:textColorHint="@android:color/transparent"
android:maxLength="6"
tools:ignore="HardcodedText,SpUsage"
/>
</LinearLayout>
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="center_horizontal"
android:id="@+id/status_animator"
android:inAnimation="@anim/fade_in_delayed"
android:outAnimation="@anim/fade_out"
custom:initialView="2">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:text="@string/btn_code_wrotedown"
android:drawableLeft="@drawable/ic_mode_edit_grey_24dp"
android:drawablePadding="8dp"
android:padding="12dp"
android:id="@+id/button_backup_input"
style="?android:buttonBarButtonStyle"
/>
<Space
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/backup_code_wrong"
style="?android:textAppearanceMedium"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center_horizontal"
android:padding="12dp"
android:text="@string/btn_backup_back"
android:drawableLeft="@drawable/ic_repeat_grey_24dp"
android:drawablePadding="8dp"
android:id="@+id/button_backup_back"
style="?android:buttonBarButtonStyle"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
style="?android:buttonBarStyle">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp"
android:padding="12dp"
android:text="@string/btn_backup_share"
android:drawableLeft="@drawable/ic_share_grey_24dp"
android:drawablePadding="8dp"
android:id="@+id/button_backup_share"
style="?android:buttonBarButtonStyle"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp"
android:padding="12dp"
android:text="@string/btn_backup_save"
android:drawableLeft="@drawable/ic_save_grey_24dp"
android:drawablePadding="8dp"
android:id="@+id/button_backup_save"
style="?android:buttonBarButtonStyle"
/>
</LinearLayout>
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
</LinearLayout>

View File

@@ -277,7 +277,7 @@
android:id="@+id/status_animator"
android:inAnimation="@anim/fade_in_delayed"
android:outAnimation="@anim/fade_out"
custom:initialView="3">
custom:initialView="2">
<Button
android:layout_width="wrap_content"
@@ -294,13 +294,34 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="match_parent"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/backup_code_wrong"
style="?android:textAppearanceMedium"
/>
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/backup_code_wrong"
style="?android:textAppearanceMedium"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center_horizontal"
android:padding="12dp"
android:text="@string/btn_backup_back"
android:drawableLeft="@drawable/ic_repeat_grey_24dp"
android:drawablePadding="8dp"
android:id="@+id/button_backup_back"
style="?android:buttonBarButtonStyle"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"

View File

@@ -276,7 +276,7 @@
android:id="@+id/status_animator"
android:inAnimation="@anim/fade_in_delayed"
android:outAnimation="@anim/fade_out"
custom:initialView="3">
custom:initialView="2">
<Button
android:layout_width="wrap_content"
@@ -284,6 +284,8 @@
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:text="@string/btn_code_wrotedown"
android:drawableLeft="@drawable/ic_mode_edit_grey_24dp"
android:drawablePadding="8dp"
android:padding="12dp"
android:id="@+id/button_backup_input"
style="?android:buttonBarButtonStyle"
@@ -293,13 +295,34 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="match_parent"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/backup_code_wrong"
style="?android:textAppearanceMedium"
/>
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/backup_code_wrong"
style="?android:textAppearanceMedium"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center_horizontal"
android:padding="12dp"
android:text="@string/btn_backup_back"
android:drawableLeft="@drawable/ic_repeat_grey_24dp"
android:drawablePadding="8dp"
android:id="@+id/button_backup_back"
style="?android:buttonBarButtonStyle"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"

View File

@@ -1655,5 +1655,6 @@
<string name="snack_backup_saved">"Backup saved"</string>
<string name="snack_backup_exists">"Backup already exists!"</string>
<string name="snack_backup_saved_dir">"Saved to OpenKeychain directory"</string>
<string name="btn_backup_back">Go back to check</string>
</resources>