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
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;
}