• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2    Copyright (C) 2008,2009 INdT - Instituto Nokia de Tecnologia
3
4    This file is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public
6    License as published by the Free Software Foundation; either
7    version 2 of the License, or (at your option) any later version.
8
9    This file is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18*/
19
20group {
21    name: "scrollbar.vertical";
22
23    min: 0 0;  /* if > 0, this is the minimum size that will be allocated.
24                * If wants to draw on top, just overflow usign edje's rel1/rel2
25                */
26
27    images {
28        image: "widget/scrollbar/scrollbar_v.png" COMP;
29        image: "widget/scrollbar/scrollbar_knob_v.png" COMP;
30    }
31
32    script {
33        public hide_timer;
34
35        public hide_timer_cb(val) {
36            run_program(PROGRAM:"hide");
37            return 0;
38        }
39
40        public hide_timer_stop() {
41            new id = get_int(hide_timer);
42            if (id <= 0)
43                return;
44
45            cancel_timer(id);
46            set_int(hide_timer, 0);
47        }
48
49        public hide_timer_start() {
50            set_int(hide_timer, timer(1.0, "hide_timer_cb", 0));
51        }
52
53        public message(Msg_Type:type, id, ...) {
54            if ((id == 0) && (type == MSG_FLOAT_SET)) {
55                new Float:vy, Float:sy;
56
57                vy = getfarg(2);
58                sy = getfarg(3);
59
60                if (vy >= 0.0) {
61                    set_drag_size(PART:"img.knob", 1.0, sy);
62                    set_drag(PART:"img.knob", 0.0, vy);
63                    run_program(PROGRAM:"show");
64                } else
65                    run_program(PROGRAM:"hide");
66
67                hide_timer_stop();
68                hide_timer_start();
69            }
70        }
71
72        public update_drag_pos() {
73            new Float:x, Float:y;
74            get_drag(PART:"img.knob", x, y);
75            send_message(MSG_FLOAT, 1, y);
76        }
77    }
78
79    parts {
80         part {
81            name: "rect.base";
82            type: RECT;
83            description {
84               min: 10 0;
85               max: 10 999999;
86               align: 1.0 0.5;
87               state: "default" 0.0;
88               color: 255 255 255 0;
89            }
90         }
91
92         part {
93            name: "rect.clipper";
94            type: RECT;
95            description {
96               state: "default" 0.0;
97               color: 255 255 255 255;
98               rel1.to: "rect.base";
99               rel2.to: "rect.base";
100            }
101            description {
102               state: "hidden" 0.0;
103               color: 255 255 255 64;
104               rel1.to: "rect.base";
105               rel2.to: "rect.base";
106            }
107         }
108
109         part {
110            name: "img.scrollbar";
111            type: IMAGE;
112            mouse_events: 0;
113            clip_to: "rect.clipper";
114            description {
115               state: "default" 0.0;
116               min: 1 30;
117               max: 1 999999;
118               align: 0.5 0.5;
119               image {
120                  normal: "widget/scrollbar/scrollbar_v.png";
121                  border: 0 0 15 15;
122                  middle: SOLID;
123               }
124               rel1.to: "rect.base";
125               rel2.to: "rect.base";
126            }
127         }
128
129         part {
130            name: "rect.knobarea";
131            type: RECT;
132            description {
133               state: "default" 0.0;
134               color: 255 255 255 0;
135               min: 5 5;
136               max: 5 999999;
137               align: 0.5 0.5;
138               rel1.to: "rect.base";
139               rel2.to: "rect.base";
140            }
141         }
142
143         part {
144            name: "img.knob";
145            type: IMAGE;
146            mouse_events: 1;
147            clip_to: "rect.clipper";
148            dragable {
149                x: 0 0 0;
150                y: 1 1 0;
151                confine: "rect.knobarea";
152            }
153            description {
154               state: "default" 0.0;
155               min: 5 5;
156               max: 5 999999;
157               align: 0.5 0.5;
158               image {
159                  normal: "widget/scrollbar/scrollbar_knob_v.png";
160                  border: 3 3 3 3;
161                  middle: SOLID;
162               }
163            }
164         }
165    }
166    programs {
167        program {
168           name: "load";
169           signal: "load";
170           action: STATE_SET "hidden" 0.0;
171           target: "rect.clipper";
172        }
173        program {
174           name: "hide";
175           action: STATE_SET "hidden" 0.0;
176           transition: ACCELERATE 0.5;
177           target: "rect.clipper";
178        }
179
180        program {
181           name: "show";
182           action: STATE_SET "default" 0.0;
183           target: "rect.clipper";
184        }
185
186        program {
187           name: "dragged";
188           signal: "drag";
189           source: "img.knob";
190           script {
191              update_drag_pos();
192           }
193        }
194    }
195}
196
197group {
198    name: "scrollbar.horizontal";
199
200    min: 0 0;  /* if > 0, this is the minimum size that will be allocated.
201                * If wants to draw on top, just overflow usign edje's rel1/rel2
202                */
203
204    images {
205        image: "widget/scrollbar/scrollbar_h.png" COMP;
206        image: "widget/scrollbar/scrollbar_knob_h.png" COMP;
207    }
208
209    script {
210        public hide_timer;
211
212        public hide_timer_cb(val) {
213            run_program(PROGRAM:"hide");
214            return 0;
215        }
216
217        public hide_timer_stop() {
218            new id = get_int(hide_timer);
219            if (id <= 0)
220                return;
221
222            cancel_timer(id);
223            set_int(hide_timer, 0);
224        }
225
226        public hide_timer_start() {
227            set_int(hide_timer, timer(1.0, "hide_timer_cb", 0));
228        }
229
230        public message(Msg_Type:type, id, ...) {
231            if ((id == 0) && (type == MSG_FLOAT_SET)) {
232                new Float:vx, Float:sx;
233
234                vx = getfarg(2);
235                sx = getfarg(3);
236
237                if (vx >= 0.0) {
238                    set_drag_size(PART:"img.knob", sx, 1.0);
239                    set_drag(PART:"img.knob", vx, 0.0);
240                    run_program(PROGRAM:"show");
241                } else
242                    run_program(PROGRAM:"hide");
243
244                hide_timer_stop();
245                hide_timer_start();
246            }
247        }
248
249        public update_drag_pos() {
250            new Float:x, Float:y;
251            get_drag(PART:"img.knob", x, y);
252            send_message(MSG_FLOAT, 1, x);
253        }
254    }
255
256    parts {
257         part {
258            name: "rect.base";
259            type: RECT;
260            description {
261               state: "default" 0.0;
262               min: 0 10;
263               max: 999999 10;
264               align: 0.5 1.0;
265               color: 255 255 255 0;
266            }
267         }
268
269         part {
270            name: "rect.clipper";
271            type: RECT;
272            description {
273               state: "default" 0.0;
274               color: 255 255 255 255;
275               rel1.to: "rect.base";
276               rel2.to: "rect.base";
277            }
278            description {
279               state: "hidden" 0.0;
280               color: 255 255 255 64;
281               rel1.to: "rect.base";
282               rel2.to: "rect.base";
283            }
284         }
285
286         part {
287            name: "img.scrollbar";
288            type: IMAGE;
289            mouse_events: 0;
290            clip_to: "rect.clipper";
291            description {
292               state: "default" 0.0;
293               min: 30 1;
294               max: 999999 1;
295               align: 0.5 0.5;
296               image {
297                  normal: "widget/scrollbar/scrollbar_h.png";
298                  border: 15 15 0 0;
299                  middle: SOLID;
300               }
301               rel1.to: "rect.base";
302               rel2.to: "rect.base";
303           }
304         }
305
306
307         part {
308            name: "rect.knobarea";
309            type: RECT;
310            description {
311               state: "default" 0.0;
312               color: 255 255 255 0;
313               min: 5 5;
314               max: 999999 5;
315               align: 0.5 0.5;
316               rel1.to: "rect.base";
317               rel2.to: "rect.base";
318            }
319         }
320
321         part {
322            name: "img.knob";
323            type: IMAGE;
324            mouse_events: 1;
325            clip_to: "rect.clipper";
326            dragable {
327                x: 1 1 0;
328                y: 0 0 0;
329                confine: "rect.knobarea";
330            }
331            description {
332               state: "default" 0.0;
333               min: 5 5;
334               max: 999999 5;
335               image {
336                  normal: "widget/scrollbar/scrollbar_knob_h.png";
337                  border: 3 3 3 3;
338                  middle: SOLID;
339               }
340            }
341         }
342    }
343    programs {
344        program {
345           name: "load";
346           signal: "load";
347           action: STATE_SET "hidden" 0.0;
348           target: "rect.clipper";
349        }
350        program {
351           name: "hide";
352           action: STATE_SET "hidden" 0.0;
353           transition: ACCELERATE 0.5;
354           target: "rect.clipper";
355        }
356
357        program {
358           name: "show";
359           action: STATE_SET "default" 0.0;
360           target: "rect.clipper";
361        }
362
363        program {
364           name: "dragged";
365           signal: "drag";
366           source: "img.knob";
367           script {
368              update_drag_pos();
369           }
370        }
371    }
372}
373