/*************************************************************************** * 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 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); } }