#include <hildon-cp-plugin/hildon-cp-plugin-interface.h>
#include <gtk/gtk.h>
-#include <hildon/hildon-picker-button.h>
-GtkWidget * create_desktop_snap_to_grid (void)
-{
- const gchar *options[] = {"Default", "Small grid", "Large grid", NULL};
- gint i = 0;
- GtkWidget *button, *selector;
-
- selector = hildon_touch_selector_new_text ();
- while (options[i] && options[i] != '\0')
- {
- hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector),
- options [i++]);
- }
-
- button = hildon_picker_button_new (HILDON_SIZE_AUTO,
- HILDON_BUTTON_ARRANGEMENT_VERTICAL);
-
- hildon_button_set_title (HILDON_BUTTON (button),
- "Snap desktop icons to grid");
-
- hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
- HILDON_TOUCH_SELECTOR (selector));
-
- gtk_widget_show (button);
- return button;
-}
+#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;
- GtkWidget *box;
dialog = gtk_dialog_new_with_buttons
("Maemo 5 Tweaks",
GTK_RESPONSE_CANCEL,
NULL);
- box = GTK_DIALOG (dialog)->vbox;
- gtk_box_pack_start (GTK_BOX (box), create_desktop_snap_to_grid (),
- TRUE, TRUE, 0);
-
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);
+ if (sections)
+ {
+ g_list_foreach (sections, (GFunc) g_object_unref, NULL);
+ g_list_free (sections);
+ }
+
return OSSO_OK;
}