Skip to content

Commit c51239a

Browse files
author
Jens Claes
committed
Merge branch 'AllDay_events' into develop
2 parents f07ac7b + 5775498 commit c51239a

File tree

3 files changed

+92
-68
lines changed

3 files changed

+92
-68
lines changed

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

Lines changed: 5 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import java.util.List;
4242
import java.util.Locale;
4343

44+
import static com.alamkanak.weekview.WeekViewUtil.*;
45+
4446
/**
4547
* Created by Raquib-ul-Alam Kanak on 7/21/2014.
4648
* Website: http://alamkanak.github.io/
@@ -1051,43 +1053,9 @@ else if (periodToFetch == mFetchedPeriod+1){
10511053
private void cacheEvent(WeekViewEvent event) {
10521054
if(event.getStartTime().compareTo(event.getEndTime()) >= 0)
10531055
return;
1054-
if (!isSameDay(event.getStartTime(), event.getEndTime())) {
1055-
// Add first day.
1056-
Calendar endTime = (Calendar) event.getStartTime().clone();
1057-
endTime.set(Calendar.HOUR_OF_DAY, 23);
1058-
endTime.set(Calendar.MINUTE, 59);
1059-
WeekViewEvent event1 = new WeekViewEvent(event.getId(), event.getName(), event.getLocation(), event.getStartTime(), endTime, event.isAllDay());
1060-
event1.setColor(event.getColor());
1061-
mEventRects.add(new EventRect(event1, event, null));
1062-
1063-
// Add other days.
1064-
Calendar otherDay = (Calendar) event.getStartTime().clone();
1065-
otherDay.add(Calendar.DATE, 1);
1066-
while (!isSameDay(otherDay, event.getEndTime())) {
1067-
Calendar overDay = (Calendar) otherDay.clone();
1068-
overDay.set(Calendar.HOUR_OF_DAY, 0);
1069-
overDay.set(Calendar.MINUTE, 0);
1070-
Calendar endOfOverDay = (Calendar) overDay.clone();
1071-
endOfOverDay.set(Calendar.HOUR_OF_DAY, 23);
1072-
endOfOverDay.set(Calendar.MINUTE, 59);
1073-
WeekViewEvent eventMore = new WeekViewEvent(event.getId(), event.getName(),null, overDay, endOfOverDay, event.isAllDay());
1074-
eventMore.setColor(event.getColor());
1075-
mEventRects.add(new EventRect(eventMore, event, null));
1076-
1077-
// Add next day.
1078-
otherDay.add(Calendar.DATE, 1);
1079-
}
1080-
1081-
// Add last day.
1082-
Calendar startTime = (Calendar) event.getEndTime().clone();
1083-
startTime.set(Calendar.HOUR_OF_DAY, 0);
1084-
startTime.set(Calendar.MINUTE, 0);
1085-
WeekViewEvent event2 = new WeekViewEvent(event.getId(), event.getName(), event.getLocation(), startTime, event.getEndTime(), event.isAllDay());
1086-
event2.setColor(event.getColor());
1087-
mEventRects.add(new EventRect(event2, event, null));
1088-
}
1089-
else {
1090-
mEventRects.add(new EventRect(event, event, null));
1056+
List<WeekViewEvent> splitedEvents = event.splitWeekViewEvents();
1057+
for(WeekViewEvent splitedEvent: splitedEvents){
1058+
mEventRects.add(new EventRect(splitedEvent, event, null));
10911059
}
10921060
}
10931061

@@ -2071,35 +2039,4 @@ public interface ScrollListener {
20712039
*/
20722040
void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay);
20732041
}
2074-
2075-
2076-
/////////////////////////////////////////////////////////////////
2077-
//
2078-
// Helper methods.
2079-
//
2080-
/////////////////////////////////////////////////////////////////
2081-
2082-
/**
2083-
* Checks if two times are on the same day.
2084-
* @param dayOne The first day.
2085-
* @param dayTwo The second day.
2086-
* @return Whether the times are on the same day.
2087-
*/
2088-
private boolean isSameDay(Calendar dayOne, Calendar dayTwo) {
2089-
return dayOne.get(Calendar.YEAR) == dayTwo.get(Calendar.YEAR) && dayOne.get(Calendar.DAY_OF_YEAR) == dayTwo.get(Calendar.DAY_OF_YEAR);
2090-
}
2091-
2092-
/**
2093-
* Returns a calendar instance at the start of this day
2094-
* @return the calendar instance
2095-
*/
2096-
private Calendar today(){
2097-
Calendar today = Calendar.getInstance();
2098-
today.set(Calendar.HOUR_OF_DAY, 0);
2099-
today.set(Calendar.MINUTE, 0);
2100-
today.set(Calendar.SECOND, 0);
2101-
today.set(Calendar.MILLISECOND, 0);
2102-
return today;
2103-
}
2104-
21052042
}

library/src/main/java/com/alamkanak/weekview/WeekViewEvent.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.alamkanak.weekview;
22

3+
import java.util.ArrayList;
34
import java.util.Calendar;
5+
import java.util.List;
6+
7+
import static com.alamkanak.weekview.WeekViewUtil.*;
48

59
/**
610
* Created by Raquib-ul-Alam Kanak on 7/21/2014.
@@ -167,4 +171,48 @@ public boolean equals(Object o) {
167171
public int hashCode() {
168172
return (int) (mId ^ (mId >>> 32));
169173
}
174+
175+
public List<WeekViewEvent> splitWeekViewEvents(){
176+
//This function splits the WeekViewEvent in WeekViewEvents by day
177+
List<WeekViewEvent> events = new ArrayList<WeekViewEvent>();
178+
if (!isSameDay(this.getStartTime(), this.getEndTime())) {
179+
Calendar endTime = (Calendar) this.getStartTime().clone();
180+
endTime.set(Calendar.HOUR_OF_DAY, 23);
181+
endTime.set(Calendar.MINUTE, 59);
182+
WeekViewEvent event1 = new WeekViewEvent(this.getId(), this.getName(), this.getLocation(), this.getStartTime(), endTime, this.isAllDay());
183+
event1.setColor(this.getColor());
184+
events.add(event1);
185+
186+
// Add other days.
187+
Calendar otherDay = (Calendar) this.getStartTime().clone();
188+
otherDay.add(Calendar.DATE, 1);
189+
while (!isSameDay(otherDay, this.getEndTime())) {
190+
Calendar overDay = (Calendar) otherDay.clone();
191+
overDay.set(Calendar.HOUR_OF_DAY, 0);
192+
overDay.set(Calendar.MINUTE, 0);
193+
Calendar endOfOverDay = (Calendar) overDay.clone();
194+
endOfOverDay.set(Calendar.HOUR_OF_DAY, 23);
195+
endOfOverDay.set(Calendar.MINUTE, 59);
196+
WeekViewEvent eventMore = new WeekViewEvent(this.getId(), this.getName(), null, overDay, endOfOverDay, this.isAllDay());
197+
eventMore.setColor(this.getColor());
198+
events.add(eventMore);
199+
200+
// Add next day.
201+
otherDay.add(Calendar.DATE, 1);
202+
}
203+
204+
// Add last day.
205+
Calendar startTime = (Calendar) this.getEndTime().clone();
206+
startTime.set(Calendar.HOUR_OF_DAY, 0);
207+
startTime.set(Calendar.MINUTE, 0);
208+
WeekViewEvent event2 = new WeekViewEvent(this.getId(), this.getName(), this.getLocation(), startTime, this.getEndTime(), this.isAllDay());
209+
event2.setColor(this.getColor());
210+
events.add(event2);
211+
}
212+
else{
213+
events.add(this);
214+
}
215+
216+
return events;
217+
}
170218
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.alamkanak.weekview;
2+
3+
import java.util.Calendar;
4+
5+
/**
6+
* Created by jesse on 6/02/2016.
7+
*/
8+
public class WeekViewUtil {
9+
10+
11+
/////////////////////////////////////////////////////////////////
12+
//
13+
// Helper methods.
14+
//
15+
/////////////////////////////////////////////////////////////////
16+
17+
/**
18+
* Checks if two times are on the same day.
19+
* @param dayOne The first day.
20+
* @param dayTwo The second day.
21+
* @return Whether the times are on the same day.
22+
*/
23+
public static boolean isSameDay(Calendar dayOne, Calendar dayTwo) {
24+
return dayOne.get(Calendar.YEAR) == dayTwo.get(Calendar.YEAR) && dayOne.get(Calendar.DAY_OF_YEAR) == dayTwo.get(Calendar.DAY_OF_YEAR);
25+
}
26+
27+
/**
28+
* Returns a calendar instance at the start of this day
29+
* @return the calendar instance
30+
*/
31+
public static Calendar today(){
32+
Calendar today = Calendar.getInstance();
33+
today.set(Calendar.HOUR_OF_DAY, 0);
34+
today.set(Calendar.MINUTE, 0);
35+
today.set(Calendar.SECOND, 0);
36+
today.set(Calendar.MILLISECOND, 0);
37+
return today;
38+
}
39+
}

0 commit comments

Comments
 (0)