1 /**************************************************************************
5 Copyright (c) Arto Hyvättinen 2010
7 This file is part of Chess Clock software.
9 Chess Clock is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 Chess Clock is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
20 **************************************************************************/
22 #include "basicdialog.h"
29 #include <QGridLayout>
30 #include <QPushButton>
34 BasicDialog::BasicDialog(QString timeControlName, QWidget *parent) :
37 timeControlName_ = timeControlName;
40 initialLabel_ = new QLabel( tr("Initial time"));
41 whiteInitial_ = initTimeEdit();
42 blackInitial_ = initTimeEdit();
44 additionLabel_ = new QLabel( tr("Additional time"));
45 whiteAddition_ = initTimeEdit();
46 blackAddition_ = initTimeEdit();
48 perTurnLabel_ = new QLabel( tr("Addition per turn"));
49 whiteTurns_=new QSpinBox;
50 whiteTurns_->setRange(1,99);
52 blackTurns_=new QSpinBox;
53 blackTurns_->setRange(1,99);
56 equals_ = new QCheckBox( tr("Equal times"));
58 connect( equals_, SIGNAL(stateChanged(int)),this,SLOT(setEquals()));
60 equals_->setChecked(true);
63 whiteLabel_ = new QLabel;
64 whiteLabel_->setPixmap(QPixmap(":/rc/pic/white_small.png"));
65 blackLabel_ = new QLabel;
66 blackLabel_->setPixmap(QPixmap(":/rc/pic/black_small.png"));
69 QGridLayout* layout = new QGridLayout;
70 layout->addWidget(equals_,0,0);
71 layout->addWidget(whiteLabel_,0,1,1,1,Qt::AlignCenter);
72 layout->addWidget(blackLabel_,0,2,1,1,Qt::AlignCenter);
74 layout->addWidget(initialLabel_,1,0);
75 layout->addWidget(whiteInitial_,1,1);
76 layout->addWidget(blackInitial_,1,2);
78 layout->addWidget(additionLabel_,2,0);
79 layout->addWidget(whiteAddition_,2,1);
80 layout->addWidget(blackAddition_,2,2);
82 layout->addWidget(perTurnLabel_,3,0);
83 layout->addWidget(whiteTurns_,3,1);
84 layout->addWidget(blackTurns_,3,2);
86 QPushButton* button = new QPushButton( tr("Start game"));
87 connect( button, SIGNAL(clicked()), this, SLOT(accept()));
88 layout->addWidget(button,4,2);
91 setWindowTitle( timeControlName_);
95 void BasicDialog::setEquals()
97 blackInitial_->setDisabled( equals_->isChecked());
98 blackAddition_->setDisabled( equals_->isChecked());
99 blackTurns_->setDisabled( equals_->isChecked());
104 void BasicDialog::disablePerTurns()
106 perTurnLabel_->setVisible(false);
107 whiteTurns_->setVisible(false);
108 blackTurns_->setVisible(false);
111 void BasicDialog::disableAddition()
114 whiteAddition_->setVisible(false);
115 blackAddition_->setVisible(false);
116 additionLabel_->setVisible(false);
119 void BasicDialog::disableUnEquals()
121 equals_->setChecked(true);
122 equals_->setVisible(false);
123 whiteLabel_->setVisible(false);
124 blackLabel_->setVisible(false);
125 blackInitial_->setVisible(false);
126 blackAddition_->setVisible(false);
127 blackTurns_->setVisible(false);
130 void BasicDialog::store()
132 // Store into QSettings
134 s.beginGroup(timeControlName_);
135 s.setValue("Equals",equals_->isChecked());
136 s.setValue("WhiteInitial",whiteInitial_->time());
137 s.setValue("WhiteAddition",whiteAddition_->time());
138 s.setValue("WhitePerTurns",whiteTurns_->value());
140 s.setValue("BlackInitial",blackInitial_->time());
141 s.setValue("BlackAddition",blackAddition_->time());
142 s.setValue("BlackPerTurns",blackTurns_->value());
145 void BasicDialog::init(QTime whiteInitial, QTime blackInitial, QTime whiteAddition, QTime blackAddition, int whitePerTurns, int blackPerTurns)
147 // Load from QSettings
148 // first time use defaults
150 s.beginGroup(timeControlName_);
152 equals_->setChecked(s.value("Equals",true).toBool() );
154 whiteInitial_->setTime( s.value("WhiteInitial",whiteInitial).toTime());
155 blackInitial_->setTime(s.value("BlackInitial",blackInitial).toTime());
156 whiteAddition_->setTime(s.value("WhiteAddition",whiteAddition).toTime());
157 blackAddition_->setTime(s.value("BlackAddition",blackAddition).toTime());
158 whiteTurns_->setValue(s.value("WhitePerTurns",whitePerTurns).toInt());
159 blackTurns_->setValue(s.value("BlackPerTurns",blackPerTurns).toInt());
163 int BasicDialog::getWhiteInitial()
165 return toMsecs( whiteInitial_);
168 int BasicDialog::getWhiteAddition()
170 return toMsecs( whiteAddition_);
173 int BasicDialog::getWhitePerTurns()
175 return whiteTurns_->value();
178 int BasicDialog::getBlackInitial()
180 // if Equals is checked, black values are disabled
181 // and white values returned.
182 if( equals_->isChecked())
183 return toMsecs( whiteInitial_);
185 return toMsecs( blackInitial_);
188 int BasicDialog::getBlackAddition()
190 if( equals_->isChecked())
191 return toMsecs( whiteAddition_);
193 return toMsecs( blackAddition_ );
197 int BasicDialog::getBlackPerTurns()
199 if( equals_->isChecked())
200 return whiteTurns_->value();
202 return blackTurns_->value();
206 int BasicDialog::toMsecs(QTimeEdit *timeEdit)
208 QTime qtime=timeEdit->time();
209 int msecs=qtime.msecsTo(QTime(0,0,0));;
214 QTimeEdit* BasicDialog::initTimeEdit()
216 // Make QTimeEdit and set up range and display format
217 QTimeEdit* timeEdit = new QTimeEdit;
218 timeEdit->setMinimumTime( QTime(0,0,0));
219 timeEdit->setMaximumTime( QTime(12,0,0));
220 timeEdit->setDisplayFormat( tr("hh:mm:ss","Time Edit display format"));