Add setting to manually enable/disable night mode (fixes #35)

This commit is contained in:
Johan von Forstner
2020-06-25 18:52:18 +02:00
parent 72d7f7dc57
commit 034196b9fa
7 changed files with 44 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package net.vonforst.evmap.fragment
import android.content.SharedPreferences
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.Toolbar
import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.setupWithNavController
@@ -10,13 +11,17 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import net.vonforst.evmap.MapsActivity
import net.vonforst.evmap.R
import net.vonforst.evmap.storage.PreferenceDataSource
class SettingsFragment : PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
private lateinit var prefs: PreferenceDataSource
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val toolbar = view.findViewById(R.id.toolbar) as Toolbar
prefs = PreferenceDataSource(requireContext())
val navController = findNavController()
toolbar.setupWithNavController(
@@ -43,6 +48,15 @@ class SettingsFragment : PreferenceFragmentCompat(),
it.startActivity(it.intent);
}
}
"darkmode" -> {
AppCompatDelegate.setDefaultNightMode(
when (prefs.darkmode) {
"on" -> AppCompatDelegate.MODE_NIGHT_YES
"off" -> AppCompatDelegate.MODE_NIGHT_NO
else -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
}
)
}
}
}

View File

@@ -39,4 +39,7 @@ class PreferenceDataSource(context: Context) {
val language: String
get() = sp.getString("language", "default")!!
val darkmode: String
get() = sp.getString("darkmode", "default")!!
}

View File

@@ -5,4 +5,9 @@
<item>Englisch</item>
<item>Deutsch</item>
</string-array>
<string-array name="pref_darkmode_names">
<item>Geräteeinstellung verwenden</item>
<item>immer an</item>
<item>immer aus</item>
</string-array>
</resources>

View File

@@ -92,6 +92,8 @@
<string name="ok">OK</string>
<string name="pref_language">Sprache</string>
<string name="pref_language_summary">App-Sprache ändern</string>
<string name="pref_darkmode">Dunkles Design</string>
<string name="pref_darkmode_summary">Einstellen, wann der Nachtmodus genutzt wird</string>
<string name="connection_error">Ladesäulen konnten nicht geladen werden</string>
<string name="retry">Wiederholen</string>
<string name="filter_open_247">24 Stunden geöffnet</string>

View File

@@ -10,4 +10,14 @@
<item>en</item>
<item>de</item>
</string-array>
<string-array name="pref_darkmode_names">
<item>Device default</item>
<item>always on</item>
<item>always off</item>
</string-array>
<string-array name="pref_darkmode_values" tranlatable="false">
<item>default</item>
<item>on</item>
<item>off</item>
</string-array>
</resources>

View File

@@ -91,6 +91,8 @@
<string name="ok">OK</string>
<string name="pref_language">Language</string>
<string name="pref_language_summary">Change the app language</string>
<string name="pref_darkmode">Dark mode</string>
<string name="pref_darkmode_summary">Set when dark mode is activated</string>
<string name="connection_error">Could not load charging stations</string>
<string name="retry">Retry</string>
<string name="filter_open_247">Available 24/7</string>

View File

@@ -18,5 +18,13 @@
android:defaultValue="default"
android:summary="@string/pref_language_summary" />
<ListPreference
android:key="darkmode"
android:title="@string/pref_darkmode"
android:entries="@array/pref_darkmode_names"
android:entryValues="@array/pref_darkmode_values"
android:defaultValue="default"
android:summary="@string/pref_darkmode_summary" />
</PreferenceCategory>
</PreferenceScreen>