gpointing-device-settings r65 - trunk/modules
- From: hiikezoe svn gnome org
- To: svn-commits-list gnome org
- Subject: gpointing-device-settings r65 - trunk/modules
- Date: Sun, 1 Mar 2009 01:34:28 +0000 (UTC)
Author: hiikezoe
Date: Sun Mar 1 01:34:27 2009
New Revision: 65
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=65&view=rev
Log:
Implement plugin of gnome-settings-daemon for TrackPoint.
Added:
trunk/modules/gsd-trackpoint-manager.c
trunk/modules/gsd-trackpoint-manager.h
Modified:
trunk/modules/Makefile.am
trunk/modules/gsd-trackpoint-plugin.c
Modified: trunk/modules/Makefile.am
==============================================================================
--- trunk/modules/Makefile.am (original)
+++ trunk/modules/Makefile.am Sun Mar 1 01:34:27 2009
@@ -44,8 +44,10 @@
-DGNOME_SETTINGS_LOCALEDIR=\""$(localedir)"\"
libtrackpoint_la_CFLAGS = $(gsd_plugin_CFLAGS)
-libtrackpoint_la_SOURCES = \
- gsd-trackpoint-plugin.c
+libtrackpoint_la_SOURCES = \
+ gsd-trackpoint-plugin.c \
+ gsd-trackpoint-manager.h \
+ gsd-trackpoint-manager.c
libtouchpad_la_CFLAGS = $(gsd_plugin_CFLAGS)
libtouchpad_la_SOURCES = \
Added: trunk/modules/gsd-trackpoint-manager.c
==============================================================================
--- (empty file)
+++ trunk/modules/gsd-trackpoint-manager.c Sun Mar 1 01:34:27 2009
@@ -0,0 +1,192 @@
+/* -*- 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-trackpoint-manager.h"
+#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
+#include <gpds-xinput.h>
+
+#include "gpds-trackpoint-definitions.h"
+
+#define GSD_TRACK_POINT_MANAGER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), GSD_TYPE_TRACK_POINT_MANAGER, GsdTrackPointManagerPrivate))
+
+typedef struct _GsdTrackPointManagerPrivate GsdTrackPointManagerPrivate;
+struct _GsdTrackPointManagerPrivate
+{
+ GConfClient *gconf;
+ guint notify_id;
+};
+
+G_DEFINE_TYPE (GsdTrackPointManager, gsd_track_point_manager, G_TYPE_OBJECT)
+
+static gpointer manager_object = NULL;
+
+static void
+gsd_track_point_manager_init (GsdTrackPointManager *manager)
+{
+}
+
+static void
+gsd_track_point_manager_class_init (GsdTrackPointManagerClass *klass)
+{
+}
+
+GsdTrackPointManager *
+gsd_track_point_manager_new (void)
+{
+ if (manager_object != NULL) {
+ g_object_ref(manager_object);
+ } else {
+ manager_object = g_object_new(GSD_TYPE_TRACK_POINT_MANAGER, NULL);
+ g_object_add_weak_pointer(manager_object, (gpointer *)&manager_object);
+ }
+
+ return GSD_TRACK_POINT_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_TRACK_POINT_DEVICE_NAME))
+ return;
+
+ xinput = gpds_xinput_new("trackpoint");
+
+ value = gconf_entry_get_value(entry);
+ key = gconf_entry_get_key(entry);
+
+ switch (value->type) {
+ case GCONF_VALUE_BOOL:
+ if (!strcmp(key, GPDS_TRACK_POINT_MIDDLE_BUTTON_EMULATION_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_MIDDLE_BUTTON_EMULATION,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TRACK_POINT_WHEEL_EMULATION_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_WHEEL_EMULATION,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TRACK_POINT_WHEEL_EMULATION_X_AXIS_KEY)) {
+ gboolean enable;
+ enable = gconf_value_get_bool(value);
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_WHEEL_EMULATION_Y_AXIS,
+ NULL,
+ enable ? 6 : -1,
+ enable ? 7 : -1,
+ NULL);
+ } else if (!strcmp(key, GPDS_TRACK_POINT_WHEEL_EMULATION_Y_AXIS_KEY)) {
+ gboolean enable;
+ enable = gconf_value_get_bool(value);
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_WHEEL_EMULATION_Y_AXIS,
+ NULL,
+ enable ? 4 : -1,
+ enable ? 5 : -1,
+ NULL);
+ }
+ break;
+ case GCONF_VALUE_INT:
+ if (!strcmp(key, GPDS_TRACK_POINT_MIDDLE_BUTTON_TIMEOUT_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_MIDDLE_BUTTON_TIMEOUT,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TRACK_POINT_WHEEL_EMULATION_TIMEOUT_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_WHEEL_EMULATION_TIMEOUT,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ } else if (!strcmp(key, GPDS_TRACK_POINT_WHEEL_EMULATION_INERTIA_KEY)) {
+ gpds_xinput_set_property(xinput,
+ GPDS_TRACK_POINT_WHEEL_EMULATION_INERTIA,
+ NULL,
+ gconf_value_get_bool(value),
+ NULL);
+ }
+ break;
+ default:
+ break;
+ }
+
+ g_object_unref(xinput);
+}
+
+gboolean
+gsd_track_point_manager_start (GsdTrackPointManager *manager,
+ GError **error)
+{
+ GsdTrackPointManagerPrivate *priv;
+
+ priv = GSD_TRACK_POINT_MANAGER_GET_PRIVATE(manager);
+ priv->gconf = gconf_client_get_default();
+
+ gconf_client_add_dir(priv->gconf,
+ GPDS_TRACK_POINT_GCONF_DIR,
+ GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ priv->notify_id = gconf_client_notify_add(priv->gconf,
+ GPDS_TRACK_POINT_GCONF_DIR,
+ cb_gconf_client_notify,
+ manager,
+ NULL,
+ NULL);
+
+ return TRUE;
+}
+
+void
+gsd_track_point_manager_stop (GsdTrackPointManager *manager)
+{
+ GsdTrackPointManagerPrivate *priv;
+
+ priv = GSD_TRACK_POINT_MANAGER_GET_PRIVATE(manager);
+
+ if (priv->notify_id) {
+ gconf_client_remove_dir(priv->gconf,
+ GPDS_TRACK_POINT_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-trackpoint-manager.h
==============================================================================
--- (empty file)
+++ trunk/modules/gsd-trackpoint-manager.h Sun Mar 1 01:34:27 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_TRACK_POINT_MANAGER_H__
+#define __GSD_TRACK_POINT_MANAGER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSD_TYPE_TRACK_POINT_MANAGER (gsd_track_point_manager_get_type ())
+#define GSD_TRACK_POINT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TRACK_POINT_MANAGER, GsdTrackPointManager))
+#define GSD_TRACK_POINT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TRACK_POINT_MANAGER, GsdTracklassPointManagerClass))
+#define GSD_IS_TRACK_POINT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_TRACK_POINT_MANAGER))
+#define GSD_IS_TRACK_POINT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_TRACK_POINT_MANAGER))
+#define GSD_TRACK_POINT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TRACK_POINT_MANAGER, GsdTracklassPointManagerClass))
+
+typedef struct _GsdTrackPointManager GsdTrackPointManager;
+typedef struct _GsdTrackPointManagerClass GsdTrackPointManagerClass;
+
+struct _GsdTrackPointManager
+{
+ GObject parent;
+};
+
+struct _GsdTrackPointManagerClass
+{
+ GObjectClass parent_class;
+};
+
+GType gsd_track_point_manager_get_type (void) G_GNUC_CONST;
+
+GsdTrackPointManager *gsd_track_point_manager_new (void);
+gboolean gsd_track_point_manager_start (GsdTrackPointManager *manager,
+ GError **error);
+void gsd_track_point_manager_stop (GsdTrackPointManager *manager);
+
+G_END_DECLS
+
+#endif /* __GSD_TRACK_POINT_MANAGER_H__ */
+/*
+vi:ts=4:nowrap:ai:expandtab:sw=4
+*/
Modified: trunk/modules/gsd-trackpoint-plugin.c
==============================================================================
--- trunk/modules/gsd-trackpoint-plugin.c (original)
+++ trunk/modules/gsd-trackpoint-plugin.c Sun Mar 1 01:34:27 2009
@@ -25,12 +25,14 @@
#include "gnome-settings-plugin.h"
#include <glib/gi18n.h>
+#include "gsd-trackpoint-manager.h"
+
#define GSD_TYPE_TRACK_POINT_PLUGIN (gsd_track_point_plugin_get_type ())
-#define GSD_TRACK_POINT_PLUGIN(jbj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTrackPobjintPlugin))
-#define GSD_TRACK_POINT_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTracklassPobjintPluginClass))
+#define GSD_TRACK_POINT_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTrackPointPlugin))
+#define GSD_TRACK_POINT_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTracklassPointPluginClass))
#define GSD_IS_TRACK_POINT_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSD_TYPE_TRACK_POINT_PLUGIN))
#define GSD_IS_TRACK_POINT_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSD_TYPE_TRACK_POINT_PLUGIN))
-#define GSD_TRACK_POINT_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTracklassPobjintPluginClass))
+#define GSD_TRACK_POINT_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSD_TYPE_TRACK_POINT_PLUGIN, GsdTracklassPointPluginClass))
typedef struct _GsdTrackPointPlugin GsdTrackPointPlugin;
typedef struct _GsdTrackPointPluginClass GsdTrackPointPluginClass;
@@ -38,6 +40,7 @@
struct _GsdTrackPointPlugin
{
GnomeSettingsPlugin parent;
+ GsdTrackPointManager *manager;
};
struct _GsdTrackPointPluginClass
@@ -53,16 +56,30 @@
static void
gsd_track_point_plugin_init (GsdTrackPointPlugin *plugin)
{
+ plugin->manager = NULL;
}
static void
activate (GnomeSettingsPlugin *plugin)
{
+ GsdTrackPointPlugin *track_point_plugin;
+
+ track_point_plugin = GSD_TRACK_POINT_PLUGIN(plugin);
+ track_point_plugin->manager = gsd_track_point_manager_new();
+ gsd_track_point_manager_start(track_point_plugin->manager, NULL);
}
static void
deactivate (GnomeSettingsPlugin *plugin)
{
+ GsdTrackPointPlugin *track_point_plugin;
+
+ track_point_plugin = GSD_TRACK_POINT_PLUGIN(plugin);
+ if (track_point_plugin->manager) {
+ gsd_track_point_manager_stop(track_point_plugin->manager);
+ g_object_unref(track_point_plugin->manager);
+ track_point_plugin->manager = NULL;
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]