121 lines
3.9 KiB
C++
121 lines
3.9 KiB
C++
/***************************************************************************
|
|
|
|
libMiniCash
|
|
Copyright © 2013-2022 christoph holzheuer
|
|
c.holzheuer@sourceworx.org
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
#ifndef MCMAINWINDOWBASE_H
|
|
#define MCMAINWINDOWBASE_H
|
|
|
|
#include <QMainWindow>
|
|
#include <QSettings>
|
|
|
|
#include <libMiniCash.h>
|
|
#include <mcsalesmodel.h>
|
|
#include <mcinputview.h>
|
|
|
|
|
|
/**
|
|
* @brief Dient als abstrakte MainWindow-Basisklasse für Projekte,
|
|
* die auf libMiniCash aufbauen.
|
|
*
|
|
* Die MCMainWindowBase-Klasse ist die Hauptklasse der libMiniCash-Library und dient als
|
|
* abstrakte Basisklasse der jeweiligen MainWindows in den Projekten, die auf libMiniCash aufbauen.
|
|
*
|
|
* Die Benutzeroberlfläche wird hier _nicht_ implementiert, sondern nur die Infrastruktur zum
|
|
*
|
|
* - Eingeben
|
|
* - Bearbeiten
|
|
* - sowie Speichern
|
|
*
|
|
* von Verkaufsdaten. Funktionen, die direkt mit der Nutzeroberfläche interagieren, werden
|
|
* daher in den Subklassen implemntiert.
|
|
|
|
* Die dazu verwendeten Klassen werden auch in dieser Bibliothek definiert:
|
|
*
|
|
* - @see mcsalesitem
|
|
* - @see mcsalesitemmap
|
|
* - @see mcsalesmodel
|
|
* - @see mcsalessummary
|
|
*
|
|
* Weiterhing enthält MCMainWindowBase die Implementierung der SLOTS für Servicefunktionalität der
|
|
* Benutzeroberfläche.
|
|
*
|
|
*/
|
|
|
|
class LIBMINICASH_EXPORT MCMainWindowBase : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
explicit MCMainWindowBase( QWidget* parent = nullptr );
|
|
virtual ~MCMainWindowBase();
|
|
|
|
QString transCount();
|
|
|
|
signals:
|
|
|
|
void fileError();
|
|
void transactionCreated( const QString& transaction ); /// Einkaufstransaktion beenden, senden
|
|
|
|
protected:
|
|
|
|
QString fetchSetting( const QString& key ); /// Hilfsfunktion: Dateipfad erzeugen
|
|
bool showFileError( const QString& filename, const QString& errormsg ); /// Hilfsfunktion: Fehlermeldung anzeigen
|
|
|
|
void setupDefaults(); /// Init-Funktion, wird beim Programmstart aufgerufen
|
|
bool setupDataFile(); /// Arbeitsdateien erzeugen bzw. öffnen
|
|
|
|
QString saveTransactionToString();
|
|
bool saveTransactionToFile( const QString& filename, const QString& transaction ); /// Einkaufstransaktion beenden, auf platte oder ins netz schreiben schreiben
|
|
|
|
protected slots:
|
|
|
|
virtual void onSetup() = 0;
|
|
virtual void onEditTransactions() = 0; /// Kassendatei durchsuchen und editieren
|
|
virtual bool onSaveTransaction(); /// Kundentransaktion beenden, auf platte schreiben
|
|
virtual void onCopyTransactions(); /// Alle Transaktionen zur Auswertung von Disk auf Stick kopieren
|
|
virtual void onStartBilling() = 0; /// Kassieren beenden und Abrechnungsmodus starten
|
|
virtual void onExit(); /// Programm beenden
|
|
virtual void onExitConfirmed(); /// Programm beenden, mit Bestätigung
|
|
virtual void onHelpAbout() = 0; /// rumbalotte
|
|
virtual void onHelpManual(); /// Hilfe anzeigen
|
|
|
|
protected:
|
|
|
|
int _transCount = -10; /// Anzahl der Transaktionen (== Verkäufe) ingesamt bisher
|
|
int _newTransCount = 0; /// Anzahl der Transaktionen (== Verkäufe) seit dem Programmstart
|
|
|
|
MCSalesModel _salesModel; /// StandardItemModel, speichert Verkaufsdaten und zeigt sie an.
|
|
QString _dataFileName; /// Name der Transaktionsdatei _ohne_ Laufwerk: 02-15-2013.klm
|
|
QString _dataFilePath; /// Pfad der Transaktionsdatei _ohne_ Laufwerk: 02-15-2013.klm
|
|
MCInputView* _inputViewProxy = nullptr; /// Platzhalter für die InputView, die in den subclasses implementiert wird.
|
|
QSettings _mainSettings; /// Persistente Einstellungen
|
|
|
|
};
|
|
|
|
#endif // MCMAINWINDOWBASE_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|