efl

Форк
0
/
test_sys_notify.c 
148 строк · 4.5 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4
#include <Elementary.h>
5

6
#define WIDTH  320
7
#define HEIGHT 160
8

9
struct _Sys_Notify_Data {
10
    Evas_Object *l;
11
    Evas_Object *n;
12
    Ecore_Event_Handler *handlers[2];
13
};
14
typedef struct _Sys_Notify_Data Sys_Notify_Data;
15

16
static Eina_Bool
17
_ev_handler(void *data EINA_UNUSED,
18
            int type,
19
            void *event)
20
{
21
   Elm_Sys_Notify_Notification_Closed *closed;
22
   Elm_Sys_Notify_Action_Invoked *action;
23

24
   if (type == ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED)
25
     {
26
        closed = event;
27
        printf("Notification Closed Event: %u %d.\n",
28
               closed->id, closed->reason);
29
     }
30
   else if (type == ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED)
31
     {
32
        action = event;
33
        printf("Notification Action Event: %u %s.\n",
34
               action->id, action->action_key);
35
     }
36
   else
37
     return ECORE_CALLBACK_PASS_ON;
38

39
   return ECORE_CALLBACK_DONE;
40
}
41

42
static void _sys_notify_cb(void *data, unsigned int id EINA_UNUSED)
43
{
44
   Sys_Notify_Data *notify_data = data;
45

46
   elm_object_text_set(notify_data->l, "notify is done");
47
   evas_object_show(notify_data->n);
48
}
49

50
static void
51
_bt_clicked(void *data,
52
            Evas_Object *obj,
53
            void *event_info EINA_UNUSED)
54
{
55
   Evas_Object *s, *b;
56
   s = evas_object_data_get(obj, "summary");
57
   b = evas_object_data_get(obj, "body");
58

59
   elm_sys_notify_send(0, "", elm_entry_entry_get(s), elm_entry_entry_get(b),
60
                       ELM_SYS_NOTIFY_URGENCY_NORMAL,
61
                       -1, _sys_notify_cb, data);
62
}
63

64
static void
65
_test_sys_notify_win_del_cb(void *data,
66
                            Evas *e EINA_UNUSED,
67
                            Evas_Object *obj EINA_UNUSED,
68
                            void *event_info EINA_UNUSED)
69
{
70
   Sys_Notify_Data *notify_data = data;
71
   ecore_event_handler_del(notify_data->handlers[0]);
72
   ecore_event_handler_del(notify_data->handlers[1]);
73

74
   free(notify_data);
75
}
76

77
void
78
test_sys_notify(void *data EINA_UNUSED,
79
                Evas_Object *obj EINA_UNUSED,
80
                void *event_info EINA_UNUSED)
81
{
82
   Evas_Object *win, *bx, *it, *btn;
83
   Evas_Object *s, *b, *n, *l;
84
   Sys_Notify_Data *notify_data;
85

86
   elm_need_sys_notify();
87

88
   notify_data = malloc(sizeof(Sys_Notify_Data));
89

90
   win = elm_win_add(NULL, "Sys Notify", ELM_WIN_BASIC);
91
   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
92
   elm_win_title_set(win, "System Notification");
93
   elm_win_autodel_set(win, EINA_TRUE);
94
   evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
95
                                  _test_sys_notify_win_del_cb, notify_data);
96

97
   it = elm_bg_add(win);
98
   elm_win_resize_object_add(win, it);
99
   evas_object_size_hint_min_set(it, WIDTH, HEIGHT);
100
   evas_object_size_hint_max_set(it, WIDTH, HEIGHT);
101
   evas_object_show(it);
102

103
   notify_data->n = n = elm_notify_add(win);
104
   evas_object_size_hint_weight_set(n, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
105
   elm_notify_align_set(n, 0.5, 0.0);
106
   elm_notify_timeout_set(n, 2.0);
107

108
   notify_data->l = l = elm_label_add(win);
109
   elm_object_content_set(n, l);
110
   evas_object_show(l);
111

112
   bx = elm_box_add(win);
113
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
114
   elm_win_resize_object_add(win, bx);
115
   evas_object_show(bx);
116

117
   s = elm_entry_add(win);
118
   elm_entry_single_line_set(s, EINA_TRUE);
119
   elm_entry_scrollable_set(s, EINA_TRUE);
120
   elm_entry_entry_set(s, "Summary");
121
   evas_object_size_hint_align_set(s, EVAS_HINT_FILL, EVAS_HINT_FILL);
122
   elm_box_pack_end(bx, s);
123
   evas_object_show(s);
124

125
   b = elm_entry_add(win);
126
   elm_entry_single_line_set(b, EINA_TRUE);
127
   elm_entry_scrollable_set(b, EINA_TRUE);
128
   elm_entry_entry_set(b, "Body long description.");
129
   evas_object_size_hint_align_set(b, EVAS_HINT_FILL, EVAS_HINT_FILL);
130
   elm_box_pack_end(bx, b);
131
   evas_object_show(b);
132

133
   btn = elm_button_add(win);
134
   elm_object_text_set(btn, "Send Notification");
135
   evas_object_smart_callback_add(btn, "clicked", _bt_clicked, notify_data);
136
   evas_object_data_set(btn, "summary", s);
137
   evas_object_data_set(btn, "body", b);
138
   elm_box_pack_end(bx, btn);
139
   evas_object_show(btn);
140

141
   evas_object_resize(win, WIDTH, HEIGHT);
142
   evas_object_show(win);
143

144
   notify_data->handlers[0] = ecore_event_handler_add(ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED,
145
                                                      _ev_handler, notify_data);
146
   notify_data->handlers[1] = ecore_event_handler_add(ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED,
147
                                                      _ev_handler, notify_data);
148
}
149

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

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

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

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