summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2018-02-17 11:04:01 +0100
committercyBerta <cyberta@riseup.net>2018-02-17 11:04:01 +0100
commit8931c0b7e24b155130681cec4e25c701544b13ca (patch)
treefa2d11b86c22419eeafb5109b81e01c1f13310cb /app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
parent81505d6ec2029cde746c375f8f0dc8e256e02ab9 (diff)
#8797 fix recreation / restore of MainActivityErrorDialogs
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java64
1 files changed, 29 insertions, 35 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java b/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
index fd84e83d..7756bcfd 100644
--- a/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
+++ b/app/src/main/java/se/leap/bitmaskclient/MainActivityErrorDialog.java
@@ -16,34 +16,37 @@
*/
package se.leap.bitmaskclient;
-import android.app.AlertDialog;
import android.app.Dialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
+import android.support.v7.app.AlertDialog;
+import android.util.Log;
import org.json.JSONObject;
-import static se.leap.bitmaskclient.MainActivityErrorDialog.DOWNLOAD_ERRORS.*;
+import static se.leap.bitmaskclient.MainActivityErrorDialog.DOWNLOAD_ERRORS.DEFAULT;
+import static se.leap.bitmaskclient.MainActivityErrorDialog.DOWNLOAD_ERRORS.valueOf;
import static se.leap.bitmaskclient.ProviderAPI.DOWNLOAD_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.eip.EIP.ERRORS;
import static se.leap.bitmaskclient.eip.EIP.ERROR_ID;
/**
- * Implements a error dialog for the main activity.
+ * Implements an error dialog for the main activity.
*
* @author fupduck
* @author cyberta
*/
public class MainActivityErrorDialog extends DialogFragment {
- public static String TAG = "downloaded_failed_dialog";
+ final public static String TAG = "downloaded_failed_dialog";
+ final private static String KEY_REASON_TO_FAIL = "key reason to fail";
+ final private static String KEY_PROVIDER = "key provider";
private String reasonToFail;
private DOWNLOAD_ERRORS downloadError = DEFAULT;
- private MainActivityErrorDialogInterface callbackInterface;
private Provider provider;
public enum DOWNLOAD_ERRORS {
@@ -86,14 +89,18 @@ public class MainActivityErrorDialog extends DialogFragment {
}
@Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ restoreFromSavedInstance(savedInstanceState);
+ }
+
+ @Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(reasonToFail)
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
- dialog.dismiss();
- callbackInterface.onDialogDismissed();
}
});
switch (downloadError) {
@@ -101,19 +108,11 @@ public class MainActivityErrorDialog extends DialogFragment {
builder.setPositiveButton(R.string.update_certificate, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- dismiss();
ProviderAPICommand.execute(getContext(), DOWNLOAD_VPN_CERTIFICATE, provider);
- callbackInterface.onDialogDismissed();
}
});
break;
default:
- builder.setPositiveButton(R.string.retry, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- dismiss();
- callbackInterface.onDialogDismissed();
- }
- });
break;
}
@@ -121,29 +120,24 @@ public class MainActivityErrorDialog extends DialogFragment {
return builder.create();
}
- @Override
- public void dismiss() {
- super.dismiss();
- }
- public interface MainActivityErrorDialogInterface {
- void onDialogDismissed();
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putString(KEY_REASON_TO_FAIL, reasonToFail);
+ outState.putParcelable(KEY_PROVIDER, provider);
}
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- try {
- callbackInterface = (MainActivityErrorDialogInterface) context;
- } catch (ClassCastException e) {
- throw new ClassCastException(context.toString()
- + " must implement NoticeDialogListener");
+ private void restoreFromSavedInstance(Bundle savedInstanceState) {
+ if (savedInstanceState == null) {
+ return;
+ }
+ if (savedInstanceState.containsKey(KEY_PROVIDER)) {
+ this.provider = savedInstanceState.getParcelable(KEY_PROVIDER);
+ }
+ if (savedInstanceState.containsKey(KEY_REASON_TO_FAIL)) {
+ this.reasonToFail = savedInstanceState.getString(KEY_REASON_TO_FAIL);
}
}
- @Override
- public void onCancel(DialogInterface dialog) {
- super.onCancel(dialog);
- callbackInterface.onDialogDismissed();
- }
}