gpointing-device-settings r73 - trunk/modules
- From: hiikezoe svn gnome org
- To: svn-commits-list gnome org
- Subject: gpointing-device-settings r73 - trunk/modules
- Date: Sun, 1 Mar 2009 06:59:59 +0000 (UTC)
Author: hiikezoe
Date: Sun Mar 1 06:59:59 2009
New Revision: 73
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=73&view=rev
Log:
touchpad plugin for gnome-settings-daemon.
Added:
trunk/modules/gpds-touchpad-definitions.h
trunk/modules/gsd-touchpad-manager.c
trunk/modules/gsd-touchpad-manager.h
Removed:
trunk/modules/gpds-touchpad-gconf.h
Modified:
trunk/modules/Makefile.am
trunk/modules/gpds-touchpad-ui.c
trunk/modules/gsd-touchpad-plugin.c
Modified: trunk/modules/Makefile.am
==============================================================================
--- trunk/modules/Makefile.am (original)
+++ trunk/modules/Makefile.am Sun Mar 1 06:59:59 2009
@@ -50,8 +50,10 @@
gsd-trackpoint-manager.c
libtouchpad_la_CFLAGS = $(gsd_plugin_CFLAGS)
-libtouchpad_la_SOURCES = \
- gsd-touchpad-plugin.c
+libtouchpad_la_SOURCES = \
+ gsd-touchpad-plugin.c \
+ gsd-touchpad-manager.h \
+ gsd-touchpad-manager.c
gsd_plugin_in_files = \
trackpoint.gnome-settings-plugin.in \
Added: trunk/modules/gpds-touchpad-definitions.h
==============================================================================
--- (empty file)
+++ trunk/modules/gpds-touchpad-definitions.h Sun Mar 1 06:59:59 2009
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Hiroyuki Ikezoe <poincare ikezoe net>
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef __GPDS_TOUCHPAD_GCONF_H__
+#define __GPDS_TOUCHPAD_GCONF_H__
+
+#define GPDS_TOUCHPAD_DEVICE_NAME "SynPS/2 Synaptics TouchPad"
+
+#define GPDS_TOUCHPAD_EDGES "Synaptics Edges"
+#define GPDS_TOUCHPAD_FINGER "Synaptics Finger"
+#define GPDS_TOUCHPAD_TAP_TIME "Synaptics Tap Time"
+#define GPDS_TOUCHPAD_TAP_MOVE "Synaptics Tap Move"
+#define GPDS_TOUCHPAD_TAP_DURATIONS "Synaptics Tap Durations"
+#define GPDS_TOUCHPAD_TAP_FAST_TAP "Synaptics Tap FastTap"
+#define GPDS_TOUCHPAD_MIDDLE_BUTTON_TIMEOUT "Synaptics Middle Button Timeout"
+#define GPDS_TOUCHPAD_TWO_FINGER_PRESSURE "Synaptics Two-Finger Pressure"
+#define GPDS_TOUCHPAD_SCROLLING_DISTANCE "Synaptics Scrolling Distance"
+#define GPDS_TOUCHPAD_EDGE_SCROLLING "Synaptics Edge Scrolling"
+#define GPDS_TOUCHPAD_TWO_FINGER_SCROLLING "Synaptics Two-Finger Scrolling"
+#define GPDS_TOUCHPAD_EDGE_MOTION_PRESSURE "Synaptics Edge Motion Pressure"
+#define GPDS_TOUCHPAD_EDGE_MOTION_SPEED "Synaptics Edge Motion Speed"
+#define GPDS_TOUCHPAD_EDGE_MOTION_ALWAYS "Synaptics Edge Motion Always"
+#define GPDS_TOUCHPAD_BUTTON_SCROLLING "Synaptics Button Scrolling"
+#define GPDS_TOUCHPAD_BUTTON_SCROLLING_REPEAT "Synaptics Button Scrolling Repeat"
+#define GPDS_TOUCHPAD_SCROLLING_TIME "Synaptics Button Scrolling Time"
+#define GPDS_TOUCHPAD_OFF "Synaptics Off"
+#define GPDS_TOUCHPAD_GUESTMOUSE_OFF "Synaptics Guestmouse Off"
+#define GPDS_TOUCHPAD_LOCKED_DRAGS "Synaptics Locked Drags"
+#define GPDS_TOUCHPAD_LOCKED_DRAGS_TIMEOUT "Synaptics Locked Drags Timeout"
+#define GPDS_TOUCHPAD_TAP_ACTION "Synaptics Tap Action"
+#define GPDS_TOUCHPAD_CLICK_ACTION "Synaptics Click Action"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING "Synaptics Circular Scrolling"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_TRIGGER "Synaptics Circular Scrolling Trigger"
+#define GPDS_TOUCHPAD_CIRCULAR_PAD "Synaptics Circular Pad"
+#define GPDS_TOUCHPAD_PALM_DETECTION "Synaptics Palm Detection"
+#define GPDS_TOUCHPAD_PALM_DIMENSIONS "Synaptics Palm Dimensions"
+#define GPDS_TOUCHPAD_PRESSURE_MOTION "Synaptics Pressure Motion"
+#define GPDS_TOUCHPAD_GRAB_EVENT_DEVICE "Synaptics Grab Event Device"
+
+#define GPDS_TOUCHPAD_GCONF_DIR "/desktop/gnome/peripherals/touchpad"
+
+#define GPDS_TOUCHPAD_EDGES_KEY GPDS_TOUCHPAD_GCONF_DIR "/edges"
+#define GPDS_TOUCHPAD_OFF_KEY GPDS_TOUCHPAD_GCONF_DIR "/off"
+#define GPDS_TOUCHPAD_TAP_TIME_KEY GPDS_TOUCHPAD_GCONF_DIR "/tap_time"
+#define GPDS_TOUCHPAD_TAP_FAST_TAP_KEY GPDS_TOUCHPAD_GCONF_DIR "/tap_fast_tap"
+#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY GPDS_TOUCHPAD_GCONF_DIR "/horizontal_scrolling_distance"
+#define GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY GPDS_TOUCHPAD_GCONF_DIR "/horizontal_scrolling"
+#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY GPDS_TOUCHPAD_GCONF_DIR "/vertical_scrolling_distance"
+#define GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY GPDS_TOUCHPAD_GCONF_DIR "/vertical_scrolling"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_KEY GPDS_TOUCHPAD_GCONF_DIR "/circular_scrolling"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_DISTANCE_KEY GPDS_TOUCHPAD_GCONF_DIR "/circular_scrolling_distance"
+#define GPDS_TOUCHPAD_CIRCULAR_SCROLLING_TRIGGER_KEY GPDS_TOUCHPAD_GCONF_DIR "/circular_scrolling_trigger"
+
+#endif /* __GPDS_TOUCHPAD_GCONF_H__ */
+/*
+vi:ts=4:nowrap:ai:expandtab:sw=4
+*/
Modified: trunk/modules/gpds-touchpad-ui.c
==============================================================================
--- trunk/modules/gpds-touchpad-ui.c (original)
+++ trunk/modules/gpds-touchpad-ui.c Sun Mar 1 06:59:59 2009
@@ -27,40 +27,8 @@
#include <gpds-xinput.h>
#include <gconf/gconf-client.h>
-#include "gpds-touchpad-gconf.h"
+#include "gpds-touchpad-definitions.h"
-#define DEVICE_NAME "SynPS/2 Synaptics TouchPad"
-
-#define EDGES "Synaptics Edges"
-#define FINGER "Synaptics Finger"
-#define TAP_TIME "Synaptics Tap Time"
-#define TAP_MOVE "Synaptics Tap Move"
-#define TAP_DURATIONS "Synaptics Tap Durations"
-#define TAP_FAST_TAP "Synaptics Tap FastTap"
-#define MIDDLE_BUTTON_TIMEOUT "Synaptics Middle Button Timeout"
-#define TWO_FINGER_PRESSURE "Synaptics Two-Finger Pressure"
-#define SCROLLING_DISTANCE "Synaptics Scrolling Distance"
-#define EDGE_SCROLLING "Synaptics Edge Scrolling"
-#define TWO_FINGER_SCROLLING "Synaptics Two-Finger Scrolling"
-#define EDGE_MOTION_PRESSURE "Synaptics Edge Motion Pressure"
-#define EDGE_MOTION_SPEED "Synaptics Edge Motion Speed"
-#define EDGE_MOTION_ALWAYS "Synaptics Edge Motion Always"
-#define BUTTON_SCROLLING "Synaptics Button Scrolling"
-#define BUTTON_SCROLLING_REPEAT "Synaptics Button Scrolling Repeat"
-#define SCROLLING_TIME "Synaptics Button Scrolling Time"
-#define OFF "Synaptics Off"
-#define GUESTMOUSE_OFF "Synaptics Guestmouse Off"
-#define LOCKED_DRAGS "Synaptics Locked Drags"
-#define LOCKED_DRAGS_TIMEOUT "Synaptics Locked Drags Timeout"
-#define TAP_ACTION "Synaptics Tap Action"
-#define CLICK_ACTION "Synaptics Click Action"
-#define CIRCULAR_SCROLLING "Synaptics Circular Scrolling"
-#define CIRCULAR_SCROLLING_TRIGGER "Synaptics Circular Scrolling Trigger"
-#define CIRCULAR_PAD "Synaptics Circular Pad"
-#define PALM_DETECTION "Synaptics Palm Detection"
-#define PALM_DIMENSIONS "Synaptics Palm Dimensions"
-#define PRESSURE_MOTION "Synaptics Pressure Motion"
-#define GRAB_EVENT_DEVICE "Synaptics Grab Event Device"
static const gchar *touchpad_device_names[] =
{
@@ -241,7 +209,7 @@
set_widget_sensitivity(builder, "horizontal_scroll_box", GTK_TOGGLE_BUTTON(object));
if (!gpds_xinput_set_property(xinput,
- EDGE_SCROLLING,
+ GPDS_TOUCHPAD_EDGE_SCROLLING,
&error,
vertical_scrolling_active ? 1 : 0,
horizontal_scrolling_active ? 1 : 0,
@@ -287,7 +255,7 @@
horizontal_scrolling_distance = gtk_range_get_value(GTK_RANGE(object));
if (!gpds_xinput_set_property(xinput,
- SCROLLING_DISTANCE,
+ GPDS_TOUCHPAD_SCROLLING_DISTANCE,
&error,
(gint)vertical_scrolling_distance,
(gint)horizontal_scrolling_distance,
@@ -308,10 +276,10 @@
builder = gpds_ui_get_builder(GPDS_UI(user_data));
- set_range_property(ui->xinput, range, TAP_TIME);
+ set_range_property(ui->xinput, range, GPDS_TOUCHPAD_TAP_TIME);
time = gtk_range_get_value(range);
- gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_MAX_TAP_TIME_KEY, (gint)time, NULL);
+ gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_TAP_TIME_KEY, (gint)time, NULL);
}
static void
@@ -323,9 +291,9 @@
builder = gpds_ui_get_builder(GPDS_UI(user_data));
- set_toggle_property(ui->xinput, button, TAP_FAST_TAP);
+ set_toggle_property(ui->xinput, button, GPDS_TOUCHPAD_TAP_FAST_TAP);
check = gtk_toggle_button_get_active(button);
- gconf_client_set_bool(ui->gconf, GPDS_TOUCHPAD_FASTTAPS_KEY, check, NULL);
+ gconf_client_set_bool(ui->gconf, GPDS_TOUCHPAD_TAP_FAST_TAP_KEY, check, NULL);
}
static void
@@ -337,7 +305,7 @@
builder = gpds_ui_get_builder(GPDS_UI(user_data));
- set_toggle_property(ui->xinput, button, CIRCULAR_SCROLLING);
+ set_toggle_property(ui->xinput, button, GPDS_TOUCHPAD_CIRCULAR_SCROLLING);
set_widget_sensitivity(builder, "circular_scroll_box", button);
check = gtk_toggle_button_get_active(button);
@@ -386,7 +354,7 @@
set_scrolling_distance_range_property(ui->xinput, builder);
distance = gtk_range_get_value(range);
- gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_HORIZONTAL_SCROLL_DELTA_KEY, (gint)distance, NULL);
+ gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY, (gint)distance, NULL);
}
static void
@@ -401,7 +369,7 @@
set_scrolling_distance_range_property(ui->xinput, builder);
distance = gtk_range_get_value(range);
- gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_VERTICAL_SCROLL_DELTA_KEY, (gint)distance, NULL);
+ gconf_client_set_int(ui->gconf, GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY, (gint)distance, NULL);
}
static void
@@ -511,7 +479,7 @@
gulong n_values;
gboolean enable, dir_exists;
- if (!get_integer_property(ui->xinput, EDGE_SCROLLING,
+ if (!get_integer_property(ui->xinput, GPDS_TOUCHPAD_EDGE_SCROLLING,
&values, &n_values)) {
return;
}
@@ -550,7 +518,7 @@
gint distance;
if (!get_integer_property(ui->xinput,
- SCROLLING_DISTANCE,
+ GPDS_TOUCHPAD_SCROLLING_DISTANCE,
&values, &n_values)) {
return;
}
@@ -560,13 +528,17 @@
return;
}
- distance = gconf_client_get_int(ui->gconf, GPDS_TOUCHPAD_VERTICAL_SCROLL_DELTA_KEY, &error);
+ distance = gconf_client_get_int(ui->gconf,
+ GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY,
+ &error);
object = gtk_builder_get_object(builder, "vertical_scroll_scale");
gtk_range_set_value(GTK_RANGE(object), error ? values[0] : distance);
if (error)
g_clear_error(&error);
- distance = gconf_client_get_int(ui->gconf, GPDS_TOUCHPAD_HORIZONTAL_SCROLL_DELTA_KEY, &error);
+ distance = gconf_client_get_int(ui->gconf,
+ GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY,
+ &error);
object = gtk_builder_get_object(builder, "horizontal_scroll_scale");
gtk_range_set_value(GTK_RANGE(object), error ? values[1] : distance);
if (error)
@@ -581,17 +553,17 @@
GpdsTouchpadUI *touchpad_ui = GPDS_TOUCHPAD_UI(ui);
set_integer_property_from_preference(touchpad_ui,
- TAP_TIME,
- GPDS_TOUCHPAD_MAX_TAP_TIME_KEY,
+ GPDS_TOUCHPAD_TAP_TIME,
+ GPDS_TOUCHPAD_TAP_TIME_KEY,
builder,
"tapping_time_scale");
set_boolean_property_from_preference(touchpad_ui,
- TAP_FAST_TAP,
- GPDS_TOUCHPAD_FASTTAPS_KEY,
+ GPDS_TOUCHPAD_TAP_FAST_TAP,
+ GPDS_TOUCHPAD_TAP_FAST_TAP_KEY,
builder,
"faster_tapping_check");
set_boolean_property_from_preference(touchpad_ui,
- CIRCULAR_SCROLLING,
+ GPDS_TOUCHPAD_CIRCULAR_SCROLLING,
GPDS_TOUCHPAD_CIRCULAR_SCROLLING_KEY,
builder,
"circular_scroll_check");
Added: trunk/modules/gsd-touchpad-manager.c
==============================================================================
--- (empty file)
+++ trunk/modules/gsd-touchpad-manager.c Sun Mar 1 06:59:59 2009
@@ -0,0 +1,206 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Hiroyuki Ikezoe <poincare ikezoe net>
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include "gsd-touchpad-manager.h"
+#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
+#include <gpds-xinput.h>
+
+#include "gpds-touchpad-definitions.h"
+
+#define GSD_TOUCHPAD_MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), GSD_TYPE_TOUCHPAD_MANAGER, GsdTouchpadManagerPrivate))
+
+typedef struct _GsdTouchpadManagerPrivate GsdTouchpadManagerPrivate;
+struct _GsdTouchpadManagerPrivate
+{
+ GConfClient *gconf;
+ guint notify_id;
+};
+
+G_DEFINE_TYPE (GsdTouchpadManager, gsd_touchpad_manager, G_TYPE_OBJECT)
+
+static gpointer manager_object = NULL;
+
+static void
+gsd_touchpad_manager_init (GsdTouchpadManager *manager)
+{
+ GsdTouchpadManagerPrivate *priv;
+
+ priv = GSD_TOUCHPAD_MANAGER_GET_PRIVATE(manager);
+
+ priv->gconf = NULL;
+ priv->notify_id = 0;
+}
+
+static void
+gsd_touchpad_manager_class_init (GsdTouchpadManagerClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+
+ g_type_class_add_private(gobject_class, sizeof(GsdTouchpadManagerPrivate));
+}
+
+GsdTouchpadManager *
+gsd_touchpad_manager_new (void)
+{
+ if (manager_object != NULL) {
+ g_object_ref(manager_object);
+ } else {
+ manager_object = g_object_new(GSD_TYPE_TOUCHPAD_MANAGER, NULL);
+ g_object_add_weak_pointer(manager_object, (gpointer *)&manager_object);
+ }
+
+ return GSD_TOUCHPAD_MANAGER(manager_object);
+}
+
+static void
+cb_gconf_client_notify (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GConfValue *value;
+ const gchar *key;
+ GpdsXInput *xinput;
+
+ if (!gpds_xinput_exist_device(GPDS_TOUCHPAD_DEVICE_NAME))
+ return;
+
+ xinput = gpds_xinput_new(GPDS_TOUCHPAD_DEVICE_NAME);
+
+ value = gconf_entry_get_value(entry);
+ key = gconf_entry_get_key(entry);
+
+ switch (value->type) {
+ case GCONF_VALUE_BOOL:
+ if (!strcmp(key, GPDS_TOUCHPAD_TAP_FAST_TAP_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TOUCHPAD_TAP_FAST_TAP,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TOUCHPAD_CIRCULAR_SCROLLING_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TOUCHPAD_CIRCULAR_SCROLLING,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY) ||
+ !strcmp(key, GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY)) {
+ gboolean enable_vertical, enable_horizontal;
+ enable_vertical = gconf_client_get_bool(client,
+ GPDS_TOUCHPAD_VERTICAL_SCROLLING_KEY,
+ NULL);
+ enable_horizontal = gconf_client_get_bool(client,
+ GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_KEY,
+ NULL);
+
+ gpds_xinput_set_property(xinput,
+ GPDS_TOUCHPAD_EDGE_SCROLLING,
+ NULL,
+ enable_vertical ? 1 : 0,
+ enable_horizontal ? 1 : 0,
+ NULL);
+ }
+ break;
+ case GCONF_VALUE_INT:
+ if (!strcmp(key, GPDS_TOUCHPAD_TAP_TIME_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TOUCHPAD_TAP_TIME,
+ NULL,
+ gconf_value_get_int(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY) ||
+ !strcmp(key, GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY)) {
+ gint vertical_scrolling_distance;
+ gint horizontal_scrolling_distance;
+
+ vertical_scrolling_distance =
+ gconf_client_get_int(client,
+ GPDS_TOUCHPAD_VERTICAL_SCROLLING_DISTANCE_KEY,
+ NULL);
+ horizontal_scrolling_distance =
+ gconf_client_get_int(client,
+ GPDS_TOUCHPAD_HORIZONTAL_SCROLLING_DISTANCE_KEY,
+ NULL);
+ gpds_xinput_set_property(xinput,
+ GPDS_TOUCHPAD_SCROLLING_DISTANCE,
+ NULL,
+ vertical_scrolling_distance,
+ horizontal_scrolling_distance,
+ NULL);
+ }
+ break;
+ default:
+ break;
+ }
+
+ g_object_unref(xinput);
+}
+
+gboolean
+gsd_touchpad_manager_start (GsdTouchpadManager *manager,
+ GError **error)
+{
+ GsdTouchpadManagerPrivate *priv;
+
+ priv = GSD_TOUCHPAD_MANAGER_GET_PRIVATE(manager);
+ priv->gconf = gconf_client_get_default();
+
+ gconf_client_add_dir(priv->gconf,
+ GPDS_TOUCHPAD_GCONF_DIR,
+ GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ priv->notify_id = gconf_client_notify_add(priv->gconf,
+ GPDS_TOUCHPAD_GCONF_DIR,
+ cb_gconf_client_notify,
+ manager,
+ NULL,
+ NULL);
+
+ return TRUE;
+}
+
+void
+gsd_touchpad_manager_stop (GsdTouchpadManager *manager)
+{
+ GsdTouchpadManagerPrivate *priv;
+
+ priv = GSD_TOUCHPAD_MANAGER_GET_PRIVATE(manager);
+
+ if (priv->notify_id) {
+ gconf_client_remove_dir(priv->gconf,
+ GPDS_TOUCHPAD_GCONF_DIR,
+ NULL);
+ gconf_client_notify_remove(priv->gconf, priv->notify_id);
+ priv->notify_id = 0;
+ }
+
+ if (priv->gconf) {
+ g_object_unref(priv->gconf);
+ priv->gconf = NULL;
+ }
+}
+
+/*
+vi:ts=4:nowrap:ai:expandtab:sw=4
+*/
Added: trunk/modules/gsd-touchpad-manager.h
==============================================================================
--- (empty file)
+++ trunk/modules/gsd-touchpad-manager.h Sun Mar 1 06:59:59 2009
@@ -0,0 +1,59 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Copyright (C) 2009 Hiroyuki Ikezoe <poincare ikezoe net>
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef __GSD_TOUCHPAD_MANAGER_H__
+#define __GSD_TOUCHPAD_MANAGER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSD_TYPE_TOUCHPAD_MANAGER (gsd_touchpad_manager_get_type ())
+#define GSD_TOUCHPAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TOUCHPAD_MANAGER, GsdTouchpadManager))
+#define GSD_TOUCHPAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TOUCHPAD_MANAGER, GsdTracklassPointManagerClass))
+#define GSD_IS_TOUCHPAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_TOUCHPAD_MANAGER))
+#define GSD_IS_TOUCHPAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_TOUCHPAD_MANAGER))
+#define GSD_TOUCHPAD_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TOUCHPAD_MANAGER, GsdTracklassPointManagerClass))
+
+typedef struct _GsdTouchpadManager GsdTouchpadManager;
+typedef struct _GsdTouchpadManagerClass GsdTouchpadManagerClass;
+
+struct _GsdTouchpadManager
+{
+ GObject parent;
+};
+
+struct _GsdTouchpadManagerClass
+{
+ GObjectClass parent_class;
+};
+
+GType gsd_touchpad_manager_get_type (void) G_GNUC_CONST;
+
+GsdTouchpadManager *gsd_touchpad_manager_new (void);
+gboolean gsd_touchpad_manager_start (GsdTouchpadManager *manager,
+ GError **error);
+void gsd_touchpad_manager_stop (GsdTouchpadManager *manager);
+
+G_END_DECLS
+
+#endif /* __GSD_TOUCHPAD_MANAGER_H__ */
+/*
+vi:ts=4:nowrap:ai:expandtab:sw=4
+*/
Modified: trunk/modules/gsd-touchpad-plugin.c
==============================================================================
--- trunk/modules/gsd-touchpad-plugin.c (original)
+++ trunk/modules/gsd-touchpad-plugin.c Sun Mar 1 06:59:59 2009
@@ -25,12 +25,14 @@
#include "gnome-settings-plugin.h"
#include <glib/gi18n.h>
+#include "gsd-touchpad-manager.h"
+
#define GSD_TYPE_TOUCHPAD_PLUGIN (gsd_touchpad_plugin_get_type ())
-#define GSD_TOUCHPAD_PLUGIN(jbj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTrackPobjintPlugin))
-#define GSD_TOUCHPAD_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTracklassPobjintPluginClass))
+#define GSD_TOUCHPAD_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTouchpadPlugin))
+#define GSD_TOUCHPAD_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTracklassPointPluginClass))
#define GSD_IS_TOUCHPAD_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_TOUCHPAD_PLUGIN))
#define GSD_IS_TOUCHPAD_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_TOUCHPAD_PLUGIN))
-#define GSD_TOUCHPAD_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTracklassPobjintPluginClass))
+#define GSD_TOUCHPAD_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TOUCHPAD_PLUGIN, GsdTracklassPointPluginClass))
typedef struct _GsdTouchpadPlugin GsdTouchpadPlugin;
typedef struct _GsdTouchpadPluginClass GsdTouchpadPluginClass;
@@ -38,6 +40,7 @@
struct _GsdTouchpadPlugin
{
GnomeSettingsPlugin parent;
+ GsdTouchpadManager *manager;
};
struct _GsdTouchpadPluginClass
@@ -53,16 +56,30 @@
static void
gsd_touchpad_plugin_init (GsdTouchpadPlugin *plugin)
{
+ plugin->manager = NULL;
}
static void
activate (GnomeSettingsPlugin *plugin)
{
+ GsdTouchpadPlugin *touchpad_plugin;
+
+ touchpad_plugin = GSD_TOUCHPAD_PLUGIN(plugin);
+ touchpad_plugin->manager = gsd_touchpad_manager_new();
+ gsd_touchpad_manager_start(touchpad_plugin->manager, NULL);
}
static void
deactivate (GnomeSettingsPlugin *plugin)
{
+ GsdTouchpadPlugin *touchpad_plugin;
+
+ touchpad_plugin = GSD_TOUCHPAD_PLUGIN(plugin);
+ if (touchpad_plugin->manager) {
+ gsd_touchpad_manager_stop(touchpad_plugin->manager);
+ g_object_unref(touchpad_plugin->manager);
+ touchpad_plugin->manager = NULL;
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]