Archived
Changed colour picker from a single palette dialog to recycler view to gain parity with iOS-version
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package com.denizd.substitutionplan.adapters
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.denizd.substitutionplan.models.Colour
|
||||
import com.denizd.substitutionplan.R
|
||||
import com.google.android.material.card.MaterialCardView
|
||||
|
||||
/**
|
||||
* Adapter class used for displaying the colours available for tinting courses on the substitution
|
||||
* plan. Used in SettingsFragment.kt
|
||||
*
|
||||
* @param colours a list of all available colours
|
||||
* @param onClickListener a reference to an OnClickListener
|
||||
*/
|
||||
internal class ColourPickerAdapter(private var colours: List<Colour>, private val onClickListener: OnColourClickListener) : RecyclerView.Adapter<ColourPickerAdapter.ColourPickerViewHolder>() {
|
||||
|
||||
internal class ColourPickerViewHolder(view: View, private val clickListener: OnColourClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
||||
val title: TextView = view.findViewById(R.id.item_text)
|
||||
var image: ImageView = view.findViewById(R.id.item_image)
|
||||
var colourNoLang = ""
|
||||
init { view.setOnClickListener(this) }
|
||||
|
||||
override fun onClick(v: View?) { clickListener.onColourClick(adapterPosition, colourNoLang) }
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColourPickerViewHolder {
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.colour_picker_item, parent, false)
|
||||
return ColourPickerViewHolder(v, onClickListener)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ColourPickerViewHolder, position: Int) {
|
||||
val currentItem = colours[position]
|
||||
|
||||
holder.title.text = currentItem.title
|
||||
holder.colourNoLang = currentItem.titleNoLang
|
||||
|
||||
val bg = ContextCompat.getDrawable(holder.image.context, R.drawable.circle)
|
||||
bg?.setTint((ContextCompat.getColor(holder.image.context, if (currentItem.colour != 0) {
|
||||
currentItem.colour
|
||||
} else {
|
||||
R.color.colorBackgroundLight
|
||||
})))
|
||||
|
||||
holder.image.background = bg
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = colours.size
|
||||
|
||||
internal interface OnColourClickListener {
|
||||
fun onColourClick(position: Int, colourNoLang: String)
|
||||
}
|
||||
}
|
||||
+9
-9
@@ -18,25 +18,25 @@ import com.google.android.material.card.MaterialCardView
|
||||
* @param colours a list of all courses and their associated colour
|
||||
* @param onClickListener a reference to an OnClickListener
|
||||
*/
|
||||
internal class ColourAdapter(private var colours: List<Colour>, private val onClickListener: OnColourClickListener) : RecyclerView.Adapter<ColourAdapter.ColourViewHolder>() {
|
||||
internal class CourseColourAdapter(private var colours: List<Colour>, private val onClickListener: OnCourseColourClickListener) : RecyclerView.Adapter<CourseColourAdapter.CourseColourViewHolder>() {
|
||||
|
||||
internal class ColourViewHolder(view: View, private val clickListener: OnColourClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
||||
internal class CourseColourViewHolder(view: View, private val clickListener: OnCourseColourClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
||||
val title: TextView = view.findViewById(R.id.item_text)
|
||||
var image: ImageView = view.findViewById(R.id.item_image)
|
||||
var titleNoLang: String = ""
|
||||
val cardView: MaterialCardView = view.findViewById(R.id.cardView)
|
||||
init { view.setOnClickListener(this) }
|
||||
|
||||
override fun onClick(v: View?) { clickListener.onColourClick(adapterPosition, title.text.toString(), titleNoLang) }
|
||||
override fun onClick(v: View?) { clickListener.onCourseClick(adapterPosition, title.text.toString(), titleNoLang) }
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColourViewHolder {
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
|
||||
return ColourViewHolder(v, onClickListener)
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CourseColourViewHolder {
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.course_colour_picker_item, parent, false)
|
||||
return CourseColourViewHolder(v, onClickListener)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ColourViewHolder, position: Int) {
|
||||
override fun onBindViewHolder(holder: CourseColourViewHolder, position: Int) {
|
||||
val currentItem = colours[position]
|
||||
|
||||
holder.title.text = currentItem.title
|
||||
@@ -60,7 +60,7 @@ internal class ColourAdapter(private var colours: List<Colour>, private val onCl
|
||||
|
||||
override fun getItemCount(): Int = colours.size
|
||||
|
||||
internal interface OnColourClickListener {
|
||||
fun onColourClick(position: Int, title: String, titleNoLang: String)
|
||||
internal interface OnCourseColourClickListener {
|
||||
fun onCourseClick(position: Int, title: String, titleNoLang: String)
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@ internal class RingtoneAdapter(private val ringtones: List<Ringtone>, private va
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RingtoneViewHolder {
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.course_colour_picker_item, parent, false)
|
||||
return RingtoneViewHolder(v, onClickListener)
|
||||
}
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ internal class SubstitutionAdapter(private var substitutions: List<Substitution>
|
||||
} else {
|
||||
""
|
||||
}
|
||||
colour = HelperFunctions.getColourForString(colourPrefsInt)
|
||||
colour = HelperFunctions.getColourForString(colourPrefsInt, holder.context)
|
||||
cardBackgroundColour = if (colour != 0) {
|
||||
colour
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user