From 236b7545595579df43ac104207bda7eee74b87b4 Mon Sep 17 00:00:00 2001 From: lynxnb Date: Thu, 9 Mar 2023 18:41:32 +0100 Subject: [PATCH] Implement Material You theming support Material You is disabled by default, it can be toggled in settings. --- app/src/main/java/emu/skyline/SkylineApplication.kt | 5 +++++ app/src/main/java/emu/skyline/settings/AppSettings.kt | 1 + .../java/emu/skyline/settings/GlobalSettingsFragment.kt | 9 +++++++++ app/src/main/res/values/strings.xml | 3 +++ app/src/main/res/xml/app_preferences.xml | 6 ++++++ 5 files changed, 24 insertions(+) diff --git a/app/src/main/java/emu/skyline/SkylineApplication.kt b/app/src/main/java/emu/skyline/SkylineApplication.kt index bbc26ef1..0814a12e 100644 --- a/app/src/main/java/emu/skyline/SkylineApplication.kt +++ b/app/src/main/java/emu/skyline/SkylineApplication.kt @@ -7,6 +7,8 @@ package emu.skyline import android.app.Application import android.content.Context +import com.google.android.material.color.DynamicColors +import com.google.android.material.color.DynamicColorsOptions import dagger.hilt.android.HiltAndroidApp import emu.skyline.di.getSettings import java.io.File @@ -39,5 +41,8 @@ class SkylineApplication : Application() { val publicAppFilesPath = applicationContext.getPublicFilesDir().canonicalPath File("$publicAppFilesPath/logs/").mkdirs() initializeLog("$publicAppFilesPath/", getSettings().logLevel) + + val dynamicColorsOptions = DynamicColorsOptions.Builder().setPrecondition { _, _ -> getSettings().useMaterialYou }.build() + DynamicColors.applyToActivitiesIfAvailable(this, dynamicColorsOptions) } } diff --git a/app/src/main/java/emu/skyline/settings/AppSettings.kt b/app/src/main/java/emu/skyline/settings/AppSettings.kt index 33466ef1..5a85035a 100644 --- a/app/src/main/java/emu/skyline/settings/AppSettings.kt +++ b/app/src/main/java/emu/skyline/settings/AppSettings.kt @@ -21,6 +21,7 @@ class AppSettings @Inject constructor(@ApplicationContext private val context : // Appearance var appTheme by sharedPreferences(context, 2) + var useMaterialYou by sharedPreferences(context, false) var layoutType by sharedPreferences(context, 1) var sortAppsBy by sharedPreferences(context, 0) var groupByFormat by sharedPreferences(context, true) diff --git a/app/src/main/java/emu/skyline/settings/GlobalSettingsFragment.kt b/app/src/main/java/emu/skyline/settings/GlobalSettingsFragment.kt index 20f1bf45..b78e6952 100644 --- a/app/src/main/java/emu/skyline/settings/GlobalSettingsFragment.kt +++ b/app/src/main/java/emu/skyline/settings/GlobalSettingsFragment.kt @@ -5,6 +5,7 @@ package emu.skyline.settings +import android.content.Intent import android.os.Bundle import android.view.View import androidx.preference.Preference @@ -12,6 +13,7 @@ import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat import androidx.preference.TwoStatePreference import emu.skyline.BuildConfig +import emu.skyline.MainActivity import emu.skyline.R import emu.skyline.utils.GpuDriverHelper import emu.skyline.utils.WindowInsetsHelper @@ -35,6 +37,13 @@ class GlobalSettingsFragment : PreferenceFragmentCompat() { addPreferencesFromResource(R.xml.input_preferences) addPreferencesFromResource(R.xml.credits_preferences) + // Re-launch the app if Material You is toggled + findPreference("use_material_you")?.setOnPreferenceChangeListener { _, _ -> + requireActivity().finishAffinity() + startActivity(Intent(requireContext(), MainActivity::class.java)) + true + } + // Uncheck `disable_frame_throttling` if `force_triple_buffering` gets disabled val disableFrameThrottlingPref = findPreference("disable_frame_throttling")!! findPreference("force_triple_buffering")?.setOnPreferenceChangeListener { _, newValue -> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1c875d19..7271b3fb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,6 +44,9 @@ Appearance Theme + Use Material You + Skyline colors will be used + Material You will be used App Language Use System Default Game Display Layout diff --git a/app/src/main/res/xml/app_preferences.xml b/app/src/main/res/xml/app_preferences.xml index bb177971..0371e8ba 100644 --- a/app/src/main/res/xml/app_preferences.xml +++ b/app/src/main/res/xml/app_preferences.xml @@ -28,6 +28,12 @@ app:key="app_theme" app:title="@string/theme" app:useSimpleSummaryProvider="true" /> +