From d2d06b853f2fe2becc9a5a533a6eeff698c5089d Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Mon, 27 Jun 2011 15:29:17 +0200 Subject: [PATCH] edit field for minimum number of players to allow multi-column layout for --- cockatrice/src/dlg_settings.cpp | 11 +++++++++++ cockatrice/src/dlg_settings.h | 4 +++- cockatrice/src/gamescene.cpp | 4 +++- cockatrice/src/settingscache.cpp | 8 ++++++++ cockatrice/src/settingscache.h | 4 ++++ 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/dlg_settings.cpp b/cockatrice/src/dlg_settings.cpp index 3f1c5a3d..01d4445a 100644 --- a/cockatrice/src/dlg_settings.cpp +++ b/cockatrice/src/dlg_settings.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "carddatabase.h" #include "dlg_settings.h" #include "main.h" @@ -242,8 +243,17 @@ AppearanceSettingsPage::AppearanceSettingsPage() invertVerticalCoordinateCheckBox->setChecked(settingsCache->getInvertVerticalCoordinate()); connect(invertVerticalCoordinateCheckBox, SIGNAL(stateChanged(int)), settingsCache, SLOT(setInvertVerticalCoordinate(int))); + minPlayersForMultiColumnLayoutLabel = new QLabel; + minPlayersForMultiColumnLayoutEdit = new QSpinBox; + minPlayersForMultiColumnLayoutEdit->setMinimum(2); + minPlayersForMultiColumnLayoutEdit->setValue(settingsCache->getMinPlayersForMultiColumnLayout()); + connect(minPlayersForMultiColumnLayoutEdit, SIGNAL(valueChanged(int)), settingsCache, SLOT(setMinPlayersForMultiColumnLayout(int))); + minPlayersForMultiColumnLayoutLabel->setBuddy(minPlayersForMultiColumnLayoutEdit); + QGridLayout *tableGrid = new QGridLayout; tableGrid->addWidget(invertVerticalCoordinateCheckBox, 0, 0, 1, 2); + tableGrid->addWidget(minPlayersForMultiColumnLayoutLabel, 1, 0, 1, 1); + tableGrid->addWidget(minPlayersForMultiColumnLayoutEdit, 1, 1, 1, 1); tableGroupBox = new QGroupBox; tableGroupBox->setLayout(tableGrid); @@ -289,6 +299,7 @@ void AppearanceSettingsPage::retranslateUi() tableGroupBox->setTitle(tr("Table grid layout")); invertVerticalCoordinateCheckBox->setText(tr("Invert vertical coordinate")); + minPlayersForMultiColumnLayoutLabel->setText(tr("Minimum player count for multi-column layout:")); zoneViewGroupBox->setTitle(tr("Zone view layout")); zoneViewSortByNameCheckBox->setText(tr("Sort by name")); diff --git a/cockatrice/src/dlg_settings.h b/cockatrice/src/dlg_settings.h index 859376d6..f7bd1a52 100644 --- a/cockatrice/src/dlg_settings.h +++ b/cockatrice/src/dlg_settings.h @@ -14,6 +14,7 @@ class QGroupBox; class QCheckBox; class QLabel; class QCloseEvent; +class QSpinBox; class AbstractSettingsPage : public QWidget { public: @@ -65,10 +66,11 @@ signals: void playerAreaBgChanged(const QString &path); void cardBackPicturePathChanged(const QString &path); private: - QLabel *handBgLabel, *stackBgLabel, *tableBgLabel, *playerAreaBgLabel, *cardBackPicturePathLabel; + QLabel *handBgLabel, *stackBgLabel, *tableBgLabel, *playerAreaBgLabel, *cardBackPicturePathLabel, *minPlayersForMultiColumnLayoutLabel; QLineEdit *handBgEdit, *stackBgEdit, *tableBgEdit, *playerAreaBgEdit, *cardBackPicturePathEdit; QCheckBox *displayCardNamesCheckBox, *horizontalHandCheckBox, *invertVerticalCoordinateCheckBox, *zoneViewSortByNameCheckBox, *zoneViewSortByTypeCheckBox; QGroupBox *zoneBgGroupBox, *cardsGroupBox, *handGroupBox, *tableGroupBox, *zoneViewGroupBox; + QSpinBox *minPlayersForMultiColumnLayoutEdit; public: AppearanceSettingsPage(); void retranslateUi(); diff --git a/cockatrice/src/gamescene.cpp b/cockatrice/src/gamescene.cpp index 8785adcc..8a8dd17c 100644 --- a/cockatrice/src/gamescene.cpp +++ b/cockatrice/src/gamescene.cpp @@ -3,6 +3,7 @@ #include "zoneviewwidget.h" #include "zoneviewzone.h" #include "phasestoolbar.h" +#include "settingscache.h" #include #include #include @@ -14,6 +15,7 @@ GameScene::GameScene(PhasesToolbar *_phasesToolbar, QObject *parent) { animationTimer = new QBasicTimer; addItem(phasesToolbar); + connect(settingsCache, SIGNAL(minPlayersForMultiColumnLayoutChanged()), this, SLOT(rearrange())); } GameScene::~GameScene() @@ -59,7 +61,7 @@ void GameScene::rearrange() if (firstPlayer == -1) firstPlayer = 0; const int playersCount = playersPlaying.size(); - const int columns = playersCount < 4 ? 1 : 2; + const int columns = playersCount < settingsCache->getMinPlayersForMultiColumnLayout() ? 1 : 2; const int rows = ceil((qreal) playersCount / columns); qreal sceneHeight = 0, sceneWidth = -playerAreaSpacing; diff --git a/cockatrice/src/settingscache.cpp b/cockatrice/src/settingscache.cpp index f7494d76..8c3cee47 100644 --- a/cockatrice/src/settingscache.cpp +++ b/cockatrice/src/settingscache.cpp @@ -24,6 +24,7 @@ SettingsCache::SettingsCache() displayCardNames = settings->value("cards/displaycardnames", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); + minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 5).toInt(); tapAnimation = settings->value("cards/tapanimation", true).toBool(); zoneViewSortByName = settings->value("zoneview/sortbyname", true).toBool(); @@ -143,6 +144,13 @@ void SettingsCache::setInvertVerticalCoordinate(int _invertVerticalCoordinate) emit invertVerticalCoordinateChanged(); } +void SettingsCache::setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout) +{ + minPlayersForMultiColumnLayout = _minPlayersForMultiColumnLayout; + settings->setValue("interface/min_players_multicolumn", minPlayersForMultiColumnLayout); + emit minPlayersForMultiColumnLayoutChanged(); +} + void SettingsCache::setTapAnimation(int _tapAnimation) { tapAnimation = _tapAnimation; diff --git a/cockatrice/src/settingscache.h b/cockatrice/src/settingscache.h index c834716a..b3f1ae6c 100644 --- a/cockatrice/src/settingscache.h +++ b/cockatrice/src/settingscache.h @@ -20,6 +20,7 @@ signals: void displayCardNamesChanged(); void horizontalHandChanged(); void invertVerticalCoordinateChanged(); + void minPlayersForMultiColumnLayoutChanged(); void soundPathChanged(); private: QSettings *settings; @@ -34,6 +35,7 @@ private: bool displayCardNames; bool horizontalHand; bool invertVerticalCoordinate; + int minPlayersForMultiColumnLayout; bool tapAnimation; bool zoneViewSortByName, zoneViewSortByType; bool soundEnabled; @@ -57,6 +59,7 @@ public: bool getDisplayCardNames() const { return displayCardNames; } bool getHorizontalHand() const { return horizontalHand; } bool getInvertVerticalCoordinate() const { return invertVerticalCoordinate; } + int getMinPlayersForMultiColumnLayout() const { return minPlayersForMultiColumnLayout; } bool getTapAnimation() const { return tapAnimation; } bool getZoneViewSortByName() const { return zoneViewSortByName; } bool getZoneViewSortByType() const { return zoneViewSortByType; } @@ -80,6 +83,7 @@ public slots: void setDisplayCardNames(int _displayCardNames); void setHorizontalHand(int _horizontalHand); void setInvertVerticalCoordinate(int _invertVerticalCoordinate); + void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout); void setTapAnimation(int _tapAnimation); void setZoneViewSortByName(int _zoneViewSortByName); void setZoneViewSortByType(int _zoneViewSortByType);