efl

Форк
0
/
test_weather.c 
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
11
static Evas_Object *en, *hv, *fl;
12
static Evas_Object *weather[2];
13
static int current = 0;
14
static Eina_Module *module[2];
15

16
static void
17
_first_city_cb(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
18
{
19
   if (!current) return;
20
   current = 0;
21
   elm_flip_go(fl, ELM_FLIP_ROTATE_YZ_CENTER_AXIS);
22
}
23

24
static void
25
_second_city_cb(void *dat EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
26
{
27
   if (current) return;
28
   current = 1;
29
   elm_flip_go(fl, ELM_FLIP_ROTATE_XZ_CENTER_AXIS);
30
}
31

32
static void _apply_cb(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED)
33
{
34
   EWeather *eweather = eweather_object_eweather_get(weather[current]);
35

36
   if (module[current])
37
     eweather_plugin_set(eweather, module[current]);
38
   eweather_code_set(eweather, elm_object_text_get(en));
39
   printf("CURRENT %d, module[current] %p, eweather %p, city : %s\n",
40
          current, module[current], eweather, elm_object_text_get(en));
41
}
42

43
static void
44
_hover_select_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
45
{
46
   EWeather *eweather = eweather_object_eweather_get(weather[0]);
47
   module[0] = eweather_plugin_search(eweather, elm_object_item_text_get(event_info));
48

49
   eweather = eweather_object_eweather_get(weather[1]);
50
   module[1] = eweather_plugin_search(eweather, elm_object_item_text_get(event_info));
51
   printf("%p %p\n", module[0], module[1]);
52
}
53
#endif
54

55
void
56
test_weather(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
57
{
58
   Evas_Object *win;
59
#ifdef HAVE_ELEMENTARY_EWEATHER
60
   Evas_Object *bx, *bx0, *bt;
61
   EWeather *eweather;
62
   Eina_Array_Iterator it;
63
   Eina_Array *array;
64
   Eina_Module *m;
65
   unsigned int i;
66
#endif
67

68
   win = elm_win_util_standard_add("weather", "Weather");
69
   elm_win_autodel_set(win, EINA_TRUE);
70

71
#ifdef HAVE_ELEMENTARY_EWEATHER
72
   bx = elm_box_add(win);
73
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
74
   elm_win_resize_object_add(win, bx);
75
   evas_object_show(bx);
76

77
   fl = elm_flip_add(win);
78
   evas_object_size_hint_align_set(fl, EVAS_HINT_FILL, EVAS_HINT_FILL);
79
   evas_object_size_hint_weight_set(fl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
80
   elm_box_pack_end(bx, fl);
81

82
   current = 0;
83

84
   module[0] = NULL;
85
   weather[0] = eweather_object_add(evas_object_evas_get(win));
86
   evas_object_size_hint_weight_set(weather[0], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
87
   evas_object_size_hint_align_set(weather[0], EVAS_HINT_FILL, EVAS_HINT_FILL);
88
   elm_object_part_content_set(fl, "front", weather[0]);
89
   evas_object_show(weather[0]);
90

91
   module[1] = NULL;
92
   weather[1] = eweather_object_add(evas_object_evas_get(win));
93
   eweather = eweather_object_eweather_get(weather[1]);
94
   evas_object_size_hint_weight_set(weather[1], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
95
   evas_object_size_hint_align_set(weather[1], EVAS_HINT_FILL, EVAS_HINT_FILL);
96
   elm_object_part_content_set(fl, "back", weather[1]);
97
   evas_object_show(weather[1]);
98

99
   evas_object_show(fl);
100

101
   //
102
   bx0 = elm_box_add(win);
103
   elm_box_horizontal_set(bx0, EINA_TRUE);
104
   evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, 0.0);
105
   elm_box_pack_end(bx, bx0);
106
   evas_object_show(bx0);
107

108
   bt = elm_button_add(win);
109
   elm_object_text_set(bt, "First city");
110
   evas_object_show(bt);
111
   elm_box_pack_end(bx0, bt);
112
   evas_object_smart_callback_add(bt, "clicked", _first_city_cb, NULL);
113

114
   bt = elm_button_add(win);
115
   elm_object_text_set(bt, "Second city");
116
   evas_object_show(bt);
117
   elm_box_pack_end(bx0, bt);
118
   evas_object_smart_callback_add(bt, "clicked", _second_city_cb, NULL);
119
   //
120

121
   //
122
   bx0 = elm_box_add(win);
123
   elm_box_horizontal_set(bx0, EINA_TRUE);
124
   evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, 0.0);
125
   elm_box_pack_end(bx, bx0);
126
   evas_object_show(bx0);
127

128
   hv = elm_hoversel_add(win);
129
   elm_hoversel_hover_parent_set(hv, win);
130
   elm_object_text_set(hv, "data source");
131
   evas_object_size_hint_weight_set(hv, 0.0, 0.0);
132
   evas_object_size_hint_align_set(hv, 0.5, 0.5);
133
   elm_box_pack_end(bx0, hv);
134
   evas_object_show(hv);
135

136
   array = eweather_plugins_list_get(eweather);
137

138
   EINA_ARRAY_ITER_NEXT(array, i, m, it)
139
     elm_hoversel_item_add(hv, eweather_plugin_name_get(eweather, i), NULL, ELM_ICON_NONE, _hover_select_cb, NULL);
140

141
   en = elm_entry_add(win);
142
   elm_entry_line_wrap_set(en, ELM_WRAP_NONE);
143
   elm_entry_single_line_set(en, EINA_TRUE);
144
   elm_object_text_set(en, "Paris");
145
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
146
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
147
   evas_object_smart_callback_add(en, "activated", _apply_cb, NULL);
148
   elm_box_pack_end(bx0, en);
149
   evas_object_show(en);
150

151
   bt = elm_button_add(win);
152
   elm_object_text_set(bt, "Apply");
153
   evas_object_show(bt);
154
   elm_box_pack_end(bx0, bt);
155
   evas_object_smart_callback_add(bt, "clicked", _apply_cb, NULL);
156
#else
157
    Evas_Object *lbl;
158

159
    lbl = elm_label_add(win);
160
    evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
161
    elm_win_resize_object_add(win, lbl);
162
    elm_object_text_set(lbl, "libeweather is required to display the forecast.");
163
    evas_object_show(lbl);
164
#endif
165

166
    evas_object_resize(win, 244 * elm_config_scale_get(),
167
                            388 * elm_config_scale_get());
168
    evas_object_show(win);
169
}
170

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.