예제 #1
0
파일: timing.cpp 프로젝트: clemencevaz/LO21
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;
}
예제 #2
0
파일: agenda.cpp 프로젝트: Erzrael/LO21
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'");
        }
    }
}