improved the About screen and added version number

This commit is contained in:
Odweta
2024-11-29 18:33:36 +01:00
parent 079872dae2
commit 87470effcd
3 changed files with 97 additions and 25 deletions
@@ -2,6 +2,7 @@ package com.odweta.solon
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -9,6 +10,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
@@ -25,6 +27,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import com.odweta.solon.ui.theme.PastelYellow
import androidx.compose.ui.res.painterResource
@@ -33,7 +36,6 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import java.time.format.TextStyle
@Composable
fun AboutScreen(modifier: Modifier = Modifier) {
@@ -51,6 +53,7 @@ fun AboutScreen(modifier: Modifier = Modifier) {
Box(
modifier = Modifier
.fillMaxWidth()
.padding(start = 5.dp)
) {
Button(
onClick = {
@@ -106,30 +109,71 @@ fun AboutScreen(modifier: Modifier = Modifier) {
.padding(10.dp)
)
Row(
modifier = Modifier
.padding(10.dp)
) {
val uriHandler = LocalUriHandler.current
HorizontalLine()
Text(
text = "Vývoj: ",
textAlign = TextAlign.Start,
color = Color.White,
fontSize = 30.sp
)
AboutTableRow(
"Vývoj",
"@Odweta",
"https://www.gitlab.com/Odweta/solon"
)
Text(
text = "@Odweta",
color = PastelYellow,
fontSize = 30.sp,
textAlign = TextAlign.End,
textDecoration = TextDecoration.Underline,
modifier = Modifier.clickable {
uriHandler.openUri("https://www.gitlab.com/Odweta/solon")
}
)
}
AboutTableRow(
"Verze aplikace",
Util.getAppVersion(LocalContext.current)?.versionName ?: "N/A"
)
}
}
}
@Composable
fun HorizontalLine(modifier: Modifier = Modifier) {
Spacer(modifier = Modifier.height(20.dp))
Spacer(modifier = Modifier
.height(2.dp)
.background(color = PastelYellow)
.fillMaxWidth(fraction = 0.8f)
)
Spacer(modifier = Modifier.height(20.dp))
}
@Composable
fun AboutTableRow(key: String, value: String, href: String = "") {
Row(
modifier = Modifier
.padding(10.dp)
.background(color = Color.Black, shape = RoundedCornerShape(roundedCornerDimen))
.fillMaxWidth()
) {
Text(
text = key,
textAlign = TextAlign.Start,
color = Color.White,
fontSize = 20.sp
)
Spacer(modifier = Modifier.weight(1f))
if (href != "") {
val uriHandler = LocalUriHandler.current
Text(
text = value,
color = PastelYellow,
fontSize = 20.sp,
textAlign = TextAlign.End,
textDecoration = TextDecoration.Underline,
modifier = Modifier.clickable {
uriHandler.openUri(href)
}
)
} else {
Text(
text = value,
color = Color.White,
fontSize = 20.sp,
textAlign = TextAlign.End
)
}
}
}
@@ -7,12 +7,14 @@ import android.animation.ArgbEvaluator
import android.animation.ValueAnimator
import android.app.ActivityManager
import android.content.Context
import android.content.pm.PackageManager
import android.content.res.ColorStateList
import android.content.res.Resources
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.os.Handler
import android.util.DisplayMetrics
import android.view.WindowManager
@@ -20,6 +22,7 @@ import android.view.animation.AnimationUtils
import android.widget.Button
import androidx.compose.ui.graphics.Color
import androidx.core.content.ContextCompat
import androidx.core.content.pm.PackageInfoCompat
import androidx.core.content.res.ResourcesCompat
import com.odweta.solon.ui.theme.PastelGreenTransparent
import com.odweta.solon.ui.theme.PastelOrangeTransparent
@@ -220,5 +223,30 @@ class Util {
return d
}*/
data class AppVersion(
val versionName: String,
val versionNumber: Long,
)
fun getAppVersion(
context: Context,
): AppVersion? {
return try {
val packageManager = context.packageManager
val packageName = context.packageName
val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0))
} else {
packageManager.getPackageInfo(packageName, 0)
}
AppVersion(
versionName = packageInfo.versionName,
versionNumber = PackageInfoCompat.getLongVersionCode(packageInfo),
)
} catch (e: Exception) {
null
}
}
}
}