/* * MaFenetre.cpp * This file is part of ChronoCheckMate * * Copyright (C) 2010 - François Drouhard * * ChronoCheckMate 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. * * ChronoCheckMate 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 ChronoCheckMate; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "MaFenetre.h" #include "Chronometre.h" #include #include #include #include #include #include #include #include #include MaFenetre::MaFenetre() : QWidget (), nomJoueur1 ("Joueur 1"), nomJoueur2 ("Joueur 2") { marche = false; chrono1 = new Chronometre(nomJoueur1 , this); chrono2 = new Chronometre(nomJoueur2 , this); boutonInverser = new QPushButton ("<->"); ////////////////// Groupe Définition de la classe /////////////////////////// layoutChrono = new QHBoxLayout; layoutChrono->addWidget(chrono1); layoutChrono->addWidget(boutonInverser); layoutChrono->addWidget(chrono2); /*groupChrono = new QGroupBox ("Chronomètre d'échecs"); groupChrono->setLayout (layoutChrono);*/ ///////////////////////////// Boutons ///////////////////////////// boutonDemarrer = new QPushButton ("Commencer"); boutonSwitch = new QPushButton ("Changer"); boutonArreter = new QPushButton ("Arrêter"); boutonInit = new QPushButton ("Remettre à Zéro"); boutonArreter->setFocusPolicy (Qt::NoFocus); boutonSwitch->setFocusPolicy (Qt::NoFocus); boutonInit->setFocusPolicy (Qt::NoFocus); boutonInverser->setFocusPolicy(Qt::NoFocus); etatBoutons (true , false , false , false); layoutBoutonSwitch = new QHBoxLayout; layoutBoutonSwitch->addWidget (boutonDemarrer); layoutBoutonSwitch->addWidget (boutonSwitch); layoutBoutonSwitch->addWidget (boutonArreter); layoutBoutonSwitch->addWidget (boutonInit); ///////////////////////////// Bouton Quitter /////////////////////////// boutonQuitter = new QPushButton ("Quitter"); boutonQuitter->setFocusPolicy (Qt::NoFocus); layoutBoutons = new QHBoxLayout; layoutBoutons->addWidget (boutonQuitter); ///////////////////////////// Aide ///////////////////////////////////// QLabel *labelAide = new QLabel ("Aide
Espace : Lancer le chrono/Donner le chrono
Entrée : Stopper les deux chronos"); /////////////////////////////Mise en page finale /////////////////////////// layoutComplet = new QVBoxLayout; layoutComplet->addLayout (layoutChrono); layoutComplet->addLayout (layoutBoutonSwitch); layoutComplet->addWidget (labelAide); layoutComplet->addLayout (layoutBoutons); setLayout (layoutComplet); setWindowTitle ("ChronoCheckMate"); ///////////////////////////// Ouverture de la boite de dialogue ///////////////// definirNomJoueurs(); ///////////////////////////// connections /////////////////////////// QObject::connect (boutonQuitter , SIGNAL(clicked ()) , qApp , SLOT(quit ())) ; QObject::connect (boutonDemarrer , SIGNAL(clicked () ) , this , SLOT(demarrer () )); QObject::connect (boutonSwitch , SIGNAL(clicked() ) , this , SLOT(switcher() )); QObject::connect (boutonArreter , SIGNAL(clicked() ) , this , SLOT(arreter() )); QObject::connect (boutonInit , SIGNAL(clicked () ) , this , SLOT(init () )); QObject::connect (boutonInverser , SIGNAL(clicked()) , this , SLOT(inverser())); } ///////////////// Méthodes //////////////////// void MaFenetre::etatBoutons (bool bouton1, bool bouton2 , bool bouton3 , bool bouton4) { boutonDemarrer->setEnabled (bouton1); boutonSwitch->setEnabled (bouton2); boutonArreter->setEnabled (bouton3); boutonInit->setEnabled (bouton4); } ////////////////// SLOTS //////////////////////// void MaFenetre::inverser() { layoutChrono->removeWidget(chrono1); layoutChrono->removeWidget(chrono2); Chronometre *chronoTemp = chrono1; chrono1 = chrono2; chrono2 = chronoTemp; layoutChrono->insertWidget(0 , chrono1); layoutChrono->addWidget(chrono2); } void MaFenetre::demarrer () { if (marche == false ) { chrono1->reinit (); chrono2->reinit (); chrono1->start (); marche = true; etatBoutons (false , true , true , false); } } void MaFenetre::modifierNomJoueurs() { chrono1->modifierNomJoueur(nomJoueur1); chrono2->modifierNomJoueur(nomJoueur2); } void MaFenetre::switcher () { if (marche == true) { chrono1->basculer (); chrono2->basculer (); } } void MaFenetre::arreter () { chrono1->stop(); chrono2->stop(); marche = false; etatBoutons (true , false , false , true); } void MaFenetre::init () { if (marche == false) { chrono1->reinit(); chrono2->reinit(); etatBoutons (true , false , false , false); } } void MaFenetre::definirNomJoueurs() { QDialog *dialog = new QDialog (this); QHBoxLayout *layoutLineEdit = new QHBoxLayout; QVBoxLayout *layoutDialog = new QVBoxLayout; QDialogButtonBox *boutonJouer = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel); QLineEdit *joueur1LineEdit = new QLineEdit(nomJoueur1 , this); QLineEdit *joueur2LineEdit = new QLineEdit(nomJoueur2 , this); joueur1LineEdit->selectAll(); layoutLineEdit->addWidget(joueur1LineEdit); layoutLineEdit->addWidget(joueur2LineEdit); layoutDialog->addLayout(layoutLineEdit); layoutDialog->addWidget(boutonJouer); dialog->setLayout(layoutDialog); QObject::connect(boutonJouer , SIGNAL(accepted()) , dialog, SLOT(accept())); QObject::connect(boutonJouer , SIGNAL(rejected()) , dialog, SLOT(close())); if (dialog->exec()) { nomJoueur1 = joueur1LineEdit->text(); nomJoueur2 = joueur2LineEdit->text(); modifierNomJoueurs(); } } void MaFenetre::keyReleaseEvent (QKeyEvent * evenement) { if (evenement->key() == Qt::Key_Space) { if (marche == true) { switcher(); } if (marche == false) { demarrer(); } } if (evenement->key() == Qt::Key_Return) { arreter(); } }