aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2015-07-03 09:27:46 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2015-07-03 20:46:16 +0530
commitaca106e8080dc58a0020b23f671daf1431674afb (patch)
treec5d50a4db3b3cf716905a14b49aad2f98ac12964
parent89f017aa9c1750de7574865baf29d071ff2862a5 (diff)
downloadopen-keychain-aca106e8080dc58a0020b23f671daf1431674afb.tar.gz
open-keychain-aca106e8080dc58a0020b23f671daf1431674afb.tar.bz2
open-keychain-aca106e8080dc58a0020b23f671daf1431674afb.zip
fixed OrbotRequiredDialogActivity not finishing, orbot install dialog style
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java16
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java16
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/OrbotRequiredDialogActivity.java11
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/OrbotStartDialogFragment.java21
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PreferenceInstallDialogFragment.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SupportInstallDialogFragment.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java34
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/orbot/OrbotHelper.java52
8 files changed, 112 insertions, 44 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java
index 13cafc73c..9e3dce28f 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateYubiKeyImportFragment.java
@@ -122,19 +122,7 @@ public class CreateYubiKeyImportFragment
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
- final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity()).getProxyPrefs();
- Runnable ignoreTor = new Runnable() {
- @Override
- public void run() {
- importKey(new ParcelableProxy(null, -1, null));
- }
- };
-
- if (OrbotHelper.putOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
- getActivity())) {
- importKey(proxyPrefs.parcelableProxy);
- }
+ importKey();
}
});
}
@@ -201,7 +189,7 @@ public class CreateYubiKeyImportFragment
Preferences.getPreferences(getActivity()).getCloudSearchPrefs()), parcelableProxy);
}
- public void importKey(ParcelableProxy parcelableProxy) {
+ public void importKey() {
ArrayList<ParcelableKeyRing> keyList = new ArrayList<>();
keyList.add(new ParcelableKeyRing(mNfcFingerprint, null, null));
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
index ea736f938..afd6b337e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java
@@ -133,7 +133,7 @@ public abstract class DecryptFragment extends Fragment implements LoaderManager.
}
}
- private void lookupUnknownKey(long unknownKeyId, ParcelableProxy parcelableProxy) {
+ private void lookupUnknownKey(long unknownKeyId) {
final ArrayList<ParcelableKeyRing> keyList;
final String keyserver;
@@ -424,19 +424,7 @@ public abstract class DecryptFragment extends Fragment implements LoaderManager.
mSignatureLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- final Preferences.ProxyPrefs proxyPrefs = Preferences.getPreferences(getActivity())
- .getProxyPrefs();
- Runnable ignoreTor = new Runnable() {
- @Override
- public void run() {
- lookupUnknownKey(signatureKeyId, new ParcelableProxy(null, -1, null));
- }
- };
-
- if (OrbotHelper.putOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, proxyPrefs,
- getActivity())) {
- lookupUnknownKey(signatureKeyId, proxyPrefs.parcelableProxy);
- }
+ lookupUnknownKey(signatureKeyId);
}
});
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/OrbotRequiredDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/OrbotRequiredDialogActivity.java
index b75baceb5..587044659 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/OrbotRequiredDialogActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/OrbotRequiredDialogActivity.java
@@ -68,7 +68,15 @@ public class OrbotRequiredDialogActivity extends FragmentActivity {
finish();
}
};
- if (OrbotHelper.putOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor,
+
+ Runnable dialogDismissed = new Runnable() {
+ @Override
+ public void run() {
+ finish();
+ }
+ };
+
+ if (OrbotHelper.putOrbotInRequiredState(R.string.orbot_ignore_tor, ignoreTor, dialogDismissed,
Preferences.getPreferences(OrbotRequiredDialogActivity.this)
.getProxyPrefs(),
OrbotRequiredDialogActivity.this)) {
@@ -76,7 +84,6 @@ public class OrbotRequiredDialogActivity extends FragmentActivity {
Intent intent = new Intent();
intent.putExtra(RESULT_CRYPTO_INPUT, mCryptoInputParcel);
setResult(RESULT_OK, intent);
- finish();
}
}
});
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 dba04994c..dd7d2256a 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,6 +18,7 @@
package org.sufficientlysecure.keychain.ui.dialog;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
@@ -42,6 +43,7 @@ public class OrbotStartDialogFragment extends DialogFragment {
private static final String ARG_MIDDLE_BUTTON = "middleButton";
public static final int MESSAGE_MIDDLE_BUTTON = 1;
+ public static final int MESSAGE_DIALOG_DISMISSED = 2; // for either cancel or enable pressed
public static OrbotStartDialogFragment newInstance(Messenger messenger, int title, int message, int middleButton) {
Bundle args = new Bundle();
@@ -77,6 +79,15 @@ public class OrbotStartDialogFragment extends DialogFragment {
builder.setNegativeButton(R.string.orbot_start_dialog_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
+ Message msg = Message.obtain();
+ msg.what = MESSAGE_DIALOG_DISMISSED;
+ 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);
+ }
}
});
@@ -85,6 +96,16 @@ public class OrbotStartDialogFragment extends DialogFragment {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().startActivityForResult(OrbotHelper.getOrbotStartIntent(), 1);
+
+ Message msg = Message.obtain();
+ msg.what = MESSAGE_DIALOG_DISMISSED;
+ 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);
+ }
}
});
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PreferenceInstallDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PreferenceInstallDialogFragment.java
index afeec285f..3f8bce28b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PreferenceInstallDialogFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/PreferenceInstallDialogFragment.java
@@ -27,6 +27,7 @@ import org.sufficientlysecure.keychain.ui.util.InstallDialogFragmentHelper;
public class PreferenceInstallDialogFragment extends DialogFragment {
public static final int MESSAGE_MIDDLE_CLICKED = 1;
+ public static final int MESSAGE_DIALOG_DISMISSED = 2;
/**
* Creates a dialog which prompts the user to install an application. Consists of two default buttons ("Install"
@@ -69,6 +70,6 @@ public class PreferenceInstallDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return InstallDialogFragmentHelper.getInstallDialogFromArgs(getArguments(), getActivity(),
- MESSAGE_MIDDLE_CLICKED);
+ MESSAGE_MIDDLE_CLICKED, MESSAGE_DIALOG_DISMISSED);
}
}
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 36ca13247..b2b71b364 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
@@ -27,6 +27,7 @@ import org.sufficientlysecure.keychain.ui.util.InstallDialogFragmentHelper;
public class SupportInstallDialogFragment extends DialogFragment {
public static final int MESSAGE_MIDDLE_CLICKED = 1;
+ public static final int MESSAGE_DIALOG_DISMISSED = 2;
/**
* Creates a dialog which prompts the user to install an application. Consists of two default buttons ("Install"
@@ -70,6 +71,6 @@ public class SupportInstallDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
return InstallDialogFragmentHelper.getInstallDialogFromArgs(getArguments(), getActivity(),
- MESSAGE_MIDDLE_CLICKED);
+ MESSAGE_MIDDLE_CLICKED, MESSAGE_DIALOG_DISMISSED);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java
index 9f96db6d0..f21d69c48 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java
@@ -26,6 +26,8 @@ import android.os.Bundle;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
+import android.view.ContextThemeWrapper;
+
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
@@ -53,7 +55,8 @@ public class InstallDialogFragmentHelper {
}
public static AlertDialog getInstallDialogFromArgs(Bundle args, final Activity activity,
- final int messengerMiddleButtonClicked) {
+ final int messengerMiddleButtonClicked,
+ final int messengerDialogDimissed) {
final Messenger messenger = args.getParcelable(ARG_MESSENGER);
final int title = args.getInt(ARG_TITLE);
@@ -62,7 +65,12 @@ public class InstallDialogFragmentHelper {
final String installPath = args.getString(ARG_INSTALL_PATH);
final boolean useMiddleButton = args.getBoolean(ARG_USE_MIDDLE_BUTTON);
- CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(activity);
+ // if the dialog is displayed from the application class, design is missing.
+ // hack to get holo design (which is not automatically applied due to activity's
+ // Theme.NoDisplay)
+ ContextThemeWrapper theme = new ContextThemeWrapper(activity,
+ R.style.Theme_AppCompat_Light_Dialog);
+ CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(theme);
builder.setTitle(title).setMessage(message);
@@ -70,7 +78,15 @@ public class InstallDialogFragmentHelper {
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
-
+ Message msg = Message.obtain();
+ msg.what = messengerDialogDimissed;
+ 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);
+ }
}
});
@@ -81,6 +97,16 @@ public class InstallDialogFragmentHelper {
Uri uri = Uri.parse(installPath);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
activity.startActivity(intent);
+
+ Message msg = Message.obtain();
+ msg.what = messengerDialogDimissed;
+ 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);
+ }
}
}
);
@@ -90,7 +116,7 @@ public class InstallDialogFragmentHelper {
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- Message msg = new Message();
+ Message msg = Message.obtain();
msg.what = messengerMiddleButtonClicked;
try {
messenger.send(msg);
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/orbot/OrbotHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/orbot/OrbotHelper.java
index b73d90f9b..9d97ba305 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/orbot/OrbotHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/orbot/OrbotHelper.java
@@ -149,22 +149,30 @@ public class OrbotHelper {
* @param fragmentActivity
* @return true if Tor is not enabled or Tor is enabled and Orbot is installed and running, else false
*/
- public static boolean putOrbotInRequiredState(int middleButton, final Runnable middleButtonRunnable,
+ public static boolean putOrbotInRequiredState(final int middleButton,
+ final Runnable middleButtonRunnable,
+ final Runnable dialogDismissRunnable,
Preferences.ProxyPrefs proxyPrefs,
FragmentActivity fragmentActivity) {
- Handler ignoreTorHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // every message received by this handler will mean the middle button was pressed
- middleButtonRunnable.run();
- }
- };
if (!proxyPrefs.torEnabled) {
return true;
}
if (!OrbotHelper.isOrbotInstalled(fragmentActivity)) {
+ Handler ignoreTorHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case SupportInstallDialogFragment.MESSAGE_MIDDLE_CLICKED:
+ middleButtonRunnable.run();
+ break;
+ case SupportInstallDialogFragment.MESSAGE_DIALOG_DISMISSED:
+ dialogDismissRunnable.run();
+ break;
+ }
+ }
+ };
OrbotHelper.getInstallDialogFragmentWithThirdButton(
new Messenger(ignoreTorHandler),
@@ -174,6 +182,20 @@ public class OrbotHelper {
return false;
} else if (!OrbotHelper.isOrbotRunning()) {
+ Handler ignoreTorHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case OrbotStartDialogFragment.MESSAGE_MIDDLE_BUTTON:
+ middleButtonRunnable.run();
+ break;
+ case OrbotStartDialogFragment.MESSAGE_DIALOG_DISMISSED:
+ dialogDismissRunnable.run();
+ break;
+ }
+ }
+ };
+
OrbotHelper.getOrbotStartDialogFragment(new Messenger(ignoreTorHandler),
middleButton)
.show(fragmentActivity.getSupportFragmentManager(), "OrbotHelperOrbotStartDialog");
@@ -183,4 +205,18 @@ public class OrbotHelper {
return true;
}
}
+
+ public static boolean putOrbotInRequiredState(final int middleButton,
+ final Runnable middleButtonRunnable,
+ Preferences.ProxyPrefs proxyPrefs,
+ FragmentActivity fragmentActivity) {
+ Runnable emptyRunnable = new Runnable() {
+ @Override
+ public void run() {
+
+ }
+ };
+ return putOrbotInRequiredState(middleButton, middleButtonRunnable, emptyRunnable,
+ proxyPrefs, fragmentActivity);
+ }
}