X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=maemo-tweaks.c;h=213c1a3999a4b2dc83f1251a1e9aa13fb2feba33;hb=f8e7d3ddcd054be716d3b38a8fb9a7a5c1d88f5c;hp=ca3f125cc2916e05d11431799e84e4d23810b7bc;hpb=4348d0d92d31cdfa9411b84710595a18b32f76e2;p=tweakr diff --git a/maemo-tweaks.c b/maemo-tweaks.c index ca3f125..213c1a3 100644 --- a/maemo-tweaks.c +++ b/maemo-tweaks.c @@ -5,6 +5,10 @@ #include #include +#include "maemo-tweaks-types.h" +#include "libmaemo-tweaks-section/maemo-tweaks-section.h" +#include "maemo-tweaks-module-manager.h" + GtkWidget *create_dialog (GtkWindow *parent) { GtkWidget *dialog; @@ -22,20 +26,57 @@ GtkWidget *create_dialog (GtkWindow *parent) return dialog; } - osso_return_t execute (osso_context_t *osso, gpointer data, gboolean user_activated) { GtkWidget *dialog; gint response; + MaemoTweaksModuleManager *manager; + GType *section_types; + guint n_sections; + GList *sections = NULL; + gint i; + + manager = g_object_new (MAEMO_TWEAKS_TYPE_MODULE_MANAGER, + "module-path", MODULES_DIR, + NULL); + + section_types = g_type_children (MAEMO_TWEAKS_TYPE_SECTION, &n_sections); + dialog = create_dialog (GTK_WINDOW (data)); + + for (i = 0; i < n_sections; i++) + { + MaemoTweaksSection *section; + MaemoTweaksSectionClass *klass; + + klass = g_type_class_ref (section_types[i]); + section = maemo_tweaks_section_new (section_types[i]); + + sections = g_list_prepend (sections, section); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), + maemo_tweaks_section_get_widget (section), + TRUE, TRUE, 0); + + g_type_class_unref (klass); + } + + gtk_widget_show_all (GTK_DIALOG (dialog)->vbox); response = gtk_dialog_run (GTK_DIALOG (dialog)); if (response == GTK_RESPONSE_OK) { + /* Save all settings */ + g_list_foreach (sections, (GFunc) maemo_tweaks_section_save, NULL); } + gtk_widget_destroy (GTK_WIDGET (dialog)); + g_object_unref (manager); + g_list_foreach (sections, (GFunc) g_object_unref, NULL); + if (sections) + g_list_free (sections); + return OSSO_OK; }