push mim_eng
authorxddeng <xddeng@xddeng.(none)>
Mon, 26 Oct 2009 08:07:49 +0000 (16:07 +0800)
committerAlsor Zhou <alsor.zhou@gmail.com>
Mon, 26 Oct 2009 08:31:04 +0000 (16:31 +0800)
src/mim/mim-engine-pinyin.c
src/mim/mim-main.c

index 4d38b6b..1c5e949 100644 (file)
@@ -22,3 +22,4 @@
 **  along with Sigil.  If not, see <http://www.gnu.org/licenses/>.
 **
 *************************************************************************/
+
index 4d38b6b..ebaa0e5 100644 (file)
 **  along with Sigil.  If not, see <http://www.gnu.org/licenses/>.
 **
 *************************************************************************/
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <glib.h>
+#include <gconf/gconf-client.h>
+
+#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;
+}
+
+