Esempio n. 1
0
Duree Programmation::getDuree() const
{
   int time = debut.secsTo(fin); // duree en seconde
   time = time / 60; //conversion en minutes

   return Duree(time);
}
void JourGraphicScene::mise_a_jour()
{

    removeAllItems();
    dessinerFond();
    Agenda& ag = Agenda::getInstance();
    int i = 0;
    //reconstruction entiere de la scene
    for(Agenda::iterator it = ag.begin() ; it != ag.end() ; ++it)
    {
        QColor fond;
        if((*it).isProgrammationPartieTache())
            fond = QColor("orange") ;
        else if((*it).isRdv())
            fond = QColor("yellow");
        else if((*it).isProgrammationTache())
            fond = QColor("green");
        else if((*it).isEvenement1j())
            fond = QColor("red") ;
        else if((*it).isEvenementPj())
            fond = QColor("blue") ;

        if(!(*it).isEvenementPj() && (*it).getDate() == date)
        { //ajout d'un evenement sur 1 jour
            ajouterEvenement((*it).getSujet(),(*it).getHoraire(),(*it).getDuree(),&(*it),fond);

        }else if((*it).isEvenementPj())
        { // ajout d'un evnement sur plusieurs jours
            EvenementPj *evt = dynamic_cast<EvenementPj*>(&(*it));
            QDate deb = evt->getDate(), fin = evt->getDateFin();
            if(date == deb)
            {
                int nb_mins = evt->getHoraire().secsTo(QTime(22,0)) / 60;
                ajouterEvenement(evt->getSujet(),evt->getHoraire(),Duree(nb_mins),evt,fond);
            }else if(date<fin && date>deb)
            {
                ajouterEvenement(evt->getSujet(),QTime(6,0),Duree(960),evt,fond);
            }else if(date == fin)
            {
                int nb_mins = QTime(6,0).secsTo(evt->getHoraireFin()) / 60;
                ajouterEvenement(evt->getSujet(),QTime(6,0),Duree(nb_mins),evt,fond);
            }
        }
    }
}
Esempio n. 3
0
void FenetreCreerActivite::sauverActivite(){
    if(Activite* activite=new Activite(ActNom->text(),ActDesc->toPlainText(),Duree(hActDuree->value(),mActDuree->value())))
    {
        QMessageBox msgBox;
        msgBox.setText("L'Activité a été crée");
        msgBox.exec();
        FenetreProgrammerActivite* programactivite= new FenetreProgrammerActivite(*activite);
        programactivite->show();
        this->close();
    }
}
void DialogProgEvt::accept()
{
    try
    {
        if(ui->titre->text() == "" || ui->desc->toPlainText() == "")
        {
            throw CalendarException("Veuillez entrer un titre et une description");
        }
        Agenda* ag = &Agenda::getInstance();
        //ajoute le bon type d'évènement en fonction en fonction des informations entrées
        if(ui->un_jour->isChecked())
        {
            if(ui->is_rdv->isChecked())
            {
                ag->ajouterProgrammation(1,ui->date->date(),ui->titre->text(),ui->desc->toPlainText(),
                                         ui->horaire->time(),
                                         Duree(ui->duree->time().hour(), ui->duree->time().minute()),
                                         ui->lieu->text(), ui->personnes->toPlainText());
            }
            else
            {
                ag->ajouterProgrammation(0,ui->date->date(),ui->titre->text(),ui->desc->toPlainText(),
                                         ui->horaire->time(),
                                         Duree(ui->duree->time().hour(), ui->duree->time().minute()));
            }
        }
        else
        {
            ag->ajouterProgrammationPlsJour(ui->date->date(),ui->titre->text(),ui->desc->toPlainText(),
                                            ui->horaire->time(), ui->date_fin->date(), ui->horaire_fin->time());
        }
        close();
    }
    catch(CalendarException e)
    {
        QMessageBox::critical(0, "Erreur", e.getInfo());

    }
}
Esempio n. 5
0
TacheEditeur::sauverTache(){
    TacheManager& m = TacheManager::getInstance();
    if(m.isTacheExistante(idLineEdit->text()) && &m.getTache(idLineEdit->text())!=&t){
        QMessageBox::warning(this, "ATTENTION", "La tache existe déjà");
        return;
    }
    t.setId(idTextEdit->text());
    t.setTitre(titreTextEdit->toPlainText());
    t.setDatesDisponibiliteEcheance(dateDispo->date(), dateEcheance->date());
    t.setDuree(Duree(dureeH->value(), dureeM->value()));
    if(preemptive->isChecked() && !t.isPreemptive())
        t.setPreemptive();
    else
        t.setNonPreemptive;
    QMessageBox::information(this, "Sauvegarde", "La tache a été sauvegardé");
}
Esempio n. 6
0
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 CreerTacheSimpleNonPreemptive::retourFenetrePrincipaleValider(){
    try{
        nomProjet.creerAjouterTache(
                    chemin,
                    *tailleChemin,
                    Date(dateDebut->date().day(), dateDebut->date().month(), dateDebut->date().year()),
                    Horaire(horaireDebut->time().hour(), horaireDebut->time().minute()),
                    Date(dateFin->date().day(), dateFin->date().month(), dateFin->date().year()),
                    Horaire(horaireFin->time().hour(), horaireFin->time().minute()),
                    titre->text().toStdString(),
                    false,
                    false,
                    Duree(heures->value(), minutes->value()));
        QMessageBox::information(this, "Création de tâche simple non préemptive", "Votre tâche simple non préemptive " + titre->text() +" a bien été créée.");
    }
    catch(std::logic_error& e){
        QMessageBox::warning(this, "Création de tâche tâche simple non préemptive", e.what());
    }
    this->close();
}
void ProgTache::EnregistrerProgTache(){
    if(ProjetManager::getInstance().isTacheExistante(ui->comboBoxTache->currentText())){
        TacheUnitaire* t = dynamic_cast<TacheUnitaire*>(ProjetManager::getInstance().trouverProjet(ui->comboBoxProjet->currentText())->trouverTache(ui->comboBoxTache->currentText()));
        Duree d = Duree(ui->timeEdit_2->time().hour(),ui->timeEdit_2->time().minute());
        try {
            ProgrammationManager::getInstance().ajouterProgrammationTache(t, ui->dateTimeEdit_2->dateTime(), d);
            MessageValidation mv(QString("Succès"), QString("La programmation a été ajoutée."));
            int rep = mv.exec();
            if (rep == QMessageBox::No)
                close();
            else {
                //Si l'utilisateur veut programmer une nouvelle tâche
                remplirComboTache(ui->comboBoxProjet->currentText()); //On actualise les tâches disponibles à la programamtion
                ui->timeEdit_2->setTime(QTime(0,0)); //On réinitialise la durée de programmation
                SetInfos(QString(" ")); //On enlève les infos de la tâche précédemment programmée
            }
        }
        catch(CalendarException e){ QMessageBox::warning(this, "Erreur", e.getInfo()); }
    }
    else
        QMessageBox::warning(this, "Programmation", "Veuillez séléctionner une tâche");
}
void ProgActivite::EnregistrerProg(){
    if((ui->lineEditType->text()!=NULL) && (ui->lineEditDescription->text()!=NULL) && (ui->lineEditLieu->text()!=NULL) && (ui->lineEditNom->text()!=NULL)){
        Duree d = Duree(ui->timeEdit->time().hour(),ui->timeEdit->time().minute());
        try{
            ProgrammationManager::getInstance().ajouterProgrammationEvenement(ui->lineEditNom->text(), ui->lineEditType->text(), ui->lineEditDescription->text(), ui->lineEditLieu->text(), ui->dateTimeEdit->dateTime(), d);
            MessageValidation mv(QString("Succès"), QString("L'activité a été ajoutée."));
            int rep = mv.exec();
            if (rep == QMessageBox::No)
                close();
            else {
                //Si l'utilisateur veut ajouter une nouvelle activité, on réinitialise tous les champs
                ui->lineEditNom->clear();
                ui->lineEditType->clear();
                ui->lineEditDescription->clear();
                ui->lineEditLieu->clear();
                ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime());
                ui->timeEdit->setTime(QTime(0, 0));}
        }
        catch(CalendarException e){ QMessageBox::warning(this, "Erreur", e.getInfo()); }
    }
    else
        QMessageBox::information(this, "Attention", "Veuillez remplir tous les champs");
}
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'");
        }
    }
}
Esempio n. 11
0
void FenetreProgrammerTache::enregistrer(){
    programmation& progtache=agenda::getInstance().ajouterProgrammationTache(tache,Date(ProgDate->date().day(),ProgDate->date().month(),ProgDate->date().year()),Horaire(ProgHh->value(),ProgHm->value()),Duree(Durh->value(),Durm->value()));
    if(&progtache!=0){
        QMessageBox msgBox;
        msgBox.setText("L'Activité a été programmée");
        msgBox.exec();
        this->close();
    }
    else
    {
        delete &progtache;
        QMessageBox msgBox;
        msgBox.setText("L'Activité n'a pas été programmée");
        msgBox.exec();
    }
}
Esempio n. 12
0
programmation& agenda::ajouterProgrammationTache(Tache& t, const TIME::Date& d, const TIME::Horaire& h, const TIME::Duree& dur) {
    programmationTache* newprog=new programmationTache(t,d,h,dur);
    //vérifier si la tache est disponible
    if(d<t.get_date_disp())
    {
        QString msg;
        msg+="La tache n'est pas disponible";
        QMessageBox msgBox;
        msgBox.setText(msg);
        msgBox.exec();
        newprog=0;
        return *newprog;
    }

    if(t.get_echeance()<d)
    {
        QString msg;
        msg+="La date choisie dépasse l'échéance";
        QMessageBox msgBox;
        msgBox.setText(msg);
        msgBox.exec();
        newprog=0;
        return *newprog;
    }
    //vérifier que la tache n'est pas déjà terminée
    if(t.get_achevement().getDureeEnMinutes()==0)
        return *newprog;

    if(trouverProgrammation(d,h,dur))
    {
        QString msg;
        msg+="Déjà une programmation";
        QMessageBox msgBox;
        msgBox.setText(msg);
        msgBox.exec();
        newprog=0;
        return *newprog;
    }

    //vérifier que l'on programme la tache qu'en une fois si elle n'est pas préemptive
    if(!t.get_preemptive()&& dur.getDureeEnMinutes()<t.get_duree().getDureeEnMinutes())
    {
        QString msg;
        msg+="la durée n'est pas la bonne";
        QMessageBox msgBox;
        msgBox.setText(msg);
        msgBox.exec();
        newprog=0;
        return *newprog;
    }
    programmation* progtache=0;
    //on vérifie que les précédentes sont programmées avant
    if(t.get_precedentes().size()!=0)
    {
        for(std::vector<Tache*>::const_iterator it=t.get_precedentes().begin();it!=t.get_precedentes().end();it++)
        {
            progtache=getInstance().trouverProgparTache(*it);
            if(!progtache)
            {
                QString msg;
                msg+="Il faut d'abord programmer les taches précédentes";
                QMessageBox msgBox;
                msgBox.setText(msg);
                msgBox.exec();
                newprog=0;
                return *newprog;
            }
            else
            {
                if(d<progtache->getDate())
                {
                    QString msg;
                    msg+="Des taches précédentes sont programmées après";
                    QMessageBox msgBox;
                    msgBox.setText(msg);
                    msgBox.exec();
                    newprog=0;
                    return *newprog;
                }
                if(d==progtache->getDate() && progtache->getHoraire()<h)
                {
                    QString msg;
                    msg+="Des taches précédentes sont programmées après dans le même jour";
                    QMessageBox msgBox;
                    msgBox.setText(msg);
                    msgBox.exec();
                    newprog=0;
                    return *newprog;
                }
            }
        }
    }

    // si elle est préemptive vérifier que l'on ne programme pas plus
    if(t.get_preemptive())
    {
        //on récupère la durée en minute du travail qu'il reste à faire
        Duree dureerestante(t.get_achevement());
        //on vérifie que la durée de programmation n'est pas supérieure au temps restant
        if(dureerestante.getDureeEnMinutes()<dur.getDureeEnMinutes())
        {
            QString msg;
            msg+="Durée trop elevée";
            QMessageBox msgBox;
            msgBox.setText(msg);
            msgBox.exec();
            newprog=0;
            return *newprog;
        }
        //sinon on modifie l'achevement
        t.set_achevement(Duree(dureerestante.getDureeEnMinutes()-dur.getDureeEnMinutes()));
        QString msg;
        msg+="Il vous restera ";
        msg+=QVariant(t.get_achevement().getDureeEnMinutes()).toString();
        msg+=" minutes";
        QMessageBox msgBox;
        msgBox.setText(msg);
        msgBox.exec();
    }
    //si la tache n'est pas préemtive on met 0 à l'achevement (elle sera achevée)
    if(!t.get_preemptive())
        t.set_achevement(Duree(0));

    progs.push_back(newprog);
    return *newprog;
}