X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=settings-dialog.cc;h=9589413a4375603cd41079fedd929e872c76eca6;hb=f104a51446caaec3a7a567e5e534ee32172f9bb8;hp=b674af79973d8158ca032b19eeefd61e26586e7e;hpb=28eded74a4629102889a09c7962ba5395577967f;p=simple-launcher diff --git a/settings-dialog.cc b/settings-dialog.cc index b674af7..9589413 100644 --- a/settings-dialog.cc +++ b/settings-dialog.cc @@ -15,63 +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" -// FIXME: UGLY!!!! +#define SL_APPLET_SETTINGS_ICON_SIZE 26 -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); -} +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)); -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()); + myNotebook = GTK_NOTEBOOK(gtk_notebook_new()); - 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); + gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(myNotebook)); - return box; -} + SettingsPageWithEntries *uiPage = new SettingsPageWithEntries(); + uiPage->addEntry(&myTransparent); + uiPage->addEntry(&myIconSize); -inline GtkWidget *createUIPage() { - GtkSizeGroup *group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - GtkWidget *vbox = gtk_vbox_new(true, 0); + SettingsPageWithItems *itemsPage = new SettingsPageWithItems(SL_APPLET_SETTINGS_ICON_SIZE, items); - // packItTogether(group, "Button Size:", ); - // packItTogether(group, "Button Size:", [ ]); - // packItTogether(group, "Button Size:", [ ]); + addPage("UI", uiPage); + addPage("Items", itemsPage); - g_object_unref(G_OBJECT(group)); - - return vbox; + gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 324); } -SettingsDialog::SettingsDialog(GtkWindow *parent, int size, LauncherItems& items) : myList(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