void daemon_note_close(Daemon_Data *dd, E_Notification *n, int reason) { printf("Close notification #%d\n", e_notification_id_get(n)); if (eina_list_data_find(dd->open_notes, n)) { dd->open_notes = eina_list_remove(dd->open_notes, n); e_notification_closed_set(n, 1); e_notification_daemon_signal_notification_closed(dd->daemon, e_notification_id_get(n), reason); e_notification_unref(n); } }
static Eina_Bool _notification_timer_cb(Popup_Data *popup) { _notification_popup_del(e_notification_id_get(popup->notif), E_NOTIFICATION_CLOSED_EXPIRED); return EINA_FALSE; }
void daemon_note_show(Daemon_Data *d, E_Notification *n) { e_notification_ref(n); d->open_notes = eina_list_append(d->open_notes, n); e_notification_ref(n); d->history = eina_list_append(d->history, n); // adjust history if ((int) eina_list_count(d->history) > d->max_history_length) { E_Notification *old; old = eina_list_data_get(d->history); d->history = eina_list_remove_list(d->history, d->history); d->history_start = e_notification_id_get(old) + 1; e_notification_unref(old); } { int timeout; timeout = e_notification_timeout_get(n); Timer_Data *td = calloc(1, sizeof(Timer_Data)); td->d = d; e_notification_ref(n); td->n = n; ecore_timer_add(timeout == -1 ? d->default_timeout : (float)timeout / 1000, cb_note_close_timer, td); } printf("Received notification from %s:\n%s\n%s\n\n", e_notification_app_name_get(n), e_notification_summary_get(n), e_notification_body_get(n) ); }
E_Notification * daemon_note_open_find(Daemon_Data *d, unsigned int id) { E_Notification *n; Eina_List *l; EINA_LIST_FOREACH(d->open_notes, l, n) if (e_notification_id_get(n) == id) return n; return NULL; }