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(bool)),blackInitial_,SLOT(setDisabled(bool)));
59 connect( equals_, SIGNAL(stateChanged(bool)),blackAddition_,SLOT(setDisabled(bool)));
60 connect( equals_, SIGNAL(stateChanged(bool)),blackTurns_,SLOT(setDisabled(bool)));
62 equals_->setChecked(true);
64 whiteLabel_ = new QLabel;
65 whiteLabel_->setPixmap(QPixmap(":/rc/pic/white_small.png"));
66 blackLabel_ = new QLabel;
67 blackLabel_->setPixmap(QPixmap(":/rc/pic/black_small.png"));
70 QGridLayout* layout = new QGridLayout;
71 layout->addWidget(equals_,0,0);
72 layout->addWidget(whiteLabel_,0,1,1,1,Qt::AlignCenter);
73 layout->addWidget(blackLabel_,0,2,1,1,Qt::AlignCenter);
75 layout->addWidget(initialLabel_,1,0);
76 layout->addWidget(whiteInitial_,1,1);
77 layout->addWidget(blackInitial_,1,2);
79 layout->addWidget(additionLabel_,2,0);
80 layout->addWidget(whiteAddition_,2,1);
81 layout->addWidget(blackAddition_,2,2);
83 layout->addWidget(perTurnLabel_,3,0);
84 layout->addWidget(whiteTurns_,3,1);
85 layout->addWidget(blackTurns_,3,2);
87 QPushButton* button = new QPushButton( tr("Start game"));
88 connect( button, SIGNAL(clicked()), this, SLOT(accept()));
91 setWindowTitle( timeControlName_);
95 void BasicDialog::disablePerTurns()
97 perTurnLabel_->setVisible(false);
98 whiteTurns_->setVisible(false);
99 blackTurns_->setVisible(false);
102 void BasicDialog::disableAddition()
105 whiteAddition_->setVisible(false);
106 blackAddition_->setVisible(false);
107 additionLabel_->setVisible(false);
110 void BasicDialog::disableUnEquals()
112 equals_->setChecked(true);
113 equals_->setVisible(false);
114 whiteLabel_->setVisible(false);
115 blackLabel_->setVisible(false);
116 blackInitial_->setVisible(false);
117 blackAddition_->setVisible(false);
118 blackTurns_->setVisible(false);
121 void BasicDialog::store()
123 // Store into QSettings
125 s.beginGroup(timeControlName_);
126 s.setValue("Equals",equals_->isChecked());
127 s.setValue("WhiteInitial",whiteInitial_->time());
128 s.setValue("WhiteAddition",whiteAddition_->time());
129 s.setValue("WhitePerTurns",whiteTurns_->value());
131 s.setValue("BlackInitial",blackInitial_->time());
132 s.setValue("BlackAddition",blackAddition_->time());
133 s.setValue("BlackPerTurns",blackTurns_->value());
136 void BasicDialog::init(QTime whiteInitial, QTime blackInitial, QTime whiteAddition, QTime blackAddition, int whitePerTurns, int blackPerTurns)
138 // Load from QSettings
139 // first time use defaults
141 s.beginGroup(timeControlName_);
143 equals_->setChecked(s.value("Equals",true).toBool() );
144 whiteInitial_->setTime( s.value("WhiteInitial",whiteInitial).toTime());
145 blackInitial_->setTime(s.value("BlackInitial",blackInitial).toTime());
146 whiteAddition_->setTime(s.value("WhiteAddition",whiteAddition).toTime());
147 blackAddition_->setTime(s.value("BlackAddition",blackAddition).toTime());
148 whiteTurns_->setValue(s.value("WhitePerTurns",whitePerTurns).toInt());
149 blackTurns_->setValue(s.value("BlackPerTurns",blackPerTurns).toInt());
153 int BasicDialog::getWhiteInitial()
155 return toMsecs( whiteInitial_);
158 int BasicDialog::getWhiteAddition()
160 return toMsecs( whiteAddition_);
163 int BasicDialog::getWhitePerTurns()
165 return whiteTurns_->value();
168 int BasicDialog::getBlackInitial()
170 // if Equals is checked, black values are disabled
171 // and white values returned.
172 if( equals_->isChecked())
173 return toMsecs( whiteInitial_);
175 return toMsecs( blackInitial_);
178 int BasicDialog::getBlackAddition()
180 if( equals_->isChecked())
181 return toMsecs( whiteAddition_);
183 return toMsecs( blackAddition_ );
187 int BasicDialog::getBlackPerTurns()
189 if( equals_->isChecked())
190 return whiteTurns_->value();
192 return blackTurns_->value();
196 int BasicDialog::toMsecs(QTimeEdit *timeEdit)
198 QTime qtime=timeEdit->time();
199 return 0-qtime.msecsTo(QTime(0,0,0));
203 QTimeEdit* BasicDialog::initTimeEdit()
205 // Make QTimeEdit and set up range and display format
206 QTimeEdit* timeEdit = new QTimeEdit;
207 timeEdit->setMinimumTime( QTime(0,0,0));
208 timeEdit->setMaximumTime( QTime(12,0,0));
209 timeEdit->setDisplayFormat( tr("hh:mm:ss","Time Edit display format"));