Evenement BusApp::donner_prochain_evenement (void) { Evenement tmp; //std::cout << m_evenements.size() << " evenemnt(s) en attente" << std::endl; if ( m_evenements.size() > 0 ) { tmp = m_evenements[0]; m_evenements.erase(m_evenements.begin()); return tmp; } else { tmp.set_id(0); tmp.set_type(AUCUN); return tmp; } }
void MainWindow::exportXML(Projet* p) { vector<Evenement*> events; if (p) { qDebug()<<"Export depuis un projet"; events = em->getFromProjet(p); } else events = em->getFromPeriod(this->current_debut,this->current_fin); QString filename = QFileDialog::getSaveFileName(this,"Exporter la semaine en XML",QDir::homePath(), "XML files (*.xml)"); if (filename != "") { QFile newfile(filename); if (!newfile.open(QIODevice::WriteOnly | QIODevice::Text)) { showError("Project Calendar", "Impossible d'ouvrir le fichier de destination"); return; } QXmlStreamWriter stream(&newfile); stream.setAutoFormatting(true); stream.writeStartDocument(); stream.writeStartElement("evenements"); for (vector<Evenement*>::const_iterator it = events.begin(); it != events.end(); ++it){ Evenement* ev = *it; stream.writeStartElement("evenement"); stream.writeAttribute("id", (QString::number(ev->getId()))); stream.writeTextElement("titre",ev->getTitre()); stream.writeTextElement("description",ev->getDescription()); stream.writeTextElement("lieu",ev->getLieu()); stream.writeStartElement("debut"); stream.writeTextElement("jour",ev->getDateDebut().toString("yyyy-MM-dd")); stream.writeTextElement("heure",ev->getHeureDebut().toString("hh:mm")); stream.writeEndElement(); stream.writeStartElement("fin"); stream.writeTextElement("jour",ev->getDateFin().toString("yyyy-MM-dd")); stream.writeTextElement("heure",ev->getHeureFin().toString("hh:mm")); stream.writeEndElement(); stream.writeEndElement(); } stream.writeEndElement(); stream.writeEndDocument(); newfile.close(); QMessageBox::information(this, "Project Calendar", "Exporté !"); } else showError("Project Calendar", "Opération annulée"); }
void MainWindow::displayEvents(QDate debut, QDate fin) { this->current_debut = debut; this->current_fin = fin; QColor color(130,130,255); agenda_widget->clearContents(); if (this->em) { qDebug()<<"Mise à jour des events de la vue de la fenêtre principale"; vector<Evenement*> v = em->getFromPeriod(debut,fin); Evenement* ev; for (vector<Evenement*>::const_iterator it = v.begin(); it != v.end(); ++it) { color.setRgb(((color.red()+rand())%150)+106,((color.green()+rand())%150)+106,((color.blue()+rand())%150)+106); // que des couleurs claires ev = *it; int start_colonne = debut.daysTo(ev->getDateDebut()); int end_colonne = debut.daysTo(ev->getDateFin()); int start_ligne = ev->getHeureDebut().hour(); int end_ligne = ev->getHeureFin().hour()-1; int i = start_colonne>=0?start_colonne:0; int i_end = end_colonne<=6?end_colonne:agenda_widget->columnCount()-1; int j = start_colonne>=0?start_ligne:0; int j_end = end_colonne<=6?end_ligne:agenda_widget->rowCount()-1; int k = j; for (i;i<=i_end;i++) { for (k; k<agenda_widget->rowCount()&&(i!=i_end||k<=j_end); k++) { //qDebug()<<"i:"<<i<<"\t k:"<<k; QTableWidgetItem* item; if ((item = agenda_widget->item(k,i)) == nullptr) { agenda_widget->setItem(k,i, new QTableWidgetItem(ev->getTitre())); agenda_widget->item(k,i)->setBackgroundColor(color); //agenda_widget->item(k,i)->setFlags(agenda_widget->item(k,i)->flags() ^ Qt::ItemIsEditable); } else { item->setText(item->text()+" ; "+ev->getTitre()); QColor tmp = item->backgroundColor(); tmp.setRgb((tmp.red()+color.red())/2,(tmp.green()+color.green())/2,(tmp.blue()+color.blue())/2); item->setBackgroundColor(tmp); } } k = 0; } } } }
bool operator ==(const Evenement& e1, const Evenement& e2){ return(e1.getDate()==e2.getDate() && e1.getEcheance()==e2.getEcheance() && e1.getId()==e2.getId() && e1.getTitre()==e2.getTitre()); }
void Capteur::Inserer( Evenement& unEvenement ) // Algorithme : { // Variables permettant de positionner l'insertion Vecteur<Evenement>* jour = nullptr; int * caseResume = nullptr; // Détermination du jour de la semaine switch ( unEvenement.GetD7() ) { case 1: jour = &d1Contenu; caseResume = d1Resume; break; case 2: jour = &d2Contenu; caseResume = d2Resume; break; case 3: jour = &d3Contenu; caseResume = d3Resume; break; case 4: jour = &d4Contenu; caseResume = d4Resume; break; case 5: jour = &d5Contenu; caseResume = d5Resume; break; case 6: jour = &d6Contenu; caseResume = d6Resume; break; case 7: jour = &d7Contenu; caseResume = d7Resume; break; default: // Erreur d'insertion break; } //----- Fin de switch ( unEvenement.GetD7() ) // Incrémentation de la bonne case de trafic switch ( unEvenement.GetTrafic() ) { case V: caseResume[0]++; break; case J: caseResume[1]++; break; case R: caseResume[2]++; break; default: // case N: caseResume[3]++; break; } //----- Fin de switch ( unEvenement.GetTrafic() ) // Insertion dans le vecteur et incrementation du nombre total d'évènements jour->insererFin( unEvenement ); caseResume[4]++; } //----- Fin de Inserer
Programmation::~Programmation() { Evenement * e = const_cast<Evenement *> (evenement); e->suppressionProgrammation(); }
int Pret::calculerEcheancier() { double capitalRestantDu = this->capitalEmprunte; double capitalRembourse, interets = 0, mensualiteEcheance = this->mensualite; double assurance = getCoutMensuelAssurance(); QDate dateMensualite = this->dateDebloquage; bool evenementTraite = true; // Créer l'échéancier int echeancierId = creerEcheancier("Echéancier prêt", QDate::currentDate(), 1); std::cout << "Echeancier id : " << echeancierId << "\n"; if (echeancierId != -1) { // Récupérer les événements relatifs au prêt QList<Evenement> evts = getEvenements(this->id); QListIterator<Evenement> evtsIterator(evts); std::cout << "evts size = " << evts.count() << std::endl; Evenement event; // Calculer les échéances while (capitalRestantDu > 0) { if ( !evenementTraite || (evenementTraite && evtsIterator.hasNext()) ) { // Si evenement traité, passer au suivant if ( evenementTraite ) { event = evtsIterator.next(); evenementTraite = false; } // Si la date de mensualité est antérieure à la date de l'évènement, rien à faire : on attend l'échéance suivante. if (dateMensualite >= event.getDate()) { std::cout << "evenement a traiter : " << event.getType() << " " << event.getDate().toString().toStdString() << std::endl; switch(event.getType()) { case Evenement::DIFFERE_TOTAL : std::cout << "differe total" << std::endl; for (int nbReports = event.getValeur(); nbReports > 0; nbReports--) { // capital restant du est augmenté des frais intercalaires générés par le différé total capitalRestantDu += calculerInteretsMensuels(capitalRestantDu, this->tauxInteret); // mensualite = assurance ajouterEcheance(echeancierId, dateMensualite, capitalRestantDu, assurance, 0, interets, assurance); dateMensualite = dateMensualite.addMonths(1); } break; case Evenement::DIFFERE_PARTIEL : std::cout << "differe partiel" << std::endl; interets = calculerInteretsMensuels(capitalRestantDu, this->tauxInteret); for (int nbReports = event.getValeur(); nbReports > 0; nbReports--) { // mensualite = cout des frais intercalaires + assurance ajouterEcheance(echeancierId, dateMensualite, capitalRestantDu, interets + assurance, 0, interets, assurance); dateMensualite = dateMensualite.addMonths(1); } break; case Evenement::MAJ_MENSUALITE : std::cout << "maj mensualite" << std::endl; mensualiteEcheance = event.getValeur() - getCoutMensuelAssurance(); this->duree = calculerDureeRemboursement(mensualiteEcheance); break; case Evenement::MAJ_TAUX : std::cout << "maj taux" << std::endl; break; case Evenement::RBT_ANTICIPE : std::cout << "rbt anticipe" << std::endl; capitalRestantDu -= event.getValeur(); break; case Evenement::REPORT_MENSUALITE : // utile? utiliser report partiel/total? std::cout << "report mensualite" << std::endl; break; } evenementTraite = true; } } interets = calculerInteretsMensuels(capitalRestantDu, this->tauxInteret); if ( (capitalRestantDu+interets) >= mensualiteEcheance) { capitalRembourse = mensualiteEcheance - interets; } else { capitalRembourse = capitalRestantDu; mensualiteEcheance = capitalRestantDu+interets; } capitalRestantDu -= capitalRembourse; ajouterEcheance(echeancierId, dateMensualite, capitalRestantDu, mensualiteEcheance + assurance, capitalRembourse, interets, assurance); dateMensualite = dateMensualite.addMonths(1); } } // std::cout.flush(); return echeancierId; }