diff --git a/apps/opencs/view/settings/dialog.cpp b/apps/opencs/view/settings/dialog.cpp index 72a022c9d..9018a454c 100644 --- a/apps/opencs/view/settings/dialog.cpp +++ b/apps/opencs/view/settings/dialog.cpp @@ -1,10 +1,13 @@ #include "dialog.hpp" +#include + #include #include #include #include #include +#include #include "../../model/settings/usersettings.hpp" @@ -12,8 +15,6 @@ #include -#include - #include #include #include @@ -26,6 +27,10 @@ CSVSettings::Dialog::Dialog(QMainWindow *parent) { setWindowTitle(QString::fromUtf8 ("User Settings")); + setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); + + setMinimumSize (600, 400); + setupDialog(); connect (mPageListWidget, @@ -39,20 +44,14 @@ void CSVSettings::Dialog::slotChangePage { mStackedWidget->changePage (mPageListWidget->row (cur), mPageListWidget->row (prev)); - - layout()->activate(); - setFixedSize(minimumSizeHint()); } void CSVSettings::Dialog::setupDialog() { - //create central widget with it's layout and immediate children - QWidget *centralWidget = new QGroupBox (this); + QSplitter *centralWidget = new QSplitter (this); + centralWidget->setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); - centralWidget->setLayout (new QHBoxLayout()); - centralWidget->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred); setCentralWidget (centralWidget); - setDockOptions (QMainWindow::AllowNestedDocks); buildPageListWidget (centralWidget); buildStackedWidget (centralWidget); @@ -64,37 +63,41 @@ void CSVSettings::Dialog::buildPages() QFontMetrics fm (QApplication::font()); + int maxWidth = 1; + foreach (Page *page, SettingWindow::pages()) { QString pageName = page->objectName(); - int textWidth = fm.width(pageName); + maxWidth = std::max (maxWidth, fm.width(pageName)); new QListWidgetItem (pageName, mPageListWidget); - mPageListWidget->setFixedWidth (textWidth + 50); - mStackedWidget->addWidget (&dynamic_cast(*(page))); + mStackedWidget->addWidget (page); } + mPageListWidget->setMaximumWidth (maxWidth + 50); + resize (mStackedWidget->sizeHint()); } -void CSVSettings::Dialog::buildPageListWidget (QWidget *centralWidget) +void CSVSettings::Dialog::buildPageListWidget (QSplitter *centralWidget) { mPageListWidget = new QListWidget (centralWidget); mPageListWidget->setMinimumWidth(50); - mPageListWidget->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Expanding); + mPageListWidget->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding); mPageListWidget->setSelectionBehavior (QAbstractItemView::SelectItems); - centralWidget->layout()->addWidget(mPageListWidget); + centralWidget->addWidget(mPageListWidget); } -void CSVSettings::Dialog::buildStackedWidget (QWidget *centralWidget) +void CSVSettings::Dialog::buildStackedWidget (QSplitter *centralWidget) { mStackedWidget = new ResizeableStackedWidget (centralWidget); + mStackedWidget->setSizePolicy (QSizePolicy::Preferred, QSizePolicy::Expanding); - centralWidget->layout()->addWidget (mStackedWidget); + centralWidget->addWidget (mStackedWidget); } void CSVSettings::Dialog::closeEvent (QCloseEvent *event) diff --git a/apps/opencs/view/settings/dialog.hpp b/apps/opencs/view/settings/dialog.hpp index b0e12c461..cb85bddb9 100644 --- a/apps/opencs/view/settings/dialog.hpp +++ b/apps/opencs/view/settings/dialog.hpp @@ -8,6 +8,7 @@ class QStackedWidget; class QListWidget; class QListWidgetItem; +class QSplitter; namespace CSVSettings { @@ -39,8 +40,8 @@ namespace CSVSettings { private: void buildPages(); - void buildPageListWidget (QWidget *centralWidget); - void buildStackedWidget (QWidget *centralWidget); + void buildPageListWidget (QSplitter *centralWidget); + void buildStackedWidget (QSplitter *centralWidget); public slots: diff --git a/apps/opencs/view/settings/frame.cpp b/apps/opencs/view/settings/frame.cpp index a3df2a993..8e9cf45ff 100644 --- a/apps/opencs/view/settings/frame.cpp +++ b/apps/opencs/view/settings/frame.cpp @@ -39,7 +39,7 @@ void CSVSettings::Frame::hideWidgets() QWidget *widg = static_cast (obj); if (widg->property("sizePolicy").isValid()) - widg->setSizePolicy (QSizePolicy::Ignored, QSizePolicy::Ignored); + widg->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding); } layout()->activate(); diff --git a/apps/opencs/view/settings/resizeablestackedwidget.cpp b/apps/opencs/view/settings/resizeablestackedwidget.cpp index cb127cb76..0e87a2506 100644 --- a/apps/opencs/view/settings/resizeablestackedwidget.cpp +++ b/apps/opencs/view/settings/resizeablestackedwidget.cpp @@ -34,7 +34,6 @@ void CSVSettings::ResizeableStackedWidget::changePage curPage->showWidgets(); layout()->activate(); - setFixedSize(minimumSizeHint()); setCurrentIndex (current); }