~ubuntu-branches/ubuntu/saucy/cairo-dock-plug-ins/saucy

« back to all changes in this revision

Viewing changes to clock/src/applet-calendar.c

Tags: upstream-2.2.0~2
ImportĀ upstreamĀ versionĀ 2.2.0~2

Show diffs side-by-side

added added

removed removed

Lines of Context:
131
131
void cd_clock_remove_task_from_list (CDClockTask *pTask, CairoDockModuleInstance *myApplet)
132
132
{
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);
136
137
}
154
155
{
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;
159
162
}
160
163
 
161
164
CDClockTask *cd_clock_get_task_by_id (const gchar *cID, CairoDockModuleInstance *myApplet)
384
387
}
385
388
 
386
389
 
 
390
GList *cd_clock_get_missed_tasks (CairoDockModuleInstance *myApplet)
 
391
{
 
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;
 
398
        
 
399
        GDate* pCurrentDate = g_date_new_dmy (iDay, iMonth + 1, iYear);
 
400
        GDate* pDate = g_date_new ();
 
401
        guint d, m, y;
 
402
        int iDelta;
 
403
        CDClockTask *pTask;
 
404
        GList *t;
 
405
        for (t = myData.pTasks; t != NULL; t = t->next)
 
406
        {
 
407
                pTask = t->data;
 
408
                if (pTask->bAcknowledged)
 
409
                        continue;
 
410
                
 
411
                switch (pTask->iFrequency)
 
412
                {
 
413
                        case CD_TASK_DONT_REPEAT:
 
414
                        default:
 
415
                                d = pTask->iDay;
 
416
                                m = pTask->iMonth+1;
 
417
                                y = pTask->iYear;
 
418
                                g_date_set_dmy (pDate, d, m, y);
 
419
                                iDelta = g_date_days_between (pCurrentDate, pDate);
 
420
                        break;
 
421
                        
 
422
                        case CD_TASK_EACH_MONTH:
 
423
                                d = pTask->iDay;
 
424
                                m = iMonth+1;
 
425
                                y = iYear;
 
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.
 
429
                                {
 
430
                                        if (iMonth > 0)
 
431
                                        {
 
432
                                                m = iMonth;
 
433
                                                g_date_set_dmy (pDate, d, m, y);
 
434
                                        }
 
435
                                        else
 
436
                                        {
 
437
                                                m = 12;
 
438
                                                y = pTask->iYear - 1;
 
439
                                                g_date_set_dmy (pDate, d, m, y);
 
440
                                        }
 
441
                                        iDelta = g_date_days_between (pCurrentDate, pDate);
 
442
                                }
 
443
                        break;
 
444
                        
 
445
                        case CD_TASK_EACH_YEAR:
 
446
                                d = pTask->iDay;
 
447
                                m = pTask->iMonth+1;
 
448
                                y = iYear;
 
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.
 
453
                                {
 
454
                                        y = iYear - 1;
 
455
                                        g_date_set_dmy (pDate, d, m, y);
 
456
                                        iDelta = g_date_days_between (pCurrentDate, pDate);
 
457
                                }
 
458
                        break;
 
459
                }
 
460
                
 
461
                if (iDelta <= 0 && iDelta > -7)
 
462
                {
 
463
                        if (iDelta == 0)  // today's task, check time
 
464
                        {
 
465
                                if (pTask->iHour > iHour || (pTask->iHour == iHour && pTask->iMinute > iMinute))  // it's in the future, skip it.
 
466
                                        continue;
 
467
                        }
 
468
                        pTaskList = g_list_prepend (pTaskList, pTask);
 
469
                }  // on n'arrete pas le parcours si iDelta > 7 pour prendre en compte aussi les anniv.
 
470
        }
 
471
        g_date_free (pCurrentDate);
 
472
        g_date_free (pDate);
 
473
        
 
474
        return pTaskList;
 
475
}
 
476
 
 
477
 
387
478
  //////////////
388
479
 // CALENDAR //
389
480
//////////////