Fix fragment style

This commit is contained in:
J-Jamet
2021-03-05 19:55:51 +01:00
parent 5839f51f44
commit 12df74b3a7
3 changed files with 14 additions and 17 deletions

View File

@@ -20,20 +20,21 @@
package com.kunzisoft.keepass.activities.fragments
import android.content.Context
import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.RecyclerView
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.adapters.IconAdapter
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.icon.IconImageDraw
import com.kunzisoft.keepass.viewmodels.IconPickerViewModel
abstract class IconFragment<T: IconImageDraw> : Fragment() {
abstract class IconFragment<T: IconImageDraw> : StylishFragment() {
protected lateinit var iconsGridView: RecyclerView
protected lateinit var iconAdapter: IconAdapter<T>
@@ -49,7 +50,12 @@ abstract class IconFragment<T: IconImageDraw> : Fragment() {
override fun onAttach(context: Context) {
super.onAttach(context)
iconAdapter = IconAdapter<T>(requireActivity()).apply {
// Retrieve the textColor to tint the icon
val ta = contextThemed?.obtainStyledAttributes(intArrayOf(android.R.attr.colorControlNormal))
val tintColor = ta?.getColor(0, Color.BLACK) ?: Color.BLACK
ta?.recycle()
iconAdapter = IconAdapter<T>(context, tintColor).apply {
iconDrawableFactory = database.iconDrawableFactory
}

View File

@@ -4,17 +4,17 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.adapters.IconPickerPagerAdapter
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.viewmodels.IconPickerViewModel
class IconPickerFragment : Fragment() {
class IconPickerFragment : StylishFragment() {
private var iconPickerPagerAdapter: IconPickerPagerAdapter? = null
private lateinit var viewPager: ViewPager2

View File

@@ -1,7 +1,6 @@
package com.kunzisoft.keepass.adapters
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -12,7 +11,8 @@ import com.kunzisoft.keepass.database.element.icon.IconImageDraw
import com.kunzisoft.keepass.icons.IconDrawableFactory
import com.kunzisoft.keepass.icons.assignDatabaseIcon
class IconAdapter<I: IconImageDraw>(val context: Context) : RecyclerView.Adapter<IconAdapter<I>.CustomIconViewHolder>() {
class IconAdapter<I: IconImageDraw>(val context: Context, val tintIcon: Int)
: RecyclerView.Adapter<IconAdapter<I>.CustomIconViewHolder>() {
private val inflater: LayoutInflater = LayoutInflater.from(context)
@@ -21,15 +21,6 @@ class IconAdapter<I: IconImageDraw>(val context: Context) : RecyclerView.Adapter
var iconDrawableFactory: IconDrawableFactory? = null
var iconPickerListener: IconPickerListener<I>? = null
var tintColor : Int = Color.BLACK
init {
// Retrieve the textColor to tint the icon
val ta = context.theme.obtainStyledAttributes(intArrayOf(android.R.attr.textColor))
tintColor = ta.getColor(0, Color.BLACK)
ta.recycle()
}
val lastPosition: Int
get() = iconList.lastIndex
@@ -56,7 +47,7 @@ class IconAdapter<I: IconImageDraw>(val context: Context) : RecyclerView.Adapter
override fun onBindViewHolder(holder: CustomIconViewHolder, position: Int) {
val icon = iconList[position]
iconDrawableFactory?.let {
holder.iconImageView.assignDatabaseIcon(it, icon, tintColor)
holder.iconImageView.assignDatabaseIcon(it, icon, tintIcon)
}
holder.itemView.setOnClickListener { iconPickerListener?.iconPicked(icon) }
}