00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "basicdialog.h"
00023
00024 #include <QTimeEdit>
00025 #include <QTime>
00026 #include <QSpinBox>
00027 #include <QCheckBox>
00028 #include <QLabel>
00029 #include <QGridLayout>
00030 #include <QPushButton>
00031 #include <QSettings>
00032 #include <QDebug>
00033
00034 BasicDialog::BasicDialog(QString timeControlName, QWidget *parent) :
00035 QDialog(parent)
00036 {
00037 timeControlName_ = timeControlName;
00038
00039
00040 initialLabel_ = new QLabel( tr("Initial time"));
00041 whiteInitial_ = initTimeEdit();
00042 blackInitial_ = initTimeEdit();
00043
00044 additionLabel_ = new QLabel( tr("Additional time"));
00045 whiteAddition_ = initTimeEdit();
00046 blackAddition_ = initTimeEdit();
00047
00048 perTurnLabel_ = new QLabel( tr("Addition per turn"));
00049 whiteTurns_=new QSpinBox;
00050 whiteTurns_->setRange(1,99);
00051
00052 blackTurns_=new QSpinBox;
00053 blackTurns_->setRange(1,99);
00054
00055
00056 equals_ = new QCheckBox( tr("Equal times"));
00057
00058 connect( equals_, SIGNAL(stateChanged(int)),this,SLOT(setEquals()));
00059
00060 equals_->setChecked(true);
00061 setEquals();
00062
00063 whiteLabel_ = new QLabel;
00064 whiteLabel_->setPixmap(QPixmap(":/rc/pic/white_small.png"));
00065 blackLabel_ = new QLabel;
00066 blackLabel_->setPixmap(QPixmap(":/rc/pic/black_small.png"));
00067
00068
00069 QGridLayout* layout = new QGridLayout;
00070 layout->addWidget(equals_,0,0);
00071 layout->addWidget(whiteLabel_,0,1,1,1,Qt::AlignCenter);
00072 layout->addWidget(blackLabel_,0,2,1,1,Qt::AlignCenter);
00073
00074 layout->addWidget(initialLabel_,1,0);
00075 layout->addWidget(whiteInitial_,1,1);
00076 layout->addWidget(blackInitial_,1,2);
00077
00078 layout->addWidget(additionLabel_,2,0);
00079 layout->addWidget(whiteAddition_,2,1);
00080 layout->addWidget(blackAddition_,2,2);
00081
00082 layout->addWidget(perTurnLabel_,3,0);
00083 layout->addWidget(whiteTurns_,3,1);
00084 layout->addWidget(blackTurns_,3,2);
00085
00086 QPushButton* button = new QPushButton( tr("Start game"));
00087 connect( button, SIGNAL(clicked()), this, SLOT(accept()));
00088 layout->addWidget(button,4,2);
00089
00090 setLayout( layout );
00091 setWindowTitle( timeControlName_);
00092
00093 }
00094
00095 void BasicDialog::setEquals()
00096 {
00097 blackInitial_->setDisabled( equals_->isChecked());
00098 blackAddition_->setDisabled( equals_->isChecked());
00099 blackTurns_->setDisabled( equals_->isChecked());
00100
00101 }
00102
00103
00104 void BasicDialog::disablePerTurns()
00105 {
00106 perTurnLabel_->setVisible(false);
00107 whiteTurns_->setVisible(false);
00108 blackTurns_->setVisible(false);
00109 }
00110
00111 void BasicDialog::disableAddition()
00112 {
00113 disablePerTurns();
00114 whiteAddition_->setVisible(false);
00115 blackAddition_->setVisible(false);
00116 additionLabel_->setVisible(false);
00117 }
00118
00119 void BasicDialog::disableUnEquals()
00120 {
00121 equals_->setChecked(true);
00122 equals_->setVisible(false);
00123 whiteLabel_->setVisible(false);
00124 blackLabel_->setVisible(false);
00125 blackInitial_->setVisible(false);
00126 blackAddition_->setVisible(false);
00127 blackTurns_->setVisible(false);
00128 }
00129
00130 void BasicDialog::store()
00131 {
00132
00133 QSettings s;
00134 s.beginGroup(timeControlName_);
00135 s.setValue("Equals",equals_->isChecked());
00136 s.setValue("WhiteInitial",whiteInitial_->time());
00137 s.setValue("WhiteAddition",whiteAddition_->time());
00138 s.setValue("WhitePerTurns",whiteTurns_->value());
00139
00140 s.setValue("BlackInitial",blackInitial_->time());
00141 s.setValue("BlackAddition",blackAddition_->time());
00142 s.setValue("BlackPerTurns",blackTurns_->value());
00143 }
00144
00145 void BasicDialog::init(QTime whiteInitial, QTime blackInitial, QTime whiteAddition, QTime blackAddition, int whitePerTurns, int blackPerTurns)
00146 {
00147
00148
00149 QSettings s;
00150 s.beginGroup(timeControlName_);
00151
00152 equals_->setChecked(s.value("Equals",true).toBool() );
00153 setEquals();
00154 whiteInitial_->setTime( s.value("WhiteInitial",whiteInitial).toTime());
00155 blackInitial_->setTime(s.value("BlackInitial",blackInitial).toTime());
00156 whiteAddition_->setTime(s.value("WhiteAddition",whiteAddition).toTime());
00157 blackAddition_->setTime(s.value("BlackAddition",blackAddition).toTime());
00158 whiteTurns_->setValue(s.value("WhitePerTurns",whitePerTurns).toInt());
00159 blackTurns_->setValue(s.value("BlackPerTurns",blackPerTurns).toInt());
00160
00161 }
00162
00163 int BasicDialog::getWhiteInitial()
00164 {
00165 return toMsecs( whiteInitial_);
00166 }
00167
00168 int BasicDialog::getWhiteAddition()
00169 {
00170 return toMsecs( whiteAddition_);
00171 }
00172
00173 int BasicDialog::getWhitePerTurns()
00174 {
00175 return whiteTurns_->value();
00176 }
00177
00178 int BasicDialog::getBlackInitial()
00179 {
00180
00181
00182 if( equals_->isChecked())
00183 return toMsecs( whiteInitial_);
00184 else
00185 return toMsecs( blackInitial_);
00186 }
00187
00188 int BasicDialog::getBlackAddition()
00189 {
00190 if( equals_->isChecked())
00191 return toMsecs( whiteAddition_);
00192 else
00193 return toMsecs( blackAddition_ );
00194
00195 }
00196
00197 int BasicDialog::getBlackPerTurns()
00198 {
00199 if( equals_->isChecked())
00200 return whiteTurns_->value();
00201 else
00202 return blackTurns_->value();
00203 }
00204
00205
00206 int BasicDialog::toMsecs(QTimeEdit *timeEdit)
00207 {
00208 QTime qtime=timeEdit->time();
00209 int msecs=qtime.msecsTo(QTime(0,0,0));;
00210 return 0-msecs;
00211 }
00212
00213
00214 QTimeEdit* BasicDialog::initTimeEdit()
00215 {
00216
00217 QTimeEdit* timeEdit = new QTimeEdit;
00218 timeEdit->setMinimumTime( QTime(0,0,0));
00219 timeEdit->setMaximumTime( QTime(12,0,0));
00220 timeEdit->setDisplayFormat( tr("hh:mm:ss","Time Edit display format"));
00221 return timeEdit;
00222 }