f4806298e07df0aefd12fac97c7c6eef966534a3
[framework/uifw/elementary.git] / src / bin / test_weather.c
1 #include <Elementary.h>
2 #include "../../elementary_config.h"
3 #ifndef ELM_LIB_QUICKLAUNCH
4
5 #ifdef HAVE_ELEMENTARY_EWEATHER
6 # include "EWeather_Smart.h"
7 #endif
8
9 #ifdef HAVE_ELEMENTARY_EWEATHER
10 static Evas_Object *en, *hv, *fl;
11 static Evas_Object *weather[2];
12 static int current = 0;
13 static Eina_Module *module[2];
14
15 static void
16 _first_city_cb(void *data, Evas_Object *o, void *event_info)
17 {
18    if (!current) return;
19    current = 0;
20    elm_flip_go(fl, ELM_FLIP_ROTATE_YZ_CENTER_AXIS);
21 }
22
23 static void
24 _second_city_cb(void *data, Evas_Object *o, void *event_info)
25 {
26    if (current) return;
27    current = 1;
28    elm_flip_go(fl, ELM_FLIP_ROTATE_XZ_CENTER_AXIS);
29 }
30
31 static void _apply_cb(void *data, Evas_Object *o, void *event_info)
32 {
33    EWeather *eweather = eweather_object_eweather_get(weather[current]);
34    
35    if (module[current])
36      eweather_plugin_set(eweather, module[current]);
37    eweather_code_set(eweather, elm_entry_entry_get(en));
38    printf("CURRENT %d %p %p\n", current, module[current], eweather);
39 }
40
41 static void
42 _hover_select_cb(void *data, Evas_Object *obj, void *event_info)
43 {
44    EWeather *eweather = eweather_object_eweather_get(weather[0]);
45    module[0] = eweather_plugin_search(eweather, elm_hoversel_item_label_get(event_info));
46    
47    eweather = eweather_object_eweather_get(weather[1]);
48    module[1] = eweather_plugin_search(eweather, elm_hoversel_item_label_get(event_info));
49    printf("%p %p\n", module[0], module[1]);
50 }
51 #endif
52
53 void
54 test_weather(void *data, Evas_Object *obj, void *event_info)
55 {
56    Evas_Object *win, *bg;
57 #ifdef HAVE_ELEMENTARY_EWEATHER
58    Evas_Object *bx, *bx0, *bt;
59    EWeather *eweather;
60    Eina_Array_Iterator it;
61    Eina_Array *array;
62    Eina_Module *m;
63    int i;
64 #endif
65
66    win = elm_win_add(NULL, "weather", ELM_WIN_BASIC);
67    elm_win_title_set(win, "Weather");
68    elm_win_autodel_set(win, 1);
69
70    bg = elm_bg_add(win);
71    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
72    elm_win_resize_object_add(win, bg);
73    evas_object_show(bg);
74
75 #ifdef HAVE_ELEMENTARY_EWEATHER 
76    bx = elm_box_add(win);
77    elm_win_resize_object_add(win, bx);
78    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
79    evas_object_show(bx);
80
81    fl = elm_flip_add(win);
82    evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
83    evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
84    elm_box_pack_end(bx, fl);
85
86    current = 0;
87
88    module[0] = NULL;
89    weather[0] = eweather_object_add(evas_object_evas_get(win));
90    eweather = eweather_object_eweather_get(weather[0]);
91    evas_object_size_hint_weight_set(weather[0], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
92    evas_object_size_hint_align_set(weather[0], -1.0, -1.0);
93    elm_flip_content_front_set(fl, weather[0]);
94    evas_object_show(weather[0]);
95
96    module[1] = NULL;
97    weather[1] = eweather_object_add(evas_object_evas_get(win));
98    eweather = eweather_object_eweather_get(weather[1]);
99    evas_object_size_hint_weight_set(weather[1], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
100    evas_object_size_hint_align_set(weather[1], -1.0, -1.0);
101    elm_flip_content_back_set(fl, weather[1]);
102    evas_object_show(weather[1]);
103
104    evas_object_show(fl);
105
106    //
107    bx0 = elm_box_add(win);
108    elm_box_horizontal_set(bx0, EINA_TRUE);
109    evas_object_size_hint_weight_set(bx0, 1.0, 0.0);
110    elm_box_pack_end(bx, bx0);
111    evas_object_show(bx0);
112
113    bt = elm_button_add(win);
114    elm_button_label_set(bt, "First city");
115    evas_object_show(bt);
116    elm_box_pack_end(bx0, bt);
117    evas_object_smart_callback_add(bt, "clicked", _first_city_cb, NULL);
118
119    bt = elm_button_add(win);
120    elm_button_label_set(bt, "Second city");
121    evas_object_show(bt);
122    elm_box_pack_end(bx0, bt);
123    evas_object_smart_callback_add(bt, "clicked", _second_city_cb, NULL);
124    //
125
126    //
127    bx0 = elm_box_add(win);
128    elm_box_horizontal_set(bx0, EINA_TRUE);
129    evas_object_size_hint_weight_set(bx0, 1.0, 0.0);
130    elm_box_pack_end(bx, bx0);
131    evas_object_show(bx0);
132
133    hv = elm_hoversel_add(win);
134    elm_hoversel_hover_parent_set(hv, win);
135    elm_hoversel_label_set(hv, "data source");
136    evas_object_size_hint_weight_set(hv, 0.0, 0.0);
137    evas_object_size_hint_align_set(hv, 0.5, 0.5);
138    elm_box_pack_end(bx0, hv);
139    evas_object_show(hv);
140
141    array = eweather_plugins_list_get(eweather);
142    
143    EINA_ARRAY_ITER_NEXT(array, i, m, it)
144      elm_hoversel_item_add(hv, eweather_plugin_name_get(eweather, i), NULL, ELM_ICON_NONE, _hover_select_cb, NULL);
145    
146    en = elm_entry_add(win);
147    elm_entry_line_wrap_set(en, 0);
148    elm_entry_single_line_set(en, EINA_TRUE);
149    elm_entry_entry_set(en, "Paris");
150    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
151    evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
152    elm_box_pack_end(bx0, en);
153    evas_object_show(en);
154
155    bt = elm_button_add(win);
156    elm_button_label_set(bt, "Apply");
157    evas_object_show(bt);
158    elm_box_pack_end(bx0, bt);
159    evas_object_smart_callback_add(bt, "clicked", _apply_cb, NULL);
160    //
161
162
163 #else
164     Evas_Object *lbl;
165     
166     lbl = elm_label_add(win);
167     elm_win_resize_object_add(win, lbl);
168     elm_label_label_set(lbl, "libeweather is required to display the forecast.");
169     evas_object_show(lbl);
170 #endif
171
172     evas_object_resize(win, 244, 388);
173     evas_object_show(win);
174 }
175 #endif