efl
148 строк · 4.5 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4#include <Elementary.h>5
6#define WIDTH 3207#define HEIGHT 1608
9struct _Sys_Notify_Data {10Evas_Object *l;11Evas_Object *n;12Ecore_Event_Handler *handlers[2];13};14typedef struct _Sys_Notify_Data Sys_Notify_Data;15
16static Eina_Bool17_ev_handler(void *data EINA_UNUSED,18int type,19void *event)20{
21Elm_Sys_Notify_Notification_Closed *closed;22Elm_Sys_Notify_Action_Invoked *action;23
24if (type == ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED)25{26closed = event;27printf("Notification Closed Event: %u %d.\n",28closed->id, closed->reason);29}30else if (type == ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED)31{32action = event;33printf("Notification Action Event: %u %s.\n",34action->id, action->action_key);35}36else37return ECORE_CALLBACK_PASS_ON;38
39return ECORE_CALLBACK_DONE;40}
41
42static void _sys_notify_cb(void *data, unsigned int id EINA_UNUSED)43{
44Sys_Notify_Data *notify_data = data;45
46elm_object_text_set(notify_data->l, "notify is done");47evas_object_show(notify_data->n);48}
49
50static void51_bt_clicked(void *data,52Evas_Object *obj,53void *event_info EINA_UNUSED)54{
55Evas_Object *s, *b;56s = evas_object_data_get(obj, "summary");57b = evas_object_data_get(obj, "body");58
59elm_sys_notify_send(0, "", elm_entry_entry_get(s), elm_entry_entry_get(b),60ELM_SYS_NOTIFY_URGENCY_NORMAL,61-1, _sys_notify_cb, data);62}
63
64static void65_test_sys_notify_win_del_cb(void *data,66Evas *e EINA_UNUSED,67Evas_Object *obj EINA_UNUSED,68void *event_info EINA_UNUSED)69{
70Sys_Notify_Data *notify_data = data;71ecore_event_handler_del(notify_data->handlers[0]);72ecore_event_handler_del(notify_data->handlers[1]);73
74free(notify_data);75}
76
77void
78test_sys_notify(void *data EINA_UNUSED,79Evas_Object *obj EINA_UNUSED,80void *event_info EINA_UNUSED)81{
82Evas_Object *win, *bx, *it, *btn;83Evas_Object *s, *b, *n, *l;84Sys_Notify_Data *notify_data;85
86elm_need_sys_notify();87
88notify_data = malloc(sizeof(Sys_Notify_Data));89
90win = elm_win_add(NULL, "Sys Notify", ELM_WIN_BASIC);91elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);92elm_win_title_set(win, "System Notification");93elm_win_autodel_set(win, EINA_TRUE);94evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,95_test_sys_notify_win_del_cb, notify_data);96
97it = elm_bg_add(win);98elm_win_resize_object_add(win, it);99evas_object_size_hint_min_set(it, WIDTH, HEIGHT);100evas_object_size_hint_max_set(it, WIDTH, HEIGHT);101evas_object_show(it);102
103notify_data->n = n = elm_notify_add(win);104evas_object_size_hint_weight_set(n, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);105elm_notify_align_set(n, 0.5, 0.0);106elm_notify_timeout_set(n, 2.0);107
108notify_data->l = l = elm_label_add(win);109elm_object_content_set(n, l);110evas_object_show(l);111
112bx = elm_box_add(win);113evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);114elm_win_resize_object_add(win, bx);115evas_object_show(bx);116
117s = elm_entry_add(win);118elm_entry_single_line_set(s, EINA_TRUE);119elm_entry_scrollable_set(s, EINA_TRUE);120elm_entry_entry_set(s, "Summary");121evas_object_size_hint_align_set(s, EVAS_HINT_FILL, EVAS_HINT_FILL);122elm_box_pack_end(bx, s);123evas_object_show(s);124
125b = elm_entry_add(win);126elm_entry_single_line_set(b, EINA_TRUE);127elm_entry_scrollable_set(b, EINA_TRUE);128elm_entry_entry_set(b, "Body long description.");129evas_object_size_hint_align_set(b, EVAS_HINT_FILL, EVAS_HINT_FILL);130elm_box_pack_end(bx, b);131evas_object_show(b);132
133btn = elm_button_add(win);134elm_object_text_set(btn, "Send Notification");135evas_object_smart_callback_add(btn, "clicked", _bt_clicked, notify_data);136evas_object_data_set(btn, "summary", s);137evas_object_data_set(btn, "body", b);138elm_box_pack_end(bx, btn);139evas_object_show(btn);140
141evas_object_resize(win, WIDTH, HEIGHT);142evas_object_show(win);143
144notify_data->handlers[0] = ecore_event_handler_add(ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED,145_ev_handler, notify_data);146notify_data->handlers[1] = ecore_event_handler_add(ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED,147_ev_handler, notify_data);148}
149