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