X-Git-Url: http://git.maemo.org/git/?p=simple-launcher;a=blobdiff_plain;f=settings-dialog.cc;h=9589413a4375603cd41079fedd929e872c76eca6;hp=283bc1ba7428b22d6f938fd0bd477056412796b1;hb=85fc072bca10befc7db4fa8f0d805068de3f88ea;hpb=a53241819e0eaba3cb06cf9f07c4a310e3a72677 diff --git a/settings-dialog.cc b/settings-dialog.cc index 283bc1b..9589413 100644 --- a/settings-dialog.cc +++ b/settings-dialog.cc @@ -15,20 +15,64 @@ // this program; if not, write to the Free Software Foundation, Inc., 51 // Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#include +#include + #include "settings-dialog.h" +#include "settings-page-entries.h" +#include "settings-page-items.h" + +#define SL_APPLET_SETTINGS_ICON_SIZE 26 -SettingsDialog::SettingsDialog(GtkWindow *parent, int size, LauncherItems& items) : myList(size, items) { +SettingsDialog::SettingsDialog(GtkWindow *parent, LauncherItems& items, GConfBooleanOption& transparent, GConfIntegerOption& icon_size): + myTransparent(transparent, "Transparent background:"), + myIconSize(icon_size, "Icon Size:") { myDialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Launcher Settings", parent, (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), "OK", GTK_RESPONSE_OK, "Cancel", GTK_RESPONSE_CANCEL, NULL)); - gtk_container_add(GTK_CONTAINER(myDialog->vbox), myList.getWidget()); + myNotebook = GTK_NOTEBOOK(gtk_notebook_new()); + + gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(myNotebook)); + + SettingsPageWithEntries *uiPage = new SettingsPageWithEntries(); + uiPage->addEntry(&myTransparent); + uiPage->addEntry(&myIconSize); - gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 257); + SettingsPageWithItems *itemsPage = new SettingsPageWithItems(SL_APPLET_SETTINGS_ICON_SIZE, items); + + addPage("UI", uiPage); + addPage("Items", itemsPage); + + gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 324); } SettingsDialog::~SettingsDialog() { + for (std::vector::iterator it = myPages.begin(); it != myPages.end() ; ++it) { + delete *it; + } + + myPages.resize(0); + gtk_widget_destroy(GTK_WIDGET(myDialog)); } +void SettingsDialog::addPage(const std::string& name, SettingsPage *page) { + myPages.push_back(page); + + GtkWidget *label = gtk_label_new(name.c_str()); + + gtk_notebook_append_page(myNotebook, page->getWidget(), label); +} + gint SettingsDialog::run() { + gtk_widget_show_all(GTK_WIDGET(myDialog)); + gtk_notebook_set_current_page(myNotebook, 0); + return gtk_dialog_run(myDialog); } + +void SettingsDialog::updateValues() { + myTransparent.updateValue(); + myIconSize.updateValue(); +} + +// vim:ts=2:sw=2:et