mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.2 KiB
Java
158 lines
4.2 KiB
Java
/**
|
|
* Copyright (c) 2012 Todoroo Inc
|
|
*
|
|
* See the file "LICENSE" for the full license governing this code.
|
|
*/
|
|
package com.timsu.astrid.data.task;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import android.content.ContentValues;
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
|
|
import com.timsu.astrid.data.LegacyAbstractController;
|
|
import com.timsu.astrid.data.alerts.AlertController;
|
|
|
|
|
|
|
|
/** Fields that you would want to read or edit in the onTaskSave and onTaskComplete
|
|
* event handlers */
|
|
public class TaskModelForHandlers extends AbstractTaskModel {
|
|
|
|
static String[] FIELD_LIST = new String[] {
|
|
LegacyAbstractController.KEY_ROWID,
|
|
REPEAT,
|
|
DEFINITE_DUE_DATE,
|
|
PREFERRED_DUE_DATE,
|
|
HIDDEN_UNTIL,
|
|
PROGRESS_PERCENTAGE,
|
|
ESTIMATED_SECONDS,
|
|
LAST_NOTIFIED,
|
|
NOTIFICATIONS,
|
|
NOTIFICATION_FLAGS,
|
|
FLAGS,
|
|
};
|
|
|
|
/**
|
|
* This method updates the task to reflect a new repeat iteration. It moves
|
|
* back the due dates and updates other task properties accordingly.
|
|
*
|
|
* @param context
|
|
* @param taskController
|
|
* @param repeatInfo
|
|
*/
|
|
@SuppressWarnings("deprecation")
|
|
public void repeatTaskBy(Context context, TaskController taskController,
|
|
RepeatInfo repeatInfo) {
|
|
|
|
// move dates back
|
|
if(getDefiniteDueDate() != null)
|
|
setDefiniteDueDate(repeatInfo.shiftDate(getDefiniteDueDate()));
|
|
if(getHiddenUntil() != null)
|
|
setHiddenUntil(repeatInfo.shiftDate(getHiddenUntil()));
|
|
if(getPreferredDueDate() != null)
|
|
setPreferredDueDate(repeatInfo.shiftDate(getPreferredDueDate()));
|
|
setProgressPercentage(0);
|
|
|
|
// set elapsed time to 0... yes, we're losing data
|
|
setElapsedSeconds(0);
|
|
|
|
// if no deadlines set, create one (so users don't get confused)
|
|
if(getDefiniteDueDate() == null && getPreferredDueDate() == null)
|
|
setPreferredDueDate(repeatInfo.shiftDate(new Date()));
|
|
|
|
// shift fixed alerts
|
|
AlertController alertController = new AlertController(context);
|
|
alertController.open();
|
|
List<Date> alerts = alertController.getTaskAlerts(getTaskIdentifier());
|
|
alertController.removeAlerts(getTaskIdentifier());
|
|
for(int i = 0; i < alerts.size(); i++) {
|
|
Date newAlert = repeatInfo.shiftDate(alerts.get(i));
|
|
alertController.addAlert(getTaskIdentifier(), newAlert);
|
|
alerts.set(i, newAlert);
|
|
}
|
|
|
|
// reset periodic alerts
|
|
setLastNotificationTime(null);
|
|
|
|
// ReminderService.updateAlarm(context, taskController, alertController, this);
|
|
alertController.close();
|
|
}
|
|
|
|
// --- constructors
|
|
|
|
public TaskModelForHandlers(Cursor cursor, ContentValues setValues) {
|
|
super(cursor);
|
|
this.setValues = setValues;
|
|
}
|
|
|
|
// --- getters and setters
|
|
|
|
@Override
|
|
public RepeatInfo getRepeat() {
|
|
return super.getRepeat();
|
|
}
|
|
|
|
@Override
|
|
public Integer getNotificationIntervalSeconds() {
|
|
return super.getNotificationIntervalSeconds();
|
|
}
|
|
|
|
@Override
|
|
public boolean isTaskCompleted() {
|
|
return super.isTaskCompleted();
|
|
}
|
|
|
|
@Override
|
|
public Date getDefiniteDueDate() {
|
|
return super.getDefiniteDueDate();
|
|
}
|
|
|
|
@Override
|
|
public Integer getEstimatedSeconds() {
|
|
return super.getEstimatedSeconds();
|
|
}
|
|
|
|
@Override
|
|
public Date getHiddenUntil() {
|
|
return super.getHiddenUntil();
|
|
}
|
|
|
|
@Override
|
|
public Date getPreferredDueDate() {
|
|
return super.getPreferredDueDate();
|
|
}
|
|
@Override
|
|
public int getNotificationFlags() {
|
|
return super.getNotificationFlags();
|
|
}
|
|
|
|
@Override
|
|
public Date getLastNotificationDate() {
|
|
return super.getLastNotificationDate();
|
|
}
|
|
|
|
@Override
|
|
public int getFlags() {
|
|
return super.getFlags();
|
|
}
|
|
|
|
@Override
|
|
public void setDefiniteDueDate(Date definiteDueDate) {
|
|
super.setDefiniteDueDate(definiteDueDate);
|
|
}
|
|
|
|
@Override
|
|
public void setPreferredDueDate(Date preferredDueDate) {
|
|
super.setPreferredDueDate(preferredDueDate);
|
|
}
|
|
|
|
@Override
|
|
public void setHiddenUntil(Date hiddenUntil) {
|
|
super.setHiddenUntil(hiddenUntil);
|
|
}
|
|
|
|
}
|