diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
index 232ea0d..47f64f5 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/search/SearchScreen.kt
@@ -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 ->
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
index b919936..bfe4803 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/settings/SettingsScreen.kt
@@ -105,6 +105,10 @@ fun SettingsScreen(
SettingsSectionSelect(
title = "Google Play",
value = "com.android.vending"
+ ),
+ SettingsSectionSelect(
+ title = "Manual Installed",
+ value = "com.android.packageinstaller"
)
)
),
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
index 8200117..9150b6d 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesScreen.kt
@@ -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,
diff --git a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesViewModel.kt b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesViewModel.kt
index 4678f05..f089f4c 100644
--- a/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesViewModel.kt
+++ b/app/src/main/java/dev/mi6e4ka/openstore/ui/screen/updates/UpdatesViewModel.kt
@@ -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(),
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index bf1c28f..d3d47af 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -48,4 +48,6 @@
Available updates: %1$d
Tap to check for updates
Exclude Google Play
+ Open settings
+ Applications checked: %1$d
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7faad18..f9b0d4f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -49,4 +49,6 @@
Доступно обновлений: %1$d
Нажмите для проверки обновлений
Исключить Google Play
+ Открыть настройки
+ Проверяется приложений: %1$d
\ No newline at end of file