From 9613d653037a1e7eebe6ca2e3753826fe8506e30 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 2 Aug 2015 08:22:20 +0800 Subject: [PATCH] fix a issue of progress dialog --- src/main/jni/shadowsocks-libev | 2 +- .../com/github/shadowsocks/Shadowsocks.scala | 41 +++++++++++-------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/jni/shadowsocks-libev b/src/main/jni/shadowsocks-libev index 72601534..91730267 160000 --- a/src/main/jni/shadowsocks-libev +++ b/src/main/jni/shadowsocks-libev @@ -1 +1 @@ -Subproject commit 7260153439e5ec264b8eb5f7364bd2c73fdb0e39 +Subproject commit 91730267dd23975ca3b3a05417e89df4865b6f88 diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index 5809a927..e0d00a1e 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -185,6 +185,7 @@ class Shadowsocks // Variables var switchButton: Switch = null var progressDialog: ProgressDialog = null + var progressTag = -1 var state = State.INIT var prepared = false var currentProfile = new Profile @@ -271,9 +272,10 @@ class Shadowsocks switchButton.setOnCheckedChangeListener(this) } - private def showProgress(msg: String): Handler = { + private def showProgress(msg: Int): Handler = { clearDialog() - progressDialog = ProgressDialog.show(this, "", msg, true, false) + progressDialog = ProgressDialog.show(this, "", getString(msg), true, false) + progressTag = msg new Handler { override def handleMessage(msg: Message) { clearDialog() @@ -397,7 +399,7 @@ class Shadowsocks } def prepareStartService() { - showProgress(getString(R.string.connecting)) + showProgress(R.string.connecting) spawn { if (!status.getBoolean(getVersionName, false)) { status.edit.putBoolean(getVersionName, true).commit() @@ -616,7 +618,7 @@ class Shadowsocks which match { case 0 => dialog.dismiss() - val h = showProgress(getString(R.string.loading)) + val h = showProgress(R.string.loading) h.postDelayed(new Runnable() { def run() { val integrator = new IntentIntegrator(Shadowsocks.this) @@ -640,7 +642,7 @@ class Shadowsocks def reloadProfile() { drawer.closeMenu(true) - val h = showProgress(getString(R.string.loading)) + val h = showProgress(R.string.loading) handler.postDelayed(new Runnable { def run() { @@ -659,7 +661,7 @@ class Shadowsocks def addProfile(profile: Profile) { drawer.closeMenu(true) - val h = showProgress(getString(R.string.loading)) + val h = showProgress(R.string.loading) handler.postDelayed(new Runnable { def run() { @@ -678,7 +680,7 @@ class Shadowsocks def addProfile(id: Int) { drawer.closeMenu(true) - val h = showProgress(getString(R.string.loading)) + val h = showProgress(R.string.loading) handler.postDelayed(new Runnable { def run() { @@ -696,7 +698,7 @@ class Shadowsocks def updateProfile(id: Int) { drawer.closeMenu(true) - val h = showProgress(getString(R.string.loading)) + val h = showProgress(R.string.loading) handler.postDelayed(new Runnable { def run() { @@ -933,15 +935,11 @@ class Shadowsocks } private def recovery() { - val h = showProgress(getString(R.string.recovering)) + serviceStop() + val h = showProgress(R.string.recovering) spawn { reset() - handler.post(new Runnable { - override def run() { - serviceStop - h.sendEmptyMessage(0) - } - }) + h.sendEmptyMessage(0) } } @@ -971,7 +969,7 @@ class Shadowsocks } private def flushDnsCache() { - val h = showProgress(getString(R.string.flushing)) + val h = showProgress(R.string.flushing) spawn { Utils.toggleAirplaneMode(getBaseContext) h.sendEmptyMessage(0) @@ -1089,6 +1087,7 @@ class Shadowsocks if (progressDialog != null) { progressDialog.dismiss() progressDialog = null + progressTag = -1 } } @@ -1102,14 +1101,19 @@ class Shadowsocks if (progressDialog == null) { progressDialog = ProgressDialog .show(Shadowsocks.this, "", getString(R.string.connecting), true, true) + progressTag = R.string.connecting } setPreferenceEnabled(enabled = false) case State.CONNECTED => - clearDialog() + if (progressTag == R.string.connecting) { + clearDialog() + } changeSwitch(checked = true) setPreferenceEnabled(enabled = false) case State.STOPPED => - clearDialog() + if (progressTag == R.string.stopping) { + clearDialog() + } changeSwitch(checked = false) if (m != null) { new SnackBar.Builder(Shadowsocks.this) @@ -1124,6 +1128,7 @@ class Shadowsocks if (progressDialog == null) { progressDialog = ProgressDialog .show(Shadowsocks.this, "", getString(R.string.stopping), true, true) + progressTag = R.string.stopping } } }