Fikset bug #12

This commit is contained in:
Helge-Mikael Nordgård 2021-09-25 15:56:55 +02:00
parent aeb6a5d9c7
commit 1e3c342693

View File

@ -35,30 +35,32 @@ void MainWindow::on_actionNy_triggered() {
// konstruer stien ved hjelp av QFileDialog // konstruer stien ved hjelp av QFileDialog
filSti = QFileDialog::getSaveFileName(this, "Opprett ny databasefil", "/", "Database fil (*.saeter)"); 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 // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen
if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) { if (!filSti.isEmpty()) {
ErrorCodes error = ioHandler->getError(); if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) {
switch (error) { ErrorCodes error = ioHandler->getError();
case ErrorCodes::SKRIVEFEIL: switch (error) {
QMessageBox::critical(this, "Feil oppstod", "Kan ikke opprette databasefilen. Kontroller at du har skriverettigheter der du har oppgitt stedet på harddisken."); case ErrorCodes::SKRIVEFEIL:
break; QMessageBox::critical(this, "Feil oppstod", "Kan ikke opprette databasefilen. Kontroller at du har skriverettigheter der du har oppgitt stedet på harddisken.");
default: break;
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() { void MainWindow::on_action_pne_triggered() {
// konstruer stien ved hjelp av QFileDialog // konstruer stien ved hjelp av QFileDialog
filSti = QFileDialog::getOpenFileName(this, "Åpne databasefil", "/", "Database fil (*.saeter)"); 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)) { if (!filSti.isEmpty()) {
ErrorCodes error = ioHandler->getError(); // invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger
switch (error) { if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger)) {
case ErrorCodes::UGYLDIG_FIL: ErrorCodes error = ioHandler->getError();
QMessageBox::critical(this, "Feil oppstod", "Dette ser ikke ut til å være en gyldig sæterprosjekt databasefil"); switch (error) {
break; case ErrorCodes::UGYLDIG_FIL:
case ErrorCodes::APP_VERSJONSKONFLIKT: QMessageBox::critical(this, "Feil oppstod", "Dette ser ikke ut til å være en gyldig sæterprosjekt databasefil");
QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i programmet. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen"); break;
break; case ErrorCodes::APP_VERSJONSKONFLIKT:
case ErrorCodes::DB_VERSJONSKONFLIKT: QMessageBox::critical(this, "Feil oppstod", "Versjonskonflikt i programmet. Sjekk hjemmesiden for programvareoppdateringer før du prøver å åpne denne filen");
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;
break; case ErrorCodes::DB_VERSJONSKONFLIKT:
case ErrorCodes::LESEFEIL: 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");
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;
break; case ErrorCodes::LESEFEIL:
default: 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; 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; // oppdater grensesnittet basert på de boolske verdiene i klassen
filLagret = false; oppdaterTittel();
} else { // hvis databasefilen kan åpnes, er alt fryd og gammen. Hvis ikke kan ikke denne filen brukes oppdaterUI();
// 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();
} }
/* oppdaterTittel(): /* oppdaterTittel():
@ -244,10 +249,13 @@ int MainWindow::tellProsjekter() {
*/ */
int MainWindow::hentKundeIndeksPosisjon(int kundeNummer) { int MainWindow::hentKundeIndeksPosisjon(int kundeNummer) {
int indeks = 0;
for (int i = 0; i < kundeKart.size(); ++i) { for (int i = 0; i < kundeKart.size(); ++i) {
if (kundeKart.at(i).value("id").toInt() == kundeNummer) if (kundeKart.at(i).value("id").toInt() == kundeNummer)
return i; indeks = i;
} }
return indeks;
} }