From c05a958eaa6febce57b3b5ccfceaf639e71030a7 Mon Sep 17 00:00:00 2001 From: Adithya Abraham Philip Date: Thu, 18 Jun 2015 16:33:29 +0530 Subject: [PATCH] reduce code duplication --- .../keychain/service/KeychainService.java | 2 +- .../ui/dialog/InstallDialogFragment.java | 79 +------------ .../PreferenceInstallDialogFragment.java | 81 +------------ .../ui/util/InstallDialogFragmentHelper.java | 109 ++++++++++++++++++ 4 files changed, 120 insertions(+), 151 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java index 048f58318..f31a0faae 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java @@ -397,11 +397,11 @@ public class KeychainService extends Service implements Progressable { break; } case ACTION_IMPORT_KEYRING: { - Proxy proxy = getProxyFromBundle(data); // Input String keyServer = data.getString(IMPORT_KEY_SERVER); ArrayList keyList = data.getParcelableArrayList(IMPORT_KEY_LIST); + Proxy proxy = getProxyFromBundle(data); // either keyList or cache must be null, no guarantees otherwise if (keyList == null) {// import from file, do serially diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/InstallDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/InstallDialogFragment.java index 7b3f9ad28..7bfd940e6 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/InstallDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/InstallDialogFragment.java @@ -17,30 +17,14 @@ package org.sufficientlysecure.keychain.ui.dialog; -import android.app.Activity; import android.app.Dialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; import android.os.Bundle; -import android.os.Message; import android.os.Messenger; -import android.os.RemoteException; import android.support.v4.app.DialogFragment; -import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.ui.util.InstallDialogFragmentHelper; public class InstallDialogFragment extends DialogFragment { - private static final String ARG_MESSENGER = "messenger"; - private static final String ARG_TITLE = "title"; - private static final String ARG_MESSAGE = "message"; - private static final String ARG_MIDDLE_BUTTON = "middleButton"; - private static final String ARG_INSTALL_PATH = "installPath"; - private static final String ARG_USE_MIDDLE_BUTTON = "useMiddleButton"; - - public static final String PLAY_STORE_PATH = "market://search?q=pname:"; public static final int MESSAGE_MIDDLE_CLICKED = 1; @@ -60,13 +44,9 @@ public class InstallDialogFragment extends DialogFragment { useMiddleButton) { InstallDialogFragment frag = new InstallDialogFragment(); Bundle args = new Bundle(); - args.putParcelable(ARG_MESSENGER, messenger); - args.putInt(ARG_TITLE, title); - args.putInt(ARG_MESSAGE, message); - args.putInt(ARG_MIDDLE_BUTTON, middleButton); - args.putString(ARG_INSTALL_PATH, PLAY_STORE_PATH + packageToInstall); - args.putBoolean(ARG_USE_MIDDLE_BUTTON, useMiddleButton); + InstallDialogFragmentHelper.wrapIntoArgs(messenger, title, message, packageToInstall, middleButton, + useMiddleButton, args); frag.setArguments(args); @@ -88,57 +68,8 @@ public class InstallDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - final Activity activity = getActivity(); - final Messenger messenger = getArguments().getParcelable(ARG_MESSENGER); - - final int title = getArguments().getInt(ARG_TITLE); - final int message = getArguments().getInt(ARG_MESSAGE); - final int middleButton = getArguments().getInt(ARG_MIDDLE_BUTTON); - final String installPath = getArguments().getString(ARG_INSTALL_PATH); - final boolean useMiddleButton = getArguments().getBoolean(ARG_USE_MIDDLE_BUTTON); - - CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(activity); - - builder.setTitle(title).setMessage(message); - - builder.setNegativeButton(R.string.orbot_install_dialog_cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }); - - builder.setPositiveButton(R.string.orbot_install_dialog_install, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Uri uri = Uri.parse(installPath); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - activity.startActivity(intent); - } - } - ); - - if (useMiddleButton) { - builder.setNeutralButton(middleButton, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Message msg = new Message(); - msg.what = MESSAGE_MIDDLE_CLICKED; - 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); - } - } - } - ); - } - - return builder.show(); + return InstallDialogFragmentHelper.getInstallDialogFromArgs(getArguments(), getActivity(), + MESSAGE_MIDDLE_CLICKED); } } 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 b025cf5de..afeec285f 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 @@ -17,30 +17,14 @@ package org.sufficientlysecure.keychain.ui.dialog; -import android.app.Activity; import android.app.Dialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; import android.os.Bundle; -import android.os.Message; import android.os.Messenger; -import android.os.RemoteException; import android.app.DialogFragment; -import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.ui.util.InstallDialogFragmentHelper; public class PreferenceInstallDialogFragment extends DialogFragment { - private static final String ARG_MESSENGER = "messenger"; - private static final String ARG_TITLE = "title"; - private static final String ARG_MESSAGE = "message"; - private static final String ARG_MIDDLE_BUTTON = "middleButton"; - private static final String ARG_INSTALL_PATH = "installPath"; - private static final String ARG_USE_MIDDLE_BUTTON = "useMiddleButton"; - - public static final String PLAY_STORE_PATH = "market://search?q=pname:"; public static final int MESSAGE_MIDDLE_CLICKED = 1; @@ -60,13 +44,9 @@ public class PreferenceInstallDialogFragment extends DialogFragment { useMiddleButton) { PreferenceInstallDialogFragment frag = new PreferenceInstallDialogFragment(); Bundle args = new Bundle(); - args.putParcelable(ARG_MESSENGER, messenger); - args.putInt(ARG_TITLE, title); - args.putInt(ARG_MESSAGE, message); - args.putInt(ARG_MIDDLE_BUTTON, middleButton); - args.putString(ARG_INSTALL_PATH, PLAY_STORE_PATH + packageToInstall); - args.putBoolean(ARG_USE_MIDDLE_BUTTON, useMiddleButton); + InstallDialogFragmentHelper.wrapIntoArgs(messenger, title, message, packageToInstall, middleButton, + useMiddleButton, args); frag.setArguments(args); @@ -88,58 +68,7 @@ public class PreferenceInstallDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - final Activity activity = getActivity(); - - final Messenger messenger = getArguments().getParcelable(ARG_MESSENGER); - - final int title = getArguments().getInt(ARG_TITLE); - final int message = getArguments().getInt(ARG_MESSAGE); - final int middleButton = getArguments().getInt(ARG_MIDDLE_BUTTON); - final String installPath = getArguments().getString(ARG_INSTALL_PATH); - final boolean useMiddleButton = getArguments().getBoolean(ARG_USE_MIDDLE_BUTTON); - - CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(activity); - - builder.setTitle(title).setMessage(message); - - builder.setNegativeButton(R.string.orbot_install_dialog_cancel, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - } - }); - - builder.setPositiveButton(R.string.orbot_install_dialog_install, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Uri uri = Uri.parse(installPath); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - activity.startActivity(intent); - } - } - ); - - if (useMiddleButton) { - builder.setNeutralButton(middleButton, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Message msg = new Message(); - msg.what = MESSAGE_MIDDLE_CLICKED; - 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); - } - } - } - ); - } - - return builder.show(); + return InstallDialogFragmentHelper.getInstallDialogFromArgs(getArguments(), getActivity(), + MESSAGE_MIDDLE_CLICKED); } } 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 new file mode 100644 index 000000000..9f96db6d0 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/InstallDialogFragmentHelper.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2012-2014 Dominik Schürmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.sufficientlysecure.keychain.ui.util; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.Message; +import android.os.Messenger; +import android.os.RemoteException; +import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder; +import org.sufficientlysecure.keychain.util.Log; + +public class InstallDialogFragmentHelper { + private static final String ARG_MESSENGER = "messenger"; + private static final String ARG_TITLE = "title"; + private static final String ARG_MESSAGE = "message"; + private static final String ARG_MIDDLE_BUTTON = "middleButton"; + private static final String ARG_INSTALL_PATH = "installPath"; + private static final String ARG_USE_MIDDLE_BUTTON = "useMiddleButton"; + + private static final String PLAY_STORE_PATH = "market://search?q=pname:"; + + public static void wrapIntoArgs(Messenger messenger, int title, int message, String packageToInstall, + int middleButton, boolean useMiddleButton, Bundle args) { + args.putParcelable(ARG_MESSENGER, messenger); + + args.putInt(ARG_TITLE, title); + args.putInt(ARG_MESSAGE, message); + args.putInt(ARG_MIDDLE_BUTTON, middleButton); + args.putString(ARG_INSTALL_PATH, PLAY_STORE_PATH + packageToInstall); + args.putBoolean(ARG_USE_MIDDLE_BUTTON, useMiddleButton); + } + + public static AlertDialog getInstallDialogFromArgs(Bundle args, final Activity activity, + final int messengerMiddleButtonClicked) { + final Messenger messenger = args.getParcelable(ARG_MESSENGER); + + final int title = args.getInt(ARG_TITLE); + final int message = args.getInt(ARG_MESSAGE); + final int middleButton = args.getInt(ARG_MIDDLE_BUTTON); + final String installPath = args.getString(ARG_INSTALL_PATH); + final boolean useMiddleButton = args.getBoolean(ARG_USE_MIDDLE_BUTTON); + + CustomAlertDialogBuilder builder = new CustomAlertDialogBuilder(activity); + + builder.setTitle(title).setMessage(message); + + builder.setNegativeButton(R.string.orbot_install_dialog_cancel, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }); + + builder.setPositiveButton(R.string.orbot_install_dialog_install, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Uri uri = Uri.parse(installPath); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + activity.startActivity(intent); + } + } + ); + + if (useMiddleButton) { + builder.setNeutralButton(middleButton, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Message msg = new Message(); + msg.what = messengerMiddleButtonClicked; + 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); + } + } + } + ); + } + + return builder.show(); + } +}