X-Git-Url: http://git.maemo.org/git/?p=simple-launcher;a=blobdiff_plain;f=settings-dialog.cc;h=9589413a4375603cd41079fedd929e872c76eca6;hp=c6910194f3bc59714512c28bc0c06035226827f9;hb=a475603e2c1da4e345a4a6cedab5a10802c36e97;hpb=bbcdba5541d589f6dc02e31f7759a059cd812542 diff --git a/settings-dialog.cc b/settings-dialog.cc index c691019..9589413 100644 --- a/settings-dialog.cc +++ b/settings-dialog.cc @@ -15,75 +15,57 @@ // 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 #include "settings-dialog.h" +#include "settings-page-entries.h" +#include "settings-page-items.h" #define SL_APPLET_SETTINGS_ICON_SIZE 26 -// FIXME: UGLY!!!! +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 void addPage(GtkNotebook *notebook, const std::string& name, GtkWidget *widget) { - GtkWidget *label = gtk_label_new(name.c_str()); + myNotebook = GTK_NOTEBOOK(gtk_notebook_new()); - gtk_notebook_append_page(notebook, widget, label); -} + gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(myNotebook)); -inline GtkWidget *packItTogether(GtkBox *parent, GtkSizeGroup *group, const std::string& name, GtkWidget *content) { - GtkWidget *box = gtk_hbox_new(false, 0); - GtkWidget *label = gtk_label_new(name.c_str()); + SettingsPageWithEntries *uiPage = new SettingsPageWithEntries(); + uiPage->addEntry(&myTransparent); + uiPage->addEntry(&myIconSize); - 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); + SettingsPageWithItems *itemsPage = new SettingsPageWithItems(SL_APPLET_SETTINGS_ICON_SIZE, items); - gtk_box_pack_start(parent, box, false, false, 0); + addPage("UI", uiPage); + addPage("Items", itemsPage); - return box; + gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 324); } -inline GtkWidget *createUIPage() { - GtkSizeGroup *group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); - GtkWidget *vbox = gtk_vbox_new(true, 0); - - // packItTogether(group, "Button Size:", ); - packItTogether(GTK_BOX(vbox), group, "Transparent background:", gtk_check_button_new()); - packItTogether(GTK_BOX(vbox), group, "Show Infobanner:", gtk_check_button_new()); +SettingsDialog::~SettingsDialog() { + for (std::vector::iterator it = myPages.begin(); it != myPages.end() ; ++it) { + delete *it; + } - g_object_unref(G_OBJECT(group)); + myPages.resize(0); - return vbox; + gtk_widget_destroy(GTK_WIDGET(myDialog)); } -SettingsDialog::SettingsDialog(GtkWindow *parent, LauncherItems& items, GConfBooleanOption& transparent, GConfIntegerOption& icon_size, GConfIntegerOption& canvas_size): - myList(SL_APPLET_SETTINGS_ICON_SIZE, items), - myTransparent(transparent, "Transparent background:"), myIconSize(icon_size, "Icon Size:"), myCanvasSize(canvas_size, "Canvas 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)); - - GtkNotebook *notebook = GTK_NOTEBOOK(gtk_notebook_new()); - - gtk_container_add(GTK_CONTAINER(myDialog->vbox), GTK_WIDGET(notebook)); - - addPage(notebook, "UI", createUIPage()); - addPage(notebook, "Items", myList.getWidget()); - - gtk_widget_set_size_request(GTK_WIDGET(myDialog), 540, 324); +void SettingsDialog::addPage(const std::string& name, SettingsPage *page) { + myPages.push_back(page); - gtk_widget_show_all(GTK_WIDGET(notebook)); - gtk_notebook_set_current_page(notebook, 0); -} + 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); } @@ -91,7 +73,6 @@ gint SettingsDialog::run() { void SettingsDialog::updateValues() { myTransparent.updateValue(); myIconSize.updateValue(); - myCanvasSize.updateValue(); } // vim:ts=2:sw=2:et