1#define DAYSELECOR_DAY_POS_LEFT 1
2#define DAYSELECOR_DAY_POS_RIGHT 2
3#define DAYSELECOR_DAY_POS_MIDDLE 3
4#define DAYSELECOR_DAY_TYPE_WEEKDAY 1
5#define DAYSELECOR_DAY_TYPE_WEEKEND_DEFAULT 2
6#define DAYSELECOR_DAY_TYPE_WEEKEND_STYLE1 3
7#define DAYSELECOR_DAY_STATE_DEFAULT 1
8#define DAYSELECOR_DAY_STATE_PRESSED 2
9#define DAYSELECOR_DAY_STATE_SELECTED 3
10
11#define DAYSELECTOR_DAY(_pos, _after)\
12   alias: "day"#_pos "elm.swallow.day"#_pos; \
13   part {\
14      name: "elm.swallow.day"#_pos;\
15      type: SWALLOW;\
16      scale: 1;\
17      clip_to: "clipper";\
18      description { state: "default" 0.0;\
19         visible: 0;\
20         min: 0 0;\
21         align: 0.0 0.5;\
22         fixed: 1 0;\
23         rel1 {\
24            relative: 1.0 0.0;\
25            to: "elm.swallow.day"#_after;\
26            offset: 0 0;\
27         }\
28         rel2 {\
29            relative: 1.0 1.0;\
30            to: "elm.swallow.day"#_after;\
31         }\
32      }\
33      description { state: "visible" 0.0;\
34         inherit: "default" 0.0;\
35         visible: 1;\
36         min: 48 32;\
37      }\
38   }\
39   programs{\
40      program {\
41         name: "day"#_pos"visible";\
42         signal: "elm,day"#_pos",visible";\
43         source: "elm";\
44         action: STATE_SET "visible" 0.0;\
45         target: "elm.swallow.day"#_pos;\
46      }\
47      program {\
48         name: "day"#_pos"notvisible";\
49         signal: "elm,day"#_pos",default";\
50         source: "elm";\
51         action: STATE_SET "default" 0.0;\
52         target: "elm.swallow.day"#_pos;\
53      }\
54   }
55
56group { name: "elm/dayselector/base/default";
57   parts {
58      part {
59         name: "elm.swallow.day0";
60         type: SWALLOW;
61         scale: 1;
62         clip_to: "clipper";
63         description { state: "default" 0.0;
64            visible: 0;
65            align: 0.0 0.5;
66            fixed: 1 0;
67            rel2.relative: 0.0 1.0;
68         }
69         description { state: "visible" 0.0;
70            inherit: "default" 0.0;
71            visible: 1;
72            min: 48 32;
73         }
74      }
75      DAYSELECTOR_DAY(1, 0)
76      DAYSELECTOR_DAY(2, 1)
77      DAYSELECTOR_DAY(3, 2)
78      DAYSELECTOR_DAY(4, 3)
79      DAYSELECTOR_DAY(5, 4)
80      DAYSELECTOR_DAY(6, 5)
81      part {
82         name: "clipper";
83         type: RECT;
84         description {
85            state: "default" 0.0;
86            rel1.to: "elm.swallow.day0";
87            rel2.to: "elm.swallow.day6";
88         }
89         description {
90            state: "visible" 0.0;
91            inherit: "default" 0.0;
92            color: 185 185 185 185;
93         }
94      }
95      part {
96         name: "disabler";
97         type: RECT;
98         description {
99            state: "default" 0.0;
100            color: 0 0 0 0;
101            visible: 0;
102         }
103         description {
104            state: "visible" 0.0;
105            inherit: "default" 0.0;
106            visible: 1;
107         }
108      }
109   }
110   programs {
111      program {
112         name: "disble_dayselector";
113         signal: "elm,state,disabled";
114         source: "elm";
115         action: STATE_SET "visible" 0.0;
116         target: "disabler";
117         target: "clipper";
118      }
119      program {
120         name: "enable_dayselector";
121         signal: "elm,state,enabled";
122         source: "elm";
123         action: STATE_SET "default" 0.0;
124         target: "disabler";
125         target: "clipper";
126      }
127      program {
128         name: "day0_visible";
129         signal: "elm,day0,visible";
130         source: "elm";
131         action: STATE_SET "visible" 0.0;
132         target: "elm.swallow.day0";
133      }
134      program {
135         name: "day0_default";
136         signal: "elm,day0,default";
137         source: "elm";
138         action: STATE_SET "default" 0.0;
139         target: "elm.swallow.day0";
140      }
141   }
142}
143
144group { name: "elm/check/base/dayselector/default";
145   images {
146      image: "day_middle_normal.png" COMP;
147      image: "day_left_normal.png" COMP;
148      image: "day_right_normal.png" COMP;
149      image: "day_middle_press.png" COMP;
150      image: "day_middle_selected.png" COMP;
151      image: "day_left_press.png" COMP;
152      image: "day_left_selected.png" COMP;
153      image: "day_right_press.png" COMP;
154      image: "day_right_selected.png" COMP;
155   }
156   script {
157      public check_pos; // Left, Right, Middle.
158      public check_type; // Weekday, Weekend.
159      public check_state = DAYSELECOR_DAY_STATE_DEFAULT; // Default, Pressed, Selected.
160
161      public check_bg_show() {
162         if(get_int(check_pos) == DAYSELECOR_DAY_POS_LEFT) {
163           if(get_int(check_state) == DAYSELECOR_DAY_STATE_DEFAULT)
164             set_state(PART:"bg", "default_left", 0.0);
165           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_PRESSED)
166             set_state(PART:"bg", "pressed_left", 0.0);
167           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_SELECTED)
168             set_state(PART:"bg", "selected_left", 0.0);
169         }
170         else if(get_int(check_pos) == DAYSELECOR_DAY_POS_RIGHT) {
171           if(get_int(check_state) == DAYSELECOR_DAY_STATE_DEFAULT)
172             set_state(PART:"bg", "default_right", 0.0);
173           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_PRESSED)
174             set_state(PART:"bg", "pressed_right", 0.0);
175           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_SELECTED)
176             set_state(PART:"bg", "selected_right", 0.0);
177         }
178         else if(get_int(check_pos) == DAYSELECOR_DAY_POS_MIDDLE) {
179           if(get_int(check_state) == DAYSELECOR_DAY_STATE_DEFAULT)
180             set_state(PART:"bg", "default_middle", 0.0);
181           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_PRESSED)
182             set_state(PART:"bg", "pressed_middle", 0.0);
183           else if(get_int(check_state) == DAYSELECOR_DAY_STATE_SELECTED)
184             set_state(PART:"bg", "selected_middle", 0.0);
185         }
186      }
187      public check_text_show() {
188        if(get_int(check_state) == DAYSELECOR_DAY_STATE_SELECTED) {
189          set_state(PART:"elm.text", "selected", 0.0);
190          set_state(PART:"text2", "selected", 0.0);
191        } else {
192          if(get_int(check_type) == DAYSELECOR_DAY_TYPE_WEEKDAY) {
193            set_state(PART:"elm.text", "default", 0.0);
194            set_state(PART:"text2", "default", 0.0);
195          } else if (get_int(check_type) ==
196                     DAYSELECOR_DAY_TYPE_WEEKEND_DEFAULT) {
197            set_state(PART:"elm.text", "weekend_default", 0.0);
198            set_state(PART:"text2", "weekend_default", 0.0);
199          }
200          else if (get_int(check_type) == DAYSELECOR_DAY_TYPE_WEEKEND_STYLE1) {
201            set_state(PART:"elm.text", "weekend_style1", 0.0);
202            set_state(PART:"text2", "weekend_style1", 0.0);
203          }
204        }
205      }
206      public check_text_pressed() {
207        set_state(PART:"elm.text", "pressed", 0.0);
208        set_state(PART:"text2", "default", 0.0);
209      }
210   }
211   parts {
212      part {
213         name: "bg";
214         mouse_events: 0;
215         scale: 1;
216         description {
217            state: "default" 0.0;
218            image {
219               normal: "day_middle_normal.png";
220               border: 1 1 3 4;
221            }
222         }
223         /* default */
224         description { state: "default_left" 0.0;
225            inherit: "default" 0.0;
226            image {
227               normal: "day_left_normal.png";
228               border: 4 1 3 4;
229            }
230         }
231         description { state: "default_right" 0.0;
232            inherit: "default" 0.0;
233            image {
234               normal: "day_right_normal.png";
235               border: 1 4 3 5;
236            }
237         }
238         description { state: "default_middle" 0.0;
239            inherit: "default" 0.0;
240            image {
241               normal: "day_middle_normal.png";
242               border: 1 1 3 4;
243            }
244         }
245         /* pressed */
246         description { state: "pressed_left" 0.0;
247            inherit: "default" 0.0;
248            image {
249               normal: "day_left_press.png";
250               border:  5 1 4 5;
251            }
252         }
253         description { state: "pressed_right" 0.0;
254            inherit: "default" 0.0;
255            image {
256               normal: "day_right_press.png";
257               border:  1 5 4 5;
258            }
259         }
260         description { state: "pressed_middle" 0.0;
261            inherit: "default" 0.0;
262            image {
263               normal: "day_middle_press.png";
264               border: 2 1 4 7;
265            }
266         }
267         /* selected */
268         description { state: "selected_left" 0.0;
269            inherit: "default" 0.0;
270            image {
271               normal: "day_left_selected.png";
272               border:  5 1 4 5;
273            }
274         }
275         description { state: "selected_right" 0.0;
276            inherit: "default" 0.0;
277            image {
278               normal: "day_right_selected.png";
279               border:  1 5 4 5;
280            }
281         }
282         description { state: "selected_middle" 0.0;
283            inherit: "default" 0.0;
284            image {
285               normal: "day_middle_selected.png";
286               border: 2 1 4 7;
287            }
288         }
289      }
290      part {
291         name: "left_padding";
292         type: SPACER;
293         scale: 1;
294         description { state: "default" 0.0;
295            min: 5 0;
296            fixed: 1 0;
297            align: 0.0 0.5;
298            rel2.relative: 0.0 1.0;
299         }
300      }
301      part {
302         name: "right_padding";
303         type: SPACER;
304         scale: 1;
305         description { state: "default" 0.0;
306            min: 5 0;
307            fixed: 1 0;
308            align: 1.0 0.5;
309            rel1.relative: 1.0 0.0;
310         }
311      }
312      part {
313         name: "elm.text";
314         type: TEXT;
315         mouse_events: 0;
316         scale: 1;
317         effect: SHADOW BOTTOM;
318         description { state: "default" 0.0;
319            rel1 {
320               to: "left_padding";
321               relative: 1.0 0.0;
322            }
323            rel2 {
324               to: "right_padding";
325               relative: 0.0 1.0;
326            }
327            text {
328               font: FN;
329               size: 10;
330               min: 1 1;
331               ellipsis: -1;
332               text_class: "button";
333            }
334            color: FN_COL_DEFAULT;
335         }
336         description { state: "weekend_default" 0.0;
337            inherit: "default" 0.0;
338            color: 175 175 175 255;
339            color3: 0 0 0 128;
340            visible: 1;
341         }
342         description { state: "weekend_style1" 0.0;
343            inherit: "default" 0.0;
344            visible: 0;
345         }
346         description { state: "selected" 0.0;
347            inherit: "default" 0.0;
348            visible: 0;
349         }
350         description { state: "pressed" 0.0;
351            inherit: "default" 0.0;
352            color: 255 255 255 255;
353            color3: 255 255 255 0;
354            visible: 1;
355         }
356      }
357      part {
358         name: "text2";
359         type: TEXT;
360         mouse_events: 0;
361         scale: 1;
362         effect: GLOW;
363         description { state: "default" 0.0;
364            rel1.to: "elm.text";
365            rel1.offset: 0 -1;
366            rel2.to: "elm.text";
367            rel2.offset: -1 -2;
368            text {
369               font: FN;
370               size: 10;
371               min: 1 1;
372               ellipsis: -1;
373               text_source: "elm.text";
374               text_class: "button";
375            }
376            color: FN_COL_HIGHLIGHT;
377            visible: 0;
378         }
379         description { state: "weekend_default" 0.0;
380            inherit: "default" 0.0;
381            visible: 0;
382         }
383         description { state: "weekend_style1" 0.0;
384            inherit: "default" 0.0;
385            visible: 1;
386         }
387         description { state: "selected" 0.0;
388            inherit: "default" 0.0;
389            color: 255 255 255 255;
390            color2: 255 255 255 24;
391            color3: 255 255 255 18;
392            visible: 1;
393         }
394      }
395      part {
396         name: "events";
397         type: RECT;
398         ignore_flags: ON_HOLD;
399         description {
400            state: "default" 0.0;
401            rel1.to: "bg";
402            rel2.to: "bg";
403            color: 0 0 0 0;
404         }
405      }
406   }
407   programs {
408      program { name: "check,pressed";
409         signal: "mouse,down,1"; source: "events";
410         script {
411            set_int(check_state, DAYSELECOR_DAY_STATE_PRESSED);
412            check_bg_show();
413            check_text_pressed();
414         }
415      }
416      program { name: "check,toggle";
417         signal: "mouse,up,1"; source: "events";
418         action: SIGNAL_EMIT "elm,action,check,toggle" "elm";
419      }
420      program { name: "check,on";
421         signal: "elm,state,check,on"; source: "elm";
422         script {
423            set_int(check_state, DAYSELECOR_DAY_STATE_SELECTED);
424            check_bg_show();
425            check_text_show();
426         }
427      }
428      program { name: "check,off";
429         signal: "elm,state,check,off"; source: "elm";
430         script {
431            set_int(check_state, DAYSELECOR_DAY_STATE_DEFAULT);
432            check_bg_show();
433            check_text_show();
434         }
435      }
436      program { name: "check,left";
437         signal: "elm,pos,check,left"; source: "elm";
438         script {
439            set_int(check_pos, DAYSELECOR_DAY_POS_LEFT);
440            check_bg_show();
441         }
442      }
443      program { name: "check,right";
444         signal: "elm,pos,check,right"; source: "elm";
445         script {
446            set_int(check_pos, DAYSELECOR_DAY_POS_RIGHT);
447            check_bg_show();
448         }
449      }
450      program { name: "check,middle";
451         signal: "elm,pos,check,middle"; source: "elm";
452         script {
453            set_int(check_pos, DAYSELECOR_DAY_POS_MIDDLE);
454            check_bg_show();
455         }
456      }
457      program { name: "check,weekday";
458         signal: "elm,type,weekday,default"; source: "elm";
459         script {
460            set_int(check_type, DAYSELECOR_DAY_TYPE_WEEKDAY);
461            check_text_show();
462         }
463      }
464      program { name: "check,weekend,default";
465         signal: "elm,type,weekend,default"; source: "elm";
466         script {
467            set_int(check_type, DAYSELECOR_DAY_TYPE_WEEKEND_DEFAULT);
468            check_text_show();
469         }
470      }
471      program { name: "check,weekend,style1";
472         signal: "elm,type,weekend,style1"; source: "elm";
473         script {
474            set_int(check_type, DAYSELECOR_DAY_TYPE_WEEKEND_STYLE1);
475            check_text_show();
476         }
477      }
478   }
479}
480
481#undef DAYSELECOR_DAY_POS_LEFT
482#undef DAYSELECOR_DAY_POS_RIGHT
483#undef DAYSELECOR_DAY_POS_MIDDLE
484#undef DAYSELECOR_DAY_TYPE_WEEKDAY
485#undef DAYSELECOR_DAY_TYPE_WEEKEND_DEFAULT
486#undef DAYSELECOR_DAY_TYPE_WEEKEND_STYLE1
487#undef DAYSELECOR_DAY_STATE_DEFAULT
488#undef DAYSELECOR_DAY_STATE_PRESSED
489#undef DAYSELECOR_DAY_STATE_SELECTED
490#undef DAYSELECTOR_DAY
491