mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.9 KiB
Kotlin
67 lines
2.9 KiB
Kotlin
package org.tasks.tasklist
|
|
|
|
import android.app.Activity
|
|
import android.content.Context
|
|
import android.util.DisplayMetrics
|
|
import android.view.LayoutInflater
|
|
import android.view.ViewGroup
|
|
import com.todoroo.andlib.utility.AndroidUtilities
|
|
import dagger.hilt.android.qualifiers.ActivityContext
|
|
import org.tasks.R
|
|
import org.tasks.databinding.TaskAdapterRowBinding
|
|
import org.tasks.dialogs.Linkify
|
|
import org.tasks.markdown.MarkdownProvider
|
|
import org.tasks.preferences.Preferences
|
|
import org.tasks.preferences.ResourceResolver
|
|
import org.tasks.tasklist.TaskViewHolder.ViewHolderCallbacks
|
|
import org.tasks.ui.CheckBoxProvider
|
|
import org.tasks.ui.ChipProvider
|
|
import java.util.*
|
|
import javax.inject.Inject
|
|
|
|
class ViewHolderFactory @Inject constructor(
|
|
@param:ActivityContext private val context: Context,
|
|
private val preferences: Preferences,
|
|
private val chipProvider: ChipProvider,
|
|
private val checkBoxProvider: CheckBoxProvider,
|
|
private val linkify: Linkify,
|
|
private val locale: Locale) {
|
|
private val textColorSecondary: Int = ResourceResolver.getData(context, android.R.attr.textColorSecondary)
|
|
private val textColorOverdue: Int = context.getColor(R.color.overdue)
|
|
private val fontSize: Int = preferences.fontSize
|
|
private val metrics: DisplayMetrics = context.resources.displayMetrics
|
|
private val background: Int = ResourceResolver.getResourceId(context, androidx.appcompat.R.attr.selectableItemBackground)
|
|
private val selectedColor: Int = ResourceResolver.getData(context, androidx.appcompat.R.attr.colorControlHighlight)
|
|
private val rowPaddingDp = preferences.getInt(R.string.p_rowPadding, 16)
|
|
private val rowPaddingPx: Int = AndroidUtilities.convertDpToPixels(metrics, rowPaddingDp)
|
|
private val markdown =
|
|
MarkdownProvider(context, preferences).markdown(R.string.p_linkify_task_list)
|
|
|
|
fun newHeaderViewHolder(parent: ViewGroup?, callback: (Long) -> Unit) =
|
|
HeaderViewHolder(
|
|
context,
|
|
locale,
|
|
LayoutInflater.from(context).inflate(R.layout.task_adapter_header, parent, false),
|
|
callback)
|
|
|
|
fun newViewHolder(parent: ViewGroup?, callbacks: ViewHolderCallbacks) =
|
|
TaskViewHolder(
|
|
context as Activity,
|
|
TaskAdapterRowBinding.inflate(LayoutInflater.from(context), parent, false),
|
|
preferences,
|
|
fontSize,
|
|
chipProvider,
|
|
checkBoxProvider,
|
|
textColorOverdue,
|
|
textColorSecondary,
|
|
callbacks,
|
|
metrics,
|
|
background,
|
|
selectedColor,
|
|
rowPaddingDp,
|
|
rowPaddingPx,
|
|
linkify,
|
|
locale,
|
|
markdown
|
|
)
|
|
} |