package moe.yuuta.workmode.suspend import android.content.Intent import android.service.quicksettings.Tile import android.service.quicksettings.TileService import com.elvishew.xlog.XLog import moe.yuuta.workmode.suspend.data.Status import moe.yuuta.workmode.suspend.data.SuspendedStorage import java.util.concurrent.TimeUnit class SuspendTile : TileService() { private val logger = XLog.tag("SuspendTile").build() override fun onClick() { val storage = SuspendedStorage.get(this) storage.setStatus( when (storage.getStatus()) { Status.ON -> Status.OFF Status.OFF -> Status.ON } ) sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) try { AsyncSuspender(this).applyFromSettings() .get(10, TimeUnit.SECONDS) } catch (e: Throwable) { logger.e("Cannot trigger", e) } } override fun onStartListening() { val tile = qsTile tile.state = when (SuspendedStorage.get(this@SuspendTile).getStatus()) { Status.ON -> Tile.STATE_ACTIVE Status.OFF -> Tile.STATE_INACTIVE } tile.updateTile() } }