mirror of
https://codeberg.org/mi6e4ka/openstore.git
synced 2026-07-09 15:59:50 +00:00
feat: add settings to updates
This commit is contained in:
parent
26ebdf4638
commit
ef3f34455b
6 changed files with 64 additions and 42 deletions
|
|
@ -88,15 +88,15 @@ fun SearchScreen(navController: NavController = rememberNavController()) {
|
|||
topBar = { TopAppBar(
|
||||
title = {Text(stringResource(R.string.app_name))},
|
||||
actions = {
|
||||
IconButton({navController.navigate("settings")}) {
|
||||
Icon(painterResource(R.drawable.ic_settings_24px), "settings")
|
||||
}
|
||||
IconButton(onClick = { navController.navigate("updates") }) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_update_24px),
|
||||
contentDescription = stringResource(R.string.updates_title)
|
||||
)
|
||||
}
|
||||
IconButton({navController.navigate("settings")}) {
|
||||
Icon(painterResource(R.drawable.ic_settings_24px), "settings")
|
||||
}
|
||||
}
|
||||
) },
|
||||
) { innerPadding ->
|
||||
|
|
|
|||
|
|
@ -105,6 +105,10 @@ fun SettingsScreen(
|
|||
SettingsSectionSelect(
|
||||
title = "Google Play",
|
||||
value = "com.android.vending"
|
||||
),
|
||||
SettingsSectionSelect(
|
||||
title = "Manual Installed",
|
||||
value = "com.android.packageinstaller"
|
||||
)
|
||||
)
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
package dev.mi6e4ka.openstore.ui.screen.updates
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
|
|
@ -15,6 +21,7 @@ import androidx.compose.foundation.lazy.items
|
|||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.CardDefaults
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.FilledTonalButton
|
||||
|
|
@ -35,6 +42,7 @@ import androidx.compose.runtime.remember
|
|||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
|
|
@ -121,25 +129,9 @@ fun UpdatesScreen(navController: NavController) {
|
|||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 32.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
stringResource(R.string.exclude_google_play),
|
||||
fontSize = 14.sp
|
||||
)
|
||||
Switch(
|
||||
checked = state.excludeGooglePlay,
|
||||
onCheckedChange = { viewModel.toggleExcludeGooglePlay(context) }
|
||||
)
|
||||
}
|
||||
|
||||
UpdatesBanner(navController, state.installedApps.size)
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
||||
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_check_circle_24px),
|
||||
contentDescription = null,
|
||||
|
|
@ -163,22 +155,7 @@ fun UpdatesScreen(navController: NavController) {
|
|||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 8.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
stringResource(R.string.exclude_google_play),
|
||||
fontSize = 14.sp
|
||||
)
|
||||
Switch(
|
||||
checked = state.excludeGooglePlay,
|
||||
onCheckedChange = { viewModel.toggleExcludeGooglePlay(context) }
|
||||
)
|
||||
}
|
||||
UpdatesBanner(navController, state.installedApps.size)
|
||||
}
|
||||
|
||||
item {
|
||||
|
|
@ -205,6 +182,40 @@ fun UpdatesScreen(navController: NavController) {
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun UpdatesBanner(navController: NavController, checkAppsCount: Int) {
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(0.dp)
|
||||
.height(80.dp)
|
||||
.clip(RoundedCornerShape(12.dp))
|
||||
.clickable(onClick = {
|
||||
navController.navigate("settings")
|
||||
}),
|
||||
//colors = CardDefaults.cardColors(containerColor = Color(109, 255, 30, 40))
|
||||
) {
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(16.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier
|
||||
.fillMaxHeight()
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 24.dp)
|
||||
) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_settings_24px),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(32.dp),
|
||||
)
|
||||
Column {
|
||||
Text(stringResource(R.string.updates_app_count, checkAppsCount))
|
||||
Text(stringResource(R.string.updates_change_settings))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun UpdateAppCard(
|
||||
app: AppWithUpdates,
|
||||
|
|
|
|||
|
|
@ -247,11 +247,14 @@ class UpdatesViewModel(private val apkInstaller: ApkInstaller) : ViewModel() {
|
|||
@Suppress("DEPRECATION")
|
||||
pm.getInstalledPackages(0)
|
||||
}
|
||||
|
||||
val excludeGooglePlay = _state.value.excludeGooglePlay
|
||||
|
||||
|
||||
val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
|
||||
|
||||
val allowedSources = prefs.getString("updates_sources", "")?.split(";") ?: listOf()
|
||||
val allowAllSources = prefs.getBoolean("updates_check_all", false)
|
||||
|
||||
return packages
|
||||
.filter { !isSystemApp(it) && !(excludeGooglePlay && getInstallSource(pm, it.packageName) == "com.android.vending") }
|
||||
.filter { !isSystemApp(it) && (allowAllSources || allowedSources.contains(getInstallSource(pm, it.packageName))) }
|
||||
.map { packageInfo ->
|
||||
val versionCode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
packageInfo.longVersionCode
|
||||
|
|
@ -259,7 +262,7 @@ class UpdatesViewModel(private val apkInstaller: ApkInstaller) : ViewModel() {
|
|||
@Suppress("DEPRECATION")
|
||||
packageInfo.versionCode.toLong()
|
||||
}
|
||||
|
||||
println("package "+packageInfo.packageName+" from "+getInstallSource(pm, packageInfo.packageName))
|
||||
AppUpdateRequestEntry(
|
||||
packageName = packageInfo.packageName,
|
||||
appName = pm.getApplicationLabel(packageInfo.applicationInfo!!).toString(),
|
||||
|
|
|
|||
|
|
@ -48,4 +48,6 @@
|
|||
<string name="available_updates">Available updates: %1$d</string>
|
||||
<string name="check_updates_hint">Tap to check for updates</string>
|
||||
<string name="exclude_google_play">Exclude Google Play</string>
|
||||
<string name="updates_change_settings">Open settings</string>
|
||||
<string name="updates_app_count">Applications checked: %1$d</string>
|
||||
</resources>
|
||||
|
|
@ -49,4 +49,6 @@
|
|||
<string name="available_updates">Доступно обновлений: %1$d</string>
|
||||
<string name="check_updates_hint">Нажмите для проверки обновлений</string>
|
||||
<string name="exclude_google_play">Исключить Google Play</string>
|
||||
<string name="updates_change_settings">Открыть настройки</string>
|
||||
<string name="updates_app_count">Проверяется приложений: %1$d</string>
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue