gpointing-device-settings r128 - in trunk: . modules/gnome-settings-daemon-plugins src test



Author: hiikezoe
Date: Fri Mar  6 07:23:36 2009
New Revision: 128
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=128&view=rev

Log:
added GpdsXInputPointerInfo. The test fails yet.

Modified:
   trunk/TODO
   trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
   trunk/src/gpds-xinput-utils.c
   trunk/src/gpds-xinput-utils.h
   trunk/test/test-xinput-utils.c

Modified: trunk/TODO
==============================================================================
--- trunk/TODO	(original)
+++ trunk/TODO	Fri Mar  6 07:23:36 2009
@@ -1 +1,2 @@
+* trackpoint should be "mouse".
 * more touchpad settings.

Modified: trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c
==============================================================================
--- trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c	(original)
+++ trunk/modules/gnome-settings-daemon-plugins/gsd-touchpad-manager.c	Fri Mar  6 07:23:36 2009
@@ -181,7 +181,7 @@
 
 gboolean
 gsd_touchpad_manager_start (GsdTouchpadManager *manager,
-                               GError              **error)
+                            GError              **error)
 {
     GsdTouchpadManagerPrivate *priv;
 

Modified: trunk/src/gpds-xinput-utils.c
==============================================================================
--- trunk/src/gpds-xinput-utils.c	(original)
+++ trunk/src/gpds-xinput-utils.c	Fri Mar  6 07:23:36 2009
@@ -105,8 +105,28 @@
     return gpds_xinput_utils_get_device_info(device_name) ? TRUE : FALSE;
 }
 
+GpdsXInputPointerInfo *
+gpds_xinput_pointer_info_new (const gchar *name, const gchar *type_name)
+{
+    GpdsXInputPointerInfo *info;
+
+    info = g_new0(GpdsXInputPointerInfo, 1);
+    info->name = g_strdup(name);
+    info->type_name = g_strdup(type_name);
+
+    return info;
+}
+
+void
+gpds_xinput_pointer_info_free (GpdsXInputPointerInfo *info)
+{
+    g_free(info->name);
+    g_free(info->type_name);
+    g_free(info);
+}
+
 GList *
-gpds_xinput_utils_get_pointer_device_names (void)
+gpds_xinput_utils_collect_pointer_infos (void)
 {
     GList *device_names = NULL;
     XDeviceInfo *device_infos;
@@ -115,9 +135,14 @@
     device_infos = XListInputDevices(GDK_DISPLAY(), &n_device_infos);
 
     for (i = 0; i < n_device_infos; i++) {
+        GpdsXInputPointerInfo *info;
+
         if (device_infos[i].use != IsXExtensionPointer)
             continue;
-        device_names = g_list_prepend(device_names, device_infos[i].name);
+        info = gpds_xinput_pointer_info_new(device_infos[i].name,
+                                            XGetAtomName(GDK_DISPLAY(), device_infos[i].type));
+
+        device_names = g_list_prepend(device_names, info);
     }
 
     XFreeDeviceList(device_infos);

Modified: trunk/src/gpds-xinput-utils.h
==============================================================================
--- trunk/src/gpds-xinput-utils.h	(original)
+++ trunk/src/gpds-xinput-utils.h	Fri Mar  6 07:23:36 2009
@@ -35,12 +35,23 @@
     GPDS_XINPUT_UTILS_ERROR_NO_FLOAT_ATOM
 } GpdsXInputUtilsError;
 
+typedef struct _GpdsXInputPointerInfo GpdsXInputPointerInfo;
+struct _GpdsXInputPointerInfo
+{
+    gchar *name;
+    gchar *type_name; /* MOUSE, TOUCHPAD, ... */
+};
+
+GpdsXInputPointerInfo *gpds_xinput_pointer_info_new     (const gchar *name,
+                                                         const gchar *type_name);
+void                   gpds_xinput_pointer_info_free    (GpdsXInputPointerInfo *info);
+
 GQuark       gpds_xinput_utils_error_quark              (void);
 XDeviceInfo *gpds_xinput_utils_get_device_info          (const gchar *device_name);
 XDevice     *gpds_xinput_utils_open_device              (const gchar *device_name, GError **error);
 Atom         gpds_xinput_utils_get_float_atom           (GError **error);
 gboolean     gpds_xinput_utils_exist_device             (const gchar *device_name);
-GList       *gpds_xinput_utils_get_pointer_device_names (void);
+GList       *gpds_xinput_utils_collect_pointer_infos    (void);
 
 G_END_DECLS
 

Modified: trunk/test/test-xinput-utils.c
==============================================================================
--- trunk/test/test-xinput-utils.c	(original)
+++ trunk/test/test-xinput-utils.c	Fri Mar  6 07:23:36 2009
@@ -10,12 +10,16 @@
 
 static GError *error;
 static XDevice *device;
+static GList *pointer_infos;
+static GList *expected_pointer_infos;
 
 void
 setup (void)
 {
     error = NULL;
     device = NULL;
+    pointer_infos = NULL;
+    expected_pointer_infos = NULL;
 }
 
 void
@@ -24,6 +28,11 @@
     if (device)
         XCloseDevice(GDK_DISPLAY(), device);
     g_clear_error(&error);
+
+    if (pointer_infos) {
+        g_list_foreach(pointer_infos, (GFunc)gpds_xinput_pointer_info_free, NULL);
+        g_list_free(pointer_infos);
+    }
 }
 
 void
@@ -54,6 +63,41 @@
     cut_assert(device);
 }
 
+static void
+gpds_xinput_pointer_info_inspect (GString *string,
+                                  gconstpointer data,
+                                  gpointer user_data)
+{
+    GpdsXInputPointerInfo *info = (GpdsXInputPointerInfo*)data;
+
+    g_string_append_printf(string, "%s (%s)", info->name, info->type_name);
+}
+
+static gboolean
+gpds_xinput_pointer_info_equal (gconstpointer a, gconstpointer b)
+{
+    GpdsXInputPointerInfo *a_info = (GpdsXInputPointerInfo*)a;
+    GpdsXInputPointerInfo *b_info = (GpdsXInputPointerInfo*)b;
+
+    if (!a || !b)
+        return FALSE;
+
+    if (g_strcmp0(a_info->name, b_info->name))
+        return FALSE;
+    return (!g_strcmp0(a_info->type_name, b_info->type_name));
+}
+
+void
+test_collect_pointer_infos (void)
+{
+    pointer_infos = gpds_xinput_utils_collect_pointer_infos();
+
+    gcut_assert_equal_list(expected_pointer_infos, pointer_infos,
+                           gpds_xinput_pointer_info_equal,
+                           gpds_xinput_pointer_info_inspect,
+                           NULL);
+}
+
 /*
 vi:ts=4:nowrap:ai:expandtab:sw=4
 */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]