#include <hildon-cp-plugin/hildon-cp-plugin-interface.h>
#include <gtk/gtk.h>
+#include <hildon/hildon-note.h>
#include "maemo-tweaks-types.h"
#include "libmaemo-tweaks-section/maemo-tweaks-section.h"
#include "maemo-tweaks-module-manager.h"
+static gboolean save_ret;
+
GtkWidget *create_dialog (GtkWindow *parent)
{
GtkWidget *dialog;
("Maemo 5 Tweaks",
parent,
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
- GTK_STOCK_OK,
+ GTK_STOCK_SAVE,
GTK_RESPONSE_OK,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
return dialog;
}
+void _save (MaemoTweaksSection *section, gboolean *requires_restart)
+{
+ save_ret &= maemo_tweaks_section_save (section, requires_restart);
+}
+
osso_return_t execute (osso_context_t *osso, gpointer data,
gboolean user_activated)
{
guint n_sections;
GList *sections = NULL;
gint i;
+ gboolean requires_restart = FALSE;
manager = g_object_new (MAEMO_TWEAKS_TYPE_MODULE_MANAGER,
"module-path", MODULES_DIR,
sections = g_list_prepend (sections, section);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
maemo_tweaks_section_get_widget (section),
- FALSE, FALSE, 0);
+ TRUE, TRUE, 0);
g_type_class_unref (klass);
}
- response = gtk_dialog_run (GTK_DIALOG (dialog));
- if (response == GTK_RESPONSE_OK)
+ gtk_widget_show_all (GTK_DIALOG (dialog)->vbox);
+
+ for (;;)
{
+ save_ret = TRUE;
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (response == GTK_RESPONSE_OK)
+ {
+ /* Save all settings */
+ g_list_foreach (sections, (GFunc) _save, &requires_restart);
+ }
+ if (save_ret)
+ break;
}
-
gtk_widget_destroy (GTK_WIDGET (dialog));
g_object_unref (manager);
- g_list_foreach (sections, (GFunc) g_object_unref, NULL);
if (sections)
+ {
+ g_list_foreach (sections, (GFunc) g_object_unref, NULL);
g_list_free (sections);
+ }
+
+ if (requires_restart)
+ {
+ GtkWidget *note;
+
+ note = hildon_note_new_information
+ (GTK_WINDOW (data), "Some of the settings you have changed"
+ " will take effect only after you restart your device.");
+ gtk_dialog_run (GTK_DIALOG (note));
+ gtk_widget_destroy (note);
+ }
return OSSO_OK;
}