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