/*************************************************************************** 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 #include #include #include #include /** * @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