2.0 alpha
[apps/home/calendar.git] / common / reminder.c
1 #include "cld.h"
2 #include "reminder.h"
3
4 static inline void __cal_edit_alarm_get_week_str(int week, char *buf, int sz)
5 {
6         snprintf(buf, sz, "%d %s %s", week,C_("IDS_COM_POP_WEEK_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
7 }
8
9 static inline void __cal_edit_alarm_get_day_str(int day, char *buf, int sz)
10 {
11         snprintf(buf, sz, "%d %s %s", day, C_("IDS_COM_POP_DAY_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
12 }
13
14 static inline void __cal_edit_alarm_get_hour_str(int hour, char *buf, int sz)
15 {
16         snprintf(buf, sz, "%d %s %s", hour, S_("IDS_COM_POP_HOUR_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
17 }
18
19 static inline void __cal_edit_alarm_get_min_str(int min, char *buf, int sz)
20 {
21         snprintf(buf, sz, "%d %s %s", min, S_("IDS_COM_BODY_MINUTE_LC"), C_("IDS_CLD_BODY_BEFORE_LC"));
22 }
23
24 static inline void __cal_edit_alarm_get_str(int min, char *buf, int sz)
25 {
26         if ((min % _WEEK) == 0) {
27                 __cal_edit_alarm_get_week_str(min / _WEEK, buf, sz);
28                 return;
29         }
30
31         if ((min % _DAY) == 0) {
32                 __cal_edit_alarm_get_day_str(min / _DAY, buf, sz);
33                 return;
34         }
35
36         if ((min % _HOUR) == 0) {
37                 __cal_edit_alarm_get_hour_str(min / _HOUR, buf, sz);
38                 return;
39         }
40
41         __cal_edit_alarm_get_min_str(min, buf, sz);
42 }
43
44 void cal_edit_alarm_get_alarm_str(int min, char *buf, int sz)
45 {
46         if (!buf || sz < 0)
47                 return;
48
49         if (min < 0) {
50                 g_snprintf(buf,sz,"%s",S_("IDS_COM_BODY_OFF"));
51                 return;
52         }
53
54         if (min == 0) {
55                 g_snprintf(buf,sz,"%s", C_("IDS_CLD_BODY_ON_TIME"));
56                 return;
57         }
58
59         __cal_edit_alarm_get_str(min, buf, sz);
60 }
61
62 int cal_edit_alarm_get_min(int tick, cal_sch_remind_tick_unit_t unit)
63 {
64         int min;
65
66         min = tick;
67
68         switch (unit) {
69         case CAL_SCH_TIME_UNIT_MONTH:
70                 min = min * _DAY * 30; // TODO: BUG!! not used!!
71                 break;
72         case CAL_SCH_TIME_UNIT_WEEK:
73                 min = min * _WEEK;
74                 break;
75         case CAL_SCH_TIME_UNIT_DAY:
76                 min = min * _DAY;
77                 break;
78         case CAL_SCH_TIME_UNIT_HOUR:
79                 min = min * _HOUR;
80                 break;
81         default:  // CAL_SCH_TIME_UNIT_MIN
82                 break;
83         }
84
85         return min;
86 }
87
88 void cal_edit_alarm_get_tick(int min, int *tick, cal_sch_remind_tick_unit_t *unit)
89 {
90         if (!tick || !unit)
91                 return;
92
93         if (min == -1) {
94                 *tick = -1;
95                 *unit = CAL_SCH_TIME_UNIT_MIN;
96                 return;
97         }
98
99         if ((min % _WEEK) == 0) {
100                 *tick = min / _WEEK;
101                 *unit = CAL_SCH_TIME_UNIT_WEEK;
102                 return;
103         }
104
105         if ((min % _DAY) == 0) {
106                 *tick = min / _DAY;
107                 *unit = CAL_SCH_TIME_UNIT_DAY;
108                 return;
109         }
110
111         if ((min % _HOUR) == 0) {
112                 *tick = min / _HOUR;
113                 *unit = CAL_SCH_TIME_UNIT_HOUR;
114                 return;
115         }
116
117         *tick = min;
118         *unit = CAL_SCH_TIME_UNIT_MIN;
119 }