Experimental support for demo users
TODO: Untested code. Need to find out how to activate demo users. Fix #950 nevertheless.
This commit is contained in:
@@ -7,7 +7,7 @@ import android.content._
|
||||
import android.content.pm.PackageManager
|
||||
import android.nfc.NfcAdapter.CreateNdefMessageCallback
|
||||
import android.nfc.{NdefMessage, NdefRecord, NfcAdapter, NfcEvent}
|
||||
import android.os.{Bundle, Handler}
|
||||
import android.os.{Build, Bundle, Handler, UserManager}
|
||||
import android.provider.Settings
|
||||
import android.support.v7.app.{AlertDialog, AppCompatActivity}
|
||||
import android.support.v7.widget.RecyclerView.ViewHolder
|
||||
@@ -86,7 +86,7 @@ final class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClic
|
||||
val builder = new SpannableStringBuilder
|
||||
val tx = item.tx + txTotal
|
||||
val rx = item.rx + rxTotal
|
||||
builder.append(item.name)
|
||||
builder.append(if (isDemoMode) "Profile #" + item.id else item.name)
|
||||
if (tx != 0 || rx != 0) {
|
||||
val start = builder.length
|
||||
builder.append(getString(R.string.stat_profiles,
|
||||
@@ -186,6 +186,7 @@ final class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClic
|
||||
private var undoManager: UndoSnackbarManager[Profile] = _
|
||||
|
||||
private lazy val clipboard = getSystemService(Context.CLIPBOARD_SERVICE).asInstanceOf[ClipboardManager]
|
||||
private lazy val isDemoMode = Build.VERSION.SDK_INT >= 25 && getSystemService(classOf[UserManager]).isDemoUser
|
||||
|
||||
private var nfcAdapter : NfcAdapter = _
|
||||
private var nfcShareItem: Array[Byte] = _
|
||||
|
||||
@@ -5,7 +5,7 @@ import java.util.Locale
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||
import android.content.{Intent, SharedPreferences}
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.{Build, Bundle, UserManager}
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v14.preference.SwitchPreference
|
||||
import android.support.v7.app.AlertDialog
|
||||
@@ -41,13 +41,21 @@ object ShadowsocksSettings {
|
||||
pref.asInstanceOf[SwitchPreference].setChecked(value)
|
||||
}
|
||||
|
||||
def updatePreference(pref: Preference, name: String, profile: Profile) {
|
||||
def updatePreference(pref: Preference, name: String, profile: Profile, demo: Boolean = false) {
|
||||
name match {
|
||||
case Key.name => updateEditTextPreference(pref, profile.name)
|
||||
case Key.host => updateEditTextPreference(pref, profile.host)
|
||||
case Key.remotePort => updateNumberPickerPreference(pref, profile.remotePort)
|
||||
case Key.name =>
|
||||
updateEditTextPreference(pref, profile.name)
|
||||
pref.setSummary(if (demo) "Profile #" + profile.id else "%s")
|
||||
case Key.host =>
|
||||
updateEditTextPreference(pref, profile.host)
|
||||
pref.setSummary(if (demo) "shadowsocks.example.org" else "%s")
|
||||
case Key.remotePort =>
|
||||
updateNumberPickerPreference(pref, profile.remotePort)
|
||||
pref.setSummary(if (demo) "1337" else "%d")
|
||||
case Key.localPort => updateNumberPickerPreference(pref, profile.localPort)
|
||||
case Key.password => updateEditTextPreference(pref, profile.password)
|
||||
case Key.password =>
|
||||
updateEditTextPreference(pref, profile.password)
|
||||
pref.setSummary(if (demo) "\u2022" * 32 else "%s")
|
||||
case Key.method => updateDropDownPreference(pref, profile.method)
|
||||
case Key.route => updateDropDownPreference(pref, profile.route)
|
||||
case Key.proxyApps => updateSwitchPreference(pref, profile.proxyApps)
|
||||
@@ -248,6 +256,7 @@ class ShadowsocksSettings extends PreferenceFragment with OnSharedPreferenceChan
|
||||
var profile: Profile = _
|
||||
def setProfile(profile: Profile) {
|
||||
this.profile = profile
|
||||
for (name <- Array(PROXY_PREFS, FEATURE_PREFS).flatten) updatePreference(findPreference(name), name, profile)
|
||||
val demo = Build.VERSION.SDK_INT >= 25 && activity.getSystemService(classOf[UserManager]).isDemoUser
|
||||
for (name <- Array(PROXY_PREFS, FEATURE_PREFS).flatten) updatePreference(findPreference(name), name, profile, demo)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user