File indexing completed on 2024-04-28 04:49:05

0001 /*
0002    SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #ifndef UPNPDISCOVERALLMUSIC_H
0008 #define UPNPDISCOVERALLMUSIC_H
0009 
0010 #include "datatypes.h"
0011 
0012 #include <QObject>
0013 #include <QSharedPointer>
0014 
0015 #include <memory>
0016 
0017 class DatabaseInterface;
0018 class UpnpDiscoveryResult;
0019 class UpnpDiscoverAllMusicPrivate;
0020 class UpnpDeviceDescription;
0021 
0022 class UpnpDiscoverAllMusic : public QObject
0023 {
0024 
0025     Q_OBJECT
0026 
0027 public:
0028 
0029     explicit UpnpDiscoverAllMusic(QObject *parent = nullptr);
0030 
0031     ~UpnpDiscoverAllMusic() override;
0032 
0033     [[nodiscard]] [[nodiscard]] const DataTypes::ListNetworkServiceDataType& existingMediaServers() const;
0034 
0035     [[nodiscard]] [[nodiscard]] const UpnpDeviceDescription &deviceDescriptionByUdn(const QString &udn) const;
0036 
0037 Q_SIGNALS:
0038 
0039     void newUpnpContentDirectoryService(const QString &name, const QString &uuid);
0040 
0041     void removedUpnpContentDirectoryService(const QString &name);
0042 
0043     void searchAllMediaServers(int maxDelay);
0044 
0045 public Q_SLOTS:
0046 
0047     void newDevice(const UpnpDiscoveryResult &serviceDiscovery);
0048 
0049     void removedDevice(const UpnpDiscoveryResult &serviceDiscovery);
0050 
0051     void networkChanged();
0052 
0053 private Q_SLOTS:
0054 
0055     void deviceDescriptionChanged(const QString &uuid);
0056 
0057     void descriptionParsed(const QString &UDN);
0058 
0059 private:
0060 
0061     std::unique_ptr<UpnpDiscoverAllMusicPrivate> d;
0062 
0063 };
0064 
0065 #endif // UPNPDISCOVERALLMUSIC_H