From 1e3c342693bc8b888bd34f72c5d5de4b9389f78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Helge=20Nordg=C3=A5rd?= Date: Sat, 25 Sep 2021 15:56:55 +0200 Subject: [PATCH] Fikset bug #12 --- src/core/mainwindow.cpp | 148 +++++++++++++++++++++------------------- 1 file changed, 78 insertions(+), 70 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 8feab3f..fc345c4 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -35,30 +35,32 @@ void MainWindow::on_actionNy_triggered() { // konstruer stien ved hjelp av QFileDialog filSti = QFileDialog::getSaveFileName(this, "Opprett ny databasefil", "/", "Database fil (*.saeter)"); // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen - if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) { - ErrorCodes error = ioHandler->getError(); - switch (error) { - case ErrorCodes::SKRIVEFEIL: - QMessageBox::critical(this, "Feil oppstod", "Kan ikke opprette databasefilen. Kontroller at du har skriverettigheter der du har oppgitt stedet på harddisken."); - break; - default: - break; + if (!filSti.isEmpty()) { + if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) { + ErrorCodes error = ioHandler->getError(); + switch (error) { + case ErrorCodes::SKRIVEFEIL: + QMessageBox::critical(this, "Feil oppstod", "Kan ikke opprette databasefilen. Kontroller at du har skriverettigheter der du har oppgitt stedet på harddisken."); + break; + default: + break; + } + } else { + // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet + harFil = true; + filLagret = true; + oppdaterTittel(); + oppdaterUI(); + + delete hest; + hest = new ArbeidsHest(this); + + connect(hest, SIGNAL(alert(ProsjektFil,AlertConditions)), this, SLOT(varsle(ProsjektFil,AlertCondition))); + + hest->setTidTaging(1000); + hest->settProsjekt(prosjektKart); + hest->run(); } - } else { - // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet - harFil = true; - filLagret = true; - oppdaterTittel(); - oppdaterUI(); - - delete hest; - hest = new ArbeidsHest(this); - - connect(hest, SIGNAL(alert(ProsjektFil,AlertConditions)), this, SLOT(varsle(ProsjektFil,AlertCondition))); - - hest->setTidTaging(1000); - hest->settProsjekt(prosjektKart); - hest->run(); } } @@ -71,55 +73,58 @@ void MainWindow::on_actionNy_triggered() { void MainWindow::on_action_pne_triggered() { // konstruer stien ved hjelp av QFileDialog filSti = QFileDialog::getOpenFileName(this, "Åpne databasefil", "/", "Database fil (*.saeter)"); - // invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger - if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger)) { - ErrorCodes error = ioHandler->getError(); - switch (error) { - case ErrorCodes::UGYLDIG_FIL: - QMessageBox::critical(this, "Feil oppstod", "Dette ser ikke ut til å være en gyldig sæterprosjekt databasefil"); - break; - case ErrorCodes::APP_VERSJONSKONFLIKT: - QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i programmet. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen"); - break; - case ErrorCodes::DB_VERSJONSKONFLIKT: - QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i databasefilen. Filen du prøver å åpne er enten en eldre eller nyere versjon av hva programmet er skrevet for å håndtere. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen"); - break; - case ErrorCodes::LESEFEIL: - QMessageBox::critical(this, "Feil oppstod", "Kunne ikke lese fra disken. Sjekk at du har de nødvenige rettighetene til katalogen og/eller filen før du åpner databasen"); - break; - default: - break; + + if (!filSti.isEmpty()) { + // invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger + if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger)) { + ErrorCodes error = ioHandler->getError(); + switch (error) { + case ErrorCodes::UGYLDIG_FIL: + QMessageBox::critical(this, "Feil oppstod", "Dette ser ikke ut til å være en gyldig sæterprosjekt databasefil"); + break; + case ErrorCodes::APP_VERSJONSKONFLIKT: + QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i programmet. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen"); + break; + case ErrorCodes::DB_VERSJONSKONFLIKT: + QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i databasefilen. Filen du prøver å åpne er enten en eldre eller nyere versjon av hva programmet er skrevet for å håndtere. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen"); + break; + case ErrorCodes::LESEFEIL: + QMessageBox::critical(this, "Feil oppstod", "Kunne ikke lese fra disken. Sjekk at du har de nødvenige rettighetene til katalogen og/eller filen før du åpner databasen"); + break; + default: + break; + } + + harFil = false; + filLagret = false; + } else { // hvis databasefilen kan åpnes, er alt fryd og gammen. Hvis ikke kan ikke denne filen brukes + // oppdater grensesnittet med antall kunder og prosjekter som er lagret i filen + oppdaterTellere(); + // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet + harFil = true; + filLagret = true; + + // Sjekk om kundekartoteket allerede er åpnet, hvis ikke trenger vi ikke å foreta oss noe. Hvis den er åpen må vi oppdatere tabellen + if (kListe) { + kundeW->lagKundeTabell(kundeKart); + } else if (pListe) { // Hvis prosjektkartoteket er åpen, oppdater dette grensesnittet + prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart); + } + + delete hest; + hest = new ArbeidsHest(this); + + connect(hest, SIGNAL(alert(ProsjektFil,AlertConditions)), this, SLOT(varsle(ProsjektFil,AlertConditions))); + + hest->setTidTaging(1000); + hest->settProsjekt(prosjektKart); + hest->run(); } - harFil = false; - filLagret = false; - } else { // hvis databasefilen kan åpnes, er alt fryd og gammen. Hvis ikke kan ikke denne filen brukes - // oppdater grensesnittet med antall kunder og prosjekter som er lagret i filen - oppdaterTellere(); - // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet - harFil = true; - filLagret = true; - - // Sjekk om kundekartoteket allerede er åpnet, hvis ikke trenger vi ikke å foreta oss noe. Hvis den er åpen må vi oppdatere tabellen - if (kListe) { - kundeW->lagKundeTabell(kundeKart); - } else if (pListe) { // Hvis prosjektkartoteket er åpen, oppdater dette grensesnittet - prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart); - } - - delete hest; - hest = new ArbeidsHest(this); - - connect(hest, SIGNAL(alert(ProsjektFil,AlertConditions)), this, SLOT(varsle(ProsjektFil,AlertConditions))); - - hest->setTidTaging(1000); - hest->settProsjekt(prosjektKart); - hest->run(); + // oppdater grensesnittet basert på de boolske verdiene i klassen + oppdaterTittel(); + oppdaterUI(); } - - // oppdater grensesnittet basert på de boolske verdiene i klassen - oppdaterTittel(); - oppdaterUI(); } /* oppdaterTittel(): @@ -244,10 +249,13 @@ int MainWindow::tellProsjekter() { */ int MainWindow::hentKundeIndeksPosisjon(int kundeNummer) { + int indeks = 0; for (int i = 0; i < kundeKart.size(); ++i) { if (kundeKart.at(i).value("id").toInt() == kundeNummer) - return i; + indeks = i; } + + return indeks; }