1
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
3
* Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29
#include <glib/gi18n.h>
30
#include <glib-object.h>
32
#include "gnome-settings-manager.h"
33
#include "gnome-settings-plugins-engine.h"
35
#define GNOME_SETTINGS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNOME_TYPE_SETTINGS_MANAGER, GnomeSettingsManagerPrivate))
37
struct GnomeSettingsManagerPrivate
47
static void gnome_settings_manager_class_init (GnomeSettingsManagerClass *klass);
48
static void gnome_settings_manager_init (GnomeSettingsManager *settings_manager);
49
static void gnome_settings_manager_finalize (GObject *object);
51
G_DEFINE_TYPE (GnomeSettingsManager, gnome_settings_manager, G_TYPE_OBJECT)
53
static gpointer manager_object = NULL;
56
gnome_settings_manager_start (GnomeSettingsManager *manager,
61
g_debug ("Starting settings manager");
63
gnome_settings_plugins_engine_init (manager->priv->gconf_prefix);
70
gnome_settings_manager_stop (GnomeSettingsManager *manager)
72
g_debug ("Stopping settings manager");
74
gnome_settings_plugins_engine_shutdown ();
78
_set_gconf_prefix (GnomeSettingsManager *self,
81
g_free (self->priv->gconf_prefix);
82
self->priv->gconf_prefix = g_strdup (prefix);
86
gnome_settings_manager_set_property (GObject *object,
91
GnomeSettingsManager *self;
93
self = GNOME_SETTINGS_MANAGER (object);
96
case PROP_GCONF_PREFIX:
97
_set_gconf_prefix (self, g_value_get_string (value));
100
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
106
gnome_settings_manager_get_property (GObject *object,
111
GnomeSettingsManager *self;
113
self = GNOME_SETTINGS_MANAGER (object);
116
case PROP_GCONF_PREFIX:
117
g_value_set_string (value, self->priv->gconf_prefix);
120
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
126
gnome_settings_manager_constructor (GType type,
127
guint n_construct_properties,
128
GObjectConstructParam *construct_properties)
130
GnomeSettingsManager *manager;
131
GnomeSettingsManagerClass *klass;
133
klass = GNOME_SETTINGS_MANAGER_CLASS (g_type_class_peek (GNOME_TYPE_SETTINGS_MANAGER));
135
manager = GNOME_SETTINGS_MANAGER (G_OBJECT_CLASS (gnome_settings_manager_parent_class)->constructor (type,
136
n_construct_properties,
137
construct_properties));
139
return G_OBJECT (manager);
143
gnome_settings_manager_dispose (GObject *object)
145
GnomeSettingsManager *manager;
147
manager = GNOME_SETTINGS_MANAGER (object);
149
gnome_settings_manager_stop (manager);
151
G_OBJECT_CLASS (gnome_settings_manager_parent_class)->dispose (object);
155
gnome_settings_manager_class_init (GnomeSettingsManagerClass *klass)
157
GObjectClass *object_class = G_OBJECT_CLASS (klass);
159
object_class->get_property = gnome_settings_manager_get_property;
160
object_class->set_property = gnome_settings_manager_set_property;
161
object_class->constructor = gnome_settings_manager_constructor;
162
object_class->dispose = gnome_settings_manager_dispose;
163
object_class->finalize = gnome_settings_manager_finalize;
165
g_object_class_install_property (object_class,
167
g_param_spec_string ("gconf-prefix",
171
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
173
g_type_class_add_private (klass, sizeof (GnomeSettingsManagerPrivate));
177
gnome_settings_manager_init (GnomeSettingsManager *manager)
180
manager->priv = GNOME_SETTINGS_MANAGER_GET_PRIVATE (manager);
184
gnome_settings_manager_finalize (GObject *object)
186
GnomeSettingsManager *manager;
188
g_return_if_fail (object != NULL);
189
g_return_if_fail (GNOME_IS_SETTINGS_MANAGER (object));
191
manager = GNOME_SETTINGS_MANAGER (object);
193
g_return_if_fail (manager->priv != NULL);
195
g_free (manager->priv->gconf_prefix);
197
G_OBJECT_CLASS (gnome_settings_manager_parent_class)->finalize (object);
200
GnomeSettingsManager *
201
gnome_settings_manager_new (const char *gconf_prefix)
203
if (manager_object != NULL) {
204
g_object_ref (manager_object);
206
manager_object = g_object_new (GNOME_TYPE_SETTINGS_MANAGER,
207
"gconf-prefix", gconf_prefix,
209
g_object_add_weak_pointer (manager_object,
210
(gpointer *) &manager_object);
213
return GNOME_SETTINGS_MANAGER (manager_object);