@@ -2,7 +2,7 @@
|
||||
|
||||
<resources>
|
||||
|
||||
<color name="material_green_700">#388E3C</color>
|
||||
<color name="material_green_a700">#64DD17</color>
|
||||
<color name="material_blue_grey_300">#90A4AE</color>
|
||||
<color name="material_blue_grey_500">#607D8B</color>
|
||||
<color name="material_blue_grey_700">#455A64</color>
|
||||
|
||||
@@ -54,6 +54,7 @@ import android.view._
|
||||
import android.widget.AbsListView.OnScrollListener
|
||||
import android.widget.CompoundButton.OnCheckedChangeListener
|
||||
import android.widget._
|
||||
import android.Manifest.permission
|
||||
import com.github.shadowsocks.utils.{Key, Utils}
|
||||
|
||||
import scala.collection.JavaConversions._
|
||||
@@ -66,8 +67,10 @@ object AppManager {
|
||||
|
||||
var cachedApps: Array[ProxiedApp] = _
|
||||
private def getApps(pm: PackageManager) = {
|
||||
if (cachedApps == null) cachedApps = pm.getInstalledApplications(0)
|
||||
.map(a => new ProxiedApp(pm.getApplicationLabel(a).toString, a.packageName, a.loadIcon(pm))).toArray
|
||||
if (cachedApps == null) cachedApps = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS)
|
||||
.filter(p => p.requestedPermissions != null && p.requestedPermissions.contains(permission.INTERNET))
|
||||
.map(p => new ProxiedApp(pm.getApplicationLabel(p.applicationInfo).toString, p.packageName,
|
||||
p.applicationInfo.loadIcon(pm))).toArray
|
||||
cachedApps
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,5 +7,5 @@ import android.content.{Intent, Context, BroadcastReceiver}
|
||||
*/
|
||||
class AppManagerReceiver extends BroadcastReceiver {
|
||||
override def onReceive(context: Context, intent: Intent) = if (intent.getAction != Intent.ACTION_PACKAGE_REMOVED ||
|
||||
!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) AppManager.cachedApps = null
|
||||
!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) AppManager.synchronized(AppManager.cachedApps = null)
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ class Shadowsocks
|
||||
getFragmentManager.findFragmentById(android.R.id.content).asInstanceOf[ShadowsocksSettings]
|
||||
private var adView: AdView = _
|
||||
private lazy val greyTint = ContextCompat.getColorStateList(this, R.color.material_blue_grey_700)
|
||||
private lazy val greenTint = ContextCompat.getColorStateList(this, R.color.material_green_700)
|
||||
private lazy val greenTint = ContextCompat.getColorStateList(this, R.color.material_green_a700)
|
||||
|
||||
var handler = new Handler()
|
||||
|
||||
@@ -450,26 +450,28 @@ class Shadowsocks
|
||||
bgService.getState match {
|
||||
case State.CONNECTING =>
|
||||
fab.setBackgroundTintList(greyTint)
|
||||
changeSwitch(checked = true)
|
||||
serviceStarted = false
|
||||
fab.setImageResource(R.drawable.ic_cloud_queue)
|
||||
setPreferenceEnabled(false)
|
||||
fabProgressCircle.show()
|
||||
case State.CONNECTED =>
|
||||
fab.setBackgroundTintList(greenTint)
|
||||
changeSwitch(checked = true)
|
||||
serviceStarted = true
|
||||
fab.setImageResource(R.drawable.ic_cloud)
|
||||
setPreferenceEnabled(false)
|
||||
fabProgressCircle.show()
|
||||
handler.postDelayed(() => fabProgressCircle.hide(), 1000)
|
||||
fabProgressCircle.postDelayed(fabProgressCircle.hide, 100)
|
||||
case State.STOPPING =>
|
||||
fab.setBackgroundTintList(greyTint)
|
||||
changeSwitch(checked = false)
|
||||
serviceStarted = false
|
||||
fab.setImageResource(R.drawable.ic_cloud_queue)
|
||||
setPreferenceEnabled(false)
|
||||
fabProgressCircle.show()
|
||||
case _ =>
|
||||
fab.setBackgroundTintList(greyTint)
|
||||
changeSwitch(checked = false)
|
||||
serviceStarted = false
|
||||
fab.setImageResource(R.drawable.ic_cloud_off)
|
||||
setPreferenceEnabled(true)
|
||||
fabProgressCircle.show()
|
||||
handler.postDelayed(() => fabProgressCircle.hide(), 1000)
|
||||
fabProgressCircle.postDelayed(fabProgressCircle.hide, 100)
|
||||
}
|
||||
state = bgService.getState
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user