Implementerte filhistorikk #4
This commit is contained in:
parent
c4688d7aec
commit
8214ba0056
|
|
@ -15,6 +15,12 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
oppdaterUI();
|
||||
filLagret = true;
|
||||
|
||||
QCoreApplication::setOrganizationName("Arctic Software");
|
||||
QCoreApplication::setOrganizationDomain("arcticsoftware.no");
|
||||
QCoreApplication::setApplicationName("Saeterprosjekt");
|
||||
|
||||
konstruerHistorikk();
|
||||
|
||||
innstillingDlg = new InnstillingDialog(this);
|
||||
connect(innstillingDlg, SIGNAL(rejected()), this, SLOT(barnDialogLukket()));
|
||||
|
||||
|
|
@ -52,6 +58,7 @@ void MainWindow::on_actionNy_triggered() {
|
|||
filLagret = true;
|
||||
oppdaterTittel();
|
||||
oppdaterUI();
|
||||
leggFilbaneTilHistorikk(filSti);
|
||||
|
||||
delete hest;
|
||||
hest = new ArbeidsHest(this);
|
||||
|
|
@ -113,6 +120,8 @@ void MainWindow::on_action_pne_triggered() {
|
|||
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart);
|
||||
}
|
||||
|
||||
leggFilbaneTilHistorikk(filSti);
|
||||
|
||||
delete hest;
|
||||
hest = new ArbeidsHest(this);
|
||||
|
||||
|
|
@ -217,6 +226,33 @@ void MainWindow::oppdaterUI() {
|
|||
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():
|
||||
* ------------------------
|
||||
*
|
||||
|
|
@ -262,6 +298,95 @@ void MainWindow::erstattProsjekt(ProsjektFil prosjekt) {
|
|||
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():
|
||||
* ------------------------
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@
|
|||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QSettings>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QCloseEvent>
|
||||
#include <QAction>
|
||||
|
||||
#include "kundewidget.h"
|
||||
#include "prosjektwidget.h"
|
||||
|
|
@ -23,6 +25,8 @@ QT_BEGIN_NAMESPACE
|
|||
namespace Ui { class MainWindow; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
Q_DECLARE_METATYPE(QList<QString>)
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
@ -83,9 +87,12 @@ private:
|
|||
|
||||
void oppdaterTittel();
|
||||
void oppdaterUI();
|
||||
void konstruerHistorikk();
|
||||
void oppdaterTellere();
|
||||
void slettKundeFraKartotek(int kundeNummer);
|
||||
void erstattProsjekt(ProsjektFil prosjekt);
|
||||
void leggFilbaneTilHistorikk(QString filBane);
|
||||
void lastDatabaseFil(QString fil);
|
||||
int tellKunder();
|
||||
int tellProsjekter();
|
||||
int hentKundeIndeksPosisjon(int kundeNummer);
|
||||
|
|
|
|||
|
|
@ -214,7 +214,13 @@
|
|||
</property>
|
||||
<addaction name="actionOm"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuH_istorikk">
|
||||
<property name="title">
|
||||
<string>H&istorikk</string>
|
||||
</property>
|
||||
</widget>
|
||||
<addaction name="menu_Fil"/>
|
||||
<addaction name="menuH_istorikk"/>
|
||||
<addaction name="menuOm"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user