Horaire Horaire::operator+(const Duree& d) const{ Horaire h1=*this; unsigned short heure=0; unsigned short minute=0; heure=h1.getHeure(); minute=h1.getMinute(); minute=d.getDureeEnMinutes(); while(minute>=60) { minute=minute-60; heure++; } h1.setHoraire(heure,minute); return h1; }
void Agenda::ajouterProgrammation(const TachePreemptable & t, const QDate& d, const QTime& h, const Duree duree){ Duree d_totale = Duree(duree); vector <Programmation *> & listeProgrammation = trouverProgrammation(t); std::vector<Programmation *>::const_iterator it ; //On vérifie que la durée totale des taches programmée n'est pas supérieure à la durée de la tache préempée for(it = listeProgrammation.begin(); it != listeProgrammation.end() ; ++it ) { d_totale.setDuree( d_totale.getDureeEnMinutes() + (*it)->getDuree().getDureeEnMinutes() ); } if ( t.getDuree() < d_totale ) { throw CalendarException("erreur AjouterProgrammation : durée totale supérieure à la durée de la tâche") ; } int minutes = duree.getDureeEnMinutes(); QTime * fin = new QTime(h.addSecs( minutes * 60) ); // qDebug() << "minutes" << minutes << "Time :" << *fin; ajouterProgrammation( t, d, h, *fin ); }
void EditeurTache::enregisterTache(){ if(!(ProjetManager::getInstance().isProjetExistant(ui->comboBoxProjet->currentText()))){ QMessageBox::warning(this, "Attention", "Veuilliez choisir un projet."); } else{ QString id = ui->lineEditId->text(); QString titre = ui->lineEditTitre->text(); if((id==NULL) || (titre==NULL)) QMessageBox::warning(this, "Attention", "Veuilliez donnez un identificateur et un titre."); else{ QDate disp = ui->dateEditDispo->date(); QDate ech = ui->dateEditEch->date(); if(ui->radioButtonUnit->isChecked()){ Duree d = Duree(ui->timeEditDuree->time().hour(),ui->timeEditDuree->time().minute()); bool pre = ui->radioButtonOui->isChecked(); if((d.getDureeEnMinutes()==0)|| (pre==false && ui->radioButtonNon->isChecked()==false))//test si les champs durée et preemptive sont bien renseignés QMessageBox::warning(this, "Attention", "Veuilliez renseigner la durée de la tache."); else{ try{ TacheUnitaire& t = (ProjetManager::getInstance().trouverProjet(ui->comboBoxProjet->currentText())->ajouterTacheUnitaire(id,titre, disp,ech, d, pre)); //ajouter précédence try { for(QMap<QString, Tache*>::const_iterator it= predecesseurs.cbegin();it!=predecesseurs.cend();it++){ t.ajouterPrecedence(*(*it)); } //ajouter tache mère if(ui->comboBoxMere->currentText()!=QString(" ")) { static_cast<TacheComposite*>(ProjetManager::getInstance().trouverTache(ui->comboBoxMere->currentText()))->ajouterSousTache(t); } //emit nouvelleTache(); MessageValidation mv(QString("Succès"), QString("La tache "+ui->lineEditId->text()+" a été ajoutée.")); int rep = mv.exec(); if (rep == QMessageBox::No) close(); else { ui->lineEditId->clear(); ui->lineEditTitre->clear(); remplirComboMere(ui->comboBoxProjet->currentText()); } } catch(CalendarException e){ QMessageBox::warning(this, "Erreur", e.getInfo()); ProjetManager::getInstance().trouverProjet(ui->comboBoxProjet->currentText())->removeTache(&t); } } catch(CalendarException e){ QMessageBox::warning(this, "Erreur", e.getInfo()); } } } else if(ui->radioButtonComp->isChecked()){ try{ TacheComposite& t = (ProjetManager::getInstance().trouverProjet(ui->comboBoxProjet->currentText())->ajouterTacheComposite(id, titre, disp, ech)); //ajouter précédence try { for(QMap<QString, Tache*>::const_iterator it= predecesseurs.cbegin();it!=predecesseurs.cend();it++){ t.ajouterPrecedence(*(*it)); } //ajouter tache mère if(ui->comboBoxMere->currentText()!=QString(" ")) { static_cast<TacheComposite*>(ProjetManager::getInstance().trouverTache(ui->comboBoxMere->currentText()))->ajouterSousTache(t); } MessageValidation mv(QString("Succès"), QString("La tache "+ui->lineEditId->text()+" a été ajoutée.")); int rep = mv.exec(); if (rep == QMessageBox::No) close(); else { ui->lineEditId->clear(); ui->lineEditTitre->clear(); remplirComboMere(ui->comboBoxProjet->currentText()); } } catch(CalendarException e){ QMessageBox::warning(this, "Erreur", e.getInfo()); ProjetManager::getInstance().trouverProjet(ui->comboBoxProjet->currentText())->removeTache(&t); } //ajouter sous taches*/ } catch(CalendarException e){QMessageBox::warning(this, "Erreur", e.getInfo());} } else QMessageBox::warning(this, "Attention", "Veuillez renseigner le champ 'type de tache'"); } } }