diff options
author | Adithya Abraham Philip <adithyaphilip@gmail.com> | 2015-08-06 01:59:11 +0530 |
---|---|---|
committer | Adithya Abraham Philip <adithyaphilip@gmail.com> | 2015-08-06 04:40:52 +0530 |
commit | 37864a9d42436081eb6132dc0c8b1e0868a15272 (patch) | |
tree | 57056b42101cf9a2ba89ad4f62e9326061114125 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog | |
parent | 7086a67c2e131542c0ce903e1a5db887deae59fe (diff) | |
download | open-keychain-37864a9d42436081eb6132dc0c8b1e0868a15272.tar.gz open-keychain-37864a9d42436081eb6132dc0c8b1e0868a15272.tar.bz2 open-keychain-37864a9d42436081eb6132dc0c8b1e0868a15272.zip |
updated OrbotHelper with silent start
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog')
3 files changed, 77 insertions, 27 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddEditKeyserverDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddEditKeyserverDialogFragment.java index 691cc009d..47bc7dfda 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddEditKeyserverDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddEditKeyserverDialogFragment.java @@ -50,6 +50,7 @@ import android.widget.TextView.OnEditorActionListener; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; + import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.keyimport.HkpKeyserver; @@ -216,15 +217,25 @@ public class AddEditKeyserverDialogFragment extends DialogFragment implements On if (mVerifyKeyserverCheckBox.isChecked()) { final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity()) .getProxyPrefs(); - Runnable ignoreTor = new Runnable() { + OrbotHelper.DialogActions dialogActions = new OrbotHelper.DialogActions() { + @Override + public void onOrbotStarted() { + verifyConnection(keyserverUrl, + proxyPrefs.parcelableProxy.getProxy()); + } + @Override - public void run() { + public void onNeutralButton() { verifyConnection(keyserverUrl, null); } + + @Override + public void onCancel() { + // do nothing + } }; - if (OrbotHelper.putOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs, - getActivity())) { + if (OrbotHelper.putOrbotInRequiredState(dialogActions, getActivity())) { verifyConnection(keyserverUrl, proxyPrefs.parcelableProxy.getProxy()); } } else { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/OrbotStartDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/OrbotStartDialogFragment.java index d1d22b6d7..b06e05c30 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/OrbotStartDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/OrbotStartDialogFragment.java @@ -18,15 +18,19 @@ package org.sufficientlysecure.keychain.ui.dialog; import android.app.Activity; -import android.support.v7.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.os.Messenger; import android.os.RemoteException; +import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; +import android.support.v7.app.AlertDialog; import android.view.ContextThemeWrapper; +import android.view.View; +import android.widget.Button; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; @@ -43,8 +47,11 @@ public class OrbotStartDialogFragment extends DialogFragment { private static final String ARG_MESSAGE = "message"; private static final String ARG_MIDDLE_BUTTON = "middleButton"; + private static final int ORBOT_REQUEST_CODE = 1; + public static final int MESSAGE_MIDDLE_BUTTON = 1; - public static final int MESSAGE_DIALOG_DISMISSED = 2; // for either cancel or enable pressed + public static final int MESSAGE_DIALOG_CANCELLED = 2; // for either cancel or enable pressed + public static final int MESSAGE_ORBOT_STARTED = 3; // for either cancel or enable pressed public static OrbotStartDialogFragment newInstance(Messenger messenger, int title, int message, int middleButton) { Bundle args = new Bundle(); @@ -59,6 +66,7 @@ public class OrbotStartDialogFragment extends DialogFragment { return fragment; } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -77,7 +85,7 @@ public class OrbotStartDialogFragment extends DialogFragment { @Override public void onClick(DialogInterface dialog, int which) { Message msg = Message.obtain(); - msg.what = MESSAGE_DIALOG_DISMISSED; + msg.what = MESSAGE_DIALOG_CANCELLED; try { messenger.send(msg); } catch (RemoteException e) { @@ -89,13 +97,11 @@ public class OrbotStartDialogFragment extends DialogFragment { } }); - builder.setPositiveButton(R.string.orbot_start_dialog_start, new DialogInterface.OnClickListener() { + builder.setNeutralButton(middleButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - getActivity().startActivityForResult(OrbotHelper.getOrbotStartIntent(), 1); - - Message msg = Message.obtain(); - msg.what = MESSAGE_DIALOG_DISMISSED; + Message msg = new Message(); + msg.what = MESSAGE_MIDDLE_BUTTON; try { messenger.send(msg); } catch (RemoteException e) { @@ -106,21 +112,52 @@ public class OrbotStartDialogFragment extends DialogFragment { } }); - builder.setNeutralButton(middleButton, new DialogInterface.OnClickListener() { + builder.setPositiveButton(R.string.orbot_start_dialog_start, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - Message msg = new Message(); - msg.what = MESSAGE_MIDDLE_BUTTON; - try { - messenger.send(msg); - } catch (RemoteException e) { - Log.w(Constants.TAG, "Exception sending message, Is handler present?", e); - } catch (NullPointerException e) { - Log.w(Constants.TAG, "Messenger is null!", e); - } + // actual onClick defined in onStart, this is just to make the button appear } }); return builder.show(); } + + @Override + public void onStart() { + super.onStart(); + //super.onStart() is where dialog.show() is actually called on the underlying dialog, + // so we have to do it after this point + AlertDialog d = (AlertDialog) getDialog(); + if (d != null) { + Button positiveButton = d.getButton(Dialog.BUTTON_POSITIVE); + positiveButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + startActivityForResult(OrbotHelper.getShowOrbotStartIntent(), + ORBOT_REQUEST_CODE); + } + }); + } + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == ORBOT_REQUEST_CODE) { + // assume Orbot was started + final Messenger messenger = getArguments().getParcelable(ARG_MESSENGER); + + Message msg = Message.obtain(); + msg.what = MESSAGE_ORBOT_STARTED; + try { + messenger.send(msg); + } catch (RemoteException e) { + Log.w(Constants.TAG, "Exception sending message, Is handler present?", e); + } catch (NullPointerException e) { + Log.w(Constants.TAG, "Messenger is null!", e); + } + dismiss(); + } + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SupportInstallDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SupportInstallDialogFragment.java index b2b71b364..82d1be4ed 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SupportInstallDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SupportInstallDialogFragment.java @@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.dialog; import android.app.Dialog; import android.os.Bundle; import android.os.Messenger; +import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import org.sufficientlysecure.keychain.ui.util.InstallDialogFragmentHelper; @@ -34,7 +35,7 @@ public class SupportInstallDialogFragment extends DialogFragment { * and "Cancel") and an optional third button. Callbacks are provided only for the middle button, if set. * * @param messenger required only for callback from middle button if it has been set - * @param title + * @param title xml resource for title of the install dialog * @param message content of dialog * @param packageToInstall package name of application to install * @param middleButton if not null, adds a third button to the app with a call back @@ -57,16 +58,17 @@ public class SupportInstallDialogFragment extends DialogFragment { /** * To create a DialogFragment with only two buttons * - * @param title - * @param message - * @param packageToInstall + * @param title xml string resource for title of the dialog + * @param message xml string resource to display as dialog body + * @param packageToInstall name of package to install * @return */ public static SupportInstallDialogFragment newInstance(int title, int message, - String packageToInstall) { + String packageToInstall) { return newInstance(null, title, message, packageToInstall, -1, false); } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { |