plug some leaks, simplify and/or clarify some code

2008-07-28  Jens Granseuer  <jensgr@gmx.net>

	* sound-theme.c: (load_index_theme_name),
	(set_combox_for_theme_name), (theme_combobox_changed),
	(setup_sound_theme), (get_sound_filename), (dump_theme),
	(setting_column_edited), (setup_sound_theme_custom): plug some leaks,
	simplify and/or clarify some code

svn path=/trunk/; revision=8815
This commit is contained in:
Jens Granseuer 2008-07-28 20:12:58 +00:00 committed by Jens Granseuer
parent 0b295549dd
commit 0a36199bb6
2 changed files with 43 additions and 47 deletions

View file

@ -1,3 +1,11 @@
2008-07-28 Jens Granseuer <jensgr@gmx.net>
* sound-theme.c: (load_index_theme_name),
(set_combox_for_theme_name), (theme_combobox_changed),
(setup_sound_theme), (get_sound_filename), (dump_theme),
(setting_column_edited), (setup_sound_theme_custom): plug some leaks,
simplify and/or clarify some code
2008-07-28 Jens Granseuer <jensgr@gmx.net> 2008-07-28 Jens Granseuer <jensgr@gmx.net>
* sound-theme.c: (custom_treeview_button_press_event_cb): don't * sound-theme.c: (custom_treeview_button_press_event_cb): don't

View file

@ -129,7 +129,7 @@ static char *
load_index_theme_name (const char *index, char **parent) load_index_theme_name (const char *index, char **parent)
{ {
GKeyFile *file; GKeyFile *file;
char *indexname; char *indexname = NULL;
gboolean hidden; gboolean hidden;
file = g_key_file_new (); file = g_key_file_new ();
@ -139,21 +139,20 @@ load_index_theme_name (const char *index, char **parent)
} }
/* Don't add hidden themes to the list */ /* Don't add hidden themes to the list */
hidden = g_key_file_get_boolean (file, "Sound Theme", "Hidden", NULL); hidden = g_key_file_get_boolean (file, "Sound Theme", "Hidden", NULL);
if (hidden != FALSE) if (!hidden) {
return NULL; indexname = g_key_file_get_locale_string (file,
"Sound Theme",
"Name",
NULL,
NULL);
indexname = g_key_file_get_locale_string (file, /* Save the parent theme, if there's one */
"Sound Theme", if (parent != NULL) {
"Name", *parent = g_key_file_get_string (file,
NULL, "Sound Theme",
NULL); "Inherits",
NULL);
/* Save the parent theme, if there's one */ }
if (parent != NULL) {
*parent = g_key_file_get_string (file,
"Sound Theme",
"Inherits",
NULL);
} }
g_key_file_free (file); g_key_file_free (file);
@ -234,34 +233,29 @@ set_combox_for_theme_name (GladeXML *dialog, const char *name)
if (name == NULL || *name == '\0') if (name == NULL || *name == '\0')
name = "freedesktop"; name = "freedesktop";
found = FALSE;
model = gtk_combo_box_get_model (GTK_COMBO_BOX (WID ("sound_theme_combobox"))); model = gtk_combo_box_get_model (GTK_COMBO_BOX (WID ("sound_theme_combobox")));
if (gtk_tree_model_get_iter_first (model, &iter) == FALSE) { if (gtk_tree_model_get_iter_first (model, &iter) == FALSE) {
return; return;
} }
while (1) { do {
char *value; char *value;
gtk_tree_model_get (model, &iter, THEME_IDENTIFIER_COL, &value, -1); gtk_tree_model_get (model, &iter, THEME_IDENTIFIER_COL, &value, -1);
if (value != NULL && strcmp (value, name) == 0) { found = (value != NULL && strcmp (value, name) == 0);
g_free (value); g_free (value);
found = TRUE;
break; } while (!found && gtk_tree_model_iter_next (model, &iter));
}
if (gtk_tree_model_iter_next (model, &iter) == FALSE)
break;
}
/* When we can't find the theme we need to set, try to set the default /* When we can't find the theme we need to set, try to set the default
* one "freedesktop" */ * one "freedesktop" */
if (found == FALSE && strcmp (name, "freedesktop") != 0) { if (found) {
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (WID ("sound_theme_combobox")), &iter);
} else if (strcmp (name, "freedesktop") != 0) {
g_debug ("not found, falling back to fdo"); g_debug ("not found, falling back to fdo");
set_combox_for_theme_name (dialog, "freedesktop"); set_combox_for_theme_name (dialog, "freedesktop");
} }
else if (found != FALSE)
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (WID ("sound_theme_combobox")), &iter);
} }
static void static void
@ -281,7 +275,7 @@ theme_combobox_changed (GtkComboBox *widget,
client = gconf_client_get_default (); client = gconf_client_get_default ();
gconf_client_set_string (client, SOUND_THEME_KEY, theme_name, NULL); gconf_client_set_string (client, SOUND_THEME_KEY, theme_name, NULL);
g_object_unref (G_OBJECT (client)); g_object_unref (client);
/* Don't reinit a custom theme */ /* Don't reinit a custom theme */
if (strcmp (theme_name, CUSTOM_THEME_NAME) != 0) { if (strcmp (theme_name, CUSTOM_THEME_NAME) != 0) {
@ -294,7 +288,7 @@ theme_combobox_changed (GtkComboBox *widget,
/* And the combo box entry */ /* And the combo box entry */
model = gtk_combo_box_get_model (GTK_COMBO_BOX (WID ("sound_theme_combobox"))); model = gtk_combo_box_get_model (GTK_COMBO_BOX (WID ("sound_theme_combobox")));
gtk_tree_model_get_iter_first (model, &iter); gtk_tree_model_get_iter_first (model, &iter);
while (1) { do {
char *parent; char *parent;
gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1); gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) { if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) {
@ -303,9 +297,7 @@ theme_combobox_changed (GtkComboBox *widget,
break; break;
} }
g_free (parent); g_free (parent);
if (gtk_tree_model_iter_next (model, &iter) == FALSE) } while (gtk_tree_model_iter_next (model, &iter));
break;
}
} }
} }
@ -342,6 +334,7 @@ setup_sound_theme (GladeXML *dialog)
if (g_hash_table_size (hash) == 0) { if (g_hash_table_size (hash) == 0) {
gtk_widget_set_sensitive (WID ("sounds_vbox"), FALSE); gtk_widget_set_sensitive (WID ("sounds_vbox"), FALSE);
g_warning ("Bad setup, install the freedesktop sound theme"); g_warning ("Bad setup, install the freedesktop sound theme");
g_hash_table_destroy (hash);
return; return;
} }
@ -374,9 +367,9 @@ setup_sound_theme (GladeXML *dialog)
/* Listen for changes in GConf, and on the combobox */ /* Listen for changes in GConf, and on the combobox */
gconf_client_notify_add (client, SOUND_THEME_KEY, gconf_client_notify_add (client, SOUND_THEME_KEY,
(GConfClientNotifyFunc) theme_changed_cb, dialog, NULL, NULL); (GConfClientNotifyFunc) theme_changed_cb, dialog, NULL, NULL);
g_object_unref (G_OBJECT (client)); g_object_unref (client);
g_signal_connect (G_OBJECT (WID ("sound_theme_combobox")), "changed", g_signal_connect (WID ("sound_theme_combobox"), "changed",
G_CALLBACK (theme_combobox_changed), dialog); G_CALLBACK (theme_combobox_changed), dialog);
} }
@ -503,7 +496,7 @@ get_sound_filename (GladeXML *dialog)
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter);
g_signal_connect (G_OBJECT (chooser), "update-preview", g_signal_connect (chooser, "update-preview",
G_CALLBACK (play_sound_preview), NULL); G_CALLBACK (play_sound_preview), NULL);
data_dirs = g_get_system_data_dirs (); data_dirs = g_get_system_data_dirs ();
@ -708,15 +701,13 @@ dump_theme (GladeXML *dialog)
g_free (parent); g_free (parent);
} }
gtk_tree_model_get_iter_first (model, &iter); gtk_tree_model_get_iter_first (model, &iter);
while (1) { do {
gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1); gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) { if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) {
gtk_list_store_remove (GTK_LIST_STORE (model), &iter); gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
break; break;
} }
if (gtk_tree_model_iter_next (model, &iter) == FALSE) } while (gtk_tree_model_iter_next (model, &iter));
break;
}
delete_custom_theme_dir (); delete_custom_theme_dir ();
} else { } else {
@ -770,7 +761,7 @@ setting_column_edited (GtkCellRendererText *renderer,
-1); -1);
gtk_tree_model_get_iter_first (model, &iter); gtk_tree_model_get_iter_first (model, &iter);
while (1) { do {
gtk_tree_model_get (model, &iter, 0, &text, 1, &setting, -1); gtk_tree_model_get (model, &iter, 0, &text, 1, &setting, -1);
if (g_utf8_collate (text, new_text) == 0) { if (g_utf8_collate (text, new_text) == 0) {
if (type == SOUND_TYPE_NORMAL || type == SOUND_TYPE_FEEDBACK || type == SOUND_TYPE_AUDIO_BELL) { if (type == SOUND_TYPE_NORMAL || type == SOUND_TYPE_FEEDBACK || type == SOUND_TYPE_AUDIO_BELL) {
@ -819,10 +810,7 @@ setting_column_edited (GtkCellRendererText *renderer,
} }
g_assert_not_reached (); g_assert_not_reached ();
} }
} while (gtk_tree_model_iter_next (model, &iter));
if (gtk_tree_model_iter_next (model, &iter) == FALSE)
break;
}
g_free (old_filename); g_free (old_filename);
} }
@ -1073,7 +1061,7 @@ setup_sound_theme_custom (GladeXML *dialog, gboolean have_xkb)
gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("sounds_treeview")), column); gtk_tree_view_append_column (GTK_TREE_VIEW (WID ("sounds_treeview")), column);
/* The 2nd column with the sound settings */ /* The 2nd column with the sound settings */
renderer = gtk_cell_renderer_combo_new(); renderer = gtk_cell_renderer_combo_new ();
g_signal_connect (renderer, "edited", G_CALLBACK (setting_column_edited), dialog); g_signal_connect (renderer, "edited", G_CALLBACK (setting_column_edited), dialog);
g_signal_connect (renderer, "editing-started", G_CALLBACK (combobox_editing_started), dialog); g_signal_connect (renderer, "editing-started", G_CALLBACK (combobox_editing_started), dialog);
custom_model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT)); custom_model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT));
@ -1179,6 +1167,6 @@ setup_sound_theme_custom (GladeXML *dialog, gboolean have_xkb)
gtk_tree_model_foreach (GTK_TREE_MODEL (store), theme_changed_custom_init, NULL); gtk_tree_model_foreach (GTK_TREE_MODEL (store), theme_changed_custom_init, NULL);
g_free (theme_name); g_free (theme_name);
g_object_unref (G_OBJECT (client)); g_object_unref (client);
} }