Skip to content

Commit 92569a3

Browse files
committed
feat(feature_settings): add option for setting custom activity status
for apps,media,experimental rpc
1 parent 2466763 commit 92569a3

File tree

5 files changed

+82
-10
lines changed

5 files changed

+82
-10
lines changed

common/preference/src/main/java/com/my/kizzy/preference/Prefs.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,5 @@ object Prefs {
111111
const val PALETTE_STYLE = "palette_style"
112112

113113
const val APPLY_FIELDS_FROM_LAST_RUN_RPC = "enable_setting_from_last_config"
114+
const val CUSTOM_ACTIVITY_STATUS = "custom_activity_status"
114115
}

feature_rpc_base/src/main/java/com/my/kizzy/feature_rpc_base/services/AppDetectionService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class AppDetectionService : Service() {
151151
kizzyRPC.apply {
152152
setName(AppUtils.getAppName(packageName))
153153
setStartTimestamps(System.currentTimeMillis())
154-
setStatus("dnd")
154+
setStatus(Prefs[Prefs.CUSTOM_ACTIVITY_STATUS,"dnd"])
155155
setLargeImage(RpcImage.ApplicationIcon(packageName, this@AppDetectionService))
156156
if (Prefs[Prefs.USE_RPC_BUTTONS, false]) {
157157
with(rpcButtons) {

feature_rpc_base/src/main/java/com/my/kizzy/feature_rpc_base/services/ExperimentalRpc.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212

1313
package com.my.kizzy.feature_rpc_base.services
1414

15-
import android.app.*
15+
import android.app.Notification
16+
import android.app.NotificationManager
17+
import android.app.PendingIntent
18+
import android.app.Service
1619
import android.content.Intent
1720
import android.os.IBinder
1821
import com.my.kizzy.data.get_current_data.AppTracker
@@ -74,7 +77,7 @@ class ExperimentalRpc : Service() {
7477
} else kizzyRPC.apply {
7578
setName(collectedData.name)
7679
setStartTimestamps(System.currentTimeMillis())
77-
setStatus("dnd")
80+
setStatus(Prefs[Prefs.CUSTOM_ACTIVITY_STATUS,"dnd"])
7881
setLargeImage(collectedData.largeImage)
7982
setSmallImage(collectedData.smallImage)
8083
if (Prefs[Prefs.USE_RPC_BUTTONS, false]) {

feature_rpc_base/src/main/java/com/my/kizzy/feature_rpc_base/services/MediaRpcService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class MediaRpcService : Service() {
117117
kizzyRPC.apply {
118118
setName(playingMedia.name.ifEmpty { "YouTube" })
119119
setDetails(playingMedia.details)
120-
setStatus("dnd")
120+
setStatus(Prefs[Prefs.CUSTOM_ACTIVITY_STATUS,"dnd"])
121121
if (Prefs[Prefs.USE_RPC_BUTTONS, false]) {
122122
with(rpcButtons) {
123123
setButton1(button1.takeIf { it.isNotEmpty() })

feature_settings/src/main/java/com/my/kizzy/feature_settings/rpc_settings/RpcSettings.kt

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,42 @@ import androidx.compose.foundation.layout.padding
2323
import androidx.compose.foundation.lazy.LazyColumn
2424
import androidx.compose.foundation.text.KeyboardOptions
2525
import androidx.compose.material.icons.Icons
26-
import androidx.compose.material.icons.filled.*
27-
import androidx.compose.material3.*
28-
import androidx.compose.runtime.*
26+
import androidx.compose.material.icons.filled.Cached
27+
import androidx.compose.material.icons.filled.Code
28+
import androidx.compose.material.icons.filled.DeleteForever
29+
import androidx.compose.material.icons.filled.DoNotDisturbOn
30+
import androidx.compose.material.icons.filled.HighQuality
31+
import androidx.compose.material.icons.filled.KeyboardArrowDown
32+
import androidx.compose.material.icons.filled.KeyboardArrowUp
33+
import androidx.compose.material.icons.filled.SmartButton
34+
import androidx.compose.material.icons.filled.Storage
35+
import androidx.compose.material.icons.filled.Tune
36+
import androidx.compose.material3.AlertDialog
37+
import androidx.compose.material3.DropdownMenu
38+
import androidx.compose.material3.DropdownMenuItem
39+
import androidx.compose.material3.ExperimentalMaterial3Api
40+
import androidx.compose.material3.Icon
41+
import androidx.compose.material3.LargeTopAppBar
42+
import androidx.compose.material3.MaterialTheme
43+
import androidx.compose.material3.Scaffold
44+
import androidx.compose.material3.Text
45+
import androidx.compose.material3.TextButton
46+
import androidx.compose.runtime.Composable
47+
import androidx.compose.runtime.getValue
48+
import androidx.compose.runtime.mutableStateOf
49+
import androidx.compose.runtime.remember
50+
import androidx.compose.runtime.setValue
2951
import androidx.compose.ui.Modifier
3052
import androidx.compose.ui.platform.LocalContext
3153
import androidx.compose.ui.res.stringResource
3254
import androidx.compose.ui.text.input.KeyboardType
3355
import androidx.compose.ui.unit.dp
3456
import androidx.compose.ui.window.DialogProperties
35-
import com.my.kizzy.resources.R
36-
import com.my.kizzy.preference.Prefs
3757
import com.my.kizzy.data.rpc.Constants
3858
import com.my.kizzy.data.rpc.Constants.MAX_ALLOWED_CHARACTER_LENGTH
3959
import com.my.kizzy.domain.model.rpc.RpcButtons
60+
import com.my.kizzy.preference.Prefs
61+
import com.my.kizzy.resources.R
4062
import com.my.kizzy.ui.components.BackButton
4163
import com.my.kizzy.ui.components.RpcField
4264
import com.my.kizzy.ui.components.SettingItem
@@ -59,12 +81,18 @@ fun RpcSettings(onBackPressed: () -> Boolean) {
5981
var rpcButtons by remember {
6082
mutableStateOf(Json.decodeFromString<RpcButtons>(Prefs[Prefs.RPC_BUTTONS_DATA, "{}"]))
6183
}
84+
var customActivityStatus by remember {
85+
mutableStateOf(Prefs[Prefs.CUSTOM_ACTIVITY_STATUS, "dnd"])
86+
}
6287
var customActivityType by remember {
6388
mutableStateOf(Prefs[Prefs.CUSTOM_ACTIVITY_TYPE, 0].toString())
6489
}
6590
var showActivityTypeDialog by remember {
6691
mutableStateOf(false)
6792
}
93+
var showActivityStatusDialog by remember {
94+
mutableStateOf(false)
95+
}
6896
var setLastRunRpcConfigOption by remember {
6997
mutableStateOf(Prefs[Prefs.APPLY_FIELDS_FROM_LAST_RUN_RPC, false])
7098
}
@@ -121,6 +149,16 @@ fun RpcSettings(onBackPressed: () -> Boolean) {
121149
) {
122150
showActivityTypeDialog = true
123151
}
152+
153+
}
154+
item {
155+
SettingItem(
156+
title = "Custom Activity Status",
157+
description = "Overrides the default activity status",
158+
icon = Icons.Default.DoNotDisturbOn
159+
) {
160+
showActivityStatusDialog = true
161+
}
124162
}
125163
item {
126164
PreferenceSwitch(
@@ -313,5 +351,35 @@ fun RpcSettings(onBackPressed: () -> Boolean) {
313351
}
314352
)
315353
}
354+
355+
if (showActivityStatusDialog) {
356+
AlertDialog(
357+
onDismissRequest = {
358+
showActivityStatusDialog = false
359+
},
360+
confirmButton = {},
361+
text = {
362+
val statusMap = mapOf(
363+
"Online" to "online",
364+
"AFK" to "idle",
365+
"Do Not Disturb" to "dnd",
366+
"Offline" to "offline",
367+
"Invisible and shown as offline" to "invisible"
368+
)
369+
Column {
370+
statusMap.forEach { (key, value) ->
371+
SingleChoiceItem(
372+
text = key,
373+
selected = value == customActivityStatus
374+
) {
375+
customActivityStatus = value
376+
Prefs[Prefs.CUSTOM_ACTIVITY_STATUS] = value
377+
showActivityStatusDialog = false
378+
}
379+
}
380+
}
381+
}
382+
)
383+
}
316384
}
317-
}
385+
}

0 commit comments

Comments
 (0)