From b3bab982a87af87db1102d95d7194db94cc83f1b Mon Sep 17 00:00:00 2001 From: Mygod Date: Mon, 23 Jan 2017 03:43:23 +0800 Subject: [PATCH] Fix HelpCallback --- .../shadowsocks/ProfileConfigActivity.scala | 17 ++++++++++++++- .../shadowsocks/ProfileConfigFragment.scala | 6 +++--- .../PluginConfigurationDialogFragment.scala | 21 +++++-------------- .../shadowsocks/plugin/HelpCallback.scala | 6 ++++-- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigActivity.scala b/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigActivity.scala index e8344b87..fd22a282 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigActivity.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigActivity.scala @@ -21,14 +21,21 @@ package com.github.shadowsocks import android.app.Activity -import android.content.DialogInterface +import android.content.{DialogInterface, Intent} import android.os.Bundle import android.support.v7.app.AlertDialog import android.support.v7.widget.Toolbar import com.github.shadowsocks.ShadowsocksApplication.app +import com.github.shadowsocks.plugin.PluginContract import com.github.shadowsocks.utils.Key +object ProfileConfigActivity { + final val REQUEST_CODE_PLUGIN_HELP = 1 +} + class ProfileConfigActivity extends Activity { + import ProfileConfigActivity._ + private lazy val child = getFragmentManager.findFragmentById(R.id.content).asInstanceOf[ProfileConfigFragment] override def onCreate(savedInstanceState: Bundle) { @@ -49,4 +56,12 @@ class ProfileConfigActivity extends Activity { .setNeutralButton(android.R.string.cancel, null) .create() .show() else super.onBackPressed() + + override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent): Unit = requestCode match { + case REQUEST_CODE_PLUGIN_HELP => if (resultCode == Activity.RESULT_OK) new AlertDialog.Builder(this) + .setTitle("?") + .setMessage(data.getCharSequenceExtra(PluginContract.EXTRA_HELP_MESSAGE)) + .show() + case _ => super.onActivityResult(requestCode, resultCode, data) + } } diff --git a/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigFragment.scala b/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigFragment.scala index 5dfbb616..d04ce749 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigFragment.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/ProfileConfigFragment.scala @@ -39,7 +39,7 @@ import com.github.shadowsocks.preference.{IconListPreference, PluginConfiguratio import com.github.shadowsocks.utils.{Action, Key, Utils} object ProfileConfigFragment { - private final val REQUEST_CODE_CONFIGURE = 1 + private final val REQUEST_CODE_PLUGIN_CONFIGURE = 1 } class ProfileConfigFragment extends PreferenceFragment with OnMenuItemClickListener @@ -135,7 +135,7 @@ class ProfileConfigFragment extends PreferenceFragment with OnMenuItemClickListe val intent = PluginManager.buildIntent(selected, PluginContract.ACTION_CONFIGURE) if (intent.resolveActivity(getActivity.getPackageManager) != null) startActivityForResult(intent.putExtra(PluginContract.EXTRA_OPTIONS, - pluginConfiguration.selectedOptions.toString), REQUEST_CODE_CONFIGURE) else { + pluginConfiguration.selectedOptions.toString), REQUEST_CODE_PLUGIN_CONFIGURE) else { val bundle = new Bundle() bundle.putString(PluginConfigurationDialogFragment.PLUGIN_ID_FRAGMENT_TAG, selected) displayPreferenceDialog(preference.getKey, new PluginConfigurationDialogFragment, bundle) @@ -143,7 +143,7 @@ class ProfileConfigFragment extends PreferenceFragment with OnMenuItemClickListe } else super.onDisplayPreferenceDialog(preference) override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent): Unit = requestCode match { - case REQUEST_CODE_CONFIGURE => if (resultCode == Activity.RESULT_OK) { + case REQUEST_CODE_PLUGIN_CONFIGURE => if (resultCode == Activity.RESULT_OK) { val options = data.getStringExtra(PluginContract.EXTRA_OPTIONS) pluginConfigure.setText(options) onPluginConfigureChanged(null, options) diff --git a/mobile/src/main/scala/com/github/shadowsocks/preference/PluginConfigurationDialogFragment.scala b/mobile/src/main/scala/com/github/shadowsocks/preference/PluginConfigurationDialogFragment.scala index ff414d70..bc6046f0 100644 --- a/mobile/src/main/scala/com/github/shadowsocks/preference/PluginConfigurationDialogFragment.scala +++ b/mobile/src/main/scala/com/github/shadowsocks/preference/PluginConfigurationDialogFragment.scala @@ -20,9 +20,10 @@ package com.github.shadowsocks.preference -import android.app.{Activity, AlertDialog} -import android.content.{DialogInterface, Intent} +import android.app.AlertDialog +import android.content.DialogInterface import be.mygod.preference.EditTextPreferenceDialogFragment +import com.github.shadowsocks.ProfileConfigActivity import com.github.shadowsocks.plugin.{PluginContract, PluginManager} /** @@ -30,7 +31,6 @@ import com.github.shadowsocks.plugin.{PluginContract, PluginManager} */ object PluginConfigurationDialogFragment { final val PLUGIN_ID_FRAGMENT_TAG = "com.github.shadowsocks.preference.PluginConfigurationDialogFragment.PLUGIN_ID" - private final val REQUEST_CODE_HELP = 1 } class PluginConfigurationDialogFragment extends EditTextPreferenceDialogFragment { @@ -40,18 +40,7 @@ class PluginConfigurationDialogFragment extends EditTextPreferenceDialogFragment super.onPrepareDialogBuilder(builder) val intent = PluginManager.buildIntent(getArguments.getString(PLUGIN_ID_FRAGMENT_TAG), PluginContract.ACTION_HELP) if (intent.resolveActivity(getActivity.getPackageManager) != null) builder.setNeutralButton("?", ((_, _) => - startActivityForResult(intent.putExtra(PluginContract.EXTRA_OPTIONS, editText.getText.toString), - REQUEST_CODE_HELP)): DialogInterface.OnClickListener) - } - - override def onActivityResult(requestCode: Int, resultCode: Int, data: Intent): Unit = requestCode match { - case REQUEST_CODE_HELP => requestCode match { - case Activity.RESULT_OK => new AlertDialog.Builder(getContext) - .setTitle("?") - .setMessage(data.getCharSequenceExtra(PluginContract.EXTRA_HELP_MESSAGE)) - .show() - case _ => - } - case _ => super.onActivityResult(requestCode, resultCode, data) + getActivity.startActivityForResult(intent.putExtra(PluginContract.EXTRA_OPTIONS, editText.getText.toString), + ProfileConfigActivity.REQUEST_CODE_PLUGIN_HELP)): DialogInterface.OnClickListener) } } diff --git a/plugin/src/main/scala/com/github/shadowsocks/plugin/HelpCallback.scala b/plugin/src/main/scala/com/github/shadowsocks/plugin/HelpCallback.scala index 236f9a29..76c11b09 100644 --- a/plugin/src/main/scala/com/github/shadowsocks/plugin/HelpCallback.scala +++ b/plugin/src/main/scala/com/github/shadowsocks/plugin/HelpCallback.scala @@ -13,6 +13,8 @@ import android.content.Intent trait HelpCallback extends HelpActivity { def produceHelpMessage(options: PluginOptions): CharSequence - override protected def onInitializePluginOptions(options: PluginOptions): Unit = setResult(Activity.RESULT_OK, - new Intent().putExtra(PluginContract.EXTRA_HELP_MESSAGE, produceHelpMessage(options))) + override protected def onInitializePluginOptions(options: PluginOptions) { + setResult(Activity.RESULT_OK, new Intent().putExtra(PluginContract.EXTRA_HELP_MESSAGE, produceHelpMessage(options))) + finish() + } }