diff -r 8aa450f6cf2c -r 225ede46e3dc QTfrontend/ui/widget/gamecfgwidget.cpp --- a/QTfrontend/ui/widget/gamecfgwidget.cpp Tue Jan 22 00:33:37 2013 +0400 +++ b/QTfrontend/ui/widget/gamecfgwidget.cpp Mon Jan 21 21:52:49 2013 -0500 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -43,31 +44,75 @@ , seedRegexp("\\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\}") { mainLayout.setMargin(0); + setMinimumHeight(310); + setMaximumHeight(447); + setMinimumWidth(470); + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - pMapContainer = new HWMapContainer(this); - mainLayout.addWidget(pMapContainer, 0, 0, Qt::AlignHCenter | Qt::AlignTop); - pMapContainer->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - pMapContainer->setFixedSize(460, 275); + // Easy containers for the map/game options in either stacked or tabbed mode + + mapContainerFree = new QWidget(); + mapContainerTabbed = new QWidget(); + optionsContainerFree = new QWidget(); + optionsContainerTabbed = new QWidget(); + tabbed = false; + + // Container for when in tabbed mode + + tabs = new QTabWidget(this); + tabs->setFixedWidth(470); + tabs->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + tabs->addTab(mapContainerTabbed, tr("Map")); + tabs->addTab(optionsContainerTabbed, tr("Game options")); + tabs->setObjectName("gameCfgWidgetTabs"); + mainLayout.addWidget(tabs, 1); + tabs->setVisible(false); + + // Container for when in stacked mode + + StackContainer = new QWidget(); + StackContainer->setObjectName("gameStackContainer"); + mainLayout.addWidget(StackContainer, 1); + QVBoxLayout * stackLayout = new QVBoxLayout(StackContainer); - IconedGroupBox *GBoxOptions = new IconedGroupBox(this); - m_childWidgets << GBoxOptions; - GBoxOptions->setFixedWidth(pMapContainer->width()); - GBoxOptions->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); - mainLayout.addWidget(GBoxOptions, 1, 0); + // Map options + + pMapContainer = new HWMapContainer(mapContainerFree); + stackLayout->addWidget(mapContainerFree, 0, Qt::AlignHCenter); + pMapContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + pMapContainer->setFixedSize(width() - 14, 278); + mapContainerFree->setFixedSize(pMapContainer->width(), pMapContainer->height()); + + // Horizontal divider + + QFrame * divider = new QFrame(); + divider->setFrameShape(QFrame::HLine); + divider->setFrameShadow(QFrame::Plain); + stackLayout->addWidget(divider, 0, Qt::AlignBottom); + //stackLayout->setRowMinimumHeight(1, 10); - QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions); + // Game options + + optionsContainerTabbed->setContentsMargins(0, 0, 0, 0); + optionsContainerFree->setFixedSize(width() - 14, 140); + stackLayout->addWidget(optionsContainerFree, 0, Qt::AlignHCenter); - GBoxOptions->setTitle(tr("Game Options")); - GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Style"), GBoxOptions), 1, 0); + OptionsInnerContainer = new QWidget(optionsContainerFree); + m_childWidgets << OptionsInnerContainer; + OptionsInnerContainer->setFixedSize(optionsContainerFree->width(), optionsContainerFree->height()); + OptionsInnerContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + GBoxOptionsLayout = new QGridLayout(OptionsInnerContainer); - Scripts = new QComboBox(GBoxOptions); + GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Style"), this), 1, 0); + + Scripts = new QComboBox(this); GBoxOptionsLayout->addWidget(Scripts, 1, 1); Scripts->setModel(DataManager::instance().gameStyleModel()); m_curScript = Scripts->currentText(); connect(Scripts, SIGNAL(currentIndexChanged(int)), this, SLOT(scriptChanged(int))); - QWidget *SchemeWidget = new QWidget(GBoxOptions); + QWidget *SchemeWidget = new QWidget(this); GBoxOptionsLayout->addWidget(SchemeWidget, 2, 0, 1, 2); QGridLayout *SchemeWidgetLayout = new QGridLayout(SchemeWidget); @@ -124,6 +169,31 @@ connect(&DataManager::instance(), SIGNAL(updated()), this, SLOT(updateModelViews())); } +void GameCFGWidget::setTabbed(bool tabbed) +{ + if (tabbed && !this->tabbed) + { // Make tabbed + tabs->setCurrentIndex(0); + StackContainer->setVisible(false); + tabs->setVisible(true); + pMapContainer->setParent(mapContainerTabbed); + OptionsInnerContainer->setParent(optionsContainerTabbed); + pMapContainer->setVisible(true); + setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + this->tabbed = true; + } + else if (!tabbed && this->tabbed) + { // Make stacked + pMapContainer->setParent(mapContainerFree); + OptionsInnerContainer->setParent(optionsContainerFree); + tabs->setVisible(false); + StackContainer->setVisible(true); + pMapContainer->setVisible(true); + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->tabbed = false; + } +} + void GameCFGWidget::jumpToSchemes() { emit goToSchemes(GameSchemes->currentIndex());