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/>.
22
#include "hcontentdirectory_info.h"
24
#include <HUpnpCore/HResourceType>
25
#include <HUpnpCore/HActionArguments>
26
#include <HUpnpCore/HActionsSetupData>
27
#include <HUpnpCore/HStateVariablesSetupData>
29
#include <QtCore/QString>
32
* \defgroup hupnp_av_cds Content Directory
35
* \brief This page discusses the design and use of the HUPnPAv's ContentDirectory
48
/*******************************************************************************
49
* HContentDirectoryInfo
50
******************************************************************************/
51
HContentDirectoryInfo::HContentDirectoryInfo()
55
HContentDirectoryInfo::~HContentDirectoryInfo()
59
QString HContentDirectoryInfo::browseFlagToString(BrowseFlag flag)
67
retVal = "BrowseMetadata";
69
case BrowseDirectChildren:
70
retVal = "BrowseDirectChildren";
79
HContentDirectoryInfo::BrowseFlag
80
HContentDirectoryInfo::browseFlagFromString(const QString& arg)
82
BrowseFlag retVal = Undefined;
83
if (arg.compare("BrowseMetadata", Qt::CaseInsensitive) == 0)
85
retVal = BrowseMetadata;
87
else if (arg.compare("BrowseDirectChildren", Qt::CaseInsensitive) == 0)
89
retVal = BrowseDirectChildren;
94
const HResourceType& HContentDirectoryInfo::supportedServiceType()
96
static HResourceType retVal(
97
"urn:schemas-upnp-org:service:ContentDirectory:3");
102
HActionsSetupData HContentDirectoryInfo::actionsSetupData()
104
HActionsSetupData retVal;
106
retVal.insert(HActionSetup("GetSearchCapabilities"));
107
retVal.insert(HActionSetup("GetSortCapabilities"));
109
HActionSetup setup("GetSortExtensionCapabilities", InclusionOptional);
111
retVal.insert(setup);
113
setup = HActionSetup("GetFeatureList");
115
retVal.insert(setup);
117
retVal.insert(HActionSetup("GetSystemUpdateID"));
119
setup = HActionSetup("GetServiceResetToken");
121
retVal.insert(setup);
123
retVal.insert(HActionSetup("Browse"));
124
retVal.insert(HActionSetup("Search", InclusionOptional));
125
retVal.insert(HActionSetup("CreateObject", InclusionOptional));
126
retVal.insert(HActionSetup("DestroyObject", InclusionOptional));
127
retVal.insert(HActionSetup("UpdateObject", InclusionOptional));
128
retVal.insert(HActionSetup("MoveObject", InclusionOptional));
129
retVal.insert(HActionSetup("ImportResource", InclusionOptional));
130
retVal.insert(HActionSetup("ExportResource", InclusionOptional));
131
retVal.insert(HActionSetup("DeleteResource", InclusionOptional));
132
retVal.insert(HActionSetup("StopTransferResource", InclusionOptional));
133
retVal.insert(HActionSetup("GetTransferProgress", InclusionOptional));
134
retVal.insert(HActionSetup("CreateReference", InclusionOptional));
136
setup = HActionSetup("FreeFormQuery", InclusionOptional);
138
retVal.insert(setup);
140
setup = HActionSetup("GetFreeFormQueryCapabilities", InclusionOptional);
142
retVal.insert(setup);
147
HStateVariablesSetupData HContentDirectoryInfo::stateVariablesSetupData()
149
HStateVariablesSetupData retVal;
151
retVal.insert(HStateVariableInfo("SearchCapabilities", HUpnpDataTypes::string));
152
retVal.insert(HStateVariableInfo("SortCapabilities", HUpnpDataTypes::string));
154
HStateVariableInfo svInfo("SortExtensionCapabilities", HUpnpDataTypes::string, InclusionOptional);
155
svInfo.setVersion(2);
156
retVal.insert(svInfo);
158
retVal.insert(HStateVariableInfo("SystemUpdateID", HUpnpDataTypes::ui4));
159
retVal.insert(HStateVariableInfo("ContainerUpdateIDs", HUpnpDataTypes::string, InclusionOptional));
161
svInfo = HStateVariableInfo("ServiceResetToken", HUpnpDataTypes::string);
162
svInfo.setVersion(3);
163
retVal.insert(svInfo);
165
svInfo = HStateVariableInfo("LastChange", HUpnpDataTypes::string, InclusionOptional);
166
svInfo.setVersion(3);
167
retVal.insert(svInfo);
169
retVal.insert(HStateVariableInfo("TransferIDs", HUpnpDataTypes::string, InclusionOptional));
171
svInfo = HStateVariableInfo("FeatureList", HUpnpDataTypes::string);
172
svInfo.setVersion(2);
173
retVal.insert(svInfo);
175
retVal.insert(HStateVariableInfo("A_ARG_TYPE_ObjectID", HUpnpDataTypes::string));
176
retVal.insert(HStateVariableInfo("A_ARG_TYPE_Result", HUpnpDataTypes::string));
177
retVal.insert(HStateVariableInfo("A_ARG_TYPE_SearchCriteria", HUpnpDataTypes::string, InclusionOptional));
178
retVal.insert(HStateVariableInfo("A_ARG_TYPE_BrowseFlag", HUpnpDataTypes::string));
179
retVal.insert(HStateVariableInfo("A_ARG_TYPE_Filter", HUpnpDataTypes::string));
180
retVal.insert(HStateVariableInfo("A_ARG_TYPE_SortCriteria", HUpnpDataTypes::string));
181
retVal.insert(HStateVariableInfo("A_ARG_TYPE_Index", HUpnpDataTypes::ui4));
182
retVal.insert(HStateVariableInfo("A_ARG_TYPE_Count", HUpnpDataTypes::ui4));
183
retVal.insert(HStateVariableInfo("A_ARG_TYPE_UpdateID", HUpnpDataTypes::ui4));
184
retVal.insert(HStateVariableInfo("A_ARG_TYPE_TransferID", HUpnpDataTypes::ui4, InclusionOptional));
185
retVal.insert(HStateVariableInfo("A_ARG_TYPE_TransferStatus", HUpnpDataTypes::string, InclusionOptional));
186
retVal.insert(HStateVariableInfo("A_ARG_TYPE_TransferLength", HUpnpDataTypes::string, InclusionOptional));
187
retVal.insert(HStateVariableInfo("A_ARG_TYPE_TransferTotal", HUpnpDataTypes::string, InclusionOptional));
188
retVal.insert(HStateVariableInfo("A_ARG_TYPE_TagValueList", HUpnpDataTypes::string, InclusionOptional));
189
retVal.insert(HStateVariableInfo("A_ARG_TYPE_URI", HUpnpDataTypes::uri, InclusionOptional));
191
svInfo = HStateVariableInfo("A_ARG_TYPE_CDSView", HUpnpDataTypes::ui4, InclusionOptional);
192
svInfo.setVersion(3);
193
retVal.insert(svInfo);
195
svInfo = HStateVariableInfo("A_ARG_TYPE_TagValueList", HUpnpDataTypes::string, InclusionOptional);
196
svInfo.setVersion(3);
197
retVal.insert(svInfo);
199
svInfo = HStateVariableInfo("A_ARG_TYPE_QueryRequest", HUpnpDataTypes::string, InclusionOptional);
200
svInfo.setVersion(3);
201
retVal.insert(svInfo);
203
svInfo = HStateVariableInfo("A_ARG_TYPE_QueryResult", HUpnpDataTypes::string, InclusionOptional);
204
svInfo.setVersion(3);
205
retVal.insert(svInfo);
207
svInfo = HStateVariableInfo("A_ARG_TYPE_FFQCapabilities", HUpnpDataTypes::string, InclusionOptional);
208
svInfo.setVersion(3);
209
retVal.insert(svInfo);