terminology/src/bin/dbus.c

104 lines
3.0 KiB
C
Raw Normal View History

#include "private.h"
#include <Elementary.h>
#include "dbus.h"
#ifdef HAVE_ELDBUS
#include <Eldbus.h>
static Eldbus_Connection *ty_dbus_conn = NULL;
static Eldbus_Object *ty_e_object = NULL;
2013-06-15 14:37:10 -07:00
static Eina_Stringshare *_current_url = NULL;
void
ty_dbus_link_hide(void)
{
Eldbus_Message *msg;
2013-06-15 14:37:10 -07:00
if ((!ty_e_object) || (!_current_url)) return;
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
"/org/enlightenment/wm/RemoteObject",
"org.enlightenment.wm.Teamwork",
"LinkHide");
2013-06-15 14:37:10 -07:00
eldbus_message_arguments_append(msg, "s", _current_url);
2013-06-15 14:37:10 -07:00
eldbus_object_send(ty_e_object, msg, NULL, NULL, -1);
eina_stringshare_replace(&_current_url, NULL);
2013-06-15 14:37:10 -07:00
}
void
ty_dbus_link_mouseout(int64_t win, const char *url, int x, int y)
2013-06-15 14:37:10 -07:00
{
Eldbus_Message *msg;
if (!ty_e_object) return;
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
"/org/enlightenment/wm/RemoteObject",
"org.enlightenment.wm.Teamwork",
"LinkMouseOut");
eldbus_message_arguments_append(msg, "suxii", url, time(NULL), win, x, y);
eldbus_object_send(ty_e_object, msg, NULL, NULL, -1);
eina_stringshare_replace(&_current_url, NULL);
}
2013-06-15 14:37:10 -07:00
void
ty_dbus_link_mousein(int64_t win, const char *url, int x, int y)
{
2013-06-15 14:37:10 -07:00
Eldbus_Message *msg;
Eina_Stringshare *u;
2013-06-15 14:37:10 -07:00
if (!ty_e_object) return;
u = eina_stringshare_add(url);
/* if previous link exists, do MouseOut now */
if (_current_url && (u != _current_url))
ty_dbus_link_mouseout(win, _current_url, x, y);
eina_stringshare_del(_current_url);
_current_url = u;
2013-06-15 14:37:10 -07:00
msg = eldbus_message_method_call_new("org.enlightenment.wm.service",
"/org/enlightenment/wm/RemoteObject",
"org.enlightenment.wm.Teamwork",
"LinkMouseIn");
eldbus_message_arguments_append(msg, "suxii",
_current_url, time(NULL), win, x, y);
2013-06-15 14:37:10 -07:00
eldbus_object_send(ty_e_object, msg, NULL, NULL, -1);
}
void
ty_dbus_init(void)
{
if (ty_dbus_conn) return;
eldbus_init();
ty_dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
ty_e_object = eldbus_object_get(ty_dbus_conn,
"org.enlightenment.wm.service",
"/org/enlightenment/wm/RemoteObject");
}
void
ty_dbus_shutdown(void)
{
ty_dbus_link_hide();
if (ty_dbus_conn) eldbus_connection_unref(ty_dbus_conn);
ty_dbus_conn = NULL;
ty_e_object = NULL;
eldbus_shutdown();
}
#else
2013-06-19 01:33:28 -07:00
void ty_dbus_link_hide(void) {}
void ty_dbus_link_mousein (int64_t win __UNUSED__, const char *url __UNUSED__, int x __UNUSED__, int y __UNUSED__) {}
void ty_dbus_link_mouseout(int64_t win __UNUSED__, const char *url __UNUSED__, int x __UNUSED__, int y __UNUSED__) {}
void ty_dbus_init(void) {}
void ty_dbus_shutdown(void) {}
#endif