From dd29d5de2f8953131864a3b04e785f386f1b14d0 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Fri, 20 Jun 2025 22:11:13 -0700 Subject: [PATCH] feat(Settings): add manager install info --- .../ui/screens/settings/SettingsModel.kt | 23 ++++++++++++-- .../ui/screens/settings/SettingsScreen.kt | 30 +++++++++++++++++++ app/src/main/res/drawable/ic_copy.xml | 9 ++++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/ic_copy.xml diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsModel.kt index fdd0db3..e6935c2 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsModel.kt @@ -4,12 +4,12 @@ import android.app.Application import androidx.compose.runtime.* import cafe.adriel.voyager.core.model.ScreenModel import cafe.adriel.voyager.core.model.screenModelScope +import com.aliucord.manager.BuildConfig import com.aliucord.manager.R import com.aliucord.manager.manager.PathManager import com.aliucord.manager.manager.PreferencesManager import com.aliucord.manager.ui.theme.Theme -import com.aliucord.manager.util.launchBlock -import com.aliucord.manager.util.showToast +import com.aliucord.manager.util.* import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -18,6 +18,8 @@ class SettingsModel( private val paths: PathManager, val preferences: PreferencesManager, ) : ScreenModel { + val installInfo = InstallInfo + var showThemeDialog by mutableStateOf(false) private set @@ -50,4 +52,21 @@ class SettingsModel( paths.clearCache() application.showToast(R.string.action_cleared_cache) } + + fun copyInstallInfo() { + application.copyToClipboard(installInfo) + application.showToast(R.string.action_copied) + } + + companion object { + @Suppress("KotlinConstantConditions") + private val InstallInfo: String = """ + Aliucord Manager + Version: ${BuildConfig.VERSION_NAME} + Version Code: ${BuildConfig.VERSION_CODE} + Git Branch: ${BuildConfig.GIT_BRANCH} + Git Commit: ${BuildConfig.GIT_COMMIT} + Git Changes: ${if (BuildConfig.GIT_LOCAL_CHANGES) "Yes" else "No"} + """.trimIndent() + } } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt index 4d98902..3c1f327 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt @@ -12,7 +12,9 @@ import androidx.compose.foundation.layout.* import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -137,6 +139,34 @@ class SettingsScreen : Screen, Parcelable { .fillMaxWidth() ) } + + SettingsHeader(stringResource(R.string.settings_header_info)) + + Row( + horizontalArrangement = Arrangement.spacedBy(12.dp), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .padding(horizontal = 36.dp, vertical = 12.dp), + ) { + Text( + text = model.installInfo, + style = MaterialTheme.typography.bodySmall.copy( + color = MaterialTheme.colorScheme.onSurface.copy(0.6f), + ), + ) + + Spacer(Modifier.weight(1f, fill = true)) + + IconButton(onClick = model::copyInstallInfo) { + Icon( + painter = painterResource(R.drawable.ic_copy), + contentDescription = stringResource(R.string.action_copy), + modifier = Modifier + .size(28.dp) + .alpha(.8f), + ) + } + } } } } diff --git a/app/src/main/res/drawable/ic_copy.xml b/app/src/main/res/drawable/ic_copy.xml new file mode 100644 index 0000000..763ad53 --- /dev/null +++ b/app/src/main/res/drawable/ic_copy.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 994a3be..5769f14 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -45,6 +45,7 @@ Advanced Appearance + Info Theme The theme to apply to this app Dynamic color