Esempio n. 1
0
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;
   }
}
Esempio n. 2
0
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");
}
Esempio n. 3
0
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;
            }
        }
    }

}
Esempio n. 4
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());
}
Esempio n. 5
0
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
Esempio n. 6
0
Programmation::~Programmation()
{
   Evenement * e = const_cast<Evenement *> (evenement);
   e->suppressionProgrammation();
}
Esempio n. 7
0
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;
}