From c4688d7aec04e7b80f0b1a55ee2fab5fad1a0aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Helge=20Nordg=C3=A5rd?= Date: Sat, 25 Sep 2021 16:35:02 +0200 Subject: [PATCH] Implementerte lagre som #11 og fikset bug #19 --- src/core/mainwindow.cpp | 78 +++++++++++++++++++++++++++++++---------- src/core/mainwindow.h | 1 + 2 files changed, 61 insertions(+), 18 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index fc345c4..abb72c3 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -32,8 +32,9 @@ MainWindow::~MainWindow() { */ void MainWindow::on_actionNy_triggered() { + QString stdSted = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); // konstruer stien ved hjelp av QFileDialog - filSti = QFileDialog::getSaveFileName(this, "Opprett ny databasefil", "/", "Database fil (*.saeter)"); + filSti = QFileDialog::getSaveFileName(this, "Opprett ny databasefil", stdSted, "Database fil (*.saeter)"); // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen if (!filSti.isEmpty()) { if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) { @@ -71,8 +72,9 @@ void MainWindow::on_actionNy_triggered() { */ void MainWindow::on_action_pne_triggered() { + QString stdSted = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); // konstruer stien ved hjelp av QFileDialog - filSti = QFileDialog::getOpenFileName(this, "Åpne databasefil", "/", "Database fil (*.saeter)"); + filSti = QFileDialog::getOpenFileName(this, "Åpne databasefil", stdSted, "Database fil (*.saeter)"); if (!filSti.isEmpty()) { // invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger @@ -127,6 +129,62 @@ void MainWindow::on_action_pne_triggered() { } } +/* on_actionLagre_triggered(): + * ------------------------------ + * + * Lagrer endringer i databasen til fil + */ + +void MainWindow::on_actionLagre_triggered() { + // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger + ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger); + // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet + harFil = true; + filLagret = true; + oppdaterTittel(); + oppdaterUI(); +} + +/* on_actionL_agre_som_triggered(): + * -------------------------------- + * + * Lagrer en kopi av databasefilen + */ + +void MainWindow::on_actionL_agre_som_triggered() { + QString stdSted = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); + // konstruer stien ved hjelp av QFileDialog + filSti = QFileDialog::getSaveFileName(this, "Lagre gjeldende database med nytt navn", stdSted, "Database fil (*.saeter)"); + // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen + 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(); + } + } +} + /* oppdaterTittel(): * ------------------------ * @@ -719,22 +777,6 @@ void MainWindow::knyttProsjekt(int kunde, int prosjekt) { QMessageBox::information(this, "Tilknyttet", tr("Kunde med kundenummer %1 er tilknyttet prosjekt med ordrenummer %2").arg(kunde).arg(prosjekt)); } -/* on_actionLagre_triggered(): - * ------------------------------ - * - * Lagrer endringer i databasen til fil - */ - -void MainWindow::on_actionLagre_triggered() { - // invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger - ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger); - // Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet - harFil = true; - filLagret = true; - oppdaterTittel(); - oppdaterUI(); -} - /* on_action_Innstillinger_triggered(): * -------------------------------------- * diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index eedc702..d2e50d2 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -36,6 +36,7 @@ private slots: void on_actionNy_triggered(); void on_action_pne_triggered(); void on_action_Avslutt_triggered(); + void on_actionL_agre_som_triggered(); void on_actionLagre_triggered(); void on_action_Innstillinger_triggered(); void barnDialogLukket();