Do not use ImportKeysListFragment for Security Token import, fixes #1959. Also introduces radio button to import key information from file
This commit is contained in:
@@ -27,6 +27,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -67,11 +68,11 @@ public class CreateSecurityTokenImportResetFragment
|
||||
private byte[] mTokenAid;
|
||||
private String mTokenUserId;
|
||||
private String mTokenFingerprint;
|
||||
private ImportKeysListFragment mListFragment;
|
||||
private TextView vSerNo;
|
||||
private TextView vUserId;
|
||||
private TextView mNextButton;
|
||||
private RadioButton mRadioImport;
|
||||
private RadioButton mRadioFile;
|
||||
private RadioButton mRadioReset;
|
||||
private View mResetWarning;
|
||||
|
||||
@@ -116,6 +117,7 @@ public class CreateSecurityTokenImportResetFragment
|
||||
vUserId = (TextView) view.findViewById(R.id.token_userid);
|
||||
mNextButton = (TextView) view.findViewById(R.id.create_key_next_button);
|
||||
mRadioImport = (RadioButton) view.findViewById(R.id.token_decision_import);
|
||||
mRadioFile = (RadioButton) view.findViewById(R.id.token_decision_file);
|
||||
mRadioReset = (RadioButton) view.findViewById(R.id.token_decision_reset);
|
||||
mResetWarning = view.findViewById(R.id.token_import_reset_warning);
|
||||
|
||||
@@ -137,15 +139,14 @@ public class CreateSecurityTokenImportResetFragment
|
||||
public void onClick(View v) {
|
||||
if (mRadioReset.isChecked()) {
|
||||
resetCard();
|
||||
} else {
|
||||
} else if (mRadioImport.isChecked()){
|
||||
importKey();
|
||||
} else {
|
||||
importFile();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mListFragment = ImportKeysListFragment.newInstance(null, null,
|
||||
"0x" + mTokenFingerprint, true, null);
|
||||
|
||||
mRadioImport.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
@@ -154,13 +155,17 @@ public class CreateSecurityTokenImportResetFragment
|
||||
mNextButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_key_plus_grey600_24dp, 0);
|
||||
mNextButton.setVisibility(View.VISIBLE);
|
||||
mResetWarning.setVisibility(View.GONE);
|
||||
|
||||
getFragmentManager().beginTransaction()
|
||||
.replace(R.id.security_token_import_fragment, mListFragment, "token_import")
|
||||
.commit();
|
||||
|
||||
getFragmentManager().executePendingTransactions();
|
||||
refreshSearch();
|
||||
}
|
||||
}
|
||||
});
|
||||
mRadioFile.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (isChecked) {
|
||||
mNextButton.setText(R.string.key_list_fab_import);
|
||||
mNextButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_folder_grey_24dp, 0);
|
||||
mNextButton.setVisibility(View.VISIBLE);
|
||||
mResetWarning.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -172,10 +177,6 @@ public class CreateSecurityTokenImportResetFragment
|
||||
mNextButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_close_grey_24dp, 0);
|
||||
mNextButton.setVisibility(View.VISIBLE);
|
||||
mResetWarning.setVisibility(View.VISIBLE);
|
||||
|
||||
getFragmentManager().beginTransaction()
|
||||
.remove(mListFragment)
|
||||
.commit();
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -212,13 +213,7 @@ public class CreateSecurityTokenImportResetFragment
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshSearch() {
|
||||
mListFragment.loadState(new CloudLoaderState("0x" + mTokenFingerprint,
|
||||
Preferences.getPreferences(getActivity()).getCloudSearchPrefs()));
|
||||
}
|
||||
|
||||
public void importKey() {
|
||||
|
||||
ArrayList<ParcelableKeyRing> keyList = new ArrayList<>();
|
||||
keyList.add(new ParcelableKeyRing(mTokenFingerprint, null, null, null));
|
||||
mKeyList = keyList;
|
||||
@@ -228,7 +223,12 @@ public class CreateSecurityTokenImportResetFragment
|
||||
super.setProgressMessageResource(R.string.progress_importing);
|
||||
|
||||
super.cryptoOperation();
|
||||
}
|
||||
|
||||
public void importFile() {
|
||||
Intent intent = new Intent(getActivity(), ImportKeysActivity.class);
|
||||
intent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY_FROM_FILE);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void resetCard() {
|
||||
|
||||
@@ -82,6 +82,13 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/security_token_import_radio" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/token_decision_file"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/security_token_file_radio" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/token_decision_reset"
|
||||
android:layout_width="match_parent"
|
||||
@@ -117,6 +124,7 @@
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textColor="@color/android_red_dark"
|
||||
android:visibility="gone" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -1576,9 +1576,10 @@
|
||||
<string name="security_token_status_unbound">"Security Token matches, can be bound to key"</string>
|
||||
<string name="security_token_status_partly">"Security Token matches, partly bound to key"</string>
|
||||
<string name="security_token_create">"Hold Security Token against the back of your device."</string>
|
||||
<string name="security_token_reset_or_import">"This Security Token already contains a key. You can import the key using the cloud or reset the Security Token."</string>
|
||||
<string name="security_token_reset_or_import">"This Security Token already contains a key. To use it, we need additional key information. These information can be searched on a keyserver or imported from a file."</string>
|
||||
<string name="btn_reset">"Reset"</string>
|
||||
<string name="security_token_import_radio">"Import key"</string>
|
||||
<string name="security_token_import_radio">"Search key information on keyserver"</string>
|
||||
<string name="security_token_file_radio">"Import key information from file"</string>
|
||||
<string name="security_token_reset_radio">"Reset Security Token"</string>
|
||||
<string name="security_token_reset_warning">"Resetting the Security Token completely destroys the keys on it. Afterwards, you will not be able to decrypt messages/files encrypted with this key!"</string>
|
||||
<string name="snack_security_token_other">Different key stored on Security Token!</string>
|
||||
|
||||
Reference in New Issue
Block a user