toruschess/src/optiondlg.cpp

100 lines
3.8 KiB
C++

/***************************************************************************
* Copyright (C) 2009 by Stefan Bühler *
* stbuehler@web.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "optiondlg.h"
#include <QPushButton>
namespace toruschess {
OptionDlg::OptionDlg(Game *game, QWidget *parent)
: QDialog(parent), m_game(game) {
m_curMode = m_game->gameMode();
m_curAIStrength = m_game->aiStrength();
m_curViewMode = VIEW_2D;
setupUi(this);
m_bgMode = new QButtonGroup(this);
m_bgMode->addButton(rb_mode1, HUMAN_HUMAN);
m_bgMode->addButton(rb_mode2, HUMAN_COMPUTER);
m_bgMode->addButton(rb_mode3, COMPUTER_HUMAN);
m_bgMode->addButton(rb_mode4, COMPUTER_COMPUTER);
m_vMode = new QButtonGroup(this);
m_vMode->addButton(rb_view1, VIEW_2D);
m_vMode->addButton(rb_view2, VIEW_3D);
m_vMode->addButton(rb_view3, VIEW_TORUS);
dlgReset();
connect(m_game, SIGNAL(changedMode(GameMode)), this, SLOT(gameChangedMode(GameMode)));
connect(m_game, SIGNAL(changedAIStrength(int)), this, SLOT(gameChangedAIStrength(int)));
connect(this, SIGNAL(accepted()), this, SLOT(dlgAccept()));
connect(this, SIGNAL(rejected()), this, SLOT(dlgReset()));
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
connect(buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked()), this, SLOT(dlgReset()));
}
void OptionDlg::gameChangedMode(GameMode mode) {
if (m_curMode != mode) {
if (m_bgMode->checkedId() == m_curMode) {
m_bgMode->button(mode)->setChecked(true);
}
m_curMode = mode;
}
}
void OptionDlg::gameChangedAIStrength(int aiStrength) {
if (m_curAIStrength != aiStrength) {
if (sb_aiStrength->value() == m_curAIStrength) {
sb_aiStrength->setValue(aiStrength);
}
m_curAIStrength = aiStrength;
}
}
void OptionDlg::changedViewMode(ViewMode viewMode) {
if (m_curViewMode != viewMode) {
if (m_vMode->checkedId() == m_curViewMode) {
m_vMode->button(viewMode)->setChecked(true);
}
m_curViewMode = viewMode;
}
}
void OptionDlg::dlgReset() {
sb_aiStrength->setValue(m_curAIStrength);
m_bgMode->button(m_curMode)->setChecked(true);
m_vMode->button(m_curViewMode)->setChecked(true);
}
void OptionDlg::dlgAccept() {
m_curAIStrength = sb_aiStrength->value();
m_game->setAiStrength(m_curAIStrength);
m_curMode = (GameMode) m_bgMode->checkedId();
m_game->setGameMode(m_curMode);
m_curViewMode = (ViewMode) m_vMode->checkedId();
emit setViewMode(m_curViewMode);
}
}