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:
parent
dc788512e2
commit
e20fa209cc
4 changed files with 25 additions and 22 deletions
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -34,7 +34,6 @@ void CSVSettings::ResizeableStackedWidget::changePage
|
||||||
curPage->showWidgets();
|
curPage->showWidgets();
|
||||||
|
|
||||||
layout()->activate();
|
layout()->activate();
|
||||||
setFixedSize(minimumSizeHint());
|
|
||||||
|
|
||||||
setCurrentIndex (current);
|
setCurrentIndex (current);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue