Ver Fonte

Moved static flag to extensions to simplify config repository

Vadik Sirekanyan há 7 anos atrás
pai
commit
0f118e4434

+ 8 - 0
app/src/main/java/com/sirekanyan/knigopis/common/extensions/Context.kt

@@ -7,6 +7,9 @@ import android.net.ConnectivityManager
 import android.support.annotation.StringRes
 import android.view.inputmethod.InputMethodManager
 import android.widget.Toast
+import com.sirekanyan.knigopis.R
+
+var isDarkTheme = false
 
 val Context.systemClipboardManager: ClipboardManager
     get() = getAndroidSystemService(Context.CLIPBOARD_SERVICE)
@@ -30,5 +33,10 @@ fun Context.toast(@StringRes messageId: Int) {
     Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show()
 }
 
+fun Context.setDarkTheme(isDark: Boolean) {
+    setTheme(if (isDark) R.style.DarkAppTheme else R.style.AppTheme)
+    isDarkTheme = isDark
+}
+
 private inline fun <reified T> Context.getAndroidSystemService(name: String) =
     getSystemService(name) as T

+ 1 - 2
app/src/main/java/com/sirekanyan/knigopis/common/extensions/ImageView.kt

@@ -13,12 +13,11 @@ import com.bumptech.glide.request.RequestListener
 import com.bumptech.glide.request.RequestOptions
 import com.bumptech.glide.request.target.Target
 import com.sirekanyan.knigopis.R
-import com.sirekanyan.knigopis.repository.config.InMemory.isDarkModeEnabled
 
 private const val DARK_SATURATION = 0.33f
 
 private fun ImageView.setImage(url: String?, requestOptions: RequestOptions, placeholder: Int) {
-    if (isDarkModeEnabled) {
+    if (isDarkTheme) {
         val colorMatrix = ColorMatrix().apply { setSaturation(DARK_SATURATION) }
         colorFilter = ColorMatrixColorFilter(colorMatrix)
     }

+ 2 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -7,6 +7,7 @@ import android.os.Bundle
 import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.BaseActivity
 import com.sirekanyan.knigopis.common.extensions.io2main
+import com.sirekanyan.knigopis.common.extensions.setDarkTheme
 import com.sirekanyan.knigopis.common.extensions.startActivityOrNull
 import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.functions.createAppSettingsIntent
@@ -47,7 +48,7 @@ class MainActivity : BaseActivity(),
     private val config by inject<Configuration>()
 
     override fun onCreate(savedInstanceState: Bundle?) {
-        setTheme(if (config.isDarkTheme) R.style.DarkAppTheme else R.style.AppTheme)
+        setDarkTheme(config.isDarkTheme)
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
         val restoredCurrentTab = savedInstanceState?.getMainState()?.currentTab

+ 1 - 3
app/src/main/java/com/sirekanyan/knigopis/feature/book/BookActivity.kt

@@ -71,9 +71,7 @@ class BookActivity : BaseActivity() {
     private val today = Calendar.getInstance()
 
     override fun onCreate(savedInstanceState: Bundle?) {
-        if (config.isDarkTheme) {
-            setTheme(R.style.DarkAppTheme)
-        }
+        setDarkTheme(config.isDarkTheme)
         super.onCreate(savedInstanceState)
         setContentView(R.layout.book_edit)
         val bookId = intent.getStringExtra(EXTRA_BOOK_ID)

+ 1 - 3
app/src/main/java/com/sirekanyan/knigopis/feature/user/UserActivity.kt

@@ -46,9 +46,7 @@ class UserActivity : BaseActivity() {
     private lateinit var unsubscribeOption: MenuItem
 
     override fun onCreate(savedInstanceState: Bundle?) {
-        if (config.isDarkTheme) {
-            setTheme(R.style.DarkAppTheme)
-        }
+        setDarkTheme(config.isDarkTheme)
         super.onCreate(savedInstanceState)
         setContentView(R.layout.user_activity)
         toolbar.title = userName

+ 1 - 8
app/src/main/java/com/sirekanyan/knigopis/repository/Configuration.kt

@@ -3,7 +3,6 @@ package com.sirekanyan.knigopis.repository
 import android.content.Context
 import android.content.Context.MODE_PRIVATE
 import com.sirekanyan.knigopis.repository.config.BooleanPreference
-import com.sirekanyan.knigopis.repository.config.InMemory
 import com.sirekanyan.knigopis.repository.config.IntPreference
 
 private const val PREFS_NAME = "config"
@@ -14,13 +13,7 @@ interface Configuration {
 }
 
 class ConfigurationImpl(context: Context) : Configuration {
-
     internal val prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE)
-    override var isDarkTheme by BooleanPreference(onUpdate = { InMemory.isDarkModeEnabled = it })
+    override var isDarkTheme by BooleanPreference()
     override var sortingMode by IntPreference()
-
-    init {
-        InMemory.isDarkModeEnabled = isDarkTheme
-    }
-
 }

+ 0 - 5
app/src/main/java/com/sirekanyan/knigopis/repository/config/InMemory.kt

@@ -1,5 +0,0 @@
-package com.sirekanyan.knigopis.repository.config
-
-object InMemory {
-    var isDarkModeEnabled: Boolean = false
-}

+ 2 - 5
app/src/main/java/com/sirekanyan/knigopis/repository/config/PropertyDelegate.kt

@@ -23,10 +23,7 @@ class IntPreference : AbstractPreference<Int>(
     { key, value -> putInt(key, value) }
 )
 
-class BooleanPreference(onUpdate: ((Boolean) -> Unit)? = null) : AbstractPreference<Boolean>(
+class BooleanPreference : AbstractPreference<Boolean>(
     { key -> getBoolean(key, false) },
-    { key, value ->
-        onUpdate?.invoke(value)
-        putBoolean(key, value)
-    }
+    { key, value -> putBoolean(key, value) }
 )