diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-03-14 21:42:44 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-03-14 21:42:44 +0100 |
commit | c3295e8741d5f35e30301933bd853bf6c9369588 (patch) | |
tree | ca5fc590dc54e6815e9630abbf424804e7357308 /src/gtk-helpers/abrt-keyring.c | |
parent | 1147945856ed4431ab3b49f88c8c0aa11c6ad8e1 (diff) | |
download | abrt-c3295e8741d5f35e30301933bd853bf6c9369588.tar.gz abrt-c3295e8741d5f35e30301933bd853bf6c9369588.tar.xz abrt-c3295e8741d5f35e30301933bd853bf6c9369588.zip |
abrt-gui: save event settings in gnome keyring
Diffstat (limited to 'src/gtk-helpers/abrt-keyring.c')
-rw-r--r-- | src/gtk-helpers/abrt-keyring.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/gtk-helpers/abrt-keyring.c b/src/gtk-helpers/abrt-keyring.c index 6ced7a9d..50bfa7e3 100644 --- a/src/gtk-helpers/abrt-keyring.c +++ b/src/gtk-helpers/abrt-keyring.c @@ -26,11 +26,12 @@ static guint32 search_item_id(const char *event_name) return item_id; } -void abrt_keyring_save_settings(const char *event_name, event_config_t *ec) +void abrt_keyring_save_settings(const char *event_name) { GList *l; GnomeKeyringAttributeList *attrs = gnome_keyring_attribute_list_new(); guint32 item_id; + event_config_t *ec = get_event_config(event_name); /* add string id which we use to search for items */ gnome_keyring_attribute_list_append_string(attrs, "libreportEventConfig", event_name); for(l = g_list_first(ec->options); l != NULL; l = g_list_next(l)) @@ -68,7 +69,7 @@ void abrt_keyring_save_settings(const char *event_name, event_config_t *ec) VERB2 log("saved"); } -void abrt_keyring_load_settings(const char *event_name, event_config_t *ec) +static void abrt_keyring_load_settings(const char *event_name, event_config_t *ec) { GnomeKeyringAttributeList *attrs = gnome_keyring_attribute_list_new(); guint item_id = search_item_id(event_name); @@ -82,15 +83,25 @@ void abrt_keyring_load_settings(const char *event_name, event_config_t *ec) if(result != GNOME_KEYRING_RESULT_OK) return; guint index; + for(index = 0; index < attrs->len; index++) { - VERB2 log("load %s", g_array_index(attrs, GnomeKeyringAttribute, index).name); + char *name = g_array_index(attrs, GnomeKeyringAttribute, index).name; +VERB2 log("load %s", name); + event_option_t *option = get_event_option_from_list(name, ec->options); + if(option) + option->value = g_array_index(attrs, GnomeKeyringAttribute, index).value.string; +VERB2 log("loaded %s", name); //VERB2 log("load %s", g_array_index(attrs, GnomeKeyringAttribute, index).value); + } } -void init_gnome_keyring() +static void init_keyring() { + //called again? + if(keyring) + return; if(!gnome_keyring_is_available()) { VERB2 log("Cannot connect to the Gnome Keyring daemon."); @@ -105,4 +116,24 @@ void init_gnome_keyring() use gnome_keyring_list_keyring_names () to list all and pick the first one? */ VERB2 log("%s", keyring); +} + +void load_event_config(gpointer key, gpointer value, gpointer user_data) +{ + char* event_name = (char*)key; + event_config_t *ec = (event_config_t *)value; +VERB2 log("from keyring loading: %s\n", event_name); + abrt_keyring_load_settings(event_name, ec); + +} + +/* + * Tries to load settings for all events in g_event_config_list +*/ +void load_event_config_data_from_keyring() +{ + init_keyring(); + if(!keyring) + return; + g_hash_table_foreach(g_event_config_list, &load_event_config, NULL); }
\ No newline at end of file |