From f9e504b092249bd2ff520026e616ba1d693867ae Mon Sep 17 00:00:00 2001 From: Mygod Date: Sat, 24 Dec 2016 13:38:13 +0800 Subject: [PATCH] Refine profile name display --- .../scala/com/github/shadowsocks/BaseService.scala | 2 +- .../com/github/shadowsocks/ProfilesFragment.scala | 12 +++--------- .../github/shadowsocks/ShadowsocksNatService.scala | 2 +- .../github/shadowsocks/ShadowsocksVpnService.scala | 4 ++-- .../com/github/shadowsocks/TaskerActivity.scala | 2 +- .../com/github/shadowsocks/database/Profile.scala | 4 ++++ .../scala/com/github/shadowsocks/utils/Parser.scala | 3 +-- .../github/shadowsocks/utils/TaskerSettings.scala | 2 +- 8 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/BaseService.scala b/src/main/scala/com/github/shadowsocks/BaseService.scala index 5c8c8809..4345bee3 100644 --- a/src/main/scala/com/github/shadowsocks/BaseService.scala +++ b/src/main/scala/com/github/shadowsocks/BaseService.scala @@ -78,7 +78,7 @@ trait BaseService extends Service { state } - override def getProfileName: String = if (profile == null) null else profile.name + override def getProfileName: String = if (profile == null) null else profile.getName override def unregisterCallback(cb: IShadowsocksServiceCallback) { if (cb != null && callbacks.unregister(cb)) { diff --git a/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala b/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala index 185dd42f..2d8432e9 100644 --- a/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala +++ b/src/main/scala/com/github/shadowsocks/ProfilesFragment.scala @@ -23,7 +23,7 @@ package com.github.shadowsocks import java.util.GregorianCalendar import android.content._ -import android.os.{Build, Bundle, Handler, UserManager} +import android.os.{Bundle, Handler} import android.support.v4.content.LocalBroadcastManager import android.support.v7.widget.RecyclerView.ViewHolder import android.support.v7.widget.Toolbar.OnMenuItemClickListener @@ -69,12 +69,8 @@ final class ProfilesFragment extends ToolbarFragment with OnMenuItemClickListene def updateText(txTotal: Long = 0, rxTotal: Long = 0) { val tx = item.tx + txTotal val rx = item.rx + rxTotal - var title = if (isDemoMode) "Profile #" + item.id else item.name - var address = (if (item.host.contains(":")) "[%s]:%d" else "%s:%d").format(item.host, item.remotePort) - if ((title == null || title.isEmpty) && address.nonEmpty) { - title = address - address = "" - } + val title = item.getName + val address = if (item.nameIsEmpty) "" else item.formattedAddress val traffic = getString(R.string.stat_profiles, TrafficMonitor.formatTraffic(tx), TrafficMonitor.formatTraffic(rx)) @@ -214,8 +210,6 @@ final class ProfilesFragment extends ToolbarFragment with OnMenuItemClickListene private var undoManager: UndoSnackbarManager[Profile] = _ private lazy val clipboard = getActivity.getSystemService(Context.CLIPBOARD_SERVICE).asInstanceOf[ClipboardManager] - private lazy val isDemoMode = Build.VERSION.SDK_INT >= 25 && - getActivity.getSystemService(classOf[UserManager]).isDemoUser private def startConfig(id: Int) = startActivity(new Intent(getActivity, classOf[ProfileConfigActivity]) .putExtra(Action.EXTRA_PROFILE_ID, id)) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 3de4ebf5..dc554c00 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -315,7 +315,7 @@ class ShadowsocksNatService extends BaseService { AclSyncJob.schedule(profile.route) changeState(State.CONNECTED) - notification = new ShadowsocksNotification(this, profile.name, true) + notification = new ShadowsocksNotification(this, profile.getName, true) } override def stopRunner(stopService: Boolean, msg: String = null) { diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index d14e1236..db3b65fd 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -148,7 +148,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { if (profile.route != Route.ALL) AclSyncJob.schedule(profile.route) - notification = new ShadowsocksNotification(this, profile.name) + notification = new ShadowsocksNotification(this, profile.getName) } /** Called when the activity is first created. */ @@ -318,7 +318,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { val builder = new Builder() builder - .setSession(profile.name) + .setSession(profile.getName) .setMtu(VPN_MTU) .addAddress(PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "1"), 24) diff --git a/src/main/scala/com/github/shadowsocks/TaskerActivity.scala b/src/main/scala/com/github/shadowsocks/TaskerActivity.scala index 9ad35dc4..c976287c 100644 --- a/src/main/scala/com/github/shadowsocks/TaskerActivity.scala +++ b/src/main/scala/com/github/shadowsocks/TaskerActivity.scala @@ -52,7 +52,7 @@ class TaskerActivity extends AppCompatActivity { } def bind(item: Profile) { this.item = item - text.setText(item.name) + text.setText(item.getName) text.setChecked(taskerOption.profileId == item.id) } diff --git a/src/main/scala/com/github/shadowsocks/database/Profile.scala b/src/main/scala/com/github/shadowsocks/database/Profile.scala index 3cc206b1..6fd3ee06 100644 --- a/src/main/scala/com/github/shadowsocks/database/Profile.scala +++ b/src/main/scala/com/github/shadowsocks/database/Profile.scala @@ -97,6 +97,10 @@ class Profile { @DatabaseField var kcpcli: String = "--crypt none --mode normal --mtu 1200 --nocomp --dscp 46 --parityshard 0" + def formattedAddress: String = (if (host.contains(":")) "[%s]:%d" else "%s:%d").format(host, remotePort) + def nameIsEmpty: Boolean = name == null || name.isEmpty + def getName: String = if (nameIsEmpty) formattedAddress else name + override def toString: String = "ss://" + Base64.encodeToString("%s%s:%s@%s:%d".formatLocal(Locale.ENGLISH, method, if (auth) "-auth" else "", password, host, remotePort).getBytes, Base64.NO_PADDING | Base64.NO_WRAP) + '#' + URLEncoder.encode(name, "utf-8") diff --git a/src/main/scala/com/github/shadowsocks/utils/Parser.scala b/src/main/scala/com/github/shadowsocks/utils/Parser.scala index 3b28e230..a895b478 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Parser.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Parser.scala @@ -38,8 +38,7 @@ object Parser { profile.method = ss.group(2).toLowerCase if (ss.group(3) != null) profile.auth = true profile.password = ss.group(4) - profile.name = ss.group(5) - profile.host = profile.name + profile.host = ss.group(5) profile.remotePort = ss.group(6).toInt if (m.group(2) != null) profile.name = URLDecoder.decode(m.group(3), "utf-8") profile diff --git a/src/main/scala/com/github/shadowsocks/utils/TaskerSettings.scala b/src/main/scala/com/github/shadowsocks/utils/TaskerSettings.scala index cfeba747..9a788236 100644 --- a/src/main/scala/com/github/shadowsocks/utils/TaskerSettings.scala +++ b/src/main/scala/com/github/shadowsocks/utils/TaskerSettings.scala @@ -46,7 +46,7 @@ class TaskerSettings(bundle: Bundle) { if (profileId >= 0) bundle.putInt(KEY_PROFILE_ID, profileId) new Intent().putExtra(ApiIntent.EXTRA_BUNDLE, bundle).putExtra(ApiIntent.EXTRA_STRING_BLURB, app.profileManager.getProfile(profileId) match { - case Some(p) => context.getString(if (switchOn) R.string.start_service else R.string.stop_service, p.name) + case Some(p) => context.getString(if (switchOn) R.string.start_service else R.string.stop_service, p.getName) case None => context.getString(if (switchOn) R.string.start_service_default else R.string.stop) }) }