Skip to content

Commit ec289a4

Browse files
committed
Modification set and ready for using.
1 parent 91e89c7 commit ec289a4

30 files changed

+810
-414
lines changed

.idea/codeStyles/Project.xml

Lines changed: 123 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CalendarView/src/main/java/com/shahzadafridi/calendarview/CalendarAdapter.kt

Lines changed: 65 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package com.shahzadafridi.calendarview
22

33
import android.content.Context
44
import android.graphics.Color
5-
import android.graphics.Typeface
5+
import android.graphics.drawable.ShapeDrawable
6+
import android.graphics.drawable.shapes.RoundRectShape
67
import android.view.LayoutInflater
78
import android.view.View
89
import android.view.ViewGroup
@@ -13,76 +14,89 @@ import androidx.core.content.res.ResourcesCompat
1314
import androidx.recyclerview.widget.RecyclerView
1415
import java.util.*
1516

17+
1618
class CalendarAdapter(
1719
context: Context,
1820
private val days: ArrayList<Calendar>, // days with events
1921
private val eventDays: HashSet<Calendar>?,
2022
private var eventsHandler: CalenderViewInterface.EventHandler?,
21-
private var cellConfig: CellConfiguration?
23+
private var dayConfig: DayConfiguration?,
24+
monthNumber: Int
2225
) : RecyclerView.Adapter<CalendarAdapter.MyViewHolder>() {
2326

2427
// for view inflation
2528
private val inflater: LayoutInflater
2629
private val mContext: Context
30+
private val mMonthNumber = monthNumber
2731

28-
//Cell Configuration
29-
private var cell_font: Int? = null
30-
private var cell_size: Int? = null
31-
private var cell_bg: Int? = null
32-
private var cell_txt_clr: Int? = null
33-
private var cell_txt_size: Int? = null
34-
private var cell_selected_txt_clr: Int? = null
35-
private var cell_select_bg: Int? = null
32+
//Day Configuration
33+
private var day_font: Int? = null
34+
private var day_bg: Int? = null
35+
private var day_txt_clr: Int? = null
36+
private var day_txt_size: Int? = null
37+
private var day_selected_txt_clr: Int? = null
38+
private var day_selected_bg: Int? = null
39+
private var event_dot_clr: Int? = null
3640

3741
init {
3842
inflater = LayoutInflater.from(context)
3943
mContext = context
40-
cellConfig?.let {
41-
cell_font = it.cellFont
42-
cell_size = it.cellSize
43-
cell_bg = it.cellBg
44-
cell_txt_clr = it.cellTxtClr
45-
cell_txt_size = it.cellTxtSize
46-
cell_selected_txt_clr = it.cellSelectedClr
47-
cell_select_bg = it.cellSelectBg
44+
dayConfig?.let {
45+
day_font = it.dayFont
46+
day_bg = it.dayBg
47+
day_txt_clr = it.dayTxtClr
48+
day_txt_size = it.dayTxtSize
49+
day_selected_txt_clr = it.daySelectedClr
50+
day_selected_bg = it.daySelectedBg
51+
event_dot_clr = it.eventDotColor
4852
}
4953
}
5054

51-
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CalendarAdapter.MyViewHolder {
52-
val view = LayoutInflater.from(mContext).inflate(R.layout.row_calendar_day_layout, parent, false)
55+
override fun onCreateViewHolder(
56+
parent: ViewGroup,
57+
viewType: Int
58+
): CalendarAdapter.MyViewHolder {
59+
val view =
60+
LayoutInflater.from(mContext).inflate(R.layout.row_calendar_day_layout, parent, false)
5361
return MyViewHolder(view)
5462
}
5563

5664
override fun onBindViewHolder(holder: CalendarAdapter.MyViewHolder, position: Int) {
57-
holder.updateUi(holder,days[position])
65+
holder.updateUi(holder, days[position])
5866
}
5967

6068
override fun getItemCount(): Int {
6169
return days.size
6270
}
6371

64-
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener, View.OnLongClickListener {
72+
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
73+
View.OnClickListener, View.OnLongClickListener {
6574

6675
var textView: TextView
76+
var textViewEvent: TextView
6777
var rowLayout: RelativeLayout
6878

6979
init {
7080
textView = itemView.findViewById(R.id.control_calendar_day)
81+
textViewEvent = itemView.findViewById(R.id.control_calendar_event)
7182
rowLayout = itemView.findViewById(R.id.row_calendar_layout)
7283
rowLayout.setOnClickListener(this)
7384
rowLayout.setOnLongClickListener(this)
74-
cell_txt_size?.let {
85+
day_txt_size?.let {
7586
textView.textSize = it.toFloat()
7687
}
77-
cell_txt_clr?.let {
88+
day_txt_clr?.let {
7889
textView.setTextColor(ContextCompat.getColor(mContext, it))
7990
}
80-
cell_font?.let {
91+
day_font?.let {
8192
textView.typeface = ResourcesCompat.getFont(mContext, it)
8293
}
83-
cell_bg?.let {
94+
day_bg?.let {
8495
rowLayout.setBackgroundResource(it)
8596
}
97+
event_dot_clr?.let {
98+
eventShape(textViewEvent,it)
99+
}
86100
}
87101

88102
fun updateUi(holder: MyViewHolder, date: Calendar) {
@@ -98,47 +112,59 @@ class CalendarAdapter(
98112
holder.textView.text = date.get(Calendar.DATE).toString()
99113

100114

101-
if (month != today.get(Calendar.MONTH) || year != today.get(Calendar.YEAR)) {
115+
if (month != mMonthNumber || year != today.get(Calendar.YEAR)) {
102116
// if this day is outside current month, grey it out
103117
holder.textView.setTextColor(ContextCompat.getColor(mContext, R.color.greyed_out))
104-
} else if (day == today.get(Calendar.DATE)) {
118+
} else if (today.get(Calendar.DATE) == day && today.get(Calendar.MONTH) == month && today.get(Calendar.YEAR) == year) {
105119
// if it is today, set it to blue/bold
106-
cell_selected_txt_clr?.let {
120+
day_selected_txt_clr?.let {
107121
holder.textView.setTextColor(ContextCompat.getColor(mContext, it))
122+
} ?: run{
123+
holder.textView.setTextColor(ContextCompat.getColor(mContext, R.color.cwhite))
108124
}
109-
cell_select_bg?.let {
125+
day_selected_bg?.let {
110126
holder.rowLayout.setBackgroundResource(it)
127+
} ?:run {
128+
holder.rowLayout.setBackgroundResource(R.drawable.ic_black_oval)
111129
}
112130
}
113131

132+
textViewEvent.visibility = View.GONE
133+
114134
if (eventDays != null) {
115135
for (eventDate in eventDays) {
116136
if (eventDate.get(Calendar.DATE) == day && eventDate.get(Calendar.MONTH) == month && eventDate.get(Calendar.YEAR) == year) {
117137
// mark this day for event
118-
cell_select_bg?.let {
119-
holder.rowLayout.setBackgroundResource(it)
120-
}
121-
cell_selected_txt_clr?.let {
122-
holder.textView.setTextColor(ContextCompat.getColor(mContext, it))
123-
}
138+
textViewEvent.visibility = View.VISIBLE
124139
break
125140
}
126141
}
127142
}
128143
}
129144

130145
override fun onClick(v: View?) {
131-
eventsHandler?.onCellClick(view = v,date = days[adapterPosition].time,adapterPosition)
146+
eventsHandler?.onDayClick(view = v, date = days[adapterPosition].time, adapterPosition)
132147
}
133148

134149
override fun onLongClick(v: View?): Boolean {
135-
eventsHandler?.onCellLongClick(view = v,date = days[adapterPosition].time,adapterPosition)
150+
eventsHandler?.onDayLongClick(
151+
view = v,
152+
date = days[adapterPosition].time,
153+
adapterPosition
154+
)
136155
return true
137156
}
138157
}
139158

140-
fun setEventHandler(mEventsHandler: CalenderViewInterface.EventHandler){
159+
fun setEventHandler(mEventsHandler: CalenderViewInterface.EventHandler) {
141160
this.eventsHandler = mEventsHandler
142161
}
143162

163+
fun eventShape(v: View, backgroundColor: Int) {
164+
val r = 8f
165+
val shape = ShapeDrawable(RoundRectShape(floatArrayOf(r, r, r, r, r, r, r, r), null, null))
166+
shape.paint.color = backgroundColor
167+
v.setBackground(shape)
168+
}
169+
144170
}

0 commit comments

Comments
 (0)