1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-01 18:36:43 +00:00

user settings UI layout improvements

This commit is contained in:
Marc Zinnschlag 2014-10-15 11:02:41 +02:00
parent dc788512e2
commit e20fa209cc
4 changed files with 25 additions and 22 deletions

View file

@ -1,10 +1,13 @@
#include "dialog.hpp" #include "dialog.hpp"
#include <algorithm>
#include <QListWidgetItem> #include <QListWidgetItem>
#include <QApplication> #include <QApplication>
#include <QWidget> #include <QWidget>
#include <QStackedWidget> #include <QStackedWidget>
#include <QtGui> #include <QtGui>
#include <QSplitter>
#include "../../model/settings/usersettings.hpp" #include "../../model/settings/usersettings.hpp"
@ -12,8 +15,6 @@
#include <QApplication> #include <QApplication>
#include <QSplitter>
#include <QTreeView> #include <QTreeView>
#include <QListView> #include <QListView>
#include <QTableView> #include <QTableView>
@ -26,6 +27,10 @@ CSVSettings::Dialog::Dialog(QMainWindow *parent)
{ {
setWindowTitle(QString::fromUtf8 ("User Settings")); setWindowTitle(QString::fromUtf8 ("User Settings"));
setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
setMinimumSize (600, 400);
setupDialog(); setupDialog();
connect (mPageListWidget, connect (mPageListWidget,
@ -39,20 +44,14 @@ void CSVSettings::Dialog::slotChangePage
{ {
mStackedWidget->changePage mStackedWidget->changePage
(mPageListWidget->row (cur), mPageListWidget->row (prev)); (mPageListWidget->row (cur), mPageListWidget->row (prev));
layout()->activate();
setFixedSize(minimumSizeHint());
} }
void CSVSettings::Dialog::setupDialog() void CSVSettings::Dialog::setupDialog()
{ {
//create central widget with it's layout and immediate children QSplitter *centralWidget = new QSplitter (this);
QWidget *centralWidget = new QGroupBox (this); centralWidget->setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
centralWidget->setLayout (new QHBoxLayout());
centralWidget->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred);
setCentralWidget (centralWidget); setCentralWidget (centralWidget);
setDockOptions (QMainWindow::AllowNestedDocks);
buildPageListWidget (centralWidget); buildPageListWidget (centralWidget);
buildStackedWidget (centralWidget); buildStackedWidget (centralWidget);
@ -64,37 +63,41 @@ void CSVSettings::Dialog::buildPages()
QFontMetrics fm (QApplication::font()); QFontMetrics fm (QApplication::font());
int maxWidth = 1;
foreach (Page *page, SettingWindow::pages()) foreach (Page *page, SettingWindow::pages())
{ {
QString pageName = page->objectName(); QString pageName = page->objectName();
int textWidth = fm.width(pageName); maxWidth = std::max (maxWidth, fm.width(pageName));
new QListWidgetItem (pageName, mPageListWidget); new QListWidgetItem (pageName, mPageListWidget);
mPageListWidget->setFixedWidth (textWidth + 50);
mStackedWidget->addWidget (&dynamic_cast<QWidget &>(*(page))); mStackedWidget->addWidget (page);
} }
mPageListWidget->setMaximumWidth (maxWidth + 50);
resize (mStackedWidget->sizeHint()); resize (mStackedWidget->sizeHint());
} }
void CSVSettings::Dialog::buildPageListWidget (QWidget *centralWidget) void CSVSettings::Dialog::buildPageListWidget (QSplitter *centralWidget)
{ {
mPageListWidget = new QListWidget (centralWidget); mPageListWidget = new QListWidget (centralWidget);
mPageListWidget->setMinimumWidth(50); mPageListWidget->setMinimumWidth(50);
mPageListWidget->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Expanding); mPageListWidget->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding);
mPageListWidget->setSelectionBehavior (QAbstractItemView::SelectItems); 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 = new ResizeableStackedWidget (centralWidget);
mStackedWidget->setSizePolicy (QSizePolicy::Preferred, QSizePolicy::Expanding);
centralWidget->layout()->addWidget (mStackedWidget); centralWidget->addWidget (mStackedWidget);
} }
void CSVSettings::Dialog::closeEvent (QCloseEvent *event) void CSVSettings::Dialog::closeEvent (QCloseEvent *event)

View file

@ -8,6 +8,7 @@
class QStackedWidget; class QStackedWidget;
class QListWidget; class QListWidget;
class QListWidgetItem; class QListWidgetItem;
class QSplitter;
namespace CSVSettings { namespace CSVSettings {
@ -39,8 +40,8 @@ namespace CSVSettings {
private: private:
void buildPages(); void buildPages();
void buildPageListWidget (QWidget *centralWidget); void buildPageListWidget (QSplitter *centralWidget);
void buildStackedWidget (QWidget *centralWidget); void buildStackedWidget (QSplitter *centralWidget);
public slots: public slots:

View file

@ -39,7 +39,7 @@ void CSVSettings::Frame::hideWidgets()
QWidget *widg = static_cast <QWidget *> (obj); QWidget *widg = static_cast <QWidget *> (obj);
if (widg->property("sizePolicy").isValid()) if (widg->property("sizePolicy").isValid())
widg->setSizePolicy (QSizePolicy::Ignored, QSizePolicy::Ignored); widg->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding);
} }
layout()->activate(); layout()->activate();

View file

@ -34,7 +34,6 @@ void CSVSettings::ResizeableStackedWidget::changePage
curPage->showWidgets(); curPage->showWidgets();
layout()->activate(); layout()->activate();
setFixedSize(minimumSizeHint());
setCurrentIndex (current); setCurrentIndex (current);
} }