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

0001 /*
0002    SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #ifndef UPNPCONTROLCONTENTDIRECTORY_H
0008 #define UPNPCONTROLCONTENTDIRECTORY_H
0009 
0010 #include "upnpcontrolabstractservice.h"
0011 #include "upnpbasictypes.h"
0012 
0013 #include <memory>
0014 
0015 class UpnpControlContentDirectoryPrivate;
0016 class UpnpControlAbstractServiceReply;
0017 
0018 class UpnpControlContentDirectory : public UpnpControlAbstractService
0019 {
0020     Q_OBJECT
0021 
0022     Q_PROPERTY(QString searchCapabilities
0023                READ searchCapabilities
0024                NOTIFY searchCapabilitiesChanged)
0025 
0026     Q_PROPERTY(QString transferIDs
0027                READ transferIDs
0028                NOTIFY transferIDsChanged)
0029 
0030     Q_PROPERTY(bool hasTransferIDs
0031                READ hasTransferIDs
0032                NOTIFY hasTransferIDsChanged)
0033 
0034     Q_PROPERTY(QString sortCapabilities
0035                READ sortCapabilities
0036                NOTIFY sortCapabilitiesChanged)
0037 
0038     Q_PROPERTY(int systemUpdateID
0039                READ systemUpdateID
0040                NOTIFY systemUpdateIDChanged)
0041 
0042 public:
0043 
0044     explicit UpnpControlContentDirectory(QObject *parent = nullptr);
0045 
0046     ~UpnpControlContentDirectory() override;
0047 
0048     [[nodiscard]] const QString& searchCapabilities() const;
0049 
0050     [[nodiscard]] const QString& transferIDs() const;
0051 
0052     [[nodiscard]] bool hasTransferIDs() const;
0053 
0054     [[nodiscard]] const QString& sortCapabilities() const;
0055 
0056     [[nodiscard]] int systemUpdateID() const;
0057 
0058 public Q_SLOTS:
0059 
0060     UpnpControlAbstractServiceReply* getSearchCapabilities();
0061 
0062     UpnpControlAbstractServiceReply* getSortCapabilities();
0063 
0064     UpnpControlAbstractServiceReply* getSystemUpdateID();
0065 
0066     UpnpControlAbstractServiceReply* search(const QString &objectID, const QString &searchCriteria,
0067                 const QString &filter, int startingIndex,
0068                 int requestedCount, const QString &sortCriteria);
0069 
0070     UpnpControlAbstractServiceReply* browse(const QString &objectID, const QString &browseFlag,
0071                 const QString &filter, int startingIndex,
0072                 int requestedCount, const QString &sortCriteria);
0073 
0074 Q_SIGNALS:
0075 
0076     void searchCapabilitiesChanged(const QString &capabilities);
0077 
0078     void transferIDsChanged(const QString &ids);
0079 
0080     void hasTransferIDsChanged();
0081 
0082     void sortCapabilitiesChanged(const QString &capabilities);
0083 
0084     void systemUpdateIDChanged(int id);
0085 
0086 private Q_SLOTS:
0087 
0088 protected:
0089 
0090     void parseServiceDescription(QIODevice *serviceDescriptionContent) override;
0091 
0092     void parseEventNotification(const QString &eventName, const QString &eventValue) Q_DECL_OVERRIDE;
0093 
0094 private:
0095 
0096     std::unique_ptr<UpnpControlContentDirectoryPrivate> d;
0097 
0098 };
0099 
0100 #endif // UPNPCONTROLCONTENTDIRECTORY_H
0101