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.
152 lines
4.5 KiB
Java
152 lines
4.5 KiB
Java
/*
|
|
* ASTRID: Android's Simple Task Recording Dashboard
|
|
*
|
|
* Copyright (c) 2009 Tim Su
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
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.AbstractController;
|
|
import com.timsu.astrid.data.alerts.AlertController;
|
|
import com.timsu.astrid.utilities.Notifications;
|
|
import com.timsu.astrid.utilities.Notifications.Notifiable;
|
|
|
|
|
|
|
|
/** Fields that you would want to edit pertaining to repeats */
|
|
public class TaskModelForRepeat extends AbstractTaskModel implements Notifiable {
|
|
|
|
static String[] FIELD_LIST = new String[] {
|
|
AbstractController.KEY_ROWID,
|
|
REPEAT,
|
|
DEFINITE_DUE_DATE,
|
|
PREFERRED_DUE_DATE,
|
|
HIDDEN_UNTIL,
|
|
PROGRESS_PERCENTAGE,
|
|
ESTIMATED_SECONDS,
|
|
LAST_NOTIFIED,
|
|
NOTIFICATIONS,
|
|
NOTIFICATION_FLAGS,
|
|
};
|
|
|
|
public void repeatTaskBy(Context context, TaskController taskController,
|
|
RepeatInfo repeatInfo) {
|
|
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);
|
|
}
|
|
Notifications.updateAlarm(context, taskController, alertController, this);
|
|
alertController.close();
|
|
}
|
|
|
|
// --- constructors
|
|
|
|
public TaskModelForRepeat(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 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);
|
|
}
|
|
|
|
}
|