Skip to content

Commit ec5f7de

Browse files
committed
Added coin flip tile
1 parent 55cdfa1 commit ec5f7de

6 files changed

Lines changed: 110 additions & 0 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,25 @@
9797
<intent-filter>
9898
<action android:name="android.service.quicksettings.action.QS_TILE" />
9999
</intent-filter>
100+
<meta-data
101+
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
102+
android:value="true" />
103+
</service>
104+
105+
<!--coin flip quick settings tile service-->
106+
107+
<service
108+
android:name=".tiles.CoinFlipTileService"
109+
android:exported="true"
110+
android:icon="@drawable/ic_coin_off"
111+
android:label="@string/coin_flip_tile_label"
112+
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
113+
<intent-filter>
114+
<action android:name="android.service.quicksettings.action.QS_TILE" />
115+
</intent-filter>
116+
<meta-data
117+
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
118+
android:value="true" />
100119
</service>
101120
</application>
102121
</manifest>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.wstxda.toolkit.tiles
2+
3+
import android.graphics.drawable.Icon
4+
import android.os.Build
5+
import android.service.quicksettings.Tile
6+
import android.service.quicksettings.TileService
7+
import com.wstxda.toolkit.R
8+
import com.wstxda.toolkit.update
9+
import kotlin.random.Random
10+
11+
class CoinFlipTileService : TileService() {
12+
13+
override fun onStartListening() {
14+
setInactive()
15+
}
16+
17+
override fun onClick() {
18+
if (Random.nextBoolean()) {
19+
setHeads()
20+
} else {
21+
setTails()
22+
}
23+
}
24+
25+
private fun setHeads() {
26+
qsTile?.update {
27+
state = Tile.STATE_ACTIVE
28+
label = getString(R.string.coin_heads_label)
29+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
30+
subtitle = getString(R.string.coin_flip_tile_label)
31+
}
32+
icon = Icon.createWithResource(applicationContext, R.drawable.ic_coin_heads)
33+
}
34+
}
35+
36+
private fun setTails() {
37+
qsTile?.update {
38+
state = Tile.STATE_ACTIVE
39+
label = getString(R.string.coin_tails_label)
40+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
41+
subtitle = getString(R.string.coin_flip_tile_label)
42+
}
43+
icon = Icon.createWithResource(applicationContext, R.drawable.ic_coin_tails)
44+
}
45+
}
46+
47+
private fun setInactive() {
48+
qsTile?.update {
49+
state = Tile.STATE_INACTIVE
50+
label = getString(R.string.coin_flip_tile_label)
51+
icon = Icon.createWithResource(applicationContext, R.drawable.ic_coin_off)
52+
}
53+
}
54+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:tint="?attr/colorControlNormal"
5+
android:viewportWidth="960"
6+
android:viewportHeight="960">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M360,570Q339,570 324.5,555.5Q310,541 310,520Q310,499 324.5,484.5Q339,470 360,470Q381,470 395.5,484.5Q410,499 410,520Q410,541 395.5,555.5Q381,570 360,570ZM600,570Q579,570 564.5,555.5Q550,541 550,520Q550,499 564.5,484.5Q579,470 600,470Q621,470 635.5,484.5Q650,499 650,520Q650,541 635.5,555.5Q621,570 600,570ZM480,800Q614,800 707,707Q800,614 800,480Q800,456 797,433.5Q794,411 786,390Q765,395 744,397.5Q723,400 700,400Q609,400 528,361Q447,322 390,252Q358,330 298.5,387.5Q239,445 160,474Q160,476 160,477Q160,478 160,480Q160,614 253,707Q346,800 480,800ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM426,165Q468,235 540,277.5Q612,320 700,320Q714,320 727,318.5Q740,317 754,315Q712,245 640,202.5Q568,160 480,160Q466,160 453,161.5Q440,163 426,165ZM177,379Q228,350 266,304Q304,258 323,201Q272,230 234,276Q196,322 177,379ZM426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165Q426,165 426,165ZM323,201Q323,201 323,201Q323,201 323,201Q323,201 323,201Q323,201 323,201Z" />
10+
</vector>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:tint="?attr/colorControlNormal"
5+
android:viewportWidth="960"
6+
android:viewportHeight="960">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M444,760L514,760L514,710Q564,701 600,671Q636,641 636,582Q636,540 612,505Q588,470 516,444Q456,424 433,409Q410,394 410,368Q410,342 428.5,327Q447,312 482,312Q514,312 532,327.5Q550,343 558,366L622,340Q611,305 581.5,279Q552,253 516,250L516,200L446,200L446,250Q396,261 368,294Q340,327 340,368Q340,415 367.5,444Q395,473 454,494Q517,517 541.5,535Q566,553 566,582Q566,615 542.5,630.5Q519,646 486,646Q453,646 427.5,625.5Q402,605 390,564L324,590Q338,638 367.5,667.5Q397,697 444,708L444,760ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z" />
10+
</vector>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:tint="?attr/colorControlNormal"
5+
android:viewportWidth="960"
6+
android:viewportHeight="960">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M200,800L200,720L760,720L760,800L200,800ZM200,660L149,339Q147,339 144.5,339.5Q142,340 140,340Q115,340 97.5,322.5Q80,305 80,280Q80,255 97.5,237.5Q115,220 140,220Q165,220 182.5,237.5Q200,255 200,280Q200,287 198.5,293Q197,299 195,304L320,360L445,189Q434,181 427,168Q420,155 420,140Q420,115 437.5,97.5Q455,80 480,80Q505,80 522.5,97.5Q540,115 540,140Q540,155 533,168Q526,181 515,189L640,360L765,304Q763,299 761.5,293Q760,287 760,280Q760,255 777.5,237.5Q795,220 820,220Q845,220 862.5,237.5Q880,255 880,280Q880,305 862.5,322.5Q845,340 820,340Q818,340 815.5,339.5Q813,339 811,339L760,660L200,660ZM268,580L692,580L718,413L613,459L480,276L347,459L242,413L268,580ZM480,580L480,580L480,580L480,580L480,580L480,580L480,580Z" />
10+
</vector>

app/src/main/res/values/strings.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,11 @@
4242
<!--lock screen tile-->
4343

4444
<string name="lock_tile_label">Lock</string>
45+
46+
<!--coin flip tile-->
47+
48+
<string name="coin_flip_tile_label">Coin Flip</string>
49+
<!--tile label-->
50+
<string name="coin_heads_label">Heads</string>
51+
<string name="coin_tails_label">Tails</string>
4552
</resources>

0 commit comments

Comments
 (0)