2
* Copyright (C) 2011 Tuomo Penttinen, all rights reserved.
4
* Author: Tuomo Penttinen <tp@herqq.org>
6
* This file is part of Herqq UPnP Av (HUPnPAv) library.
8
* Herqq UPnP Av is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
13
* Herqq UPnP Av is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
18
* You should have received a copy of the GNU General Public License
19
* along with Herqq UPnP Av. If not, see <http://www.gnu.org/licenses/>.
25
#include <HUpnpAv/HObject>
39
* \brief This class is used to represent individual content objects.
41
* \brief This class represents \e individual content objects, which refers to
42
* objects that cannot contain other objects. For instance, such an item is a
43
* a music track or a photo. The class identifier specified by the AV Working
44
* Committee is \c object.item.
46
* \headerfile hitem.h HItem
48
* \ingroup hupnp_av_cds_objects
50
* \remarks This class is not thread-safe.
52
class H_UPNP_AV_EXPORT HItem :
57
H_DECLARE_PRIVATE(HItem)
62
* Constructs a new instance.
64
* \param clazz specifies the UPnP class of the object. This cannot be empty.
66
* \param cdsType specifies the CDS type of the object. This cannot be
67
* HObject::UndefinedCdsType.
71
HItem(const QString& clazz = sClass(), CdsType cdsType = sType());
76
HItem(HItemPrivate& dd);
78
// Documented in HClonable
79
virtual HItem* newInstance() const;
84
* \brief Creates a new instance.
86
* \param title specifies the title of the object.
88
* \param parentId specifies the ID of the object that contains this
89
* object. If the object has no parent, this has to be left empty.
91
* \param id specifies the ID of this object. If this is not specified,
92
* a unique identifier within the running process is created for the object.
98
const QString& parentId = QString(),
99
const QString& id = QString());
102
* \brief Destroys the instance.
107
* \brief Returns the bookmark IDs.
109
* As defined in the ContentDirectory:3 specification, this is an object ID
110
* of a bookmark item that is associated with this content item and that
111
* marks a specific location with its content.
113
* upnp:bookmarkID, ContentDirectory:3, Appendix B.13.2.
115
* \return The bookmark IDs.
117
* \sa setBookmarkIds()
119
QStringList bookmarkIds() const;
122
* \brief Returns the ID of the referenced item in case this item is a reference
125
* \return The ID of the referenced item in case this item is a reference
126
* item. Otherwise the return value is empty.
130
QString refId() const;
133
* \brief Indicates if the item is a reference item.
135
* \return \e true in case the item is a reference item.
140
* Checks if any of the HResource objects contained by this item has
141
* specified a MIME type.
143
* \return \e true in case any of the HResource objects contained by this
144
* item has specified a MIME type.
146
bool hasContentFormat() const;
149
* \brief Specifies the book mark IDs.
151
* \param bookmarkId specifies the book mark IDs.
155
void setBookmarkIds(const QStringList& bookmarkIds);
158
* \brief Specifies the ID that this item references.
160
* \param referenceId specifies the ID that this item references.
162
void setRefId(const QString& referenceId);
165
* Modifies the HResource objects contained by this item to contain the
166
* specified MIME type.
168
* This is a convenience method for modifying the content format of
169
* HProtocolInfo objects contained by the HResource objects.
171
* \param mimeType specifies the MIME type to be set to the contained
176
void setContentFormat(const QString& mimeType);
179
* \brief Returns the class identifier specified by the AV Working Committee.
181
* \return The class identifier specified by the AV Working Committee.
183
inline static QString sClass() { return "object.item"; }
186
* \brief Returns the CdsType value of this class.
188
* \return The CdsType value of this class.
190
inline static CdsType sType() { return Item; }
193
* Creates a new instance with no title or parentID.
195
* \return a pointer to the newly created instance.
197
* \remarks the ownership of the object is transferred to the caller. Make sure
198
* to delete the object.
200
inline static HItem* create() { return new HItem(); }
207
#endif /* HITEM_H_ */