@@ -94,6 +94,8 @@ public class WeekView extends View {
94
94
private int mDayNameLength = LENGTH_LONG ;
95
95
private int mOverlappingEventGap = 0 ;
96
96
private int mEventMarginVertical = 0 ;
97
+ private Calendar mFirstVisibleDay ;
98
+ private Calendar mLastVisibleDay ;
97
99
98
100
// Listeners.
99
101
private EventClickListener mEventClickListener ;
@@ -357,7 +359,7 @@ private void drawHeaderRowAndEvents(Canvas canvas) {
357
359
// Consider scroll offset.
358
360
if (mCurrentScrollDirection == Direction .HORIZONTAL ) mCurrentOrigin .x -= mDistanceX ;
359
361
int leftDaysWithGaps = (int ) -(Math .ceil (mCurrentOrigin .x / (mWidthPerDay + mColumnGap )));
360
- float startFromPixel = mCurrentOrigin .x + (mWidthPerDay + mColumnGap ) * leftDaysWithGaps +
362
+ float startFromPixel = mCurrentOrigin .x + (mWidthPerDay + mColumnGap ) * leftDaysWithGaps +
361
363
mHeaderColumnWidth ;
362
364
float startPixel = startFromPixel ;
363
365
@@ -379,13 +381,17 @@ private void drawHeaderRowAndEvents(Canvas canvas) {
379
381
}
380
382
381
383
// Iterate through each day.
384
+ mFirstVisibleDay = (Calendar ) mToday .clone ();
385
+ mFirstVisibleDay .add (Calendar .DATE , leftDaysWithGaps );
382
386
for (int dayNumber = leftDaysWithGaps + 1 ;
383
387
dayNumber <= leftDaysWithGaps + mNumberOfVisibleDays + 1 ;
384
388
dayNumber ++) {
385
389
386
390
// Check if the day is today.
387
391
day = (Calendar ) mToday .clone ();
392
+ mLastVisibleDay = (Calendar ) day .clone ();
388
393
day .add (Calendar .DATE , dayNumber - 1 );
394
+ mLastVisibleDay .add (Calendar .DATE , dayNumber - 2 );
389
395
boolean sameDay = isSameDay (day , mToday );
390
396
391
397
// Get more events if necessary. We want to store the events 3 months beforehand. Get
@@ -749,7 +755,7 @@ private boolean isEventsCollide(WeekViewEvent event1, WeekViewEvent event2) {
749
755
long end1 = event1 .getEndTime ().getTimeInMillis ();
750
756
long start2 = event2 .getStartTime ().getTimeInMillis ();
751
757
long end2 = event2 .getEndTime ().getTimeInMillis ();
752
- return ( start1 >= start2 && start1 <= end2 ) || (end1 >= start2 && end1 <= end2 );
758
+ return !(( start1 >= end2 ) || (end1 <= start2 ) );
753
759
}
754
760
755
761
@@ -1066,6 +1072,22 @@ public void setEventMarginVertical(int eventMarginVertical) {
1066
1072
invalidate ();
1067
1073
}
1068
1074
1075
+ /**
1076
+ * Returns the first visible day in the week view.
1077
+ * @return The first visible day in the week view.
1078
+ */
1079
+ public Calendar getFirstVisibleDay () {
1080
+ return mFirstVisibleDay ;
1081
+ }
1082
+
1083
+ /**
1084
+ * Returns the last visible day in the week view.
1085
+ * @return The last visible day in the week view.
1086
+ */
1087
+ public Calendar getLastVisibleDay () {
1088
+ return mLastVisibleDay ;
1089
+ }
1090
+
1069
1091
/////////////////////////////////////////////////////////////////
1070
1092
//
1071
1093
// Functions related to scrolling.
0 commit comments