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); } } } }
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()); } }
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é"); }
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'"); } } }
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(); } }
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; }