/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2019 Bernhard Trinnes . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef DEVICEPLUGINSONOS_H #define DEVICEPLUGINSONOS_H #include "devices/deviceplugin.h" #include "plugintimer.h" #include "sonos.h" #include #include class DevicePluginSonos : public DevicePlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "io.nymea.DevicePlugin" FILE "devicepluginsonos.json") Q_INTERFACES(DevicePlugin) public: explicit DevicePluginSonos(); ~DevicePluginSonos() override; void setupDevice(DeviceSetupInfo *info) override; void startPairing(DevicePairingInfo *info) override; void confirmPairing(DevicePairingInfo *info, const QString &username, const QString &secret) override; void postSetupDevice(Device *device) override; void startMonitoringAutoDevices() override; void deviceRemoved(Device *device) override; void executeAction(DeviceActionInfo *info) override; void browseDevice(BrowseResult *result) override; void browserItem(BrowserItemResult *result) override; void executeBrowserItem(BrowserActionInfo *info) override; void executeBrowserItemAction(BrowserItemActionInfo *info) override; private: PluginTimer *m_pluginTimer5sec = nullptr; PluginTimer *m_pluginTimer60sec = nullptr; QHash m_setupSonosConnections; QHash m_sonosConnections; QList m_householdIds; QByteArray m_sonosConnectionAccessToken; QByteArray m_sonosConnectionRefreshToken; QHash > m_pendingActions; QHash m_pendingBrowseResult; QHash m_pendingBrowserExecution; private slots: void onConnectionChanged(bool connected); void onAuthenticationStatusChanged(bool authenticated); void onHouseholdIdsReceived(QList householdIds); void onFavouritesReceived(const QString &householdId, QList favourites); void onPlaylistsReceived(const QString &householdId, QList playlists); void onPlaylistSummaryReceived(const QString &householdId, Sonos::PlaylistSummaryObject playlistSummary); void onGroupsReceived(const QString &householdId, QList groupIds); void onPlayBackStatusReceived(const QString &groupId, Sonos::PlayBackObject playBack); void onMetadataStatusReceived(const QString &groupId, Sonos::MetadataStatus metaDataStatus); void onVolumeReceived(const QString &groupId, Sonos::VolumeObject groupVolume); void onActionExecuted(QUuid actionId, bool success); }; #endif // DEVICEPLUGINSONOS_H