diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 00000000..0c0c3383
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 217e5c51..f8467b45 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 00000000..f8051a6f
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 25634594..8cecff3a 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -31,6 +31,7 @@ android {
buildFeatures {
viewBinding = true
dataBinding = true
+ buildConfig = true
}
lint {
disable += "MissingTranslation"
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ActivityCommonModule.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ActivityCommonModule.kt
index 5835b504..75bf4189 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ActivityCommonModule.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ActivityCommonModule.kt
@@ -11,6 +11,7 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.scopes.ActivityScoped
+import sk.styk.martin.apkanalyzer.core.common.coroutines.DispatcherProvider
import sk.styk.martin.apkanalyzer.manager.analytics.AnalyticsTracker
import sk.styk.martin.apkanalyzer.manager.analytics.FragmentScreenTracker
import sk.styk.martin.apkanalyzer.manager.navigationdrawer.ForegroundFragmentWatcher
@@ -18,8 +19,6 @@ import sk.styk.martin.apkanalyzer.manager.permission.PermissionManager
import sk.styk.martin.apkanalyzer.manager.permission.PermissionsManagerImpl
import sk.styk.martin.apkanalyzer.manager.promo.UserReviewManager
import sk.styk.martin.apkanalyzer.manager.resources.ActivityColorThemeManager
-import sk.styk.martin.apkanalyzer.manager.resources.ColorThemeManager
-import sk.styk.martin.apkanalyzer.core.common.coroutines.DispatcherProvider
@InstallIn(ActivityComponent::class)
@Module
@@ -51,14 +50,14 @@ class ActivityCommonModule {
@Provides
@ActivityScoped
- fun provideColorThemeManager(activity: AppCompatActivity, applicationColorThemeManager: ColorThemeManager): ActivityColorThemeManager {
+ fun provideColorThemeManager(activity: AppCompatActivity): ActivityColorThemeManager {
val activityColorThemeManager: ActivityColorThemeManager =
ViewModelProvider(
activity,
object : ViewModelProvider.Factory {
override fun create(modelClass: Class): T {
@Suppress("UNCHECKED_CAST")
- return ActivityColorThemeManager(applicationColorThemeManager) as T
+ return ActivityColorThemeManager() as T
}
},
)[ActivityColorThemeManager::class.java]
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ApplicationModule.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ApplicationModule.kt
index d281f4f7..c43f0ff2 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ApplicationModule.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/dependencyinjection/ApplicationModule.kt
@@ -5,7 +5,6 @@ import android.app.NotificationManager
import android.content.ContentResolver
import android.content.Context
import android.content.SharedPreferences
-import android.content.pm.PackageManager
import androidx.preference.PreferenceManager
import com.google.android.play.core.review.ReviewManager
import com.google.android.play.core.review.ReviewManagerFactory
@@ -15,8 +14,6 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
-import sk.styk.martin.apkanalyzer.manager.resources.ColorThemeManager
-import sk.styk.martin.apkanalyzer.manager.resources.ColorThemeManagerImpl
import javax.inject.Singleton
@InstallIn(SingletonComponent::class)
@@ -35,9 +32,6 @@ class ApplicationModule {
fun provideNotificationManager(@ApplicationContext context: Context): NotificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- @Provides
- fun provideColorThemeManagerImpl(colorThemeManagerImpl: ColorThemeManagerImpl): ColorThemeManager = colorThemeManagerImpl
-
@Provides
fun provideFirebaseAnalytics(@ApplicationContext context: Context): FirebaseAnalytics = FirebaseAnalytics.getInstance(context)
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/PersistenceManager.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/PersistenceManager.kt
index 974169e0..41fb984f 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/PersistenceManager.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/PersistenceManager.kt
@@ -10,7 +10,6 @@ private const val APP_START_NUMBER = "app_start_number"
class PersistenceManager @Inject constructor(
private val sharedPreferences: SharedPreferences,
) {
-
var isOnboardingRequired: Boolean
get() = sharedPreferences.getBoolean(FIRST_APP_START, true)
set(value) = sharedPreferences.edit().putBoolean(FIRST_APP_START, value).apply()
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/SettingsManager.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/SettingsManager.kt
index 54e3a467..e9492e4e 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/SettingsManager.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/persistence/SettingsManager.kt
@@ -3,7 +3,7 @@ package sk.styk.martin.apkanalyzer.manager.persistence
import android.content.SharedPreferences
import javax.inject.Inject
-private const val DAY_NIGHT_KEY = "dayNightPref"
+const val DAY_NIGHT_KEY = "dayNightPref"
class SettingsManager @Inject constructor(
private val sharedPreferences: SharedPreferences,
@@ -17,7 +17,7 @@ class SettingsManager @Inject constructor(
fun persist() = persisted
companion object {
- fun from(persisted: String) = values()
+ fun from(persisted: String) = entries
.firstOrNull { it.persisted == persisted }
?: DEFAULT
}
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ActivityColorThemeManager.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ActivityColorThemeManager.kt
index c314981b..d323b4c2 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ActivityColorThemeManager.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ActivityColorThemeManager.kt
@@ -6,7 +6,7 @@ import androidx.lifecycle.ViewModel
import java.lang.ref.WeakReference
import javax.inject.Inject
-class ActivityColorThemeManager @Inject constructor(private val colorThemeManager: ColorThemeManager) : ViewModel(), ColorThemeManager by colorThemeManager {
+class ActivityColorThemeManager @Inject constructor() : ViewModel() {
private var activity: WeakReference? = null
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManager.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManager.kt
index 5bff65d6..70fb0f29 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManager.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManager.kt
@@ -1,6 +1,19 @@
package sk.styk.martin.apkanalyzer.manager.resources
-interface ColorThemeManager {
+import androidx.appcompat.app.AppCompatDelegate
+import sk.styk.martin.apkanalyzer.manager.persistence.SettingsManager
+import javax.inject.Inject
+import javax.inject.Singleton
- fun setTheme()
+@Singleton
+class ColorThemeManager @Inject constructor(
+ private val settingsManager: SettingsManager,
+) {
+ fun setTheme() {
+ when (settingsManager.colorScheme) {
+ SettingsManager.ColorScheme.LIGHT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
+ SettingsManager.ColorScheme.DARK -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
+ SettingsManager.ColorScheme.DEFAULT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
+ }
+ }
}
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManagerImpl.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManagerImpl.kt
deleted file mode 100644
index a127f0da..00000000
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/manager/resources/ColorThemeManagerImpl.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package sk.styk.martin.apkanalyzer.manager.resources
-
-import androidx.appcompat.app.AppCompatDelegate
-import sk.styk.martin.apkanalyzer.manager.persistence.SettingsManager
-import javax.inject.Inject
-import javax.inject.Singleton
-
-@Singleton
-class ColorThemeManagerImpl @Inject constructor(private val settingsManager: SettingsManager) : ColorThemeManager {
-
- override fun setTheme() = when (settingsManager.colorScheme) {
- SettingsManager.ColorScheme.LIGHT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
- SettingsManager.ColorScheme.DARK -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
- SettingsManager.ColorScheme.DEFAULT -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
- }
-}
diff --git a/app/src/main/java/sk/styk/martin/apkanalyzer/ui/settings/MainSettingsFragment.kt b/app/src/main/java/sk/styk/martin/apkanalyzer/ui/settings/MainSettingsFragment.kt
index f918647a..f74508a0 100644
--- a/app/src/main/java/sk/styk/martin/apkanalyzer/ui/settings/MainSettingsFragment.kt
+++ b/app/src/main/java/sk/styk/martin/apkanalyzer/ui/settings/MainSettingsFragment.kt
@@ -2,15 +2,21 @@ package sk.styk.martin.apkanalyzer.ui.settings
import android.content.SharedPreferences
import android.os.Bundle
+import androidx.preference.ListPreference
import androidx.preference.PreferenceFragmentCompat
import dagger.hilt.android.AndroidEntryPoint
import sk.styk.martin.apkanalyzer.R
+import sk.styk.martin.apkanalyzer.manager.persistence.DAY_NIGHT_KEY
+import sk.styk.martin.apkanalyzer.manager.persistence.SettingsManager
import sk.styk.martin.apkanalyzer.manager.resources.ColorThemeManager
import javax.inject.Inject
@AndroidEntryPoint
class MainSettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener {
+ @Inject
+ lateinit var settingsManager: SettingsManager
+
@Inject
lateinit var colorThemeManager: ColorThemeManager
@@ -21,6 +27,7 @@ class MainSettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSha
override fun onStart() {
super.onStart()
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
+ (findPreference(DAY_NIGHT_KEY) as? ListPreference)?.setDefaultValue(settingsManager.colorScheme.persist())
}
override fun onStop() {
@@ -28,7 +35,7 @@ class MainSettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSha
super.onStop()
}
- override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
+ override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
colorThemeManager.setTheme()
}
}
diff --git a/app/src/main/res/layout/list_item_application.xml b/app/src/main/res/layout/list_item_application.xml
index ad952394..91063c02 100644
--- a/app/src/main/res/layout/list_item_application.xml
+++ b/app/src/main/res/layout/list_item_application.xml
@@ -15,6 +15,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:colorBackground"
+ android:gravity="center_vertical"
android:clickable="true"
android:focusable="true"
android:foreground="?android:selectableItemBackground"
diff --git a/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/AndroidSdk.kt b/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/AndroidSdk.kt
index 21999d21..82ee0c7f 100644
--- a/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/AndroidSdk.kt
+++ b/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/AndroidSdk.kt
@@ -1,4 +1,4 @@
package sk.styk.martin.apkanalyzer
-const val TargetSdk = 33
+const val TargetSdk = 34
const val MinSdk = 21
\ No newline at end of file
diff --git a/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/Kotlin.kt b/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/Kotlin.kt
index 8eedd673..c21a2216 100644
--- a/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/Kotlin.kt
+++ b/build-logic/convention/src/main/kotlin/sk/styk/martin/apkanalyzer/Kotlin.kt
@@ -8,7 +8,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
internal fun Project.configureKotlin(
- commonExtension: CommonExtension<*, *, *, *>
+ commonExtension: CommonExtension<*, *, *, *, *>,
) {
commonExtension.compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
diff --git a/gradle.properties b/gradle.properties
index 7395219a..2610e15f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,6 +19,5 @@
org.gradle.jvmargs=-Xmx2g
android.useAndroidX=true
android.enableJetifier=true
-android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 02b41ecd..c3472e2d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,6 +1,6 @@
[versions]
-kotlin = "1.8.21"
-gradle-plugin = "8.0.2"
+kotlin = "1.9.10"
+gradle-plugin = "8.2.0"
hilt = "2.46.1"
lifecycle = "2.6.1"
coroutines = "1.7.1"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 28a51c4a..21bba0d4 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Mon Apr 17 20:31:51 CEST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME