X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=settings-dialog.cc;h=9589413a4375603cd41079fedd929e872c76eca6;hb=HEAD;hp=3af780e73a54d7c5957dd82d9be66fa4af9ef458;hpb=44266ea79540d61ba3cc601a132a23e0f5fdb563;p=simple-launcher diff --git a/settings-dialog.cc b/settings-dialog.cc index 3af780e..9589413 100644 --- a/settings-dialog.cc +++ b/settings-dialog.cc @@ -15,69 +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 #include #include #include "settings-dialog.h" +#include "settings-page-entries.h" +#include "settings-page-items.h" #define SL_APPLET_SETTINGS_ICON_SIZE 26 -// FIXME: UGLY!!!! - -inline void addPage(GtkNotebook *notebook, const std::string& name, GtkWidget *widget) { - GtkWidget *label = gtk_label_new(name.c_str()); - - gtk_notebook_append_page(notebook, widget, label); -} - -inline GtkWidget *packItTogether(GtkSizeGroup *group, const std::string& name, GtkWidget *content) { - GtkWidget *box = gtk_hbox_new(false, 0); - GtkWidget *label = gtk_label_new(name.c_str()); +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_size_group_add_widget(group, label); - gtk_box_pack_start(GTK_BOX(box), label, true, true, 0); - gtk_box_pack_start(GTK_BOX(box), content, true, true, 0); + myNotebook = GTK_NOTEBOOK(gtk_notebook_new()); - return box; -} + gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(myNotebook)); -inline GtkWidget *createUIPage() { - GtkSizeGroup *group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - GtkWidget *vbox = gtk_vbox_new(true, 0); + SettingsPageWithEntries *uiPage = new SettingsPageWithEntries(); + uiPage->addEntry(&myTransparent); + uiPage->addEntry(&myIconSize); - // packItTogether(group, "Button Size:", ); - // packItTogether(group, "Transparent background:", [ ]); - // packItTogether(group, "Show Infobanner:", [ ]); + SettingsPageWithItems *itemsPage = new SettingsPageWithItems(SL_APPLET_SETTINGS_ICON_SIZE, items); - g_object_unref(G_OBJECT(group)); + addPage("UI", uiPage); + addPage("Items", itemsPage); - return vbox; + gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 324); } -SettingsDialog::SettingsDialog(GtkWindow *parent, LauncherItems& items) : myList(SL_APPLET_SETTINGS_ICON_SIZE, items) { - 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)); +SettingsDialog::~SettingsDialog() { + for (std::vector::iterator it = myPages.begin(); it != myPages.end() ; ++it) { + delete *it; + } - GtkNotebook *notebook = GTK_NOTEBOOK(gtk_notebook_new()); + myPages.resize(0); - gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(notebook)); + gtk_widget_destroy(GTK_WIDGET(myDialog)); +} - // addPage(notebook, "UI", createUIPage()); - addPage(notebook, "Items", myList.getWidget()); +void SettingsDialog::addPage(const std::string& name, SettingsPage *page) { + myPages.push_back(page); - gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 257); -} + GtkWidget *label = gtk_label_new(name.c_str()); -SettingsDialog::~SettingsDialog() { - gtk_widget_destroy(GTK_WIDGET(myDialog)); + 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