[Pkg-e-commits] [SCM] D-Bus integration for EFL based applications branch, master, updated. debian/0.5.0.050+svn20081126-1-145-g8d471b1
Albin Tonnerre
albin.tonnerre at gmail.com
Fri Feb 6 20:44:19 UTC 2009
The following commit has been merged in the master branch:
commit 3bd69885652965be3299a495f39eedb8460f0ca7
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date: Fri Jan 30 14:43:40 2009 +0100
Import new SVN snapshot
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index e96dc1d..2017f05 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -89,9 +89,9 @@ e_dbus_notification_daemon_LDADD = $(top_builddir)/src/lib/dbus/libedbus.la $(to
e_dbus_notification_daemon_DEPENDENCIES = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
e_notify_send_SOURCES = \
- notify-send.c
+ notify-send.c
e_notify_send_CPPFLAGS = $(EDBUS_CPPFLAGS)
-e_notify_send_LDADD = $(top_builddir)/src/lib/notification/libenotify.la
-e_notify_send_DEPENDENCIES = $(top_builddir)/src/lib/notification/libenotify.la
+e_notify_send_LDADD = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
+e_notify_send_DEPENDENCIES = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
endif
diff --git a/src/bin/Makefile.in b/src/bin/Makefile.in
index 696f17a..c8250a4 100644
--- a/src/bin/Makefile.in
+++ b/src/bin/Makefile.in
@@ -279,11 +279,11 @@ e_dbus_test_client_DEPENDENCIES = $(top_builddir)/src/lib/dbus/libedbus.la
@BUILD_ENOTIFY_TRUE at e_dbus_notification_daemon_LDADD = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
@BUILD_ENOTIFY_TRUE at e_dbus_notification_daemon_DEPENDENCIES = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
@BUILD_ENOTIFY_TRUE at e_notify_send_SOURCES = \
- at BUILD_ENOTIFY_TRUE@ notify-send.c
+ at BUILD_ENOTIFY_TRUE@ notify-send.c
@BUILD_ENOTIFY_TRUE at e_notify_send_CPPFLAGS = $(EDBUS_CPPFLAGS)
- at BUILD_ENOTIFY_TRUE@e_notify_send_LDADD = $(top_builddir)/src/lib/notification/libenotify.la
- at BUILD_ENOTIFY_TRUE@e_notify_send_DEPENDENCIES = $(top_builddir)/src/lib/notification/libenotify.la
+ at BUILD_ENOTIFY_TRUE@e_notify_send_LDADD = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
+ at BUILD_ENOTIFY_TRUE@e_notify_send_DEPENDENCIES = $(top_builddir)/src/lib/dbus/libedbus.la $(top_builddir)/src/lib/notification/libenotify.la
all: all-am
.SUFFIXES:
diff --git a/src/bin/nm.c b/src/bin/nm.c
index ecf6e0b..0af4c11 100644
--- a/src/bin/nm.c
+++ b/src/bin/nm.c
@@ -2,10 +2,21 @@
#include <Ecore_Data.h>
#include <unistd.h>
+#include <string.h>
E_NM *nm = NULL;
E_NMS *nms = NULL;
+static void *
+memdup(const void *p, size_t n)
+{
+ void *q;
+
+ q = malloc(n);
+ memcpy(q, p, n);
+ return q;
+}
+
static void
dump_variant(E_NM_Variant *var)
{
@@ -15,69 +26,73 @@ dump_variant(E_NM_Variant *var)
case 'a': {
E_NM_Variant *subvar;
- printf("\n - ");
+ printf("a:");
ecore_list_first_goto(var->a);
while ((subvar = ecore_list_next(var->a)))
+ {
dump_variant(subvar);
+ printf(";");
+ }
+ printf("\n");
break;
}
case 's':
+ printf("s:%s", var->s);
+ break;
case 'o':
- printf("%s ", var->s);
+ printf("o:%s", var->s);
break;
case 'u':
- printf("%d ", var->u);
+ printf("u:%d", var->u);
break;
case 'b':
- printf("%d ", var->b);
+ printf("b:%d", var->b);
break;
case 'y':
- printf("%d ", var->y);
+ printf("y:%d", var->y);
break;
case 't':
- printf("%lld ", var->t);
+ printf("t:%lld", var->t);
break;
}
}
-static void
-dump_values(void *value, void *data)
+static Eina_Bool
+dump_values(const Eina_Hash *hash, const void *key, void *value, void *data)
{
- Ecore_Hash_Node *node;
-
- node = value;
- printf(" - name: %s - ", (char *)node->key);
- dump_variant(node->value);
+ printf(" - name: %s - ", (char *)key);
+ dump_variant(value);
printf("\n");
}
-static void
-dump_settings(void *value, void *data)
+static Eina_Bool
+dump_settings(const Eina_Hash *hash, const void *key, void *value, void *fdata)
{
- Ecore_Hash_Node *node;
-
- node = value;
- printf("name: %s\n", (char *)node->key);
+ printf("name: %s\n", (char *)key);
printf("values:\n");
- ecore_hash_for_each_node(node->value, dump_values, NULL);
+ eina_hash_foreach(value, dump_values, NULL);
printf("\n");
}
static int
-cb_nms_connection_settings(void *data, Ecore_Hash *settings)
+cb_nms_connection_secrets(void *data, Ecore_Hash *secrets)
{
printf("Secrets:\n");
- if (settings)
- ecore_hash_for_each_node(settings, dump_settings, NULL);
+ if (secrets)
+ eina_hash_foreach(secrets, dump_settings, NULL);
return 1;
}
static int
-cb_nms_connection_secrets(void *data, Ecore_Hash *secrets)
+cb_nms_connection_settings(void *data, Ecore_Hash *settings)
{
- printf("Secrets:\n");
- if (secrets)
- ecore_hash_for_each_node(secrets, dump_settings, NULL);
+ printf("Settings:\n");
+ if (settings)
+ {
+ if (ecore_hash_get(settings, "802-11-wireless-security"))
+ e_nms_connection_secrets_get_secrets(data, "802-11-wireless-security", NULL, 0, cb_nms_connection_secrets, NULL);
+ eina_hash_foreach(settings, dump_settings, NULL);
+ }
return 1;
}
@@ -92,12 +107,12 @@ cb_nms_connections(void *data, Ecore_List *list)
while ((conn = ecore_list_next(list)))
{
e_nms_connection_dump(conn);
- e_nms_connection_get_settings(conn, cb_nms_connection_settings, NULL);
- e_nms_connection_secrets_get_secrets(conn, "802-11-wireless-security", NULL, 0, cb_nms_connection_secrets, NULL);
+ e_nms_connection_get_settings(conn, cb_nms_connection_settings, conn);
}
- ecore_list_destroy(list);
+ //ecore_list_destroy(list);
}
//ecore_main_loop_quit();
+ //e_nms_list_connections(nms, cb_nms_connections, nms);
return 1;
}
@@ -174,11 +189,11 @@ cb_get_devices(void *data, Ecore_List *list)
e_nm_device_dump(device);
if (device->device_type == E_NM_DEVICE_TYPE_WIRELESS)
{
- /*
+ /*
e_nm_device_wireless_get_access_points(device, cb_access_points, NULL);
e_nm_access_point_get(nm, device->wireless.active_access_point, cb_access_point, NULL);
e_nm_ip4_config_get(nm, device->ip4_config, cb_ip4_config, NULL);
- */
+ */
}
}
//ecore_list_destroy(list);
@@ -188,6 +203,93 @@ cb_get_devices(void *data, Ecore_List *list)
}
static int
+cb_nms(void *data, E_NMS *reply)
+{
+ Ecore_Hash *settings, *values;
+ E_NM_Variant variant;
+ const char ssid[] = { };
+ const char *bssids[] = { };
+
+ settings = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(settings, free);
+ ecore_hash_free_value_cb_set(settings, ECORE_FREE_CB(ecore_hash_destroy));
+ /* connection */
+ values = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(values, free);
+ ecore_hash_free_value_cb_set(values, ECORE_FREE_CB(e_nm_variant_free));
+ ecore_hash_set(settings, strdup("connection"), values);
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 't';
+ variant.t = 1228201388;
+ ecore_hash_set(values, strdup("timestamp"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("");
+ ecore_hash_set(values, strdup("id"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("");
+ ecore_hash_set(values, strdup("uuid"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("802-11-wireless");
+ ecore_hash_set(values, strdup("type"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 'b';
+ variant.b = 0;
+ ecore_hash_set(values, strdup("autoconnect"), memdup(&variant, sizeof(E_NM_Variant)));
+ /* 802-11-wireless */
+ values = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(values, free);
+ ecore_hash_free_value_cb_set(values, ECORE_FREE_CB(e_nm_variant_free));
+ ecore_hash_set(settings, strdup("802-11-wireless"), values);
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("mode");
+ ecore_hash_set(values, strdup("infrastructure"), memdup(&variant, sizeof(E_NM_Variant)));
+ ecore_hash_set(values, strdup("ssid"), e_nm_variant_array_new('y', ssid, sizeof(ssid) / sizeof(ssid[0])));
+ ecore_hash_set(values, strdup("seen-bssids"), e_nm_variant_array_new('s', bssids, sizeof(bssids) / sizeof(bssids[0])));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("802-11-wireless-security");
+ ecore_hash_set(values, strdup("security"), memdup(&variant, sizeof(E_NM_Variant)));
+ /* ipv4 */
+ values = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(values, free);
+ ecore_hash_free_value_cb_set(values, ECORE_FREE_CB(e_nm_variant_free));
+ ecore_hash_set(settings, strdup("ipv4"), values);
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("auto");
+ ecore_hash_set(values, strdup("method"), memdup(&variant, sizeof(E_NM_Variant)));
+ /* 802-11-wireless-security */
+ values = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+ ecore_hash_free_key_cb_set(values, free);
+ ecore_hash_free_value_cb_set(values, ECORE_FREE_CB(e_nm_variant_free));
+ ecore_hash_set(settings, strdup("802-11-wireless-security"), values);
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("none");
+ ecore_hash_set(values, strdup("key-mgmt"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("open");
+ ecore_hash_set(values, strdup("auth-alg"), memdup(&variant, sizeof(E_NM_Variant)));
+ memset(&variant, 0, sizeof(E_NM_Variant));
+ variant.type = 's';
+ variant.s = strdup("");
+ ecore_hash_set(values, strdup("wep-key0"), memdup(&variant, sizeof(E_NM_Variant)));
+
+ nms = reply;
+ e_nms_dump(nms);
+ //ecore_hash_for_each_node(settings, dump_settings, NULL);
+ //e_nms_system_add_connection(nms, settings);
+ //sleep(1);
+ e_nms_list_connections(nms, cb_nms_connections, nms);
+ return 1;
+}
+
+static int
cb_nm(void *data, E_NM *reply)
{
if (!reply)
@@ -209,9 +311,7 @@ cb_nm(void *data, E_NM *reply)
/*
e_nm_get_devices(nm, cb_get_devices, nm);
*/
- nms = e_nms_get(nm);
- e_nms_dump(nms);
- e_nms_list_connections(nms, cb_nms_connections, nms);
+ e_nms_get(nm, E_NMS_CONTEXT_SYSTEM, cb_nms, NULL);
return 1;
}
diff --git a/src/bin/notify-send.c b/src/bin/notify-send.c
index 76f0f8f..058675b 100644
--- a/src/bin/notify-send.c
+++ b/src/bin/notify-send.c
@@ -27,6 +27,8 @@ usage(void)
" -n, --name=NAME Specifies the application name to use (default is e-notify-send).\n"
" -u, --urgency=LEVEL Specifies the urgency level (low, normal, critical).\n"
" -t, --expire-time=TIME Specifies the timeout in milliseconds at which to expire the notification.\n"
+ " -r, --replace=ID Specifies the ID of notification to replace.\n"
+ " -p, --print-id Prints the ID of notification to STDOUT.\n"
" -i, --icon=ICON Specifies an icon filename or stock icon to display.\n"
" -c, --category=TYPE Specifies the notification category.\n"
" -v, --version Version of the package.\n"
@@ -34,11 +36,45 @@ usage(void)
}
int
+read_int_arg(long long *result, const char *name, intmax_t min, intmax_t max)
+{
+ char *endptr;
+
+ errno = 0;
+ *result = strtoll(optarg, &endptr, 10);
+ if ((errno != 0 && *result == 0) || endptr == optarg)
+ {
+ fprintf(stderr, "Cannot parse integer value '%s' for %s\n", optarg, name);
+ return 0;
+ }
+ else if (*result > max || *result < min)
+ {
+ fprintf(stderr, "Integer value '%s' for %s out of range\n", optarg, name);
+ return 0;
+ }
+
+ return 1;
+}
+
+void
+send_cb(void *user_data, void *method_return, DBusError *error)
+{
+ E_Notification_Return_Notify *r = method_return;
+
+ if(!r)
+ return;
+
+ printf("%u\n", r->notification_id );
+
+ ecore_main_loop_quit();
+}
+
+int
main(int argc, char **argv)
{
int ch;
- char *endptr;
- int timeout;
+ long long value;
+ int print_id = 0;
E_Notification *n;
e_notification_init();
@@ -52,13 +88,15 @@ main(int argc, char **argv)
{ "name", required_argument, NULL, 'n' },
{ "urgency", required_argument, NULL, 'u' },
{ "expire-time", required_argument, NULL, 't' },
+ { "replace", required_argument, NULL, 'r' },
+ { "print-id", no_argument, NULL, 'p' },
{ "icon", required_argument, NULL, 'i' },
- { "categorie", required_argument, NULL, 'c' },
+ { "category", required_argument, NULL, 'c' },
{ "version", no_argument, NULL, 'v' },
{ NULL, 0, NULL, 0 }
};
- while ((ch = getopt_long(argc, argv, "?vn:u:t:i:c:", longopts, NULL)) != -1)
+ while ((ch = getopt_long(argc, argv, "p?vn:u:t:r:i:c:", longopts, NULL)) != -1)
switch (ch) {
case '?':
usage();
@@ -82,20 +120,16 @@ main(int argc, char **argv)
printf("Urgency level must be: low, normal or critical\n");
break;
case 't':
- errno = 0;
- timeout = strtol(optarg, &endptr, 10);
- if ((errno != 0 && timeout == 0) || endptr == optarg)
- {
- fprintf(stderr, "Cannot parse integer value '%s' for -t\n", optarg);
- return EXIT_FAILURE;
- }
- else if (timeout > INT_MAX || timeout < INT_MIN)
- {
- fprintf(stderr, "Integer value '%s' for -t out of range\n", optarg);
- return EXIT_FAILURE;
- }
+ if (!read_int_arg(&value, "-t", INT_MIN, INT_MAX))
+ return EXIT_FAILURE;
else
- e_notification_timeout_set(n, timeout);
+ e_notification_timeout_set(n, (int)value);
+ break;
+ case 'r':
+ if (!read_int_arg(&value, "-r", 0, UINT_MAX))
+ return EXIT_FAILURE;
+ else
+ e_notification_replaces_id_set(n, (unsigned int)value);
break;
case 'i':
e_notification_app_icon_set(n, optarg);
@@ -103,6 +137,9 @@ main(int argc, char **argv)
case 'c':
e_notification_hint_category_set(n, optarg);
break;
+ case 'p':
+ print_id = 1;
+ break;
default:
usage();
return EXIT_FAILURE;
@@ -119,7 +156,15 @@ main(int argc, char **argv)
e_notification_summary_set(n, argv[0]);
if (argc > 1) e_notification_body_set(n, argv[1]);
- e_notification_send(n, NULL, NULL);
+
+ if (print_id)
+ {
+ e_notification_send(n, send_cb, NULL);
+ ecore_main_loop_begin();
+ }
+ else
+ e_notification_send(n, NULL, NULL);
+
e_notification_unref(n);
e_notification_shutdown();
diff --git a/src/bin/test.c b/src/bin/test.c
index 31d6149..9b6b7d0 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -36,7 +36,7 @@ copy_message(DBusMessageIter *from, DBusMessageIter *to)
DBusMessageIter fsub, tsub;
char *sig;
dbus_message_iter_recurse(from, &fsub);
- dbus_message_iter_get_signature(&fsub);
+ sig = dbus_message_iter_get_signature(&fsub);
dbus_message_iter_open_container(to, type, sig, &tsub);
copy_message(&fsub, &tsub);
dbus_message_iter_close_container(to, &tsub);
diff --git a/src/lib/dbus/e_dbus.c b/src/lib/dbus/e_dbus.c
index d4bf889..b043090 100644
--- a/src/lib/dbus/e_dbus.c
+++ b/src/lib/dbus/e_dbus.c
@@ -54,7 +54,6 @@ static int
e_dbus_fd_handler(void *data, Ecore_Fd_Handler *fd_handler)
{
E_DBus_Handler_Data *hd;
- DBusConnection *conn;
unsigned int condition = 0;
DEBUG(5, "fd handler (%ld)!\n", (long int)fd_handler);
@@ -67,9 +66,6 @@ e_dbus_fd_handler(void *data, Ecore_Fd_Handler *fd_handler)
hd->fd_handler = NULL;
return 0;
}
-
- conn = hd->cd->conn;
-
if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ)) condition |= DBUS_WATCH_READABLE;
if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE)) condition |= DBUS_WATCH_WRITABLE;
if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_ERROR)) condition |= DBUS_WATCH_ERROR;
@@ -344,9 +340,7 @@ cb_watch_add(DBusWatch *watch, void *data)
static void
cb_watch_del(DBusWatch *watch, void *data)
{
- E_DBus_Connection *cd;
E_DBus_Handler_Data *hd;
- cd = data;
DEBUG(5, "cb_watch_del\n");
hd = (E_DBus_Handler_Data *)dbus_watch_get_data(watch);
diff --git a/src/lib/dbus/e_dbus_signal.c b/src/lib/dbus/e_dbus_signal.c
index 16e342b..d3deda4 100644
--- a/src/lib/dbus/e_dbus_signal.c
+++ b/src/lib/dbus/e_dbus_signal.c
@@ -7,8 +7,6 @@
#include "e_dbus_private.h"
#include "dbus/dbus.h"
-static int init = 0;
-
struct E_DBus_Signal_Handler
{
char *sender;
@@ -45,10 +43,8 @@ cb_name_owner(void *data, DBusMessage *msg, DBusError *err)
{
const char *unique_name = NULL;
struct cb_name_owner_data *d = data;
- E_DBus_Connection *conn;
E_DBus_Signal_Handler *sh;
- conn = d->conn;
sh = d->sh;
free(d);
diff --git a/src/lib/hal/E_Hal.h b/src/lib/hal/E_Hal.h
index 00dea4e..7fabb01 100644
--- a/src/lib/hal/E_Hal.h
+++ b/src/lib/hal/E_Hal.h
@@ -83,7 +83,7 @@ struct E_Hal_Property
struct E_Hal_Properties
{
- Ecore_Hash *properties;
+ Eina_Hash *properties;
};
typedef struct E_Hal_Properties E_Hal_Device_Get_All_Properties_Return;
diff --git a/src/lib/hal/e_hal_device.c b/src/lib/hal/e_hal_device.c
index 480132b..b2447dc 100644
--- a/src/lib/hal/e_hal_device.c
+++ b/src/lib/hal/e_hal_device.c
@@ -88,10 +88,7 @@ unmarshal_device_get_all_properties(DBusMessage *msg, DBusError *err)
return NULL;
}
- ret->properties = ecore_hash_new(ecore_str_hash, ecore_str_compare);
- ecore_hash_free_key_cb_set(ret->properties, ECORE_FREE_CB(eina_stringshare_del));
- ecore_hash_free_value_cb_set(ret->properties, ECORE_FREE_CB(e_hal_property_free));
-
+ ret->properties = eina_hash_string_small_new(EINA_FREE_CB(e_hal_property_free));
dbus_message_iter_init(msg, &iter);
dbus_message_iter_recurse(&iter, &a_iter);
@@ -145,7 +142,7 @@ unmarshal_device_get_all_properties(DBusMessage *msg, DBusError *err)
printf("Error: unexpected property type (%s): %c\n", name, dbus_message_iter_get_arg_type(&v_iter));
break;
}
- ecore_hash_set(ret->properties, (void *)eina_stringshare_add(name), prop);
+ eina_hash_add(ret->properties, name, prop);
dbus_message_iter_next(&a_iter);
}
@@ -159,7 +156,7 @@ free_device_get_all_properties(void *data)
E_Hal_Device_Get_All_Properties_Return *ret = data;
if (!ret) return;
- ecore_hash_destroy(ret->properties);
+ eina_hash_free(ret->properties);
free(ret);
}
diff --git a/src/lib/hal/e_hal_util.c b/src/lib/hal/e_hal_util.c
index cf10126..8714292 100644
--- a/src/lib/hal/e_hal_util.c
+++ b/src/lib/hal/e_hal_util.c
@@ -26,7 +26,7 @@ e_hal_property_string_get(E_Hal_Properties *properties, const char *key, int *er
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return NULL;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return strdup(prop->val.s);
if (err) *err = 1;
@@ -39,7 +39,7 @@ e_hal_property_bool_get(E_Hal_Properties *properties, const char *key, int *err)
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return 0;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return prop->val.b;
if (err) *err = 1;
@@ -52,7 +52,7 @@ e_hal_property_int_get(E_Hal_Properties *properties, const char *key, int *err)
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return 0;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return prop->val.i;
if (err) *err = 1;
@@ -65,7 +65,7 @@ e_hal_property_uint64_get(E_Hal_Properties *properties, const char *key, int *er
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return 0;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return prop->val.u64;
if (err) *err = 1;
@@ -78,7 +78,7 @@ e_hal_property_double_get(E_Hal_Properties *properties, const char *key, int *er
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return 0;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return prop->val.d;
if (err) *err = 1;
@@ -91,7 +91,7 @@ e_hal_property_strlist_get(E_Hal_Properties *properties, const char *key, int *e
E_Hal_Property *prop;
if (err) *err = 0;
if (!properties->properties) return NULL;
- prop = ecore_hash_get(properties->properties, key);
+ prop = eina_hash_find(properties->properties, key);
if (prop) return prop->val.strlist;
if (err) *err = 1;
diff --git a/src/lib/nm/E_Nm.h b/src/lib/nm/E_Nm.h
index c625b15..4cfaeda 100644
--- a/src/lib/nm/E_Nm.h
+++ b/src/lib/nm/E_Nm.h
@@ -9,6 +9,7 @@
* - Return objects instead of object paths.
* - Define who is responsible to clean up mem
* - Only listen to signals if a callback is connected
+ * - Free properties on property changed
*/
#ifdef EAPI
@@ -232,8 +233,20 @@ struct E_NM_IP4_Config
/* TODO typedef struct E_NM_DHCP4_Config E_NM_DHCP4_Config; */
+typedef enum E_NMS_Context E_NMS_Context;
+enum E_NMS_Context
+{
+ E_NMS_CONTEXT_SYSTEM
+ /* TODO: E_NMS_CONTEXT_USER */
+};
+
typedef struct E_NMS E_NMS;
-/* No properties */
+struct E_NMS
+{
+ const char *service_name;
+ Ecore_List *unmanaged_devices; /* object_path */
+ char *hostname;
+};
typedef struct E_NMS_Connection E_NMS_Connection;
struct E_NMS_Connection
@@ -333,16 +346,20 @@ extern "C" {
/* TODO: org.freedesktop.NetworkManager.DHCP4Config api */
/* org.freedesktop.NetworkManagerSettings api */
- EAPI E_NMS *e_nms_get(E_NM *nm);
+ EAPI int e_nms_get(E_NM *nm, E_NMS_Context context, int (*cb_func)(void *data, E_NMS *nms), void *data);
EAPI void e_nms_free(E_NMS *nms);
EAPI void e_nms_dump(E_NMS *nms);
EAPI int e_nms_list_connections(E_NMS *nms,
int (*cb_func)(void *data, Ecore_List *list),
void *data);
- EAPI void e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, const char *service_name, const char *connection));
+ EAPI void e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, const char *service_name, const char *connection));
+
+ /* org.freedesktop.NetworkManagerSettings.System */
+ EAPI int e_nms_system_save_hostname(E_NMS *nms, const char *hostname);
+ EAPI int e_nms_system_add_connection(E_NMS *nms, Ecore_Hash *settings);
- /* TODO: org.freedesktop.NetworkManagerSettings.System */
+ EAPI void e_nms_system_callback_properties_changed_set(E_NMS *nms, int (*cb_func)(E_NMS *nms));
/* org.freedesktop.NetworkManagerSettings.Connection(.*) api */
EAPI E_NMS_Connection *e_nms_connection_get(E_NMS *nms, const char *service_name, const char *connection);
@@ -351,10 +368,9 @@ extern "C" {
/* TODO: e_nms_connection_update */
/* TODO: e_nms_connection_delete */
- EAPI int e_nms_connection_get_settings(E_NMS_Connection *conn, int (*cb_func)(void *data, Ecore_Hash *settings), void *data);
- EAPI int e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Ecore_Hash *secrets), void *data);
- /* TODO: e_nms_connection_secrets_get_secrets */
+ EAPI int e_nms_connection_get_settings(E_NMS_Connection *conn, int (*cb_func)(void *data, Eina_Hash *settings), void *data);
+ EAPI int e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Eina_Hash *secrets), void *data);
EAPI void e_nms_connection_callback_updated_set(E_NMS_Connection *connection, int (*cb_func)(E_NMS_Connection *conn, Ecore_Hash *settings));
/* TODO: e_nms_connection_callback_removed_set */
@@ -369,6 +385,10 @@ extern "C" {
/* TODO: org.freedesktop.NetworkManager.VPN.Connection api */
/* TODO: org.freedesktop.NetworkManager.VPN.Plugin api */
+ EAPI E_NM_Variant *e_nm_variant_new(int type, const void *value);
+ EAPI E_NM_Variant *e_nm_variant_array_new(int type, const void *value, int size);
+ EAPI void e_nm_variant_free(E_NM_Variant *variant);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/lib/nm/Makefile.am b/src/lib/nm/Makefile.am
index b0030fb..c2b6681 100644
--- a/src/lib/nm/Makefile.am
+++ b/src/lib/nm/Makefile.am
@@ -19,6 +19,7 @@ e_nm_ip4_config.c \
e_nms.c \
e_nms_connection.c \
e_nm_active_connection.c \
+e_nm_variant.c \
e_nm_util.c
diff --git a/src/lib/nm/Makefile.in b/src/lib/nm/Makefile.in
index 02624fd..da1d50a 100644
--- a/src/lib/nm/Makefile.in
+++ b/src/lib/nm/Makefile.in
@@ -54,12 +54,13 @@ libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
am__libenm_la_SOURCES_DIST = e_nm_private.h e_nm.c e_nm_manager.c \
e_nm_access_point.c e_nm_device.c e_nm_ip4_config.c e_nms.c \
- e_nms_connection.c e_nm_active_connection.c e_nm_util.c
+ e_nms_connection.c e_nm_active_connection.c e_nm_variant.c \
+ e_nm_util.c
@BUILD_ENM_TRUE at am_libenm_la_OBJECTS = e_nm.lo e_nm_manager.lo \
@BUILD_ENM_TRUE@ e_nm_access_point.lo e_nm_device.lo \
@BUILD_ENM_TRUE@ e_nm_ip4_config.lo e_nms.lo \
@BUILD_ENM_TRUE@ e_nms_connection.lo e_nm_active_connection.lo \
- at BUILD_ENM_TRUE@ e_nm_util.lo
+ at BUILD_ENM_TRUE@ e_nm_variant.lo e_nm_util.lo
libenm_la_OBJECTS = $(am_libenm_la_OBJECTS)
libenm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -212,6 +213,7 @@ AM_CPPFLAGS = \
@BUILD_ENM_TRUE at e_nms.c \
@BUILD_ENM_TRUE at e_nms_connection.c \
@BUILD_ENM_TRUE at e_nm_active_connection.c \
+ at BUILD_ENM_TRUE@e_nm_variant.c \
@BUILD_ENM_TRUE at e_nm_util.c
@BUILD_ENM_TRUE at libenm_la_LIBADD = \
@@ -299,6 +301,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nm_ip4_config.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nm_manager.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nm_util.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nm_variant.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nms.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/e_nms_connection.Plo at am__quote@
diff --git a/src/lib/nm/e_nm.c b/src/lib/nm/e_nm.c
index 7672151..d8aa678 100644
--- a/src/lib/nm/e_nm.c
+++ b/src/lib/nm/e_nm.c
@@ -102,7 +102,9 @@ e_nm_get(int (*cb_func)(void *data, E_NM *nm), void *data)
d->cb_func = OBJECT_CB(cb_func);
d->data = data;
d->property = properties;
+ d->service = E_NM_SERVICE;
d->object = strdup(E_NM_PATH);
+ d->interface = E_NM_INTERFACE;
d->reply = nmi;
nmi->conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
@@ -113,7 +115,7 @@ e_nm_get(int (*cb_func)(void *data, E_NM *nm), void *data)
ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "DeviceAdded", cb_device_added, nmi));
ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "DeviceRemoved", cb_device_removed, nmi));
- return e_nm_device_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
+ return property_get(nmi->conn, d);
error:
if (d) free(d);
diff --git a/src/lib/nm/e_nm_access_point.c b/src/lib/nm/e_nm_access_point.c
index e1e333b..d4d40f6 100644
--- a/src/lib/nm/e_nm_access_point.c
+++ b/src/lib/nm/e_nm_access_point.c
@@ -50,12 +50,14 @@ e_nm_access_point_get(E_NM *nm, const char *access_point,
d->data = data;
d->reply = ap;
d->property = access_point_properties;
+ d->service = E_NM_SERVICE;
d->object = strdup(access_point);
+ d->interface = E_NM_INTERFACE_ACCESSPOINT;
ap->handlers = ecore_list_new();
ecore_list_append(ap->handlers, e_nm_access_point_signal_handler_add(nmi->conn, access_point, "PropertiesChanged", cb_properties_changed, ap));
- return e_nm_access_point_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
+ return property_get(nmi->conn, d);
}
EAPI void
diff --git a/src/lib/nm/e_nm_active_connection.c b/src/lib/nm/e_nm_active_connection.c
index cd2592e..aacf293 100644
--- a/src/lib/nm/e_nm_active_connection.c
+++ b/src/lib/nm/e_nm_active_connection.c
@@ -33,9 +33,11 @@ e_nm_active_connection_get(E_NM *nm, const char *connection,
d->data = data;
d->reply = conn;
d->property = active_connection_properties;
+ d->service = E_NM_SERVICE;
d->object = strdup(connection);
+ d->interface = E_NM_INTERFACE_CONNECTION_ACTIVE;
- return e_nm_active_connection_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
+ return property_get(nmi->conn, d);
}
EAPI void
diff --git a/src/lib/nm/e_nm_device.c b/src/lib/nm/e_nm_device.c
index cfcd8ea..66d5743 100644
--- a/src/lib/nm/e_nm_device.c
+++ b/src/lib/nm/e_nm_device.c
@@ -166,15 +166,17 @@ property_device_type(Property_Data *data, DBusMessageIter *iter)
{
case E_NM_DEVICE_TYPE_WIRED:
data->property = device_wired_properties;
+ data->interface = E_NM_INTERFACE_DEVICE_WIRED;
ecore_list_append(dev->handlers, e_nm_device_wired_signal_handler_add(data->nmi->conn, dev->dev.udi, "PropertiesChanged", cb_wired_properties_changed, dev));
- e_nm_device_wired_properties_get(data->nmi->conn, data->object, data->property->name, property, data);
+ property_get(data->nmi->conn, data);
break;
case E_NM_DEVICE_TYPE_WIRELESS:
data->property = device_wireless_properties;
+ data->interface = E_NM_INTERFACE_DEVICE_WIRELESS;
ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "PropertiesChanged", cb_wireless_properties_changed, dev));
ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointAdded", cb_wireless_access_point_added, dev));
ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointRemoved", cb_wireless_access_point_removed, dev));
- e_nm_device_wireless_properties_get(data->nmi->conn, data->object, data->property->name, property, data);
+ property_get(data->nmi->conn, data);
break;
default:
if (data->cb_func) data->cb_func(data->data, dev);
@@ -245,14 +247,11 @@ cb_access_points(void *data, void *reply, DBusError *err)
list = ecore_list_new();
ecore_list_free_cb_set(list, ECORE_FREE_CB(e_nm_access_point_free));
d->reply = list;
- ecore_list_append(list, (void *)-1);
while ((ap = ecore_list_next(access_points)))
{
ecore_list_prepend(list, (void *)-1);
e_nm_access_point_get(&(dev->nmi->nm), ap, cb_access_point, d);
}
- ecore_list_first_remove(list);
- check_done(d, list);
}
EAPI int
@@ -273,13 +272,15 @@ e_nm_device_get(E_NM *nm, const char *device,
d->data = data;
d->reply = dev;
d->property = device_properties;
+ d->service = E_NM_SERVICE;
d->object = strdup(device);
+ d->interface = E_NM_INTERFACE_DEVICE;
dev->handlers = ecore_list_new();
ecore_list_append(dev->handlers, e_nm_device_signal_handler_add(nmi->conn, device, "StateChanged", cb_state_changed, dev));
ecore_list_append(dev->handlers, e_nm_device_signal_handler_add(nmi->conn, device, "PropertiesChanged", cb_properties_changed, dev));
- return e_nm_device_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
+ return property_get(nmi->conn, d);
}
EAPI void
diff --git a/src/lib/nm/e_nm_ip4_config.c b/src/lib/nm/e_nm_ip4_config.c
index 0ed424a..382175b 100644
--- a/src/lib/nm/e_nm_ip4_config.c
+++ b/src/lib/nm/e_nm_ip4_config.c
@@ -31,9 +31,11 @@ e_nm_ip4_config_get(E_NM *nm, const char *ip4_config,
d->data = data;
d->reply = config;
d->property = ip4_config_properties;
+ d->service = E_NM_SERVICE;
d->object = strdup(ip4_config);
+ d->interface = E_NM_INTERFACE_IP4CONFIG;
- return e_nm_ip4_config_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
+ return property_get(nmi->conn, d);
}
EAPI void
diff --git a/src/lib/nm/e_nm_manager.c b/src/lib/nm/e_nm_manager.c
index 211af5c..db237de 100644
--- a/src/lib/nm/e_nm_manager.c
+++ b/src/lib/nm/e_nm_manager.c
@@ -57,14 +57,11 @@ cb_nm_devices(void *data, void *reply, DBusError *err)
list = ecore_list_new();
ecore_list_free_cb_set(list, ECORE_FREE_CB(e_nm_device_free));
d->reply = list;
- ecore_list_append(list, (void *)-1);
while ((dev = ecore_list_next(devices)))
{
ecore_list_prepend(list, (void *)-1);
e_nm_device_get(nm, dev, cb_nm_device, d);
}
- ecore_list_first_remove(list);
- check_done(d, list);
}
/**
diff --git a/src/lib/nm/e_nm_private.h b/src/lib/nm/e_nm_private.h
index 99279b3..53224a0 100644
--- a/src/lib/nm/e_nm_private.h
+++ b/src/lib/nm/e_nm_private.h
@@ -2,44 +2,40 @@
#define E_NM_PRIVATE_H
#define E_NM_PATH "/org/freedesktop/NetworkManager"
-#define _E_NM_SERVICE "org.freedesktop.NetworkManager"
-#define _E_NM_INTERFACE "org.freedesktop.NetworkManager"
-#define _E_NM_INTERFACE_ACCESSPOINT "org.freedesktop.NetworkManager.AccessPoint"
-#define _E_NM_INTERFACE_DEVICE "org.freedesktop.NetworkManager.Device"
-#define _E_NM_INTERFACE_DEVICE_WIRELESS "org.freedesktop.NetworkManager.Device.Wireless"
-#define _E_NM_INTERFACE_DEVICE_WIRED "org.freedesktop.NetworkManager.Device.Wired"
-#define _E_NM_INTERFACE_IP4CONFIG "org.freedesktop.NetworkManager.IP4Config"
-#define _E_NM_INTERFACE_CONNECTION_ACTIVE "org.freedesktop.NetworkManager.Connection.Active"
-#define _E_NMS_PATH "/org/freedesktop/NetworkManagerSettings"
+#define E_NM_SERVICE "org.freedesktop.NetworkManager"
+#define E_NM_INTERFACE "org.freedesktop.NetworkManager"
+#define E_NM_INTERFACE_ACCESSPOINT "org.freedesktop.NetworkManager.AccessPoint"
+#define E_NM_INTERFACE_DEVICE "org.freedesktop.NetworkManager.Device"
+#define E_NM_INTERFACE_DEVICE_WIRELESS "org.freedesktop.NetworkManager.Device.Wireless"
+#define E_NM_INTERFACE_DEVICE_WIRED "org.freedesktop.NetworkManager.Device.Wired"
+#define E_NM_INTERFACE_IP4CONFIG "org.freedesktop.NetworkManager.IP4Config"
+#define E_NM_INTERFACE_CONNECTION_ACTIVE "org.freedesktop.NetworkManager.Connection.Active"
+#define E_NMS_PATH "/org/freedesktop/NetworkManagerSettings"
#define E_NMS_SERVICE_SYSTEM "org.freedesktop.NetworkManagerSystemSettings"
#define E_NMS_SERVICE_USER "org.freedesktop.NetworkManagerUserSettings"
-#define _E_NMS_INTERFACE "org.freedesktop.NetworkManagerSettings"
-#define _E_NMS_INTERFACE_CONNECTION "org.freedesktop.NetworkManagerSettings.Connection"
-#define _E_NMS_INTERFACE_CONNECTION_SECRETS "org.freedesktop.NetworkManagerSettings.Connection.Secrets"
-
-#define e_nm_call_new(member) dbus_message_new_method_call(_E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, member)
-#define e_nm_device_wireless_call_new(device, member) dbus_message_new_method_call(_E_NM_SERVICE, device, _E_NM_INTERFACE_DEVICE_WIRELESS, member)
-#define e_nms_call_new(service, member) dbus_message_new_method_call(service, _E_NMS_PATH, _E_NMS_INTERFACE, member)
-#define e_nms_connection_call_new(service, conn, member) dbus_message_new_method_call(service, conn, _E_NMS_INTERFACE_CONNECTION, member)
-#define e_nms_connection_secrets_call_new(service, conn, member) dbus_message_new_method_call(service, conn, _E_NMS_INTERFACE_CONNECTION_SECRETS, member)
-
-#define e_nm_properties_get(con, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_properties_set(con, prop, type, value, cb, data) e_dbus_properties_set(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, type, value, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_access_point_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_ACCESSPOINT, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_device_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_device_wired_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRED, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_device_wireless_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRELESS, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_ip4_config_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_IP4CONFIG, prop, (E_DBus_Method_Return_Cb) cb, data)
-#define e_nm_active_connection_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_CONNECTION_ACTIVE, prop, (E_DBus_Method_Return_Cb) cb, data)
-
-#define e_nm_signal_handler_add(con, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, sig, cb, data)
-#define e_nm_access_point_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_ACCESSPOINT, sig, cb, data)
-#define e_nm_device_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE, sig, cb, data)
-#define e_nm_device_wired_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRED, sig, cb, data)
-#define e_nm_device_wireless_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRELESS, sig, cb, data)
-
-#define e_nms_signal_handler_add(con, service, sig, cb, data) e_dbus_signal_handler_add(con, service, _E_NMS_PATH, _E_NMS_INTERFACE, sig, cb, data)
-#define e_nms_connection_signal_handler_add(con, service, dev, sig, cb, data) e_dbus_signal_handler_add(con, service, dev, _E_NMS_INTERFACE, sig, cb, data)
+#define E_NMS_INTERFACE "org.freedesktop.NetworkManagerSettings"
+#define E_NMS_INTERFACE_SYSTEM "org.freedesktop.NetworkManagerSettings.System"
+#define E_NMS_INTERFACE_CONNECTION "org.freedesktop.NetworkManagerSettings.Connection"
+#define E_NMS_INTERFACE_CONNECTION_SECRETS "org.freedesktop.NetworkManagerSettings.Connection.Secrets"
+
+#define e_nm_call_new(member) dbus_message_new_method_call(E_NM_SERVICE, E_NM_PATH, E_NM_INTERFACE, member)
+#define e_nm_device_wireless_call_new(device, member) dbus_message_new_method_call(E_NM_SERVICE, device, E_NM_INTERFACE_DEVICE_WIRELESS, member)
+#define e_nms_call_new(service, member) dbus_message_new_method_call(service, E_NMS_PATH, E_NMS_INTERFACE, member)
+#define e_nms_system_call_new(service, member) dbus_message_new_method_call(service, E_NMS_PATH, E_NMS_INTERFACE_SYSTEM, member)
+#define e_nms_connection_call_new(service, conn, member) dbus_message_new_method_call(service, conn, E_NMS_INTERFACE_CONNECTION, member)
+#define e_nms_connection_secrets_call_new(service, conn, member) dbus_message_new_method_call(service, conn, E_NMS_INTERFACE_CONNECTION_SECRETS, member)
+
+#define e_nm_properties_set(con, prop, type, value, cb, data) e_dbus_properties_set(con, E_NM_SERVICE, E_NM_PATH, E_NM_INTERFACE, prop, type, value, (E_DBus_Method_Return_Cb) cb, data)
+
+#define e_nm_signal_handler_add(con, sig, cb, data) e_dbus_signal_handler_add(con, E_NM_SERVICE, E_NM_PATH, E_NM_INTERFACE, sig, cb, data)
+#define e_nm_access_point_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, E_NM_SERVICE, dev, E_NM_INTERFACE_ACCESSPOINT, sig, cb, data)
+#define e_nm_device_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE, sig, cb, data)
+#define e_nm_device_wired_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE_WIRED, sig, cb, data)
+#define e_nm_device_wireless_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE_WIRELESS, sig, cb, data)
+
+#define e_nms_signal_handler_add(con, service, sig, cb, data) e_dbus_signal_handler_add(con, service, E_NMS_PATH, E_NMS_INTERFACE, sig, cb, data)
+#define e_nms_system_signal_handler_add(con, service, sig, cb, data) e_dbus_signal_handler_add(con, service, E_NMS_PATH, E_NMS_INTERFACE_SYSTEM, sig, cb, data)
+#define e_nms_connection_signal_handler_add(con, service, dev, sig, cb, data) e_dbus_signal_handler_add(con, service, dev, E_NMS_INTERFACE_CONNECTION, sig, cb, data)
typedef struct E_NM_Internal E_NM_Internal;
struct E_NM_Internal
@@ -98,9 +94,12 @@ struct E_NM_IP4_Config_Internal
typedef struct E_NMS_Internal E_NMS_Internal;
struct E_NMS_Internal
{
+ E_NMS nms;
+
E_NM_Internal *nmi;
int (*new_connection)(E_NMS *nms, const char *service_name, const char *connection);
+ int (*properties_changed)(E_NMS *nms);
Ecore_List *handlers;
void *data;
@@ -143,7 +142,9 @@ struct Property
struct Property_Data
{
E_NM_Internal *nmi;
+ const char *service;
char *object;
+ const char *interface;
Object_Cb cb_func;
void *reply;
void *data;
@@ -160,6 +161,7 @@ struct Reply_Data
void *reply;
};
+int property_get(E_DBus_Connection *conn, Property_Data *data);
void property(void *data, DBusMessage *msg, DBusError *err);
void parse_properties(void *data, const Property *properties, DBusMessage *msg);
diff --git a/src/lib/nm/e_nm_util.c b/src/lib/nm/e_nm_util.c
index 8b3f7e7..401de34 100644
--- a/src/lib/nm/e_nm_util.c
+++ b/src/lib/nm/e_nm_util.c
@@ -221,6 +221,13 @@ property_free(E_NM_Variant *var)
free(var);
}
+int
+property_get(E_DBus_Connection *conn, Property_Data *data)
+
+{
+ return e_dbus_properties_get(conn, data->service, data->object, data->interface, data->property->name, property, data) ? 1 : 0;
+}
+
void
property(void *data, DBusMessage *msg, DBusError *err)
{
@@ -250,7 +257,7 @@ property(void *data, DBusMessage *msg, DBusError *err)
d->property++;
if (d->property->name)
- e_nm_device_properties_get(d->nmi->conn, d->object, d->property->name, property, d);
+ e_dbus_properties_get(d->nmi->conn, d->service, d->object, d->interface, d->property->name, property, d);
else
{
if (d->cb_func) d->cb_func(d->data, d->reply);
@@ -448,23 +455,21 @@ free_nm_object_path_list(void *data)
Ecore_Hash *
parse_settings(DBusMessage *msg)
{
- Ecore_Hash *settings;
+ Eina_Hash *settings;
DBusMessageIter iter, a_iter;
if (!dbus_message_has_signature(msg, "a{sa{sv}}")) return NULL;
dbus_message_iter_init(msg, &iter);
- settings = ecore_hash_new(ecore_str_hash, ecore_str_compare);
- ecore_hash_free_key_cb_set(settings, free);
- ecore_hash_free_value_cb_set(settings, ECORE_FREE_CB(ecore_hash_destroy));
+ settings = eina_hash_string_small_new(EINA_FREE_CB(eina_hash_free));
dbus_message_iter_recurse(&iter, &a_iter);
while (dbus_message_iter_get_arg_type(&a_iter) != DBUS_TYPE_INVALID)
{
DBusMessageIter d_iter, a2_iter;
E_NM_Variant *prop;
const char *name;
- Ecore_Hash *value;
+ Eina_Hash *value;
dbus_message_iter_recurse(&a_iter, &d_iter);
if (!check_arg_type(&d_iter, 's')) goto error;
@@ -474,10 +479,8 @@ parse_settings(DBusMessage *msg)
if (!check_arg_type(&d_iter, 'a')) goto error;
dbus_message_iter_recurse(&d_iter, &a2_iter);
- value = ecore_hash_new(ecore_str_hash, ecore_str_compare);
- ecore_hash_free_key_cb_set(value, free);
- ecore_hash_free_value_cb_set(value, ECORE_FREE_CB(property_free));
- ecore_hash_set(settings, strdup(name), value);
+ value = eina_hash_string_small_new(EINA_FREE_CB(property_free));
+ eina_hash_add(settings, name, value);
while (dbus_message_iter_get_arg_type(&a2_iter) != DBUS_TYPE_INVALID)
{
dbus_message_iter_recurse(&a2_iter, &d_iter);
@@ -486,7 +489,7 @@ parse_settings(DBusMessage *msg)
dbus_message_iter_next(&d_iter);
if (!check_arg_type(&d_iter, 'v')) goto error;
prop = property_variant(&d_iter, NULL, NULL);
- if (prop) ecore_hash_set(value, strdup(name), prop);
+ if (prop) eina_hash_add(value, name, prop);
dbus_message_iter_next(&a2_iter);
}
@@ -495,7 +498,7 @@ parse_settings(DBusMessage *msg)
return settings;
error:
- ecore_hash_destroy(settings);
+ eina_hash_free(settings);
return NULL;
}
@@ -527,3 +530,4 @@ ip4_address2str(unsigned int address)
((address >> 24) & 0xff));
return buf;
}
+
diff --git a/src/lib/nm/e_nm_variant.c b/src/lib/nm/e_nm_variant.c
new file mode 100644
index 0000000..84a541f
--- /dev/null
+++ b/src/lib/nm/e_nm_variant.c
@@ -0,0 +1,64 @@
+#include <string.h>
+
+#include <E_Nm.h>
+
+EAPI E_NM_Variant *
+e_nm_variant_new(int type, const void *value)
+{
+ E_NM_Variant *variant = NULL;
+
+ switch (type)
+ {
+ case 's':
+ case 'o':
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = type;
+ variant->s = strdup(*(char **)value);
+ break;
+ case 'u':
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = type;
+ variant->u = *(unsigned int *)value;
+ break;
+ case 'b':
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = type;
+ variant->b = *(int *)value;
+ break;
+ case 'y':
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = type;
+ variant->y = *(unsigned char *)value;
+ break;
+ case 't':
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = type;
+ variant->t = *(unsigned long long *)value;
+ break;
+ }
+ return variant;
+}
+
+EAPI E_NM_Variant *
+e_nm_variant_array_new(int type, const void *value, int size)
+{
+ E_NM_Variant *variant = NULL;
+ int i;
+
+ variant = malloc(sizeof(E_NM_Variant));
+ variant->type = 'a';
+ variant->a = ecore_list_new();
+ ecore_list_free_cb_set(variant->a, ECORE_FREE_CB(e_nm_variant_free));
+ for (i = 0; i < size; i++)
+ ecore_list_append(variant->a, e_nm_variant_new(type, &(value[i])));
+ return variant;
+}
+
+EAPI void
+e_nm_variant_free(E_NM_Variant *variant)
+{
+ if (variant->type == 'a') ecore_list_destroy(variant->a);
+ else if ((variant->type == 's') || (variant->type == 'o')) free(variant->s);
+ free(variant);
+}
+
diff --git a/src/lib/nm/e_nms.c b/src/lib/nm/e_nms.c
index afa6ea2..697f61e 100644
--- a/src/lib/nm/e_nms.c
+++ b/src/lib/nm/e_nms.c
@@ -3,52 +3,20 @@
#include <string.h>
-static void
-cb_nms_user_connections(void *data, void *reply, DBusError *err)
-{
- Reply_Data *d;
- E_NMS *nms;
- Ecore_List *connections;
- Ecore_List *list, *list2;
- char *path;
-
- d = data;
- nms = d->object;
- list = d->reply;
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n", err->name, err->message);
- d->cb_func(d->data, NULL);
- ecore_list_destroy(list);
- free(d);
- return;
- }
- list2 = ecore_list_new();
- ecore_list_free_cb_set(list2, ECORE_FREE_CB(e_nms_connection_free));
- while ((path = ecore_list_first_remove(list)))
- {
- ecore_list_append(list2, e_nms_connection_get(nms, E_NMS_SERVICE_SYSTEM, path));
- free(path);
- }
- ecore_list_destroy(list);
-
- connections = reply;
- ecore_list_first_goto(connections);
- while ((path = ecore_list_next(connections)))
- ecore_list_append(list2, e_nms_connection_get(nms, E_NMS_SERVICE_USER, path));
- d->cb_func(d->data, list2);
- free(d);
-}
+static const Property nms_properties[] = {
+ { .name = "UnmanagedDevices", .sig = "ao", .offset = offsetof(E_NMS, unmanaged_devices) },
+ { .name = "Hostname", .sig = "s", .offset = offsetof(E_NMS, hostname) },
+ { .name = NULL }
+};
static void
-cb_nms_system_connections(void *data, void *reply, DBusError *err)
+cb_nms_connections(void *data, void *reply, DBusError *err)
{
Reply_Data *d;
E_NMS_Internal *nmsi;
Ecore_List *connections;
Ecore_List *list;
- const char *conn;
- DBusMessage *msg;
+ const char *path;
d = data;
nmsi = d->object;
@@ -60,22 +28,17 @@ cb_nms_system_connections(void *data, void *reply, DBusError *err)
return;
}
list = ecore_list_new();
- ecore_list_free_cb_set(list, free);
- d->reply = list;
-
+ ecore_list_free_cb_set(list, ECORE_FREE_CB(e_nms_connection_free));
connections = reply;
ecore_list_first_goto(connections);
- while ((conn = ecore_list_next(connections)))
- ecore_list_append(list, strdup(conn));
-
- msg = e_nms_call_new(E_NMS_SERVICE_USER, "ListConnections");
-
- e_dbus_method_call_send(nmsi->nmi->conn, msg, cb_nm_object_path_list, cb_nms_user_connections, free_nm_object_path_list, -1, d);
- dbus_message_unref(msg);
+ while ((path = ecore_list_next(connections)))
+ ecore_list_append(list, e_nms_connection_get(&(nmsi->nms), nmsi->nms.service_name, path));
+ d->cb_func(d->data, list);
+ free(d);
}
static void
-new_connection(const char *service_name, void *data, DBusMessage *msg)
+cb_new_connection(void *data, DBusMessage *msg)
{
E_NMS_Internal *nmsi;
const char *conn;
@@ -92,33 +55,150 @@ new_connection(const char *service_name, void *data, DBusMessage *msg)
}
if (nmsi->new_connection)
- nmsi->new_connection((E_NMS *)nmsi, service_name, conn);
+ nmsi->new_connection(&(nmsi->nms), nmsi->nms.service_name, conn);
+}
+
+static void
+cb_properties_changed(void *data, DBusMessage *msg)
+{
+ E_NMS_Internal *nmsi;
+ if (!msg || !data) return;
+
+ nmsi = data;
+ parse_properties(nmsi, nms_properties, msg);
+
+ if (nmsi->properties_changed)
+ nmsi->properties_changed(&(nmsi->nms));
+}
+
+static void
+add_basic(DBusMessageIter *iter, E_NM_Variant *variant)
+{
+ switch (variant->type)
+ {
+ case 'a':
+ printf("Error: No support for array of array\n");
+ break;
+ case 's':
+ case 'o':
+ dbus_message_iter_append_basic(iter, variant->type, &variant->s);
+ break;
+ case 'u':
+ dbus_message_iter_append_basic(iter, variant->type, &variant->u);
+ break;
+ case 'b':
+ dbus_message_iter_append_basic(iter, variant->type, &variant->b);
+ break;
+ case 'y':
+ dbus_message_iter_append_basic(iter, variant->type, &variant->y);
+ break;
+ case 't':
+ dbus_message_iter_append_basic(iter, variant->type, &variant->t);
+ break;
+ }
}
static void
-cb_new_system_connection(void *data, DBusMessage *msg)
+add_variant(DBusMessageIter *iter, E_NM_Variant *variant)
{
- new_connection(E_NMS_SERVICE_SYSTEM, data, msg);
+ DBusMessageIter v_iter;
+ char sig[3];
+
+ switch (variant->type)
+ {
+ case 'a': {
+ E_NM_Variant *subvar;
+ DBusMessageIter a_iter;
+
+ if (!ecore_list_empty_is(variant->a))
+ {
+ subvar = ecore_list_first(variant->a);
+ sig[0] = 'a';
+ sig[1] = subvar->type;
+ sig[2] = 0;
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &v_iter);
+ dbus_message_iter_open_container(&v_iter, DBUS_TYPE_ARRAY, sig, &a_iter);
+ ecore_list_first_goto(variant->a);
+ while ((subvar = ecore_list_next(variant->a)))
+ add_basic(&a_iter, subvar);
+ dbus_message_iter_close_container(&v_iter, &a_iter);
+ dbus_message_iter_close_container(iter, &v_iter);
+ }
+ break;
+ }
+ default:
+ sig[0] = variant->type;
+ sig[1] = 0;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &v_iter);
+ add_basic(&v_iter, variant);
+ dbus_message_iter_close_container(iter, &v_iter);
+ break;
+ }
}
static void
-cb_new_user_connection(void *data, DBusMessage *msg)
+add_value(void *value, void *data)
{
- new_connection(E_NMS_SERVICE_USER, data, msg);
+ Ecore_Hash_Node *node;
+ E_NM_Variant *variant;
+ DBusMessageIter *iter, d_iter;
+
+ node = value;
+ iter = data;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &d_iter);
+ dbus_message_iter_append_basic(&d_iter, DBUS_TYPE_STRING, &node->key);
+ add_variant(&d_iter, node->value);
+ dbus_message_iter_close_container(iter, &d_iter);
}
-EAPI E_NMS *
-e_nms_get(E_NM *nm)
+static void
+add_array(void *value, void *data)
+{
+ Ecore_Hash_Node *node;
+ DBusMessageIter *iter, d_iter, a_iter;
+
+ node = value;
+ iter = data;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &d_iter);
+ dbus_message_iter_append_basic(&d_iter, DBUS_TYPE_STRING, &node->key);
+ dbus_message_iter_open_container(&d_iter, DBUS_TYPE_ARRAY, "{sv}", &a_iter);
+ ecore_hash_for_each_node(node->value, add_value, &a_iter);
+ dbus_message_iter_close_container(&d_iter, &a_iter);
+ dbus_message_iter_close_container(iter, &d_iter);
+}
+
+EAPI int
+e_nms_get(E_NM *nm, E_NMS_Context context, int (*cb_func)(void *data, E_NMS *nms), void *data)
{
E_NMS_Internal *nmsi;
+ Property_Data *d;
nmsi = calloc(1, sizeof(E_NMS_Internal));
nmsi->nmi = (E_NM_Internal *)nm;
nmsi->handlers = ecore_list_new();
- ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_SERVICE_SYSTEM, "NewConnection", cb_new_system_connection, nmsi));
- ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_SERVICE_USER, "NewConnection", cb_new_user_connection, nmsi));
- return (E_NMS *)nmsi;
+ d = calloc(1, sizeof(Property_Data));
+ d->nmi = nmsi->nmi;
+ d->cb_func = OBJECT_CB(cb_func);
+ d->data = data;
+ d->reply = nmsi;
+ d->property = nms_properties;
+ d->object = strdup(E_NMS_PATH);
+ d->interface = E_NMS_INTERFACE;
+ switch (context)
+ {
+ case E_NMS_CONTEXT_SYSTEM:
+ nmsi->nms.service_name = E_NMS_SERVICE_SYSTEM;
+ ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, nmsi->nms.service_name, "NewConnection", cb_new_connection, nmsi));
+ ecore_list_append(nmsi->handlers, e_nms_system_signal_handler_add(nmsi->nmi->conn, nmsi->nms.service_name, "PropertiesChanged", cb_properties_changed, nmsi));
+ d->service = nmsi->nms.service_name;
+ //(*cb_func)(data, &(nmsi->nms));
+ return property_get(nmsi->nmi->conn, d);
+ }
+ return 0;
}
EAPI void
@@ -128,6 +208,8 @@ e_nms_free(E_NMS *nms)
if (!nms) return;
nmsi = (E_NMS_Internal *)nms;
+ if (nms->unmanaged_devices) ecore_list_destroy(nms->unmanaged_devices);
+ if (nms->hostname) free(nms->hostname);
if (nmsi->handlers)
{
E_DBus_Signal_Handler *sh;
@@ -144,6 +226,16 @@ e_nms_dump(E_NMS *nms)
{
if (!nms) return;
printf("E_NMS:\n");
+ printf("unmanaged_devices:\n");
+ if (nms->unmanaged_devices)
+ {
+ const char *dev;
+
+ ecore_list_first_goto(nms->unmanaged_devices);
+ while ((dev = ecore_list_next(nms->unmanaged_devices)))
+ printf(" - %s\n", dev);
+ }
+ printf("hostname : %s\n", nms->hostname);
printf("\n");
}
@@ -161,9 +253,58 @@ e_nms_list_connections(E_NMS *nms, int (*cb_func)(void *data, Ecore_List *list),
d->data = data;
d->object = nmsi;
- msg = e_nms_call_new(E_NMS_SERVICE_SYSTEM, "ListConnections");
+ msg = e_nms_call_new(nms->service_name, "ListConnections");
+
+ ret = e_dbus_method_call_send(nmsi->nmi->conn, msg, cb_nm_object_path_list, cb_nms_connections, free_nm_object_path_list, -1, d) ? 1 : 0;
+ dbus_message_unref(msg);
+ return ret;
+}
- ret = e_dbus_method_call_send(nmsi->nmi->conn, msg, cb_nm_object_path_list, cb_nms_system_connections, free_nm_object_path_list, -1, d) ? 1 : 0;
+EAPI int
+e_nms_system_save_hostname(E_NMS *nms, const char *hostname)
+{
+ DBusMessage *msg;
+ E_NMS_Internal *nmsi;
+ int ret;
+
+ nmsi = (E_NMS_Internal *)nms;
+ msg = e_nms_system_call_new(nms->service_name, "SaveHostname");
+ dbus_message_append_args(msg, DBUS_TYPE_STRING, &hostname, DBUS_TYPE_INVALID);
+
+ ret = e_dbus_message_send(nmsi->nmi->conn, msg, NULL, -1, NULL) ? 1 : 0;
+ dbus_message_unref(msg);
+ return ret;
+}
+
+static void
+cb(void *data, DBusMessage *msg, DBusError *err)
+{
+ if (dbus_error_is_set(err))
+ {
+ printf("Error: %s - %s\n", err->name, err->message);
+ }
+ else
+ {
+ printf("Yay!\n");
+ }
+}
+
+EAPI int
+e_nms_system_add_connection(E_NMS *nms, Ecore_Hash *settings)
+{
+ DBusMessage *msg;
+ DBusMessageIter iter, a_iter;
+ E_NMS_Internal *nmsi;
+ int ret;
+
+ nmsi = (E_NMS_Internal *)nms;
+ msg = e_nms_system_call_new(nms->service_name, "AddConnection");
+ dbus_message_iter_init_append(msg, &iter);
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sa{sv}}", &a_iter);
+ ecore_hash_for_each_node(settings, add_array, &a_iter);
+ dbus_message_iter_close_container(&iter, &a_iter);
+
+ ret = e_dbus_message_send(nmsi->nmi->conn, msg, cb, -1, NULL) ? 1 : 0;
dbus_message_unref(msg);
return ret;
}
@@ -194,3 +335,13 @@ e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, const c
nmsi = (E_NMS_Internal *)nms;
nmsi->new_connection = cb_func;
}
+
+EAPI void
+e_nms_system_callback_properties_changed_set(E_NMS *nms, int (*cb_func)(E_NMS *nms))
+{
+ E_NMS_Internal *nmsi;
+
+ nmsi = (E_NMS_Internal *)nms;
+ nmsi->properties_changed = cb_func;
+}
+
diff --git a/src/lib/nm/e_nms_connection.c b/src/lib/nm/e_nms_connection.c
index f25db2d..037afcd 100644
--- a/src/lib/nm/e_nms_connection.c
+++ b/src/lib/nm/e_nms_connection.c
@@ -107,7 +107,7 @@ e_nms_connection_dump(E_NMS_Connection *conn)
}
EAPI int
-e_nms_connection_get_settings(E_NMS_Connection *connection, int (*cb_func)(void *data, Ecore_Hash *settings), void *data)
+e_nms_connection_get_settings(E_NMS_Connection *connection, int (*cb_func)(void *data, Eina_Hash *settings), void *data)
{
DBusMessage *msg;
Reply_Data *d;
@@ -128,7 +128,7 @@ e_nms_connection_get_settings(E_NMS_Connection *connection, int (*cb_func)(void
}
EAPI int
-e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Ecore_Hash *secrets), void *data)
+e_nms_connection_secrets_get_secrets(E_NMS_Connection *connection, const char *setting_name, Ecore_List *hints, int request_new, int (*cb_func)(void *data, Eina_Hash *secrets), void *data)
{
DBusMessage *msg;
DBusMessageIter iter, a_iter;
diff --git a/src/lib/notification/marshal.c b/src/lib/notification/marshal.c
index 9a0a8e2..f0db570 100644
--- a/src/lib/notification/marshal.c
+++ b/src/lib/notification/marshal.c
@@ -488,6 +488,7 @@ e_notify_unmarshal_notify_hints(E_Notification *n, DBusMessageIter *iter)
}
else if (!strcmp(key, "desktop-entry"))
{
+ dbus_message_iter_get_basic(&variant, &s_val);
e_notification_hint_desktop_set(n, s_val);
}
else if (!strcmp(key, "sound-file"))
--
D-Bus integration for EFL based applications
More information about the Pkg-e-commits
mailing list