131
131
void cd_clock_remove_task_from_list (CDClockTask *pTask, CairoDockModuleInstance *myApplet)
133
133
myData.pTasks = g_list_remove (myData.pTasks, pTask);
134
myData.pMissedTasks = g_list_remove (myData.pMissedTasks, pTask);
134
135
myData.pNextTask = cd_clock_get_next_scheduled_task (myApplet);
135
136
myData.pNextAnniversary = cd_clock_get_next_anniversary (myApplet);
155
156
g_list_foreach (myData.pTasks, (GFunc)cd_clock_free_task, NULL);
156
157
g_list_free (myData.pTasks);
158
g_list_free (myData.pMissedTasks);
157
159
myData.pTasks = NULL;
158
160
myData.pNextTask = NULL;
161
myData.pMissedTasks = NULL;
161
164
CDClockTask *cd_clock_get_task_by_id (const gchar *cID, CairoDockModuleInstance *myApplet)
390
GList *cd_clock_get_missed_tasks (CairoDockModuleInstance *myApplet)
392
GList *pTaskList = NULL;
393
guint iDay = myData.currentTime.tm_mday;
394
guint iMonth = myData.currentTime.tm_mon;
395
guint iYear = myData.currentTime.tm_year + 1900;
396
guint iHour = myData.currentTime.tm_hour;
397
guint iMinute = myData.currentTime.tm_min;
399
GDate* pCurrentDate = g_date_new_dmy (iDay, iMonth + 1, iYear);
400
GDate* pDate = g_date_new ();
405
for (t = myData.pTasks; t != NULL; t = t->next)
408
if (pTask->bAcknowledged)
411
switch (pTask->iFrequency)
413
case CD_TASK_DONT_REPEAT:
418
g_date_set_dmy (pDate, d, m, y);
419
iDelta = g_date_days_between (pCurrentDate, pDate);
422
case CD_TASK_EACH_MONTH:
426
g_date_set_dmy (pDate, d, m, y);
427
iDelta = g_date_days_between (pCurrentDate, pDate);
428
if (iDelta > 0) // pDate est apres pCurrentDate => on teste le mois d'avant.
433
g_date_set_dmy (pDate, d, m, y);
438
y = pTask->iYear - 1;
439
g_date_set_dmy (pDate, d, m, y);
441
iDelta = g_date_days_between (pCurrentDate, pDate);
445
case CD_TASK_EACH_YEAR:
449
g_date_set_dmy (pDate, d, m, y);
450
iDelta = g_date_days_between (pCurrentDate, pDate);
451
//g_print ("iDelta : %d/%d/%d -> %d (%s)\n", d, m, y, iDelta, pTask->cTitle);
452
if (iDelta > 0) // pDate est apres pCurrentDate => on teste l'annee d'avant.
455
g_date_set_dmy (pDate, d, m, y);
456
iDelta = g_date_days_between (pCurrentDate, pDate);
461
if (iDelta <= 0 && iDelta > -7)
463
if (iDelta == 0) // today's task, check time
465
if (pTask->iHour > iHour || (pTask->iHour == iHour && pTask->iMinute > iMinute)) // it's in the future, skip it.
468
pTaskList = g_list_prepend (pTaskList, pTask);
469
} // on n'arrete pas le parcours si iDelta > 7 pour prendre en compte aussi les anniv.
471
g_date_free (pCurrentDate);