Flesh out About page a bit more

This commit is contained in:
Torsten Grote
2025-05-21 14:29:54 -03:00
parent 5d30885f9c
commit 490df42ea2
23 changed files with 104 additions and 256 deletions

View File

@@ -39,6 +39,7 @@ android {
}
buildFeatures {
compose = true
buildConfig = true
}
packaging {
resources {

View File

@@ -4,9 +4,8 @@
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Fdroidclient">
<activity

View File

@@ -37,24 +37,24 @@ class MainViewModel @Inject constructor(
private val scope = CoroutineScope(viewModelScope.coroutineContext + AndroidUiDispatcher.Main)
val categories = listOf(
Pair(app.getString(R.string.category_Internet), R.drawable.category_internet),
Pair(app.getString(R.string.category_Games), R.drawable.category_games),
Pair(app.getString(R.string.category_Navigation), R.drawable.category_navigation),
Pair(app.getString(R.string.category_Multimedia), R.drawable.category_money),
Pair(app.getString(R.string.category_Security), R.drawable.category_security),
Pair(app.getString(R.string.category_Reading), R.drawable.category_reading),
Pair(app.getString(R.string.category_Time), R.drawable.category_theming),
Pair(app.getString(R.string.category_Money), R.drawable.category_money),
Pair(app.getString(R.string.category_Theming), R.drawable.category_theming),
Pair(app.getString(R.string.category_Connectivity), R.drawable.category_connectivity),
Pair(app.getString(R.string.category_Phone_SMS), R.drawable.category_system),
Pair(app.getString(R.string.category_Internet), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Games), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Navigation), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Multimedia), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Security), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Reading), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Time), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Money), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Theming), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Connectivity), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Phone_SMS), R.drawable.ic_launcher),
Pair(
app.getString(R.string.category_Science_Education),
R.drawable.category_science_education
R.drawable.ic_launcher
),
Pair(app.getString(R.string.category_Sports_Health), R.drawable.category_security),
Pair(app.getString(R.string.category_System), R.drawable.category_system),
Pair(app.getString(R.string.category_Writing), R.drawable.category_writing),
Pair(app.getString(R.string.category_Sports_Health), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_System), R.drawable.ic_launcher),
Pair(app.getString(R.string.category_Writing), R.drawable.ic_launcher),
)
val initialApps = buildList {

View File

@@ -1,20 +1,37 @@
package org.fdroid.basic.ui.main
import android.content.res.Configuration
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.windowInsetsBottomHeight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
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
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.compose.ui.unit.dp
import org.fdroid.basic.BuildConfig.VERSION_NAME
import org.fdroid.basic.R
import org.fdroid.fdroid.ui.theme.FDroidContent
@@ -35,20 +52,76 @@ fun About(onBackClicked: () -> Unit) {
)
},
) { paddingValues ->
Text(
stringResource(R.string.about_title_full),
val scrollableState = rememberScrollState()
Column(
modifier = Modifier
.padding(paddingValues)
.padding(16.dp)
.padding(horizontal = 16.dp)
.padding(top = paddingValues.calculateTopPadding())
.verticalScroll(scrollableState)
) {
AboutHeader(modifier = Modifier.padding(top = 32.dp))
Text(
text = "F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. This app makes it easy to browse, install, and keep track of updates on your device.",
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(top = 24.dp),
)
Column(modifier = Modifier.padding(top = 24.dp, bottom = 16.dp)) {
val uriHandler = LocalUriHandler.current
Text(
text = "Links",
fontWeight = FontWeight.Bold,
style = MaterialTheme.typography.bodyLarge,
)
Text(
text = "Homepage",
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.secondary,
modifier = Modifier
.padding(top = 4.dp)
.clickable { uriHandler.openUri("https://f-droid.org") }
)
Text(
text = "Gitlab",
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.secondary,
modifier = Modifier
.padding(top = 4.dp)
.clickable { uriHandler.openUri("https://gitlab.com/fdroid") }
)
}
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.systemBars))
}
}
}
@Composable
fun AboutHeader(modifier: Modifier = Modifier) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.drawable.ic_launcher),
contentDescription = null, // decorative element
)
Text(
text = "${stringResource(R.string.about_version)} $VERSION_NAME",
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier
.padding(top = 16.dp)
.alpha(0.75f)
)
}
}
@Preview
@PreviewScreenSizes
@Preview(showBackground = true)
@Composable
fun AboutPreview() {
FDroidContent {
About { }
About {}
}
}
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AboutPreviewDark() = AboutPreview()

View File

@@ -107,12 +107,12 @@ fun CategoryBox(category: Pair<String, Int>, onCategoryTap: (String) -> Unit) {
@Composable
fun CategoryCarouselPreview() {
val categories = listOf(
Pair(stringResource(R.string.category_Time), R.drawable.category_theming),
Pair(stringResource(R.string.category_Games), R.drawable.category_games),
Pair(stringResource(R.string.category_Money), R.drawable.category_money),
Pair(stringResource(R.string.category_Reading), R.drawable.category_reading),
Pair(stringResource(R.string.category_Theming), R.drawable.category_theming),
Pair(stringResource(R.string.category_Connectivity), R.drawable.category_connectivity),
Pair(stringResource(R.string.category_Time), R.drawable.ic_launcher),
Pair(stringResource(R.string.category_Games), R.drawable.ic_launcher),
Pair(stringResource(R.string.category_Money), R.drawable.ic_launcher),
Pair(stringResource(R.string.category_Reading), R.drawable.ic_launcher),
Pair(stringResource(R.string.category_Theming), R.drawable.ic_launcher),
Pair(stringResource(R.string.category_Connectivity), R.drawable.ic_launcher),
)
FDroidContent {
CategoryCarousel(categories, onTitleTap = {}) {}

View File

@@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_connectivity.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_development.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_games.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_graphics.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_internet.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_money.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_navigation.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_reading.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_science_education.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_security.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_system.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_theming.png

View File

@@ -1 +0,0 @@
../../../../../app//src/main/res/drawable/category_writing.png

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>