|
Lines 40-48
Link Here
|
| 40 |
* TODO: clean-up |
40 |
* TODO: clean-up |
| 41 |
* |
41 |
* |
| 42 |
* @author Mik Kersten |
42 |
* @author Mik Kersten |
|
|
43 |
* @author Rob Elves (task activity) |
| 43 |
*/ |
44 |
*/ |
| 44 |
public class TaskListManager { |
45 |
public class TaskListManager { |
| 45 |
|
46 |
|
|
|
47 |
// TODO: get these two fields from preferences |
| 48 |
private static final int START_DAY = Calendar.MONDAY; |
| 49 |
|
| 50 |
private static final int START_HOUR = 9; |
| 51 |
|
| 46 |
private static final int NUM_WEEKS_PREVIOUS = -1; |
52 |
private static final int NUM_WEEKS_PREVIOUS = -1; |
| 47 |
|
53 |
|
| 48 |
private static final int NUM_WEEKS_NEXT = 1; |
54 |
private static final int NUM_WEEKS_NEXT = 1; |
|
Lines 167-174
Link Here
|
| 167 |
this.taskListFile = file; |
173 |
this.taskListFile = file; |
| 168 |
this.taskListWriter = taskListWriter; |
174 |
this.taskListWriter = taskListWriter; |
| 169 |
this.nextLocalTaskId = startId; |
175 |
this.nextLocalTaskId = startId; |
| 170 |
|
176 |
// setupCalendarRanges(); |
| 171 |
setupCalendarRanges(); |
|
|
| 172 |
MylarPlugin.getContextManager().addActivityMetaContextListener(CONTEXT_LISTENER); |
177 |
MylarPlugin.getContextManager().addActivityMetaContextListener(CONTEXT_LISTENER); |
| 173 |
} |
178 |
} |
| 174 |
|
179 |
|
|
Lines 203-209
Link Here
|
| 203 |
private void parseFutureReminders() { |
208 |
private void parseFutureReminders() { |
| 204 |
activityFuture.clear(); |
209 |
activityFuture.clear(); |
| 205 |
activityNextWeek.clear(); |
210 |
activityNextWeek.clear(); |
|
|
211 |
HashSet<ITask> toRemove = new HashSet<ITask>(); |
| 212 |
toRemove.addAll(activityThisWeek.getChildren()); |
| 213 |
for (ITask activity : toRemove) { |
| 214 |
DateRangeActivityDelegate delegate = (DateRangeActivityDelegate) activity; |
| 215 |
Calendar calendar = GregorianCalendar.getInstance(); |
| 216 |
calendar.setTime(delegate.getReminderDate()); |
| 217 |
if (!activityThisWeek.includes(calendar) && delegate.getActivity() == 0) { |
| 218 |
activityThisWeek.remove(delegate); |
| 219 |
} |
| 220 |
} |
| 206 |
GregorianCalendar tempCalendar = new GregorianCalendar(); |
221 |
GregorianCalendar tempCalendar = new GregorianCalendar(); |
|
|
222 |
tempCalendar.setFirstDayOfWeek(START_DAY); |
| 207 |
for (ITask task : tasksWithReminders) { |
223 |
for (ITask task : tasksWithReminders) { |
| 208 |
if (task.getReminderDate() != null) { |
224 |
if (task.getReminderDate() != null) { |
| 209 |
tempCalendar.setTime(task.getReminderDate()); |
225 |
tempCalendar.setTime(task.getReminderDate()); |
|
Lines 234-239
Link Here
|
| 234 |
.getTask(event.getStructureHandle()); |
250 |
.getTask(event.getStructureHandle()); |
| 235 |
if (currentTask != null) { |
251 |
if (currentTask != null) { |
| 236 |
GregorianCalendar calendar = new GregorianCalendar(); |
252 |
GregorianCalendar calendar = new GregorianCalendar(); |
|
|
253 |
calendar.setFirstDayOfWeek(START_DAY); |
| 237 |
calendar.setTime(event.getDate()); |
254 |
calendar.setTime(event.getDate()); |
| 238 |
currentTaskStart = calendar; |
255 |
currentTaskStart = calendar; |
| 239 |
currentHandle = event.getStructureHandle(); |
256 |
currentHandle = event.getStructureHandle(); |
|
Lines 246-251
Link Here
|
| 246 |
if (!event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE) |
263 |
if (!event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE) |
| 247 |
&& currentHandle.equals(event.getStructureHandle())) { |
264 |
&& currentHandle.equals(event.getStructureHandle())) { |
| 248 |
GregorianCalendar calendarEnd = new GregorianCalendar(); |
265 |
GregorianCalendar calendarEnd = new GregorianCalendar(); |
|
|
266 |
calendarEnd.setFirstDayOfWeek(START_DAY); |
| 249 |
calendarEnd.setTime(event.getDate()); |
267 |
calendarEnd.setTime(event.getDate()); |
| 250 |
calendarEnd.getTime(); |
268 |
calendarEnd.getTime(); |
| 251 |
currentTaskEnd = calendarEnd; |
269 |
currentTaskEnd = calendarEnd; |
|
Lines 305-323
Link Here
|
| 305 |
private void setupCalendarRanges() { |
323 |
private void setupCalendarRanges() { |
| 306 |
|
324 |
|
| 307 |
GregorianCalendar currentBegin = new GregorianCalendar(); |
325 |
GregorianCalendar currentBegin = new GregorianCalendar(); |
|
|
326 |
currentBegin.setFirstDayOfWeek(START_DAY); |
| 308 |
Date startTime = new Date(); |
327 |
Date startTime = new Date(); |
| 309 |
currentBegin.setTime(startTime); |
328 |
currentBegin.setTime(startTime); |
| 310 |
snapToStartOfWeek(currentBegin); |
329 |
snapToStartOfWeek(currentBegin); |
| 311 |
GregorianCalendar currentEnd = new GregorianCalendar(); |
330 |
GregorianCalendar currentEnd = new GregorianCalendar(); |
|
|
331 |
currentEnd.setFirstDayOfWeek(START_DAY); |
| 312 |
snapToEndOfWeek(currentEnd); |
332 |
snapToEndOfWeek(currentEnd); |
| 313 |
activityThisWeek = new DateRangeContainer(currentBegin, currentEnd, DESCRIPTION_THIS_WEEK, taskList); |
333 |
activityThisWeek = new DateRangeContainer(currentBegin, currentEnd, DESCRIPTION_THIS_WEEK, taskList); |
| 314 |
dateRangeContainers.add(activityThisWeek); |
334 |
dateRangeContainers.add(activityThisWeek); |
| 315 |
|
335 |
|
| 316 |
GregorianCalendar previousStart = new GregorianCalendar(); |
336 |
GregorianCalendar previousStart = new GregorianCalendar(); |
|
|
337 |
previousStart.setFirstDayOfWeek(START_DAY); |
| 317 |
previousStart.setTime(new Date()); |
338 |
previousStart.setTime(new Date()); |
| 318 |
previousStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS); |
339 |
previousStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS); |
| 319 |
snapToStartOfWeek(previousStart); |
340 |
snapToStartOfWeek(previousStart); |
| 320 |
GregorianCalendar previousEnd = new GregorianCalendar(); |
341 |
GregorianCalendar previousEnd = new GregorianCalendar(); |
|
|
342 |
previousEnd.setFirstDayOfWeek(START_DAY); |
| 321 |
previousEnd.setTime(new Date()); |
343 |
previousEnd.setTime(new Date()); |
| 322 |
previousEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS); |
344 |
previousEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS); |
| 323 |
snapToEndOfWeek(previousEnd); |
345 |
snapToEndOfWeek(previousEnd); |
|
Lines 326-335
Link Here
|
| 326 |
dateRangeContainers.add(activityPreviousWeek); |
348 |
dateRangeContainers.add(activityPreviousWeek); |
| 327 |
|
349 |
|
| 328 |
GregorianCalendar nextStart = new GregorianCalendar(); |
350 |
GregorianCalendar nextStart = new GregorianCalendar(); |
|
|
351 |
nextStart.setFirstDayOfWeek(START_DAY); |
| 329 |
nextStart.setTime(new Date()); |
352 |
nextStart.setTime(new Date()); |
| 330 |
nextStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT); |
353 |
nextStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT); |
| 331 |
snapToStartOfWeek(nextStart); |
354 |
snapToStartOfWeek(nextStart); |
| 332 |
GregorianCalendar nextEnd = new GregorianCalendar(); |
355 |
GregorianCalendar nextEnd = new GregorianCalendar(); |
|
|
356 |
nextEnd.setFirstDayOfWeek(START_DAY); |
| 333 |
nextEnd.setTime(new Date()); |
357 |
nextEnd.setTime(new Date()); |
| 334 |
nextEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT); |
358 |
nextEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT); |
| 335 |
snapToEndOfWeek(nextEnd); |
359 |
snapToEndOfWeek(nextEnd); |
|
Lines 338-347
Link Here
|
| 338 |
dateRangeContainers.add(activityNextWeek); |
362 |
dateRangeContainers.add(activityNextWeek); |
| 339 |
|
363 |
|
| 340 |
GregorianCalendar futureStart = new GregorianCalendar(); |
364 |
GregorianCalendar futureStart = new GregorianCalendar(); |
|
|
365 |
futureStart.setFirstDayOfWeek(START_DAY); |
| 341 |
futureStart.setTime(new Date()); |
366 |
futureStart.setTime(new Date()); |
| 342 |
futureStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_START); |
367 |
futureStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_START); |
| 343 |
snapToStartOfWeek(futureStart); |
368 |
snapToStartOfWeek(futureStart); |
| 344 |
GregorianCalendar futureEnd = new GregorianCalendar(); |
369 |
GregorianCalendar futureEnd = new GregorianCalendar(); |
|
|
370 |
futureEnd.setFirstDayOfWeek(START_DAY); |
| 345 |
futureEnd.setTime(new Date()); |
371 |
futureEnd.setTime(new Date()); |
| 346 |
futureEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_END); |
372 |
futureEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_END); |
| 347 |
snapToEndOfWeek(futureEnd); |
373 |
snapToEndOfWeek(futureEnd); |
|
Lines 350-359
Link Here
|
| 350 |
dateRangeContainers.add(activityFuture); |
376 |
dateRangeContainers.add(activityFuture); |
| 351 |
|
377 |
|
| 352 |
GregorianCalendar pastStart = new GregorianCalendar(); |
378 |
GregorianCalendar pastStart = new GregorianCalendar(); |
|
|
379 |
pastStart.setFirstDayOfWeek(START_DAY); |
| 353 |
pastStart.setTime(new Date()); |
380 |
pastStart.setTime(new Date()); |
| 354 |
pastStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_START); |
381 |
pastStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_START); |
| 355 |
snapToStartOfWeek(pastStart); |
382 |
snapToStartOfWeek(pastStart); |
| 356 |
GregorianCalendar pastEnd = new GregorianCalendar(); |
383 |
GregorianCalendar pastEnd = new GregorianCalendar(); |
|
|
384 |
pastEnd.setFirstDayOfWeek(START_DAY); |
| 357 |
pastEnd.setTime(new Date()); |
385 |
pastEnd.setTime(new Date()); |
| 358 |
pastEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_END); |
386 |
pastEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_END); |
| 359 |
snapToEndOfWeek(pastEnd); |
387 |
snapToEndOfWeek(pastEnd); |
|
Lines 363-369
Link Here
|
| 363 |
|
391 |
|
| 364 |
private void snapToStartOfWeek(GregorianCalendar cal) { |
392 |
private void snapToStartOfWeek(GregorianCalendar cal) { |
| 365 |
cal.getTime(); |
393 |
cal.getTime(); |
| 366 |
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); |
394 |
cal.set(Calendar.DAY_OF_WEEK, START_DAY); |
| 367 |
cal.set(Calendar.HOUR_OF_DAY, 0); |
395 |
cal.set(Calendar.HOUR_OF_DAY, 0); |
| 368 |
cal.set(Calendar.MINUTE, 0); |
396 |
cal.set(Calendar.MINUTE, 0); |
| 369 |
cal.set(Calendar.SECOND, 0); |
397 |
cal.set(Calendar.SECOND, 0); |
|
Lines 373-379
Link Here
|
| 373 |
|
401 |
|
| 374 |
private void snapToEndOfWeek(GregorianCalendar cal) { |
402 |
private void snapToEndOfWeek(GregorianCalendar cal) { |
| 375 |
cal.getTime(); |
403 |
cal.getTime(); |
| 376 |
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); |
404 |
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// FRIDAY |
| 377 |
cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY)); |
405 |
cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY)); |
| 378 |
cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE)); |
406 |
cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE)); |
| 379 |
cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND)); |
407 |
cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND)); |
|
Lines 381-386
Link Here
|
| 381 |
cal.getTime(); |
409 |
cal.getTime(); |
| 382 |
} |
410 |
} |
| 383 |
|
411 |
|
|
|
412 |
public void setTomorrow(Calendar reminderCalendar) { |
| 413 |
reminderCalendar.add(Calendar.DAY_OF_MONTH, 1); |
| 414 |
reminderCalendar.set(Calendar.HOUR_OF_DAY, START_HOUR); |
| 415 |
reminderCalendar.set(Calendar.MINUTE, 0); |
| 416 |
reminderCalendar.set(Calendar.SECOND, 0); |
| 417 |
reminderCalendar.set(Calendar.MILLISECOND, 0); |
| 418 |
} |
| 419 |
|
| 384 |
public Object[] getDateRanges() { |
420 |
public Object[] getDateRanges() { |
| 385 |
// parseFutureReminders(); |
421 |
// parseFutureReminders(); |
| 386 |
return dateRangeContainers.toArray(); |
422 |
return dateRangeContainers.toArray(); |
|
Lines 404-410
Link Here
|
| 404 |
} |
440 |
} |
| 405 |
|
441 |
|
| 406 |
for (ITask task : taskList.getAllTasks()) { |
442 |
for (ITask task : taskList.getAllTasks()) { |
| 407 |
if (task.getReminderDate() != null) |
443 |
if (task.getReminderDate() != null)// && task.hasBeenReminded() |
|
|
444 |
// != true |
| 408 |
tasksWithReminders.add(task); |
445 |
tasksWithReminders.add(task); |
| 409 |
} |
446 |
} |
| 410 |
resetActivity(); |
447 |
resetActivity(); |