first re-commit.

This commit is contained in:
2025-08-05 22:37:51 +02:00
commit 5295a82aa3
109 changed files with 9928 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
/***************************************************************************
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