Improve settings.

This commit is contained in:
2023-01-20 16:54:14 +01:00
parent f7ccf46b55
commit 9ec2a0e465
4 changed files with 25 additions and 8 deletions

View File

@@ -1,12 +1,13 @@
package me.zobrist.tichucounter.domain package me.zobrist.tichucounter.domain
import android.content.Context import android.content.Context
import androidx.appcompat.app.AppCompatDelegate.getApplicationLocales
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
enum class Theme { DEFAULT, DARK, LIGHT } enum class Theme { DEFAULT, DARK, LIGHT }
enum class Language { DEFAULT, GERMAN, ENGLISH } enum class Language(val value: String) { ENGLISH("en"), GERMAN("de") }
class SettingsAdapter @Inject constructor(@ApplicationContext private val context: Context) { class SettingsAdapter @Inject constructor(@ApplicationContext private val context: Context) {
@@ -15,12 +16,19 @@ class SettingsAdapter @Inject constructor(@ApplicationContext private val contex
val language: Language val language: Language
get() { get() {
return Language.values()[sharedPreferences.getInt(Language::class.simpleName, 0)] var setting = sharedPreferences.getString(Language::class.simpleName, null)
if(setting == null)
{
setCurrentLanguage()
setting = sharedPreferences.getString(Language::class.simpleName, Language.ENGLISH.name)
}
return enumValueOf(setting!!)
} }
val theme: Theme val theme: Theme
get() { get() {
return Theme.values()[sharedPreferences.getInt(Theme::class.simpleName, 0)] val setting = sharedPreferences.getString(Theme::class.simpleName, Theme.DEFAULT.name)
return enumValueOf(setting!!)
} }
val keepScreenOn: Boolean val keepScreenOn: Boolean
@@ -28,16 +36,22 @@ class SettingsAdapter @Inject constructor(@ApplicationContext private val contex
return sharedPreferences.getBoolean("keep_screen_on", false) return sharedPreferences.getBoolean("keep_screen_on", false)
} }
private fun setCurrentLanguage() {
var setting = when(getApplicationLocales()[0].toString()) {
"de" -> Language.GERMAN
else -> Language.ENGLISH
}
setLanguage(setting)
}
fun setLanguage(language: Language) { fun setLanguage(language: Language) {
val editor = sharedPreferences.edit() val editor = sharedPreferences.edit()
editor.putInt(Language::class.simpleName, language.ordinal) editor.putString(Language::class.simpleName, language.name)
editor.commit() editor.commit()
} }
fun setTheme(theme: Theme) { fun setTheme(theme: Theme) {
val editor = sharedPreferences.edit() val editor = sharedPreferences.edit()
editor.putInt(Theme::class.simpleName, theme.ordinal) editor.putString(Theme::class.simpleName, theme.name)
editor.commit() editor.commit()
} }

View File

@@ -25,7 +25,6 @@ import me.zobrist.tichucounter.ui.AppTheme
val languageMap = mapOf( val languageMap = mapOf(
Language.DEFAULT to R.string.android_default_text,
Language.ENGLISH to R.string.english, Language.ENGLISH to R.string.english,
Language.GERMAN to R.string.german Language.GERMAN to R.string.german
) )

View File

@@ -11,7 +11,7 @@
<string name="choose_language_text">Sprache wählen</string> <string name="choose_language_text">Sprache wählen</string>
<string name="android_default_text">Android Standard</string> <string name="android_default_text">Android Standard</string>
<string name="english">Englisch</string> <string name="english">Englisch</string>
<string name="german">Detusch</string> <string name="german">Deutsch</string>
<string name="light">Hell</string> <string name="light">Hell</string>
<string name="dark">Dunkel</string> <string name="dark">Dunkel</string>
<string name="settings">Einstellungen</string> <string name="settings">Einstellungen</string>
@@ -22,5 +22,7 @@
<string name="menu_settings">Einstellungen</string> <string name="menu_settings">Einstellungen</string>
<string name="menu_counter">Counter</string> <string name="menu_counter">Counter</string>
<string name="submit">Übermitteln</string> <string name="submit">Übermitteln</string>
<string name="on">Ein</string>
<string name="off">Aus</string>
</resources> </resources>

View File

@@ -31,4 +31,6 @@
<string name="delete">Delete</string> <string name="delete">Delete</string>
<string name="submit">Submit</string> <string name="submit">Submit</string>
<string name="title_activity_main">MainActivity</string> <string name="title_activity_main">MainActivity</string>
<string name="on">On</string>
<string name="off">Off</string>
</resources> </resources>