From 89378ba8d749a6e772a195fdd5c7b4ce171acf3a Mon Sep 17 00:00:00 2001 From: xddeng Date: Mon, 26 Oct 2009 16:07:49 +0800 Subject: [PATCH] push mim_eng --- src/mim/mim-engine-pinyin.c | 1 + src/mim/mim-main.c | 129 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) diff --git a/src/mim/mim-engine-pinyin.c b/src/mim/mim-engine-pinyin.c index 4d38b6b..1c5e949 100644 --- a/src/mim/mim-engine-pinyin.c +++ b/src/mim/mim-engine-pinyin.c @@ -22,3 +22,4 @@ ** along with Sigil. If not, see . ** *************************************************************************/ + diff --git a/src/mim/mim-main.c b/src/mim/mim-main.c index 4d38b6b..ebaa0e5 100644 --- a/src/mim/mim-main.c +++ b/src/mim/mim-main.c @@ -22,3 +22,132 @@ ** along with Sigil. If not, see . ** *************************************************************************/ +#include +#include +#include +#include + +#include "dbus-callback.h" +#include "gconf-change-cb.h" + +static DBusHandlerResult +dbus_filter (DBusConnection *connection, DBusMessage *message, void *user_data) +{ + const gchar *sig_mumber; + sig_mumber = dbus_message_get_member(message); +#ifdef SWITCH + switch() + { + case "init_string": + get_ui_string(message, connection); + break; + case "user_select": + user_select_cb(message); + break; + case "click_backspace": + backspace_key_cb(); + break; + case "click_priv": + priv_click_cb(); + break; + case "click_next": + next_click_cb(); + break; + case "click_space": + space_key_cb(); + break; + case "click_enter": + enter_key_cb(); + break; + default: + printf("Message quit received\n"); + GMainLoop *loop = (GMainLoop*) user_data; + g_main_loop_quit(loop); + break; + } +#endif + g_print("recived message mumber: %s\n", sig_mumber); + + if(sig_mumber == NULL) + g_printf("recived NULL signal\n"); + + else if (!strcmp(sig_mumber,"init_string")) + { + get_ui_string(message,connection); + g_printf("signal init string"); + } + + else if (!strcmp(sig_mumber, "user_select")) + user_select_cb(message); + + else if (!strcmp(sig_mumber,"click_backspace")) + backspace_key_cb(); + + else if (!strcmp(sig_mumber, "click_priv")) + { + priv_click_cb(); + g_printf("signal click priv"); + } + + else if (!strcmp(sig_mumber,"click_next")) + next_click_cb(); + + else if (!strcmp(sig_mumber,"click_space")) + space_key_cb(); + + else if (!strcmp(sig_mumber,"click_enter")) + enter_key_cb(); + + else + g_printf("signal cannot resolve\n"); + + return DBUS_HANDLER_RESULT_HANDLED; +} + +int main() +{ + DBusConnection *connection; + DBusError error; + GConfClient *client; + + /* glib main loop */ + GMainLoop *loop; + loop = g_main_loop_new(NULL,FALSE); + + dbus_error_init(&error); + connection = dbus_bus_get(DBUS_BUS_SESSION, &error); + if ( dbus_error_is_set(&error) ) + { + g_printf("Error connecting to the daemon bus: %s",error.message); + dbus_error_free(&error); + return 1; + } + dbus_bus_add_match (connection, + "type='signal',interface='org.ifanr.mim.mainui'",NULL); + dbus_connection_add_filter (connection, dbus_filter, loop, NULL); + /* dbus-glib call */ + dbus_connection_setup_with_g_main(connection,NULL); + + client = gconf_client_get_default (); + /* Add our directory to the list of directories the GConfClient will + * watch. + */ + gconf_client_add_dir (client, + PATH, + GCONF_CLIENT_PRELOAD_NONE, + NULL); + + /* Listen to changes to our key. */ + gconf_client_notify_add (client, + KEY, + gconf_notify_func, + NULL,/*user data*/ + NULL, + NULL); + + /* run glib main loop */ + g_main_loop_run(loop); + return 0; +} + + -- 1.7.9.5