Skip to content
Snippets Groups Projects
DapServiceController.h 2.2 KiB
Newer Older
andrey.daragan's avatar
andrey.daragan committed
#ifndef DAPSERVICECONTROLLER_H
#define DAPSERVICECONTROLLER_H

#include <QObject>
#include <QQmlEngine>
#include <QJSEngine>

#include "DapCommandController.h"
#include "DapServiceClient.h"
andrey.daragan's avatar
andrey.daragan committed
class DapServiceController : public QObject
{
    Q_OBJECT
    Q_DISABLE_COPY(DapServiceController)
    /// Brand сompany.
    QString m_sBrand {DAP_BRAND};
    /// Application version.
    QString m_sVersion {DAP_VERSION};
user's avatar
user committed

andrey.daragan's avatar
andrey.daragan committed
    /// Service connection management service.
    DapServiceClient *m_pDapServiceClient {nullptr};
    /// RPC protocol controller.
    DapCommandController *m_pDapCommandController {nullptr};
Alexander's avatar
Alexander committed
    /// Standard constructor
andrey.daragan's avatar
andrey.daragan committed
    explicit DapServiceController(QObject *apParent = nullptr);
    
public:
    /// Get an instance of a class.
    /// @return Instance of a class.
    Q_INVOKABLE static DapServiceController &getInstance();
    
    ///********************************************
    ///                 Property
    /// *******************************************
    
    /// Brand сompany.
    Q_PROPERTY(QString Brand MEMBER m_sBrand READ getBrand NOTIFY brandChanged)
    /// Application version.
    Q_PROPERTY(QString Version MEMBER m_sVersion READ getVersion NOTIFY versionChanged)
user's avatar
user committed

andrey.daragan's avatar
andrey.daragan committed
    ///********************************************
    ///                 Interface
    /// *******************************************
    void init(DapServiceClient *apDapServiceClient);
    /// Get company brand.
    /// @return Brand сompany.
    QString getBrand() const;
    /// Get app version.
    /// @return Application version.
    QString getVersion() const;
andrey.daragan's avatar
andrey.daragan committed
signals:
    /// The signal is emitted when the Brand company property changes.
Alexander's avatar
Alexander committed
    /// @param asBrand Brand
andrey.daragan's avatar
andrey.daragan committed
    void brandChanged(const QString &brand);
    /// The signal is emitted when the Application version property changes.
Alexander's avatar
Alexander committed
    /// @param version Version
andrey.daragan's avatar
andrey.daragan committed
    void versionChanged(const QString &version);
andrey.daragan's avatar
andrey.daragan committed
public slots:
    /// Method that implements the singleton pattern for the qml layer.
    /// @param engine QML application.
    /// @param scriptEngine The QJSEngine class provides an environment for evaluating JavaScript code.
    static QObject *singletonProvider(QQmlEngine *engine, QJSEngine *scriptEngine);
};

#endif // DAPSERVICECONTROLLER_H