/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* 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