#include "horloge.h" #include "clavier.h" Horloge::Horloge(const short _nbMode, const short _resolution ) : heures(0),minutes(0), resolution(_resolution),nbMode(_nbMode),mode (AUCUN_REGLAGE) { valAvant = time(NULL); } bool Horloge::AvancerHeures() { bool retour = false; if(++heures == resolution) { heures = 0; retour = true; } return retour; } bool Horloge::AvancerMinutes() { bool retour = false; if(++minutes == 60) { minutes = 0; retour = true; } return retour; } void Horloge::ReculerHeures() { if(--heures == -1) heures = resolution -1; } void Horloge::ReculerMinutes() { if(--minutes == -1) minutes = 59 ; } void Horloge::ActualiserHeure() { time_t valCourante = time(NULL); double seconde = difftime(valCourante,valAvant); if(seconde>60) // à modifier pour aller plus vite pendant le test { valAvant = valCourante ; if(AvancerMinutes()) AvancerHeures(); } } TOUCHES_CLAVIER Horloge::Controler(const TOUCHES_CLAVIER numTouche) { switch(mode) { case AUCUN_REGLAGE : leCadran.Afficher(heures,1); leCadran.Afficher(minutes,4); if(numTouche == MODE) ChangerMode(); else ActualiserHeure(); break; case REGLAGE_HEURES: switch(numTouche) { case PLUS: AvancerHeures(); break; case MOINS: ReculerHeures(); break; case MODE: ChangerMode(); break; default: break; } if(mode != AUCUN_REGLAGE) { leCadran.Afficher("HH",1); leCadran.Afficher(heures,4); } break; case REGLAGE_MINUTES: switch(numTouche) { case PLUS: AvancerMinutes(); break; case MOINS: ReculerMinutes(); break; case MODE: ChangerMode(); break; default: break; } if(mode != AUCUN_REGLAGE) { leCadran.Afficher("MM",1); leCadran.Afficher(minutes,4); } break; } return leClavier.ScruterClavier() ; } void Horloge::ChangerMode() { leCadran.Afficher(" "); mode = (mode+1)%nbMode; }