summaryrefslogtreecommitdiffstats
path: root/src/ZYConfig.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ZYConfig.cc')
-rw-r--r--src/ZYConfig.cc46
1 files changed, 19 insertions, 27 deletions
diff --git a/src/ZYConfig.cc b/src/ZYConfig.cc
index f8b965b..5467073 100644
--- a/src/ZYConfig.cc
+++ b/src/ZYConfig.cc
@@ -26,15 +26,11 @@
namespace ZY {
-Config::Config (Bus & bus, const std::string & name)
- : Object (ibus_bus_get_config (bus)),
- m_section ("engine/" + name)
+Config::Config (const std::string & name)
+ : m_schema_id (name)
{
+ m_settings = NULL;
initDefaultValues ();
- g_signal_connect (get<IBusConfig> (),
- "value-changed",
- G_CALLBACK (valueChangedCallback),
- this);
}
Config::~Config (void)
@@ -73,15 +69,12 @@ Config::read (const gchar * name,
bool defval)
{
GVariant *value = NULL;
- if ((value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name)) != NULL) {
+ if ((value = g_settings_get_value (m_settings, name)) != NULL) {
if (g_variant_classify (value) == G_VARIANT_CLASS_BOOLEAN)
return g_variant_get_boolean (value);
}
- // write default value to config
- value = g_variant_new ("b", defval);
- ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value);
-
+ g_warn_if_reached ();
return defval;
}
@@ -90,15 +83,12 @@ Config::read (const gchar * name,
gint defval)
{
GVariant *value = NULL;
- if ((value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name)) != NULL) {
+ if ((value = g_settings_get_value (m_settings, name)) != NULL) {
if (g_variant_classify (value) == G_VARIANT_CLASS_INT32)
return g_variant_get_int32 (value);
}
- // write default value to config
- value = g_variant_new ("i", defval);
- ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value);
-
+ g_warn_if_reached ();
return defval;
}
@@ -107,20 +97,17 @@ Config::read (const gchar * name,
const gchar * defval)
{
GVariant *value = NULL;
- if ((value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name)) != NULL) {
+ if ((value = g_settings_get_value (m_settings, name)) != NULL) {
if (g_variant_classify (value) == G_VARIANT_CLASS_STRING)
return g_variant_get_string (value, NULL);
}
- // write default value to config
- value = g_variant_new ("s", defval);
- ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value);
-
+ g_warn_if_reached ();
return defval;
}
gboolean
-Config::valueChanged (const std::string &section,
+Config::valueChanged (const std::string &schema_id,
const std::string &name,
GVariant *value)
{
@@ -128,13 +115,18 @@ Config::valueChanged (const std::string &section,
}
void
-Config::valueChangedCallback (IBusConfig *config,
- const gchar *section,
+Config::valueChangedCallback (GSettings *settings,
const gchar *name,
- GVariant *value,
Config *self)
{
- self->valueChanged (section, name, value);
+ gchar * property = NULL;
+ g_object_get (settings, "schema-id", &property, NULL);
+ std::string schema_id (property);
+ g_free (property);
+
+ GVariant * value = g_settings_get_value (settings, name);
+ self->valueChanged (schema_id, name, value);
+ g_variant_unref (value);
}
};