diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 71b3b2f6..3905ad8a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,12 +13,14 @@ android:supportsRtl="true" android:theme="@style/Theme.Jellyfin" android:usesCleartextTraffic="true"> - + + android:windowSoftInputMode="adjustPan"> diff --git a/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt b/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt index f4927fc4..1fbd0f5d 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/BaseApplication.kt @@ -1,12 +1,22 @@ package dev.jdtech.jellyfin import android.app.Application +import androidx.appcompat.app.AppCompatDelegate +import androidx.preference.PreferenceManager import dagger.hilt.android.HiltAndroidApp import timber.log.Timber @HiltAndroidApp class BaseApplication : Application() { override fun onCreate() { + val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) + + when (sharedPreferences.getString("theme", null)) { + "system" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) + "light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + "dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + } + super.onCreate() if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) diff --git a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt index 78ce1139..1d74d115 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/MainActivity.kt @@ -22,9 +22,8 @@ class MainActivity : AppCompatActivity() { private val viewModel: MainViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - installSplashScreen() + super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) @@ -66,7 +65,9 @@ class MainActivity : AppCompatActivity() { viewModel.doneLoading.observe(this, { if (it) { - navController.navigate(InitializingFragmentDirections.actionInitializingFragmentToNavigationHome()) + if (navController.currentDestination!!.id == R.id.initializingFragment) { + navController.navigate(InitializingFragmentDirections.actionInitializingFragmentToNavigationHome()) + } } }) } diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt index 7cfd58d7..16168859 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/SettingsFragment.kt @@ -1,7 +1,9 @@ package dev.jdtech.jellyfin.fragments import android.os.Bundle +import androidx.appcompat.app.AppCompatDelegate.* import androidx.navigation.fragment.findNavController +import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import dev.jdtech.jellyfin.R @@ -14,5 +16,14 @@ class SettingsFragment : PreferenceFragmentCompat() { findNavController().navigate(SettingsFragmentDirections.actionNavigationSettingsToServerSelectFragment2()) true } + + findPreference("theme")?.setOnPreferenceChangeListener { _, newValue -> + when (newValue) { + "system" -> setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM) + "light" -> setDefaultNightMode(MODE_NIGHT_NO) + "dark" -> setDefaultNightMode(MODE_NIGHT_YES) + } + true + } } } \ 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 e359f722..d75c4305 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,4 +47,6 @@ Initializing… Servers Switch server + Appearance + Theme \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index a3bcd641..ceb49f5c 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -22,4 +22,16 @@ @color/neutral_100 @style/Theme.Jellyfin + + + Follow system + Light + Dark + + + + system + light + dark + \ No newline at end of file diff --git a/app/src/main/res/xml/fragment_settings.xml b/app/src/main/res/xml/fragment_settings.xml index 62ed5ede..267a87af 100644 --- a/app/src/main/res/xml/fragment_settings.xml +++ b/app/src/main/res/xml/fragment_settings.xml @@ -29,4 +29,14 @@ + + + + \ No newline at end of file