#ifndef GENERICCORE_H #define GENERICCORE_H #include class QUndoStack; class QAbstractItemModel; class QAbstractItemModelTester; class QString; class TableModel; class GeneralSortFilterModel; class ServerCommunicator; class GenericCore : public QObject { Q_OBJECT public: GenericCore(); ~GenericCore(); QString toString() const; void sayHello() const; bool isApplicationUpdateAvailable(); void triggerApplicationUpdate(const bool saveChanges); QUndoStack* getModelUndoStack() const; std::shared_ptr getModel() const; std::shared_ptr getSortFilterModel() const; void saveItems(); void importCSVFile(const QString& filePath); bool exportCSVFile(const QString& filePath); bool isSyncServerSetup() const; public slots: void onSendItemTriggered(const QByteArray& jsonData); void onItemsFetched(const QByteArray jsonData); void onItemsFetchFailure(const QString errorString); void onPostRequestSuccessful(const QString message); void onPostRequestFailure(const QString errorString); signals: void displayStatusMessage(QString message); void fetchItemsFromServer(); void sendItemToServer(const QByteArray& jsonData); private: QUndoStack* m_modelUndoStack; std::shared_ptr m_mainModel; std::shared_ptr m_sortFilterModel; std::unique_ptr m_mainModelTester; std::unique_ptr m_proxyModelTester; void setupModels(); void initModelData(); QString getMaintenanceToolFilePath() const; /// Network communication std::unique_ptr m_serverCommunicator; void setupServerConfiguration(); }; #endif // GENERICCORE_H