diff --git a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt index f978923..ddf34e9 100644 --- a/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt +++ b/app/src/main/java/com/denizk0461/studip/adapter/StudIPEventAdapter.kt @@ -1,17 +1,25 @@ package com.denizk0461.studip.adapter +import android.content.res.ColorStateList +import android.util.AttributeSet +import android.util.Log +import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.denizk0461.studip.R import com.denizk0461.studip.model.StudIPEvent import com.denizk0461.studip.databinding.ItemEventBinding +import java.util.* class StudIPEventAdapter( events: List, private val currentDay: Int, private val onClickListener: OnClickListener ) : RecyclerView.Adapter() { private val filteredEvents: List = events.filter { it.day == currentDay } + private val currentCalendar = Calendar.getInstance() + private var isAnyCourseHighlighted = false class EventViewHolder(val binding: ItemEventBinding) : RecyclerView.ViewHolder(binding.root) @@ -35,10 +43,25 @@ class StudIPEventAdapter( holder.binding.textRoom.text = currentItem.room holder.binding.textTimeslot.text = currentItem.timeslot() - if (true) { // highlight + val colorPrimary = TypedValue() + val colorTextHint = TypedValue() + val theme = holder.binding.root.context.theme + theme.resolveAttribute(R.attr.colorPrimary, colorPrimary, true) + theme.resolveAttribute(R.attr.colorTextHintLighter, colorTextHint, true) + +// Log.d("eek!", holder.binding.cardBackground.strokeWidth.toString()) + + if (!isAnyCourseHighlighted && currentItem.isCurrentCourse(currentCalendar)) { // highlight + isAnyCourseHighlighted = true +// holder.binding.textTitle.setTextColor(colorHighlight.data) + holder.binding.cardBackground.strokeColor = colorPrimary.data + holder.binding.cardBackground.strokeWidth = 6 // holder.binding.cardBackground.cardForegroundColor = holder.binding.root.context.getColorStateList( // R.color.list_card_selected) } else { // un-highlight +// holder.binding.textTitle.setTextColor(colorUnhighlight.data) + holder.binding.cardBackground.strokeColor = colorTextHint.data + holder.binding.cardBackground.strokeWidth = 3 // holder.binding.cardBackground.cardForegroundColor = Color.TRANSPARENT } @@ -54,6 +77,32 @@ class StudIPEventAdapter( } + private fun StudIPEvent.isCurrentCourse(calendar: Calendar): Boolean { +// if (calendar.get(Calendar.DAY_OF_WEEK) == this.day.toCalendarDay()) { + if (Calendar.THURSDAY == this.day.toCalendarDay()) { + if ((calendar.get(Calendar.MINUTE) + calendar.get(Calendar.HOUR_OF_DAY) * 60) < this.timeslotEnd.parseToMinutes()) { + return true + } + } + return false + } + + // Converts day as defined in StudIPEvent.kt to day from Calendar + private fun Int.toCalendarDay(): Int = when (this) { + 1 -> Calendar.TUESDAY + 2 -> Calendar.WEDNESDAY + 3 -> Calendar.THURSDAY + 4 -> Calendar.FRIDAY + 5 -> Calendar.SATURDAY + 6 -> Calendar.SUNDAY + else -> Calendar.MONDAY + } + + private fun String.parseToMinutes(): Int { + val parts = split(":") + return (parts[0].toInt() * 60) + parts[1].toInt() + } + interface OnClickListener { fun onClick(event: StudIPEvent) fun onLongClick(event: StudIPEvent) diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 2ceecf4..d8d9987 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -40,15 +40,6 @@ app:layout_constraintTop_toBottomOf="@+id/toolbar" app:navGraph="@navigation/nav_graph"/> - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 5daf0aa..b3e1c39 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -37,6 +37,7 @@ android:layout_marginHorizontal="16dp"/> diff --git a/app/src/main/res/layout/item_event.xml b/app/src/main/res/layout/item_event.xml index 451f9dc..e5f0257 100644 --- a/app/src/main/res/layout/item_event.xml +++ b/app/src/main/res/layout/item_event.xml @@ -28,6 +28,7 @@ android:fontFamily="@font/lato_bolditalic"/> diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 292920f..f54dcd4 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -9,6 +9,7 @@ @color/colorTextNight @color/colorTextHintNight + @color/colorTextHintLighterNight @color/colorBackgroundNight @color/colorCardBackgroundNight @@ -27,4 +28,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 11b6fd0..3cb535c 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -2,9 +2,11 @@ + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ef77769..1dd810e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,26 +2,28 @@ #FF000000 #FFFFFFFF + #FF46BB - - - - #B2665A + + #B2665A #995348 #871D1E #CB9890 - #141414 // TODO + #141414 #CDCBCB - #2A2828 // TODO + #2A2828 #B9B6B6 - #EBEBEB // TODO + #3E3C3C + #918D8D + + #EBEBEB #151414 - #E0E0E0 // TODO + #E0E0E0 #1F1E1E #D6D6D6 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d77cafd..99c1009 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -10,6 +10,7 @@ @color/colorTextDay @color/colorTextHintDay + @color/colorTextHintLighterDay @color/colorBackgroundDay @color/colorCardBackgroundDay @@ -36,4 +37,8 @@ + + \ No newline at end of file