Skip to content

Commit 50585ff

Browse files
fixed positioning of events and their lines.
1 parent edd87c1 commit 50585ff

File tree

4 files changed

+45
-24
lines changed

4 files changed

+45
-24
lines changed

library/src/main/java/com/alamkanak/weekview/WeekView.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ class WeekView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
175175
/**
176176
* the height of AllDay-events.
177177
*/
178-
var allDayEventHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40f, resources.displayMetrics).toInt()
178+
var allDayEventHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40f, resources.displayMetrics).toInt()
179179
/**
180180
* If you set this to false the `zoomFocusPoint` won't take effect any more while zooming.
181181
* The zoom will always be focused at the center of your gesture.
@@ -516,7 +516,7 @@ class WeekView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
516516

517517
private
518518
val eventsTop: Float
519-
get() = mCurrentOrigin.y + mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + spaceBelowAllDayEvents + mTimeTextHeight / 2 + spaceBetweenWeekDaysAndAllDayEvents.toFloat() - minHourOffset
519+
get() = mCurrentOrigin.y + mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mTimeTextHeight / 2 - minHourOffset
520520

521521
private val leftDaysWithGaps: Int
522522
get() = (-Math.ceil((mCurrentOrigin.x / (mWidthPerDay + columnGap)).toDouble())).toInt()
@@ -1432,14 +1432,16 @@ class WeekView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
14321432
else -> canvas.drawRect(start, startY, startPixel + mWidthPerDay, height.toFloat(), futurePaint)
14331433
}
14341434
} else {
1435-
canvas.drawRect(start, mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mTimeTextHeight / 2 + spaceBelowAllDayEvents, startPixel + mWidthPerDay, height.toFloat(), if (isToday) mTodayColumnBackgroundPaint else mDayBackgroundPaint)
1435+
val cellBackgroundPaint = if (isToday) mTodayColumnBackgroundPaint else mDayBackgroundPaint
1436+
if (cellBackgroundPaint.color != 0)
1437+
canvas.drawRect(start, mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mTimeTextHeight / 2 + spaceBelowAllDayEvents, startPixel + mWidthPerDay, height.toFloat(), cellBackgroundPaint)
14361438
}
14371439
}
14381440

14391441
// Prepare the separator lines for hours.
14401442
var i = 0
14411443
for (hourNumber in mMinTime until mMaxTime) {
1442-
val top = mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mCurrentOrigin.y + (hourHeight * (hourNumber - mMinTime)).toFloat() + mTimeTextHeight / 2 + spaceBelowAllDayEvents
1444+
val top = mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mCurrentOrigin.y + (hourHeight * (hourNumber - mMinTime)).toFloat() + mTimeTextHeight / 2
14431445
if (top > mHeaderHeight + (weekDaysHeaderRowPadding * 2).toFloat() + mTimeTextHeight / 2 + spaceBelowAllDayEvents - hourSeparatorHeight && top < height && startPixel + mWidthPerDay - start > 0) {
14441446
hourLines[i * 4] = start
14451447
hourLines[i * 4 + 1] = top
@@ -1544,7 +1546,7 @@ class WeekView @JvmOverloads constructor(context: Context, attrs: AttributeSet?
15441546
val top = weekDaysHeight + spaceBetweenWeekDaysAndAllDayEvents + mTimeTextHeight / 2
15451547
val bottom = top + allDayEventHeight
15461548
canvas.clipRect(0f, 0f, top, bottom)
1547-
canvas.drawText(allDaySideTitleText, mHeaderColumnWidth / 2, (top+bottom)/2, allDaySideTitleTextPaint)
1549+
canvas.drawText(allDaySideTitleText, mHeaderColumnWidth / 2, (top + bottom) / 2, allDaySideTitleTextPaint)
15481550
canvas.restore()
15491551
}
15501552
}

library/src/main/java/com/alamkanak/weekview/WeekViewUtil.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ object WeekViewUtil {
9696
/**returns a date format of dayOfWeek+day&month, based on the current locale.
9797
* This is important, as the format is different in many countries. Especially the numeric part that can be different : "d/M", "M/d", "d-M", "M-d" ,...*/
9898
@JvmStatic
99-
fun getWeekdayWithNumericDayAndMonthFormat(context: Context, shortDate: Boolean): SimpleDateFormat {
99+
fun getWeekdayWithNumericDayAndMonthFormat(context: Context, shortDate: Boolean): java.text.DateFormat {
100100
val weekDayFormat = if (shortDate) "EEEEE" else "EEE"
101101
val defaultDateFormatPattern = "$weekDayFormat d/M"
102102
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {

sample/src/main/java/com/alamkanak/weekview/sample/BaseActivity.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import android.content.ClipData
44
import android.graphics.RectF
55
import android.os.Bundle
66
import android.support.v7.app.AppCompatActivity
7-
import android.text.format.DateFormat
87
import android.util.TypedValue
98
import android.view.Menu
109
import android.view.MenuItem
1110
import android.view.View
1211
import android.widget.Toast
1312
import com.alamkanak.weekview.*
1413
import kotlinx.android.synthetic.main.activity_base.*
14+
import java.text.DateFormat
1515
import java.text.SimpleDateFormat
1616
import java.util.*
1717

18+
//import android.text.format.DateFormat
1819
/**
1920
* This is a base activity which contains week view and all the codes necessary to initialize the
2021
* week view.
@@ -23,9 +24,13 @@ import java.util.*
2324
*/
2425
abstract class BaseActivity : AppCompatActivity(), WeekView.EventClickListener, MonthLoader.MonthChangeListener, WeekView.EventLongPressListener, WeekView.EmptyViewLongPressListener, WeekView.EmptyViewClickListener, WeekView.AddEventClickListener, WeekView.DropListener {
2526
private var mWeekViewType = TYPE_THREE_DAY_VIEW
27+
private lateinit var shortDateFormat: DateFormat
28+
private lateinit var timeFormat: DateFormat
2629

2730
override fun onCreate(savedInstanceState: Bundle?) {
2831
super.onCreate(savedInstanceState)
32+
shortDateFormat = WeekViewUtil.getWeekdayWithNumericDayAndMonthFormat(this, true)
33+
timeFormat = android.text.format.DateFormat.getTimeFormat(this) ?: SimpleDateFormat("HH:mm", Locale.getDefault())
2934
setContentView(R.layout.activity_base)
3035

3136
draggable_view.setOnLongClickListener(DragTapListener())
@@ -181,9 +186,6 @@ abstract class BaseActivity : AppCompatActivity(), WeekView.EventClickListener,
181186
set(Calendar.SECOND, 0)
182187
set(Calendar.MILLISECOND, 0)
183188
}
184-
val timeFormat = DateFormat.getTimeFormat(this@BaseActivity)
185-
?: SimpleDateFormat("HH:mm", Locale.getDefault())
186-
val shortDateFormat = WeekViewUtil.getWeekdayWithNumericDayAndMonthFormat(this@BaseActivity, true)
187189
val normalDateFormat = WeekViewUtil.getWeekdayWithNumericDayAndMonthFormat(this@BaseActivity, false)
188190
weekView.dateTimeInterpreter = object : DateTimeInterpreter {
189191
override fun interpretTime(hour: Int, minutes: Int): String {
@@ -198,8 +200,13 @@ abstract class BaseActivity : AppCompatActivity(), WeekView.EventClickListener,
198200
}
199201
}
200202

201-
protected fun getEventTitle(time: Calendar): String {
202-
return String.format("Event of %02d:%02d %s/%d", time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH))
203+
protected fun getEventTitle(cal: Calendar, endCal: Calendar? = null): String {
204+
val date = cal.time
205+
if (endCal == null)
206+
return "${shortDateFormat.format(date)} ${timeFormat.format(date)}"
207+
else
208+
return "${shortDateFormat.format(date)} ${timeFormat.format(date)}..${timeFormat.format(endCal.time)}"
209+
// return String.format("%02d:%02d %s/%d", time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), time.get(Calendar.MONTH) + 1, time.get(Calendar.DAY_OF_MONTH))
203210
}
204211

205212
override fun onEventClick(event: WeekViewEvent, eventRect: RectF) {

sample/src/main/java/com/alamkanak/weekview/sample/BasicActivity.kt

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,22 @@ open class BasicActivity : BaseActivity() {
4040
var endTime = startTime.clone() as Calendar
4141
endTime.add(Calendar.HOUR, 1)
4242
endTime.set(Calendar.MONTH, newMonth - 1)
43-
var event = WeekViewEvent("First", getEventTitle(startTime), startTime, endTime)
43+
var event = WeekViewEvent("First", getEventTitle(startTime,endTime), startTime, endTime)
4444
event.color = resources.getColor(R.color.event_color_01)
4545
events.add(event)
4646

47+
startTime = Calendar.getInstance()
48+
startTime.set(Calendar.MINUTE, 0)
49+
startTime.set(Calendar.MONTH, newMonth - 1)
50+
startTime.set(Calendar.YEAR, newYear)
51+
endTime = startTime.clone() as Calendar
52+
endTime.set(Calendar.HOUR_OF_DAY, startTime.get(Calendar.HOUR_OF_DAY) + 1)
53+
endTime.set(Calendar.MINUTE, 0)
54+
endTime.set(Calendar.MONTH, newMonth - 1)
55+
event = WeekViewEvent("cur", "cur", startTime, endTime)
56+
event.color = 0xffff0000.toInt()
57+
events.add(event)
58+
4759
startTime = Calendar.getInstance()
4860
startTime.set(Calendar.HOUR_OF_DAY, 3)
4961
startTime.set(Calendar.MINUTE, 30)
@@ -53,7 +65,7 @@ open class BasicActivity : BaseActivity() {
5365
endTime.set(Calendar.HOUR_OF_DAY, 4)
5466
endTime.set(Calendar.MINUTE, 30)
5567
endTime.set(Calendar.MONTH, newMonth - 1)
56-
event = WeekViewEvent("Second", getEventTitle(startTime), startTime, endTime)
68+
event = WeekViewEvent("Second", getEventTitle(startTime,endTime), startTime, endTime)
5769
event.color = resources.getColor(R.color.event_color_05)
5870
events.add(event)
5971

@@ -65,7 +77,7 @@ open class BasicActivity : BaseActivity() {
6577
endTime = startTime.clone() as Calendar
6678
endTime.set(Calendar.HOUR_OF_DAY, 5)
6779
endTime.set(Calendar.MINUTE, 0)
68-
event = WeekViewEvent(10, getEventTitle(startTime), startTime, endTime)
80+
event = WeekViewEvent(10, getEventTitle(startTime,endTime), startTime, endTime)
6981
event.color = resources.getColor(R.color.event_color_03)
7082
events.add(event)
7183

@@ -77,7 +89,7 @@ open class BasicActivity : BaseActivity() {
7789
endTime = startTime.clone() as Calendar
7890
endTime.add(Calendar.HOUR_OF_DAY, 2)
7991
endTime.set(Calendar.MONTH, newMonth - 1)
80-
event = WeekViewEvent(2, getEventTitle(startTime), startTime, endTime)
92+
event = WeekViewEvent(2, getEventTitle(startTime,endTime), startTime, endTime)
8193
event.color = resources.getColor(R.color.event_color_02)
8294
events.add(event)
8395

@@ -90,7 +102,7 @@ open class BasicActivity : BaseActivity() {
90102
endTime = startTime.clone() as Calendar
91103
endTime.add(Calendar.HOUR_OF_DAY, 3)
92104
endTime.set(Calendar.MONTH, newMonth - 1)
93-
event = WeekViewEvent(3, getEventTitle(startTime), startTime, endTime)
105+
event = WeekViewEvent(3, getEventTitle(startTime,endTime), startTime, endTime)
94106
event.color = resources.getColor(R.color.event_color_03)
95107
events.add(event)
96108

@@ -102,7 +114,7 @@ open class BasicActivity : BaseActivity() {
102114
startTime.set(Calendar.YEAR, newYear)
103115
endTime = startTime.clone() as Calendar
104116
endTime.add(Calendar.HOUR_OF_DAY, 3)
105-
event = WeekViewEvent(4, getEventTitle(startTime), startTime, endTime)
117+
event = WeekViewEvent(4, getEventTitle(startTime,endTime), startTime, endTime)
106118
event.color = resources.getColor(R.color.event_color_04)
107119
events.add(event)
108120

@@ -114,7 +126,7 @@ open class BasicActivity : BaseActivity() {
114126
startTime.set(Calendar.YEAR, newYear)
115127
endTime = startTime.clone() as Calendar
116128
endTime.add(Calendar.HOUR_OF_DAY, 3)
117-
event = WeekViewEvent(5, getEventTitle(startTime), startTime, endTime)
129+
event = WeekViewEvent(5, getEventTitle(startTime,endTime), startTime, endTime)
118130
event.color = resources.getColor(R.color.event_color_01)
119131
events.add(event)
120132

@@ -126,7 +138,7 @@ open class BasicActivity : BaseActivity() {
126138
startTime.set(Calendar.YEAR, newYear)
127139
endTime = startTime.clone() as Calendar
128140
endTime.add(Calendar.HOUR_OF_DAY, 3)
129-
event = WeekViewEvent(5, getEventTitle(startTime), startTime, endTime)
141+
event = WeekViewEvent(5, getEventTitle(startTime,endTime), startTime, endTime)
130142
event.color = resources.getColor(R.color.event_color_02)
131143
events.add(event)
132144

@@ -138,7 +150,7 @@ open class BasicActivity : BaseActivity() {
138150
startTime.set(Calendar.YEAR, newYear)
139151
endTime = startTime.clone() as Calendar
140152
endTime.add(Calendar.HOUR_OF_DAY, 23)
141-
event = WeekViewEvent(7, getEventTitle(startTime), null, startTime, endTime, true)
153+
event = WeekViewEvent(7, getEventTitle(startTime,endTime), null, startTime, endTime, true)
142154
event.color = resources.getColor(R.color.event_color_04)
143155
events.add(event)
144156

@@ -151,7 +163,7 @@ open class BasicActivity : BaseActivity() {
151163
endTime = startTime.clone() as Calendar
152164
endTime.set(Calendar.DAY_OF_MONTH, 10)
153165
endTime.set(Calendar.HOUR_OF_DAY, 23)
154-
event = WeekViewEvent(8, getEventTitle(startTime), null, startTime, endTime, true)
166+
event = WeekViewEvent(8, getEventTitle(startTime,endTime), null, startTime, endTime, true)
155167
event.color = resources.getColor(R.color.event_color_03)
156168
events.add(event)
157169

@@ -166,7 +178,7 @@ open class BasicActivity : BaseActivity() {
166178
startTime.set(Calendar.YEAR, newYear)
167179
endTime = startTime.clone() as Calendar
168180
endTime.set(Calendar.DAY_OF_MONTH, 11)
169-
event = WeekViewEvent(8, getEventTitle(startTime), null, startTime, endTime, true)
181+
event = WeekViewEvent(8, getEventTitle(startTime,endTime), null, startTime, endTime, true)
170182
event.color = resources.getColor(R.color.event_color_01)
171183

172184
startTime = Calendar.getInstance()
@@ -178,7 +190,7 @@ open class BasicActivity : BaseActivity() {
178190
endTime.set(Calendar.HOUR_OF_DAY, 19)
179191
endTime.set(Calendar.MINUTE, 30)
180192
endTime.set(Calendar.MONTH, newMonth - 1)
181-
event = WeekViewEvent(22, getEventTitle(startTime), startTime, endTime)
193+
event = WeekViewEvent(22, getEventTitle(startTime,endTime), startTime, endTime)
182194
event.color = resources.getColor(R.color.event_color_02)
183195
events.add(event)
184196

0 commit comments

Comments
 (0)