aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt
blob: 75b6ce4983f7d0c1c5d7ec9e0a685e7eedd78325 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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()
    }
}