[Genlist] Fix focus frame for dialogue / reorder, etc.
[platform/core/uifw/efl-theme-tizen.git] / themes / widgets / genlist / genlist_groupindex.edc
1 /*
2  * efl-theme-tizen
3  * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Apache License, Version 2.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18
19 /*
20  * vim:ts=3:expandtab
21 */
22
23 #define GROUPINDEX_PADDING_SIZE_LEFT 26
24 #define GROUPINDEX_PADDING_SIZE_RIGHT 26
25 #define GROUPINDEX_TEXT_HEIGHT 38
26 #define GROUPINDEX_ICON_SIZE 64
27
28
29 #define GENLIST_PART_INDEX_BG \
30       GENLIST_PART_RECT("bg",  \
31          description { state: "default" 0.0; \
32             color: GENLIST_GROUPINDEX_LIST_BG_COLOR; \
33          } \
34          description { state: "selected" 0.0; \
35             inherit: "default" 0.0; \
36             color: GENLIST_GROUPINDEX_LIST_PRESS_COLOR; \
37          } \
38          description { state: "disabled" 0.0; \
39             inherit: "default" 0.0; \
40             color: GENLIST_GROUPINDEX_LIST_BG_COLOR; \
41          } \
42       )
43
44  // group index
45 #define GENLIST_DESCRIPTION_INDEX_LIST \
46    description { state: "selected" 0.0; \
47       inherit: "default" 0.0; \
48       color: GENLIST_GROUPINDEX_LIST_FOCUS_COLOR; \
49    }
50
51  #define GENLIST_DESCRIPTION_INDEX_LIST_TB \
52    description { state: "selected" 0.0; \
53       inherit: "default" 0.0; \
54       text.style: "genlist_style_groupindex_text_focus"; \
55    }
56
57 #define GENLIST_PART_INDEX_LINE(LEFT, RIGHT, TOP, BOTTOM) \
58          GENLIST_PART_RECT("index_line", \
59             GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
60                color: GENLIST_GROUPINDEX_LINE_COLOR; \
61                min: 0 4; \
62                max: -1 4; \
63             ) \
64             description { state: "selected" 0.0; \
65                inherit: "default" 0.0; \
66                color: GENLIST_GROUPINDEX_LINE_FOCUS_COLOR; \
67             } \
68          )
69
70 // Group Index
71 #define GENLIST_PARAM_INDEX_LIST \
72    color: GENLIST_GROUPINDEX_LIST_COLOR; \
73    text { \
74       align: 0 0.5; \
75       min: 0 1; \
76       font: "Tizen:style=Bold"; \
77       size: GENLIST_GROUPINDEX_LIST_SIZE; \
78       text_class: "list_item"; \
79    }
80
81 // Group Index
82 #define GENLIST_PARAM_INDEX_LIST_TB \
83    text { \
84       align: 0 0.5; \
85       min: 0 1; \
86       style: "genlist_style_groupindex_text"; \
87    }
88
89 #define GENLIST_PART_PADDING_GROUPINDEX_LEFT \
90          GENLIST_PART_EXPANDED_PAD \
91          GENLIST_PART_RECT("elm.padding.left", \
92             GENLIST_DESCRIPTION_L("elm.swallow.pad",  \
93                color: GENLIST_LIST_BG_COLOR; \
94                min: GROUPINDEX_PADDING_SIZE_LEFT 0; \
95                max: GROUPINDEX_PADDING_SIZE_LEFT -1; \
96                fixed: 1 0; \
97             ) \
98             GENLIST_DESCRIPTION_DECORATE_PADDING \
99             GENLIST_DESCRIPTION_REORDER_PADDING \
100             GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
101          )
102
103 #define GENLIST_PART_PADDING_GROUPINDEX_RIGHT \
104          GENLIST_PART_RECT("elm.padding.right", \
105             description { state: "default" 0.0; \
106                color: GENLIST_LIST_BG_COLOR; \
107                min: GROUPINDEX_PADDING_SIZE_RIGHT 0; \
108                max: GROUPINDEX_PADDING_SIZE_RIGHT -1; \
109                fixed: 1 0; \
110                align: 1.0 0.5; \
111                rel1.to: "base"; \
112                rel2.to: "base"; \
113                rel1.relative: 1 0; \
114             } \
115             GENLIST_DESCRIPTION_DECORATE_PADDING \
116             GENLIST_DESCRIPTION_REORDER_PADDING \
117             GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
118          )
119
120 #define SLIDING_PER_FPS 1
121 #define SLIDING_FPS     60.0
122 // 2.1.1
123    group { GENLIST_NAME("groupindex/default")
124       alias: "elm/genlist/item/grouptitle/default";
125       alias: "elm/genlist/item_odd/grouptitle/default";
126       alias: "elm/genlist/item_compress/grouptitle/default";
127       alias: "elm/genlist/item_compress_odd/grouptitle/default";
128       alias: "elm/genlist/tree/grouptitle/default";
129       alias: "elm/genlist/tree_odd/grouptitle/default";
130       alias: "elm/genlist/tree_compress/grouptitle/default";
131       alias: "elm/genlist/tree_compress_odd/grouptitle/default";
132       GENLIST_PROLOG
133
134       data.item: "texts" "elm.text";
135
136       script {
137          public sliding_timer;
138          public end_timer;
139          public text_w;
140          public org_text_w;
141
142          public get_width() {
143             new x, y, w, h;
144             get_geometry(PART:"elm.text", x, y, w, h);
145             set_int(org_text_w, w);
146
147             set_state(PART:"elm.text", "sliding", 0.0);
148             get_geometry(PART:"elm.text", x, y, w, h);
149             set_int(text_w, w);
150          }
151          public ender(val) {
152             if (get_int(sliding_timer)) cancel_timer(get_int(sliding_timer));
153             set_int(sliding_timer, 0);
154             if (get_int(end_timer)) cancel_timer(get_int(end_timer));
155             set_int(end_timer, 0);
156             set_state(PART:"elm.text", "default", 0.0);
157          }
158          public sliding(val) {
159             if (val == 0) {
160                get_width();
161                if (get_int(text_w) < get_int(org_text_w)) {
162                   ender(1);
163                   return;
164                }
165             }
166             /*
167             new buf[128];
168             snprintf(buf, 127, "val:%d <= org_w:%d - sliding_w:%d  ",
169                val, get_int(org_text_w), get_int(text_w));
170             set_text(PART:"dbg", buf);
171             */
172             custom_state(PART:"elm.text", "sliding", 0.0);
173             set_state_val(PART:"elm.text", STATE_REL1_OFFSET, val, 0);
174             set_state_val(PART:"elm.text", STATE_REL2_OFFSET, val, 0);
175             set_state(PART:"elm.text", "custom", 0.0);
176             val -= SLIDING_PER_FPS;
177
178             if (val <= -get_int(text_w) + get_int(org_text_w)) {
179                set_int(end_timer, timer(0.5, "ender", 1));
180             } else
181                set_int(sliding_timer, timer(1.0/SLIDING_FPS, "sliding", val));
182          }
183       }
184
185       parts {
186          GENLIST_PART_BASE
187          GENLIST_PART_INDEX_BG
188          GENLIST_PART_PADDING_TOP_SIZE(20)
189          GENLIST_PART_PADDING_BOTTOM_SIZE(14)
190          GENLIST_PART_TEXTBLOCK("elm.text",
191             GENLIST_DESCRIPTION_LRT("elm.padding.left", "elm.padding.right", "elm.padding.top",
192                GENLIST_PARAM_INDEX_LIST_TB
193                min: 0 GROUPINDEX_TEXT_HEIGHT;
194                fixed: 0 1;
195             )
196             description { state: "sliding" 0.0;
197                inherit: "default";
198                text.min: 1 1;
199                align: 0 0;
200             }
201             GENLIST_DESCRIPTION_INDEX_LIST_TB
202          )
203          GENLIST_PART_INDEX_LINE("elm.padding.left", "elm.padding.right", "elm.text", "elm.padding.bottom")
204          /*
205          part { name: "dbg";
206             type: TEXT;
207             description { state: "default" 0.0;
208                color: 255 0 0 255;
209                text {
210                   font: "Sans";
211                   size: 12;
212                   align: 1.0 1.0;
213                }
214             }
215          }
216          */
217         GENLIST_PART_PADDING_GROUPINDEX_LEFT
218         GENLIST_PART_PADDING_GROUPINDEX_RIGHT
219         GENLIST_PART_FOCUS
220       }
221       program { name: "default";
222          signal: "elm,state,default";
223          source: "elm";
224          script {
225             ender(1);
226             set_state(PART:"elm.text", "default", 0.0);
227             set_state(PART:"index_line", "default", 0.0);
228             set_state(PART:"bg", "default", 0.0);
229          }
230       }
231       programs {
232          GENLIST_PROGRAM_DISABLED( target: "elm.text"; target: "index_line"; )
233          program { name: "selected";
234             signal: "elm,state,selected";
235             source: "elm";
236             script {
237                if (!get_int(sliding_timer) && !get_int(end_timer)) {
238                   set_state(PART:"elm.text", "selected", 0.0);
239                   set_state(PART:"index_line", "selected", 0.0);
240                   set_state(PART:"bg", "selected", 0.0);
241                }
242             }
243          }
244          program { name: "unselected";
245             signal: "elm,state,unselected";
246             source: "elm";
247             script {
248                if (!get_int(sliding_timer) && !get_int(end_timer)) {
249                   set_state(PART:"elm.text", "default", 0.0);
250                   set_state(PART:"index_line", "default", 0.0);
251                   set_state(PART:"bg", "default", 0.0);
252                }
253             }
254          }
255          program { name: "slide_start";
256             signal: "elm,state,slide,start";
257             source: "";
258             script {
259                set_state(PART:"index_line", "default", 0.0);
260                set_state(PART:"bg", "default", 0.0);
261                if (!get_int(sliding_timer) && !get_int(end_timer)) {
262                   set_int(sliding_timer, timer(0.01, "sliding", 0));
263                }
264             }
265          }
266          program { name: "slide_stop";
267             signal: "elm,state,slide,stop";
268             source: "elm";
269             script {
270                if (get_int(sliding_timer) && get_int(end_timer)) {
271                   ender(0);
272                }
273             }
274          }
275          GENLIST_PROGRAM_FOCUS
276       }
277    }
278
279 //2.1.3
280    group { GENLIST_NAME("groupindex.icon/default")
281       alias: "elm/genlist/item/grouptitle.icon/default";
282       alias: "elm/genlist/item_odd/grouptitle.icon/default";
283       alias: "elm/genlist/item_compress/grouptitle.icon/default";
284       alias: "elm/genlist/item_compress_odd/grouptitle.icon/default";
285       alias: "elm/genlist/tree/grouptitle.icon/default";
286       alias: "elm/genlist/tree_odd/grouptitle.icon/default";
287       alias: "elm/genlist/tree_compress/grouptitle.icon/default";
288       alias: "elm/genlist/tree_compress_odd/grouptitle.icon/default";
289       GENLIST_PROLOG
290
291       data.item: "texts" "elm.text";
292       data.item: "contents" "elm.icon";
293
294       parts {
295          GENLIST_PART_BASE
296          GENLIST_PART_INDEX_BG
297          GENLIST_PART_PADDING_LEFT_SIZE(GROUPINDEX_PADDING_SIZE_LEFT)
298          GENLIST_PART_PADDING_RIGHT_SIZE(GROUPINDEX_PADDING_SIZE_RIGHT)
299          GENLIST_PART_PADDING_TOP_SIZE(6)
300          GENLIST_PART_PADDING_BOTTOM_SIZE(6)
301          GENLIST_PART_ICON("elm.icon",
302             GENLIST_DESCRIPTION_LTB("elm.padding.left",
303                "elm.padding.top", "elm.padding.bottom",
304                min: GROUPINDEX_ICON_SIZE GROUPINDEX_ICON_SIZE;
305                max: GROUPINDEX_ICON_SIZE GROUPINDEX_ICON_SIZE;
306                fixed: 1 0;
307             )
308          )
309          GENLIST_PART_PADDING_L_SIZE("elm.padding.icon.right", "elm.icon", 16)
310          GENLIST_PART_TEXT("elm.text",
311             GENLIST_DESCRIPTION_LRT("elm.padding.icon.right", "elm.padding.right", "elm.padding.top",
312                GENLIST_PARAM_INDEX_LIST
313                min: 0 GROUPINDEX_TEXT_HEIGHT;
314                fixed: 0 1;
315             )
316             GENLIST_DESCRIPTION_INDEX_LIST
317          )
318          GENLIST_PART_INDEX_LINE("elm.padding.icon.right", "elm.padding.right", "elm.text", "elm.padding.bottom")
319          GENLIST_PART_FOCUS
320       }
321       programs {
322          GENLIST_PROGRAM_DISABLED( target: "elm.text"; target: "index_line"; )
323          GENLIST_PROGRAM_SELECT( target: "elm.text"; target: "index_line"; target: "bg"; )
324          GENLIST_PROGRAM_FOCUS
325       }
326    }