Merge branch 'n' and update to API level 24

Fix #671.
This commit is contained in:
Mygod
2016-06-17 13:24:56 +08:00
4 changed files with 73 additions and 5 deletions
@@ -203,7 +203,7 @@ class AppManager extends AppCompatActivity with OnMenuItemClickListener {
this.setContentView(R.layout.layout_apps)
toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(R.string.proxied_apps)
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
toolbar.setNavigationOnClickListener((v: View) => {
val intent = getParentActivityIntent
if (intent == null) finish else navigateUpTo(intent)
@@ -0,0 +1,57 @@
package com.github.shadowsocks
import android.content.Intent
import android.graphics.drawable.Icon
import android.service.quicksettings.{Tile, TileService}
import com.github.shadowsocks.aidl.IShadowsocksServiceCallback
import com.github.shadowsocks.utils.State
import com.github.shadowsocks.ShadowsocksApplication.app
/**
* @author Mygod
*/
final class ShadowsocksTileService extends TileService with ServiceBoundContext {
private lazy val iconIdle = Icon.createWithResource(this, R.drawable.ic_start_idle).setTint(0x80ffffff)
private lazy val iconBusy = Icon.createWithResource(this, R.drawable.ic_start_busy)
private lazy val iconConnected = Icon.createWithResource(this, R.drawable.ic_start_connected)
private lazy val callback = new IShadowsocksServiceCallback.Stub {
def trafficUpdated(txRate: Long, rxRate: Long, txTotal: Long, rxTotal: Long) = ()
def stateChanged(state: Int, msg: String) {
val tile = getQsTile
state match {
case State.STOPPED =>
tile.setIcon(iconIdle)
tile.setLabel(getString(R.string.app_name))
tile.setState(Tile.STATE_INACTIVE)
case State.CONNECTED =>
tile.setIcon(iconConnected)
tile.setLabel(app.currentProfile match {
case Some(profile) => profile.name
case None => getString(R.string.app_name)
})
tile.setState(Tile.STATE_ACTIVE)
case _ =>
tile.setIcon(iconBusy)
tile.setLabel(getString(R.string.app_name))
tile.setState(Tile.STATE_UNAVAILABLE)
}
tile.updateTile
}
}
override def onServiceConnected = callback.stateChanged(bgService.getState, null)
override def onStartListening {
super.onStartListening
attachService(callback)
}
override def onStopListening {
super.onStopListening
detachService // just in case the user switches to NAT mode
}
override def onClick = if (isLocked) unlockAndRun(configure) else configure()
private def configure() = startActivityAndCollapse(new Intent(this, classOf[Shadowsocks]))
}