#ifndef BRWIDGET_H #define BRWIDGET_H #include class BRProvider; class BRWidget : public QObject { Q_OBJECT Q_PROPERTY(BRWidgetState state READ getState NOTIFY stateChanged) public: enum BRFederation { IFSC, DAV, SAC }; Q_ENUM(BRFederation) enum BRWidgetState { Unconfigured = -1, Configured, Loading, Loaded }; Q_ENUM(BRWidgetState) enum BRWidgetStatusCode { Success = 200, InternalError = 900, NoProviderError = 901, NotImplementedError = 902, OpeationNotSupportedError = 903 }; Q_ENUM(BRWidgetStatusCode) Q_INVOKABLE virtual BRWidget::BRWidgetStatusCode load() = 0; Q_INVOKABLE BRWidgetState getState() const; Q_INVOKABLE BRFederation getFederation() const; Q_INVOKABLE int getId() const; protected: explicit BRWidget(BRProvider* provider, BRFederation federation, int id); void setState(BRWidgetState state); BRProvider* getProvider(); BRWidgetState state; template QList listToQmlList(QList list) { QList tmpList; for(T* item : list) tmpList.append(static_cast(item)); return tmpList; }; private: BRProvider* provider; const BRFederation federation; const int id; signals: void stateChanged(); }; #endif // BRWIDGET_H