243 lines
7.5 KiB
C++
243 lines
7.5 KiB
C++
#ifndef APPCONTROL_H
|
|
#define APPCONTROL_H
|
|
|
|
#include <QObject>
|
|
|
|
#include "version.h"
|
|
#include "atb_system.h"
|
|
#include "ATBAPP.h"
|
|
#include "plugins/PluginManager.h"
|
|
#include "plugins/CC/CCInterface.h"
|
|
#include "plugins/CalculatePrice/CalculatePriceInterface.h"
|
|
|
|
#include "support/VendingData.h"
|
|
#include "CalculatePrice/CalculatePriceDefault.h"
|
|
|
|
class VMC;
|
|
class ATBHMIconfig;
|
|
class VendingData;
|
|
class QTimer;
|
|
|
|
class AppControl : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
explicit AppControl(QObject *parent = nullptr);
|
|
|
|
PROGRAM_MODE getCurrentProgramMode();
|
|
bool requestProgramMode(PROGRAM_MODE newProgramMode);
|
|
|
|
bool isProgramModeSELL();
|
|
bool isProgramModeSELL_ENABLE();
|
|
bool isProgramModeSERVICE();
|
|
bool isProgramModeIDLE();
|
|
bool isProgramModeOOO();
|
|
|
|
public slots:
|
|
void onRequestOfflineProcessing();
|
|
|
|
// e.g. by button event,
|
|
// by vmc screen command,
|
|
// by vmc data display command
|
|
// ...
|
|
void restartSellModeTimeoutTimer();
|
|
|
|
// slots for LED configuration:
|
|
void LEDs_default();
|
|
void LEDs_ooo();
|
|
|
|
// CC-Plugin
|
|
void onCCStartTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCConfirmTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCCancelTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCRevertTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCPreAuthTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCBookTotalTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCCancelPreAuthTransactionResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
void onCCRequestCardInfoResult(nsCCInterface::RESULT_STATE resultState, QString & result);
|
|
|
|
// CalculatePricePlugin
|
|
#ifdef USE_CALCULATEPRICE_PLUGIN
|
|
void onCalculatePrice(QString & licensePlate);
|
|
void onCalculatePrice(uint parktime);
|
|
void onCalculatePrice(QString & cardInfo, QString & cardTransactionInfo);
|
|
void onCalculatePrice();
|
|
void onCalculatedPrice(nsCalculatePriceInterface::RESULT_STATE resultState,
|
|
const QString & accessInformation,
|
|
const QString & accessInformationType,
|
|
const QString & amountDuePeriodStart,
|
|
const QString & amountDuePeriodEnd,
|
|
const PriceInfo & priceInfo,
|
|
const QString & errorCode,
|
|
const QString & errorDescription);
|
|
void onProcessTransaction(nsCalculatePriceInterface::RESULT_STATE resultState,
|
|
const QString & errorCode,
|
|
const QString & errorDescription);
|
|
|
|
QChar private_getAccessInformationField(const QString & accessInformationType);
|
|
QString private_calculatedPrice(nsCalculatePriceInterface::RESULT_STATE resultState,
|
|
const QString & accessInformation,
|
|
const QString & accessInformationType,
|
|
const QString & amountDuePeriodStart,
|
|
const QString & amountDuePeriodEnd,
|
|
const PriceInfo & priceInfo,
|
|
const QString & errorCode,
|
|
const QString & errorDescription);
|
|
#endif // USE_CALCULATEPRICE_PLUGIN
|
|
|
|
|
|
|
|
// vmc control
|
|
void onVMCFormatedString(FormatedStringList data);
|
|
void onVMCSellData(quint8 nr,QString data);
|
|
|
|
// deprecated vmc control for cc
|
|
// this allows cc control by screens
|
|
void onVMC_ccStartTransaction();
|
|
void onVMC_ccCancelTransaction();
|
|
void onVMC_ccConfirmTransaction();
|
|
void onVMC_ccStartPreauthorisation();
|
|
void onVMC_ccCancelPreauthorisation();
|
|
void onVMC_ccConfirmPreauthorisation();
|
|
void onVMC_ccStartReadCard();
|
|
|
|
// new control interface
|
|
void onControl_switchMode(quint16 mode);
|
|
void onControl_switchScreen(quint16 screen);
|
|
void onControl_setText(quint16 screenNr, quint16 textNr, quint16 lang, QString text);
|
|
void onShowCurrentIdle();
|
|
void onShowCurrentOOO();
|
|
|
|
// vendingData
|
|
void onSetVendingData(QString key, QByteArray value);
|
|
|
|
|
|
signals:
|
|
// signals for signaling a mode change to sub-modules:
|
|
void changedProgramMode(PROGRAM_MODE newProgramMode);
|
|
void changedModeToSELL();
|
|
void changedModeToSERVICE();
|
|
void changedModeToIDLE();
|
|
void changedModeToOOO();
|
|
|
|
void doOfflineProcessing();
|
|
|
|
// cc
|
|
|
|
|
|
protected:
|
|
bool eventFilter(QObject *obj, QEvent *ev);
|
|
|
|
private:
|
|
PROGRAM_MODE programmode;
|
|
ATBHMIconfig *config;
|
|
ATB_system *system;
|
|
VMC *vmc;
|
|
VendingData *vendingData;
|
|
|
|
PluginManager *pluginManager;
|
|
|
|
void private_setupProgramModeSELL();
|
|
void private_setupProgramModeSELL_ENABLE();
|
|
void private_setupProgramModeSERVICE();
|
|
void private_setupProgramModeIDLE();
|
|
void private_setupProgramModeOOO();
|
|
void private_unsetProgramModeSERVICE();
|
|
void private_unsetProgramModeOOO();
|
|
|
|
// plugins
|
|
CCInterface *cc;
|
|
CalculatePriceInterface *calcPriceBackend;
|
|
|
|
// init methods called from constructor
|
|
void private_initCCPlugin();
|
|
void private_initCalculatePricePlugin();
|
|
void private_initSimulationPlugin();
|
|
|
|
// timers
|
|
QTimer *sellModeTimeoutTimer;
|
|
|
|
// flag to prepare for OOO in next idle
|
|
quint8 prepareInternalOOO;
|
|
|
|
// action processing
|
|
quint8 startAction(APP_ACTION action);
|
|
|
|
#if defined (ARCH_DesktopLinux)
|
|
void private_screenshot();
|
|
#endif
|
|
|
|
#if defined (CUST00318)
|
|
// hack for 00318/Nexobility
|
|
void private_CUST00318_handle_CC_ERROR_0x13();
|
|
#endif
|
|
|
|
// mouse detection
|
|
#if defined (ARCH_PTU4)
|
|
QFileSystemWatcher *pInputDeviceWatcher;
|
|
void setMouse(const QString & mouseDeviceFile, const QString & touchDeviceFile);
|
|
void closeMouse(const QString & mouseDeviceFile, const QString & touchDeviceFile);
|
|
bool mousePresent;
|
|
#endif
|
|
|
|
|
|
private slots:
|
|
|
|
// firstRun -> things done with running event loop
|
|
void firstRun();
|
|
|
|
// timers
|
|
void onSellModeTimerTimeout();
|
|
|
|
|
|
/********************************************
|
|
* CC - Slots
|
|
*/
|
|
void onCCStartTransaction();
|
|
void onCCStartConfirmTransaction();
|
|
void onCCCancelTransaction();
|
|
|
|
void onCCStartPreauthorisation();
|
|
void onCCConfirmPreauthorisation();
|
|
void onCCCancelPreauthorisationRequest();
|
|
|
|
void onCCPrintReceipt();
|
|
|
|
void onCCErrorBackend(QString & result);
|
|
|
|
void onCCStartReadCard();
|
|
/*******************************************/
|
|
|
|
|
|
// called, if system was woken up
|
|
void onWakeUp();
|
|
|
|
|
|
/********************************************
|
|
* Barcode / QR-Code - Slots
|
|
*/
|
|
#ifdef USE_BARCODESCANNER
|
|
// called, if a barcode was read from scanner
|
|
void onReadBarcode(QString & barcode);
|
|
|
|
// called, if a new barcode should be created and sent to vmc
|
|
void onRequestNewBarcode();
|
|
#endif
|
|
/*******************************************/
|
|
|
|
#if defined (Q_WS_QWS)
|
|
void onInputDeviceWatcher_directoryChanged(const QString& path);
|
|
#endif
|
|
|
|
/********************************************
|
|
* ISMAS
|
|
*/
|
|
void onProcessed_QRCode(QHash<QString, QByteArray> data);
|
|
|
|
/********************************************
|
|
* Signal System Errors
|
|
*/
|
|
void onSignalSystemErrors(const QString & errorCode, const QString & errorDescription);
|
|
};
|
|
|
|
#endif // APPCONTROL_H
|