update for beta release
[framework/uifw/e17.git] / src / modules / wizard / page_050.c
1 /* Ask about Scaling */
2 #include "e.h"
3 #include "e_mod_main.h"
4
5 static double scale = 1.0;
6 static Eina_List *obs = NULL;
7
8 EAPI int
9 wizard_page_init(E_Wizard_Page *pg __UNUSED__)
10 {
11    return 1;
12 }
13
14 EAPI int
15 wizard_page_shutdown(E_Wizard_Page *pg __UNUSED__)
16 {
17    return 1;
18 }
19
20 static void
21 _scale_preview_sel_set(Evas_Object *ob, int sel)
22 {
23    Evas_Object *rc, *ob2;
24    double *sc, scl;
25    int v;
26    Eina_List *l;
27    
28    rc = evas_object_data_get(ob, "rec");
29    if (sel)
30      {
31         evas_object_color_set(rc, 0, 0, 0, 0);
32         sc = evas_object_data_get(ob, "scalep");
33         v = (int)(unsigned long)evas_object_data_get(ob, "scale");
34         scl = (double)v / 1000.0;
35         if (sc) *sc = scl;
36         EINA_LIST_FOREACH(obs, l, ob2)
37           {
38              if (ob == ob2) continue;
39              _scale_preview_sel_set(ob2, 0);
40           }
41      }
42    else evas_object_color_set(rc, 0, 0, 0, 192);
43 }
44
45 static void
46 _scale_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
47 {
48    Evas_Object *ob = data;
49    
50    _scale_preview_sel_set(ob, 1);
51 }
52
53 static Evas_Object *
54 _scale_preview_new(Evas *e, double sc, double *scp)
55 {
56    Evas_Object *ob, *bg, *cm, *bd, *wb, *rc;
57    const char *file;
58    char buf[64];
59    int v;
60    
61 #define SZW 110
62 #define SZH 80
63    ob = e_widget_preview_add(e, SZW, SZH);
64    e_widget_preview_vsize_set(ob, SZW, SZH);
65    
66    bg = edje_object_add(e_widget_preview_evas_get(ob));
67    file = e_bg_file_get(0, 0, 0, 0);
68    edje_object_file_set(bg, file, "e/desktop/background");
69    evas_object_move(bg, 0, 0);
70    evas_object_resize(bg, 640, 480);
71    evas_object_show(bg);
72    
73    cm = edje_object_add(e_widget_preview_evas_get(ob));
74    e_theme_edje_object_set(cm, "base/theme/borders", "e/comp/default");
75    evas_object_move(cm, 16, 16);
76    evas_object_resize(cm, 320, 400);
77    evas_object_show(cm);
78    
79    bd = edje_object_add(e_widget_preview_evas_get(ob));
80    e_theme_edje_object_set(bd, "base/theme/borders", "e/widgets/border/default/border");
81    edje_object_part_swallow(cm, "e.swallow.content", bd);
82    evas_object_show(bd);
83    
84    wb = edje_object_add(e_widget_preview_evas_get(ob));
85    e_theme_edje_object_set(wb, "base/theme/dialog", "e/widgets/dialog/main");
86    edje_object_part_swallow(bd, "e.swallow.client", wb);
87    evas_object_show(wb);
88    
89    rc = evas_object_rectangle_add(e_widget_preview_evas_get(ob));
90    evas_object_move(rc, 0, 0);
91    evas_object_resize(rc, 640, 480);
92    evas_object_color_set(rc, 0, 0, 0, 192);
93    evas_object_show(rc);
94    
95    snprintf(buf, sizeof(buf), "%1.1f %s", sc, _("Title"));
96    edje_object_part_text_set(bd, "e.text.title", buf);
97    edje_object_signal_emit(bd, "e,state,focused", "e");
98    
99    edje_object_signal_emit(cm, "e,state,visible,on", "e");
100    edje_object_signal_emit(cm, "e,state,shadow,on", "e");
101    edje_object_signal_emit(cm, "e,state,focus,on", "e");
102    
103    edje_object_scale_set(bd, sc);
104    edje_object_scale_set(cm, sc);
105    edje_object_scale_set(bg, sc);
106    edje_object_scale_set(wb, sc);
107    
108    evas_object_data_set(ob, "rec", rc);
109    v = sc * 1000;
110    evas_object_data_set(ob, "scale", (void *)(unsigned long)v);
111    evas_object_data_set(ob, "scalep", scp);
112
113    evas_object_event_callback_add(rc,
114                                   EVAS_CALLBACK_MOUSE_DOWN,
115                                   _scale_down, ob);
116    obs = eina_list_append(obs, ob);
117    
118    return ob;
119 }
120
121 EAPI int
122 wizard_page_show(E_Wizard_Page *pg)
123 {
124    Evas_Object *o, *of, *ob;
125    Evas_Coord sw, sh;
126    
127    o = e_widget_list_add(pg->evas, 1, 0);
128    e_wizard_title_set(_("Sizing"));
129    
130    of = e_widget_frametable_add(pg->evas, _("Select preferred size"), 1);
131    e_widget_frametable_content_align_set(of, 0.5, 0.5);
132    
133    ob = _scale_preview_new(pg->evas, 0.80, &scale);
134    e_widget_size_min_get(ob, &sw, &sh);
135    e_widget_frametable_object_append_full(of, ob, 0, 0, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
136    evas_object_show(ob);
137    
138    ob = _scale_preview_new(pg->evas, 1.00, &scale);
139    _scale_preview_sel_set(ob, 1);
140    e_widget_size_min_get(ob, &sw, &sh);
141    e_widget_frametable_object_append_full(of, ob, 1, 0, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
142    evas_object_show(ob);
143    
144    ob = _scale_preview_new(pg->evas, 1.20, &scale);
145    e_widget_size_min_get(ob, &sw, &sh);
146    e_widget_frametable_object_append_full(of, ob, 0, 1, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
147    evas_object_show(ob);
148    
149    ob = _scale_preview_new(pg->evas, 1.50, &scale);
150    e_widget_size_min_get(ob, &sw, &sh);
151    e_widget_frametable_object_append_full(of, ob, 1, 1, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
152    evas_object_show(ob);
153    
154    ob = _scale_preview_new(pg->evas, 1.70, &scale);
155    e_widget_size_min_get(ob, &sw, &sh);
156    e_widget_frametable_object_append_full(of, ob, 0, 2, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
157    evas_object_show(ob);
158    
159    ob = _scale_preview_new(pg->evas, 2.00, &scale);
160    e_widget_size_min_get(ob, &sw, &sh);
161    e_widget_frametable_object_append_full(of, ob, 1, 2, 1, 1, 0, 0, 1, 1, 0.5, 0.5, sw, sh, sw, sh);
162    evas_object_show(ob);
163    
164    e_widget_list_object_append(o, of, 0, 0, 0.5);
165    evas_object_show(ob);
166    evas_object_show(of);
167    
168    e_wizard_page_show(o);
169 //   pg->data = o;
170    return 1; /* 1 == show ui, and wait for user, 0 == just continue */
171 }
172
173 EAPI int
174 wizard_page_hide(E_Wizard_Page *pg __UNUSED__)
175 {
176    obs = eina_list_free(obs);
177 //   evas_object_del(pg->data);
178    
179    e_config->scale.use_dpi = 0;
180    e_config->scale.use_custom = 1;
181    e_config->scale.factor = scale;
182    e_scale_update();
183    return 1;
184 }
185
186 EAPI int
187 wizard_page_apply(E_Wizard_Page *pg __UNUSED__)
188 {
189    return 1;
190 }