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