From 795182bab71e70c28e7d07550bca0d2e35b70c60 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 17 Apr 2021 19:45:02 -0700 Subject: Injection checkpoint --- .../kotlin/com/pitchedapps/frost/views/Keywords.kt | 39 +++++++++++++++------- 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'app/src/main/kotlin/com/pitchedapps/frost/views') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/Keywords.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/Keywords.kt index c3d5a90e..a0a7e5b1 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/Keywords.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/Keywords.kt @@ -39,20 +39,25 @@ import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial import com.pitchedapps.frost.R import com.pitchedapps.frost.injectors.ThemeProvider import com.pitchedapps.frost.prefs.Prefs -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject /** * Created by Allan Wang on 2017-06-19. */ +@AndroidEntryPoint class Keywords @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr), KoinComponent { +) : ConstraintLayout(context, attrs, defStyleAttr) { + + @Inject + lateinit var prefs: Prefs + + @Inject + lateinit var themeProvider: ThemeProvider - private val prefs: Prefs by inject() - private val themeProvider: ThemeProvider by inject() val editText: AppCompatEditText by bindView(R.id.edit_text) val addIcon: ImageView by bindView(R.id.add_icon) val recycler: RecyclerView by bindView(R.id.recycler) @@ -61,16 +66,21 @@ class Keywords @JvmOverloads constructor( init { inflate(context, R.layout.view_keywords, this) editText.tint(themeProvider.textColor) - addIcon.setImageDrawable(GoogleMaterial.Icon.gmd_add.keywordDrawable(context, themeProvider)) + addIcon.setImageDrawable( + GoogleMaterial.Icon.gmd_add.keywordDrawable( + context, + themeProvider + ) + ) addIcon.setOnClickListener { if (editText.text.isNullOrEmpty()) editText.error = context.string(R.string.empty_keyword) else { - adapter.add(0, KeywordItem(editText.text.toString())) + adapter.add(0, KeywordItem(editText.text.toString(), themeProvider)) editText.text?.clear() } } - adapter.add(prefs.notificationKeywords.map { KeywordItem(it) }) + adapter.add(prefs.notificationKeywords.map { KeywordItem(it, themeProvider) }) recycler.layoutManager = LinearLayoutManager(context) recycler.adapter = adapter adapter.addEventHook(object : ClickEventHook() { @@ -96,9 +106,12 @@ class Keywords @JvmOverloads constructor( private fun IIcon.keywordDrawable(context: Context, themeProvider: ThemeProvider): Drawable = toDrawable(context, 20, themeProvider.textColor) -class KeywordItem(val keyword: String) : AbstractItem() { +class KeywordItem( + val keyword: String, + private val themeProvider: ThemeProvider +) : AbstractItem() { - override fun getViewHolder(v: View): ViewHolder = ViewHolder(v) + override fun getViewHolder(v: View): ViewHolder = ViewHolder(v, themeProvider) override val layoutRes: Int get() = R.layout.item_keyword @@ -116,9 +129,11 @@ class KeywordItem(val keyword: String) : AbstractItem() holder.text.text = null } - class ViewHolder(v: View) : RecyclerView.ViewHolder(v), KoinComponent { + class ViewHolder( + v: View, + themeProvider: ThemeProvider + ) : RecyclerView.ViewHolder(v) { - private val themeProvider: ThemeProvider by inject() val text: AppCompatTextView by bindView(R.id.keyword_text) val delete: ImageView by bindView(R.id.keyword_delete) -- cgit v1.2.3