#pragma once #include #include #include #include "../../sacn/universe.h" /** * @brief The QSacnUniverse class */ class QSacnUniverse : public QObject { Q_OBJECT public: friend DMX::Universe; // permit callback to access the private notifier explicit QSacnUniverse(QObject *parent = nullptr, SACN::Universe *universe = nullptr) : QObject(parent) , universe_(universe) , refreshTimer_(new QTimer(this)) , lastRecieved_(QTime()) { universe_->onData(std::bind(&QSacnUniverse::dataChangedNotifier, this, std::placeholders::_1)); }; uint8_t value(const u_int16_t slot) { return universe_->slot(slot); } public slots: void setDescription(std::string desc) { universe_->source()->setDescription(desc); } void setOptions(uint8_t o) { universe_->source()->setOptions(o); } void setPriority(uint8_t p) { universe_->source()->setPriority(p); } void setSyncAddress(uint16_t a) { universe_->source()->setSyncAddress(a); } void setValue (const uint16_t addr, const uint8_t level) { universe_->DMX::Universe::setValue(addr, level); } void setValue (const uint16_t addr, const uint16_t size, const uint8_t* profile) { universe_->DMX::Universe::setValue(addr, size, profile); } signals: void changed(SACN::Universe*); protected: void dataChangedNotifier(DMX::Universe* universe = nullptr) { Q_UNUSED(universe) lastRecieved_ = QTime::currentTime(); emit changed(universe_); }; private: SACN::Universe *universe_; QTimer *refreshTimer_; QTime lastRecieved_; };