Move reset functionality to drawer
This commit is contained in:
@@ -10,7 +10,4 @@
|
||||
<SwitchPreference android:key="isNAT"
|
||||
android:title="@string/nat"
|
||||
android:summary="@string/nat_summary"/>
|
||||
<Preference android:key="recovery"
|
||||
android:title="@string/recovery"
|
||||
android:summary="@string/recovery_summary"/>
|
||||
</PreferenceScreen>
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
package com.github.shadowsocks
|
||||
|
||||
import android.app.ProgressDialog
|
||||
import android.os.{Bundle, Handler, Message}
|
||||
import android.os.Bundle
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v14.preference.SwitchPreference
|
||||
import be.mygod.preference.PreferenceFragment
|
||||
import com.github.shadowsocks.ShadowsocksApplication.app
|
||||
import com.github.shadowsocks.utils.{Key, TcpFastOpen, Utils}
|
||||
import com.github.shadowsocks.utils.{Key, TcpFastOpen}
|
||||
|
||||
class GlobalConfigFragment extends PreferenceFragment {
|
||||
private var progressDialog: ProgressDialog = _
|
||||
|
||||
override def onCreatePreferences(bundle: Bundle, key: String) {
|
||||
addPreferencesFromResource(R.xml.pref_global)
|
||||
val switch = findPreference(Key.isAutoConnect).asInstanceOf[SwitchPreference]
|
||||
@@ -37,33 +33,5 @@ class GlobalConfigFragment extends PreferenceFragment {
|
||||
tfo.setEnabled(false)
|
||||
tfo.setSummary(getString(R.string.tcp_fastopen_summary_unsupported, java.lang.System.getProperty("os.version")))
|
||||
}
|
||||
|
||||
findPreference("recovery").setOnPreferenceClickListener(_ => {
|
||||
app.track("GlobalConfigFragment", "reset")
|
||||
Utils.stopSsService(getActivity)
|
||||
val h = showProgress(R.string.recovering)
|
||||
Utils.ThrowableFuture {
|
||||
app.copyAssets()
|
||||
h.sendEmptyMessage(0)
|
||||
}
|
||||
true
|
||||
})
|
||||
}
|
||||
|
||||
private def showProgress(msg: Int): Handler = {
|
||||
clearDialog()
|
||||
progressDialog = ProgressDialog.show(getActivity, "", getString(msg), true, false)
|
||||
new Handler {
|
||||
override def handleMessage(msg: Message) {
|
||||
clearDialog()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def clearDialog() {
|
||||
if (progressDialog != null && progressDialog.isShowing) {
|
||||
if (!getActivity.isDestroyed) progressDialog.dismiss()
|
||||
progressDialog = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ import java.lang.System.currentTimeMillis
|
||||
import java.net.{HttpURLConnection, URL}
|
||||
import java.util.Locale
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.{Activity, ProgressDialog}
|
||||
import android.app.backup.BackupManager
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||
import android.content._
|
||||
import android.net.{Uri, VpnService}
|
||||
import android.nfc.{NdefMessage, NfcAdapter}
|
||||
import android.os.{Build, Bundle, Handler}
|
||||
import android.os.{Build, Bundle, Handler, Message}
|
||||
import android.support.design.widget.{FloatingActionButton, Snackbar}
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.support.v7.app.AlertDialog
|
||||
@@ -57,8 +57,9 @@ object MainActivity {
|
||||
|
||||
private final val DRAWER_PROFILES = 0L
|
||||
// sticky drawer items have negative ids
|
||||
private final val DRAWER_GLOBAL_SETTINGS = -1L
|
||||
private final val DRAWER_ABOUT = -2L
|
||||
private final val DRAWER_RECOVERY = -1L
|
||||
private final val DRAWER_GLOBAL_SETTINGS = -2L
|
||||
private final val DRAWER_ABOUT = -3L
|
||||
}
|
||||
|
||||
class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawerItemClickListener
|
||||
@@ -73,6 +74,7 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe
|
||||
var currentProfile = new Profile
|
||||
var drawer: Drawer = _
|
||||
|
||||
private var progressDialog: ProgressDialog = _
|
||||
private var currentFragment: ToolbarFragment = _
|
||||
private lazy val profilesFragment = new ProfilesFragment()
|
||||
private lazy val globalSettingsFragment = new GlobalSettingsFragment()
|
||||
@@ -219,6 +221,12 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe
|
||||
.withIconTintingEnabled(true)
|
||||
)
|
||||
.addStickyDrawerItems(
|
||||
new SecondaryDrawerItem()
|
||||
.withIdentifier(DRAWER_RECOVERY)
|
||||
.withName(R.string.recovery)
|
||||
.withIcon(ContextCompat.getDrawable(this, R.drawable.ic_navigation_refresh))
|
||||
.withIconTintingEnabled(true)
|
||||
.withSelectable(false),
|
||||
new SecondaryDrawerItem()
|
||||
.withIdentifier(DRAWER_GLOBAL_SETTINGS)
|
||||
.withName(R.string.settings)
|
||||
@@ -355,6 +363,14 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe
|
||||
override def onItemClick(view: View, position: Int, drawerItem: IDrawerItem[_, _ <: ViewHolder]): Boolean = {
|
||||
drawerItem.getIdentifier match {
|
||||
case DRAWER_PROFILES => displayFragment(profilesFragment)
|
||||
case DRAWER_RECOVERY =>
|
||||
app.track("GlobalConfigFragment", "reset")
|
||||
serviceStop()
|
||||
val handler = showProgress(R.string.recovering)
|
||||
Utils.ThrowableFuture {
|
||||
app.copyAssets()
|
||||
handler.sendEmptyMessage(0)
|
||||
}
|
||||
case DRAWER_GLOBAL_SETTINGS => displayFragment(globalSettingsFragment)
|
||||
case DRAWER_ABOUT =>
|
||||
app.track(TAG, "about")
|
||||
@@ -378,6 +394,21 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe
|
||||
true // unexpected cases will throw exception
|
||||
}
|
||||
|
||||
private def showProgress(msg: Int): Handler = {
|
||||
clearDialog()
|
||||
progressDialog = ProgressDialog.show(this, "", getString(msg), true, false)
|
||||
new Handler {
|
||||
override def handleMessage(msg: Message): Unit = clearDialog()
|
||||
}
|
||||
}
|
||||
|
||||
private def clearDialog() {
|
||||
if (progressDialog != null && progressDialog.isShowing) {
|
||||
if (!isDestroyed) progressDialog.dismiss()
|
||||
progressDialog = null
|
||||
}
|
||||
}
|
||||
|
||||
private def hideCircle() {
|
||||
try {
|
||||
fabProgressCircle.hide()
|
||||
|
||||
Reference in New Issue
Block a user