Remove doubly variables while converting dbus message
This commit is contained in:
parent
646d037b15
commit
3c69e1f263
84
src/dbus.c
84
src/dbus.c
@ -133,23 +133,10 @@ static void on_get_capabilities(GDBusConnection *connection,
|
|||||||
static notification *dbus_message_to_notification(const gchar *sender, GVariant *parameters)
|
static notification *dbus_message_to_notification(const gchar *sender, GVariant *parameters)
|
||||||
{
|
{
|
||||||
|
|
||||||
gchar *appname = NULL;
|
notification *n = notification_create();
|
||||||
guint replaces_id = 0;
|
|
||||||
gchar *icon = NULL;
|
|
||||||
gchar *summary = NULL;
|
|
||||||
gchar *body = NULL;
|
|
||||||
Actions *actions = g_malloc0(sizeof(Actions));
|
|
||||||
gint timeout = -1;
|
|
||||||
|
|
||||||
/* hints */
|
n->actions = g_malloc0(sizeof(Actions));
|
||||||
gint urgency = 1;
|
n->dbus_client = g_strdup(sender);
|
||||||
gint progress = -1;
|
|
||||||
gboolean transient = 0;
|
|
||||||
gchar *fgcolor = NULL;
|
|
||||||
gchar *bgcolor = NULL;
|
|
||||||
gchar *frcolor = NULL;
|
|
||||||
gchar *category = NULL;
|
|
||||||
RawImage *raw_icon = NULL;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
GVariantIter *iter = g_variant_iter_new(parameters);
|
GVariantIter *iter = g_variant_iter_new(parameters);
|
||||||
@ -161,65 +148,65 @@ static notification *dbus_message_to_notification(const gchar *sender, GVariant
|
|||||||
switch (idx) {
|
switch (idx) {
|
||||||
case 0:
|
case 0:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
||||||
appname = g_variant_dup_string(content, NULL);
|
n->appname = g_variant_dup_string(content, NULL);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_UINT32))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_UINT32))
|
||||||
replaces_id = g_variant_get_uint32(content);
|
n->id = g_variant_get_uint32(content);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
||||||
icon = g_variant_dup_string(content, NULL);
|
n->icon = g_variant_dup_string(content, NULL);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
||||||
summary = g_variant_dup_string(content, NULL);
|
n->summary = g_variant_dup_string(content, NULL);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING))
|
||||||
body = g_variant_dup_string(content, NULL);
|
n->body = g_variant_dup_string(content, NULL);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING_ARRAY))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_STRING_ARRAY))
|
||||||
actions->actions = g_variant_dup_strv(content, &(actions->count));
|
n->actions->actions = g_variant_dup_strv(content, &(n->actions->count));
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_DICTIONARY)) {
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_DICTIONARY)) {
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "urgency", G_VARIANT_TYPE_BYTE);
|
dict_value = g_variant_lookup_value(content, "urgency", G_VARIANT_TYPE_BYTE);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
urgency = g_variant_get_byte(dict_value);
|
n->urgency = g_variant_get_byte(dict_value);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "fgcolor", G_VARIANT_TYPE_STRING);
|
dict_value = g_variant_lookup_value(content, "fgcolor", G_VARIANT_TYPE_STRING);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
fgcolor = g_variant_dup_string(dict_value, NULL);
|
n->colors[ColFG] = g_variant_dup_string(dict_value, NULL);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "bgcolor", G_VARIANT_TYPE_STRING);
|
dict_value = g_variant_lookup_value(content, "bgcolor", G_VARIANT_TYPE_STRING);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
bgcolor = g_variant_dup_string(dict_value, NULL);
|
n->colors[ColBG] = g_variant_dup_string(dict_value, NULL);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "frcolor", G_VARIANT_TYPE_STRING);
|
dict_value = g_variant_lookup_value(content, "frcolor", G_VARIANT_TYPE_STRING);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
frcolor = g_variant_dup_string(dict_value, NULL);
|
n->colors[ColFrame] = g_variant_dup_string(dict_value, NULL);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "category", G_VARIANT_TYPE_STRING);
|
dict_value = g_variant_lookup_value(content, "category", G_VARIANT_TYPE_STRING);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
category = g_variant_dup_string(dict_value, NULL);
|
n->category = g_variant_dup_string(dict_value, NULL);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
dict_value = g_variant_lookup_value(content, "image-path", G_VARIANT_TYPE_STRING);
|
dict_value = g_variant_lookup_value(content, "image-path", G_VARIANT_TYPE_STRING);
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
g_free(icon);
|
g_free(n->icon);
|
||||||
icon = g_variant_dup_string(dict_value, NULL);
|
n->icon = g_variant_dup_string(dict_value, NULL);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +216,7 @@ static notification *dbus_message_to_notification(const gchar *sender, GVariant
|
|||||||
if (!dict_value)
|
if (!dict_value)
|
||||||
dict_value = g_variant_lookup_value(content, "icon_data", G_VARIANT_TYPE("(iiibiiay)"));
|
dict_value = g_variant_lookup_value(content, "icon_data", G_VARIANT_TYPE("(iiibiiay)"));
|
||||||
if (dict_value) {
|
if (dict_value) {
|
||||||
raw_icon = get_raw_image_from_data_hint(dict_value);
|
n->raw_icon = get_raw_image_from_data_hint(dict_value);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,28 +227,28 @@ static notification *dbus_message_to_notification(const gchar *sender, GVariant
|
|||||||
* So let's check for int and boolean until notify-send is fixed.
|
* So let's check for int and boolean until notify-send is fixed.
|
||||||
*/
|
*/
|
||||||
if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_BOOLEAN))) {
|
if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_BOOLEAN))) {
|
||||||
transient = g_variant_get_boolean(dict_value);
|
n->transient = g_variant_get_boolean(dict_value);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
} else if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_UINT32))) {
|
} else if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_UINT32))) {
|
||||||
transient = g_variant_get_uint32(dict_value) > 0;
|
n->transient = g_variant_get_uint32(dict_value) > 0;
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
} else if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_INT32))) {
|
} else if((dict_value = g_variant_lookup_value(content, "transient", G_VARIANT_TYPE_INT32))) {
|
||||||
transient = g_variant_get_int32(dict_value) > 0;
|
n->transient = g_variant_get_int32(dict_value) > 0;
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((dict_value = g_variant_lookup_value(content, "value", G_VARIANT_TYPE_INT32))) {
|
if((dict_value = g_variant_lookup_value(content, "value", G_VARIANT_TYPE_INT32))) {
|
||||||
progress = g_variant_get_int32(dict_value);
|
n->progress = g_variant_get_int32(dict_value);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
} else if((dict_value = g_variant_lookup_value(content, "value", G_VARIANT_TYPE_UINT32))) {
|
} else if((dict_value = g_variant_lookup_value(content, "value", G_VARIANT_TYPE_UINT32))) {
|
||||||
progress = g_variant_get_uint32(dict_value);
|
n->progress = g_variant_get_uint32(dict_value);
|
||||||
g_variant_unref(dict_value);
|
g_variant_unref(dict_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
if (g_variant_is_of_type(content, G_VARIANT_TYPE_INT32))
|
if (g_variant_is_of_type(content, G_VARIANT_TYPE_INT32))
|
||||||
timeout = g_variant_get_int32(content);
|
n->timeout = g_variant_get_int32(content) * 1000;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g_variant_unref(content);
|
g_variant_unref(content);
|
||||||
@ -273,29 +260,8 @@ static notification *dbus_message_to_notification(const gchar *sender, GVariant
|
|||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
notification *n = notification_create();
|
if (n->actions->count < 1)
|
||||||
|
g_clear_pointer(&n->actions, actions_free);
|
||||||
n->id = replaces_id;
|
|
||||||
n->appname = appname;
|
|
||||||
n->summary = summary;
|
|
||||||
n->body = body;
|
|
||||||
n->icon = icon;
|
|
||||||
n->raw_icon = raw_icon;
|
|
||||||
n->timeout = timeout < 0 ? -1 : timeout * 1000;
|
|
||||||
n->progress = progress;
|
|
||||||
n->urgency = urgency;
|
|
||||||
n->category = category;
|
|
||||||
n->dbus_client = g_strdup(sender);
|
|
||||||
n->transient = transient;
|
|
||||||
|
|
||||||
if (actions->count < 1) {
|
|
||||||
g_clear_pointer(&actions, actions_free);
|
|
||||||
}
|
|
||||||
n->actions = actions;
|
|
||||||
|
|
||||||
n->colors[ColFG] = fgcolor;
|
|
||||||
n->colors[ColBG] = bgcolor;
|
|
||||||
n->colors[ColFrame] = frcolor;
|
|
||||||
|
|
||||||
notification_init(n);
|
notification_init(n);
|
||||||
return n;
|
return n;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user