Implementerte filhistorikk #4
This commit is contained in:
parent
c4688d7aec
commit
8214ba0056
|
|
@ -15,6 +15,12 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
oppdaterUI();
|
oppdaterUI();
|
||||||
filLagret = true;
|
filLagret = true;
|
||||||
|
|
||||||
|
QCoreApplication::setOrganizationName("Arctic Software");
|
||||||
|
QCoreApplication::setOrganizationDomain("arcticsoftware.no");
|
||||||
|
QCoreApplication::setApplicationName("Saeterprosjekt");
|
||||||
|
|
||||||
|
konstruerHistorikk();
|
||||||
|
|
||||||
innstillingDlg = new InnstillingDialog(this);
|
innstillingDlg = new InnstillingDialog(this);
|
||||||
connect(innstillingDlg, SIGNAL(rejected()), this, SLOT(barnDialogLukket()));
|
connect(innstillingDlg, SIGNAL(rejected()), this, SLOT(barnDialogLukket()));
|
||||||
|
|
||||||
|
|
@ -52,6 +58,7 @@ void MainWindow::on_actionNy_triggered() {
|
||||||
filLagret = true;
|
filLagret = true;
|
||||||
oppdaterTittel();
|
oppdaterTittel();
|
||||||
oppdaterUI();
|
oppdaterUI();
|
||||||
|
leggFilbaneTilHistorikk(filSti);
|
||||||
|
|
||||||
delete hest;
|
delete hest;
|
||||||
hest = new ArbeidsHest(this);
|
hest = new ArbeidsHest(this);
|
||||||
|
|
@ -113,6 +120,8 @@ void MainWindow::on_action_pne_triggered() {
|
||||||
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart);
|
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
leggFilbaneTilHistorikk(filSti);
|
||||||
|
|
||||||
delete hest;
|
delete hest;
|
||||||
hest = new ArbeidsHest(this);
|
hest = new ArbeidsHest(this);
|
||||||
|
|
||||||
|
|
@ -217,6 +226,33 @@ void MainWindow::oppdaterUI() {
|
||||||
ui->actionLagre->setEnabled(harFil);
|
ui->actionLagre->setEnabled(harFil);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* oppdaterTellere():
|
||||||
|
* ------------------------
|
||||||
|
*
|
||||||
|
* Fyller historikk menyen med de siste åpnede filene
|
||||||
|
*/
|
||||||
|
|
||||||
|
void MainWindow::konstruerHistorikk() {
|
||||||
|
QSettings settings;
|
||||||
|
qRegisterMetaTypeStreamOperators<QList<QString> >("QList<QString>");
|
||||||
|
|
||||||
|
QList<QString> filHistorikkListe = settings.value("filhistorikk").value<QList<QString>>();
|
||||||
|
if (filHistorikkListe.isEmpty()) {
|
||||||
|
QAction *tomListe = new QAction("Ingen filer i historikk", this);
|
||||||
|
ui->menuH_istorikk->addAction(tomListe);
|
||||||
|
tomListe->setEnabled(false);
|
||||||
|
} else {
|
||||||
|
ui->menuH_istorikk->clear();
|
||||||
|
for (int i = 0; i < filHistorikkListe.size(); ++i) {
|
||||||
|
QAction *historikkAction = new QAction(filHistorikkListe.at(i), this);
|
||||||
|
connect(historikkAction, &QAction::triggered, this, [=]() {
|
||||||
|
lastDatabaseFil(filHistorikkListe.at(i));
|
||||||
|
});
|
||||||
|
ui->menuH_istorikk->addAction(historikkAction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* oppdaterTellere():
|
/* oppdaterTellere():
|
||||||
* ------------------------
|
* ------------------------
|
||||||
*
|
*
|
||||||
|
|
@ -262,6 +298,95 @@ void MainWindow::erstattProsjekt(ProsjektFil prosjekt) {
|
||||||
oppdaterTittel();
|
oppdaterTittel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* leggFilbaneTilHistorikk():
|
||||||
|
* --------------------------
|
||||||
|
*
|
||||||
|
* Legger ny filbane inn i historikken
|
||||||
|
*/
|
||||||
|
|
||||||
|
void MainWindow::leggFilbaneTilHistorikk(QString filBane) {
|
||||||
|
QSettings settings;
|
||||||
|
qRegisterMetaTypeStreamOperators<QList<QString> >("QList<QString>");
|
||||||
|
|
||||||
|
QList<QString> filHistorikkListe = settings.value("filhistorikk").value<QList<QString>>();
|
||||||
|
|
||||||
|
if (filHistorikkListe.contains(filBane)) {
|
||||||
|
filHistorikkListe.removeOne(filBane);
|
||||||
|
filHistorikkListe.prepend(filBane);
|
||||||
|
settings.setValue("filhistorikk",QVariant::fromValue(filHistorikkListe));
|
||||||
|
} else {
|
||||||
|
if (filHistorikkListe.size() > 9)
|
||||||
|
filHistorikkListe.removeLast();
|
||||||
|
|
||||||
|
filHistorikkListe.prepend(filBane);
|
||||||
|
settings.setValue("filhistorikk",QVariant::fromValue(filHistorikkListe));
|
||||||
|
}
|
||||||
|
|
||||||
|
konstruerHistorikk();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* lastDatabaseFil(QString):
|
||||||
|
* --------------------------
|
||||||
|
*
|
||||||
|
* Åpner en database med stien fil
|
||||||
|
*/
|
||||||
|
|
||||||
|
void MainWindow::lastDatabaseFil(QString fil) {
|
||||||
|
filSti = fil;
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
leggFilbaneTilHistorikk(filSti);
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
/* tellKunder():
|
/* tellKunder():
|
||||||
* ------------------------
|
* ------------------------
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,11 @@
|
||||||
#define MAINWINDOW_H
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QSettings>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
#include "kundewidget.h"
|
#include "kundewidget.h"
|
||||||
#include "prosjektwidget.h"
|
#include "prosjektwidget.h"
|
||||||
|
|
@ -23,6 +25,8 @@ QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class MainWindow; }
|
namespace Ui { class MainWindow; }
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(QList<QString>)
|
||||||
|
|
||||||
class MainWindow : public QMainWindow
|
class MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -83,9 +87,12 @@ private:
|
||||||
|
|
||||||
void oppdaterTittel();
|
void oppdaterTittel();
|
||||||
void oppdaterUI();
|
void oppdaterUI();
|
||||||
|
void konstruerHistorikk();
|
||||||
void oppdaterTellere();
|
void oppdaterTellere();
|
||||||
void slettKundeFraKartotek(int kundeNummer);
|
void slettKundeFraKartotek(int kundeNummer);
|
||||||
void erstattProsjekt(ProsjektFil prosjekt);
|
void erstattProsjekt(ProsjektFil prosjekt);
|
||||||
|
void leggFilbaneTilHistorikk(QString filBane);
|
||||||
|
void lastDatabaseFil(QString fil);
|
||||||
int tellKunder();
|
int tellKunder();
|
||||||
int tellProsjekter();
|
int tellProsjekter();
|
||||||
int hentKundeIndeksPosisjon(int kundeNummer);
|
int hentKundeIndeksPosisjon(int kundeNummer);
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,13 @@
|
||||||
</property>
|
</property>
|
||||||
<addaction name="actionOm"/>
|
<addaction name="actionOm"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QMenu" name="menuH_istorikk">
|
||||||
|
<property name="title">
|
||||||
|
<string>H&istorikk</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
<addaction name="menu_Fil"/>
|
<addaction name="menu_Fil"/>
|
||||||
|
<addaction name="menuH_istorikk"/>
|
||||||
<addaction name="menuOm"/>
|
<addaction name="menuOm"/>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user