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 "hrendererconnection_info.h"
23
#include "hrendererconnection_info_p.h"
25
#include "../hav_global_p.h"
27
#include "../transport/hrecordqualitymode.h"
28
#include "../renderingcontrol/hvolumedbrange_result.h"
30
#include <HUpnpCore/private/hmisc_utils_p.h>
32
#include <QtCore/QUrl>
33
#include <QtCore/QStringList>
44
/*******************************************************************************
46
******************************************************************************/
47
HChannelInformation::HChannelInformation(const HChannel& ch) :
48
m_channel(ch), volume(0), volumeDb(0), minVolumeDb(0), maxVolumeDb(0),
49
muted(false), loudness(false)
53
/*******************************************************************************
54
* HRendererConnectionEventInfoPrivate
55
******************************************************************************/
56
class HRendererConnectionEventInfoPrivate :
59
H_DISABLE_ASSIGN(HRendererConnectionEventInfoPrivate)
63
QString m_variableName;
69
/*******************************************************************************
70
* HRendererConnectionEventInfo
71
******************************************************************************/
72
HRendererConnectionEventInfo::HRendererConnectionEventInfo() :
73
h_ptr(new HRendererConnectionEventInfoPrivate())
77
HRendererConnectionEventInfo::HRendererConnectionEventInfo(
78
const QString& propName,
79
const QString& newValue) :
80
h_ptr(new HRendererConnectionEventInfoPrivate())
82
h_ptr->m_variableName = propName.trimmed();
83
h_ptr->m_newValue = newValue;
86
HRendererConnectionEventInfo::HRendererConnectionEventInfo(
87
const HRendererConnectionEventInfo& other) :
90
Q_ASSERT(&other != this);
93
HRendererConnectionEventInfo& HRendererConnectionEventInfo::operator=(
94
const HRendererConnectionEventInfo& other)
96
Q_ASSERT(&other != this);
101
HRendererConnectionEventInfo::~HRendererConnectionEventInfo()
105
bool HRendererConnectionEventInfo::isValid() const
107
return !h_ptr->m_variableName.isEmpty() &&
108
h_ptr->m_oldValue != h_ptr->m_newValue;
111
QString HRendererConnectionEventInfo::propertyName() const
113
return h_ptr->m_variableName;
116
QString HRendererConnectionEventInfo::oldValue() const
118
return h_ptr->m_oldValue;
121
QString HRendererConnectionEventInfo::newValue() const
123
return h_ptr->m_newValue;
126
HChannel HRendererConnectionEventInfo::channel() const
128
return h_ptr->m_channel;
131
void HRendererConnectionEventInfo::setPropertyName(const QString& arg)
133
h_ptr->m_variableName = arg.trimmed();
136
void HRendererConnectionEventInfo::setOldValue(const QString& arg)
138
h_ptr->m_oldValue = arg;
141
void HRendererConnectionEventInfo::setNewValue(const QString& arg)
143
h_ptr->m_newValue = arg;
146
void HRendererConnectionEventInfo::setChannel(const HChannel& arg)
148
h_ptr->m_channel = arg;
151
bool operator==(const HRendererConnectionEventInfo& obj1, const HRendererConnectionEventInfo& obj2)
153
return obj1.propertyName() == obj2.propertyName() &&
154
obj1.newValue() == obj2.newValue() &&
155
obj1.oldValue() == obj2.oldValue() &&
156
obj1.channel() == obj2.channel();
159
/*******************************************************************************
160
* HRendererConnectionInfoPrivate
161
******************************************************************************/
162
HRendererConnectionInfoPrivate::HRendererConnectionInfoPrivate() :
167
m_transportActions(),
168
m_drmState(HAvTransportInfo::DrmState_Unknown),
169
m_deviceCapabilities(),
173
m_transportSettings(),
176
m_horizontalKeystone(0),
177
m_verticalKeystone(0),
180
m_valueSetters.insert("TransportState", ValueSetter(this, &HRendererConnectionInfoPrivate::setTransportState));
181
m_valueSetters.insert("TransportStatus", ValueSetter(this, &HRendererConnectionInfoPrivate::setTransportStatus));
182
m_valueSetters.insert("CurrentMediaCategory", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentMediaCategory));
183
m_valueSetters.insert("PlaybackStorageMedium", ValueSetter(this, &HRendererConnectionInfoPrivate::setPlaybackStorageMedium));
184
m_valueSetters.insert("RecordStorageMedium", ValueSetter(this, &HRendererConnectionInfoPrivate::setRecordStorageMedium));
185
m_valueSetters.insert("PossiblePlaybackStorageMedia", ValueSetter(this, &HRendererConnectionInfoPrivate::setPossiblePlaybackStorageMedia));
186
m_valueSetters.insert("PossibleRecordStorageMedia", ValueSetter(this, &HRendererConnectionInfoPrivate::setPossibleRecordStorageMedia));
187
m_valueSetters.insert("CurrentPlayMode", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentPlayMode));
188
m_valueSetters.insert("TransportPlaySpeed", ValueSetter(this, &HRendererConnectionInfoPrivate::setTransportPlaySpeed));
189
m_valueSetters.insert("RecordMediumWriteStatus", ValueSetter(this, &HRendererConnectionInfoPrivate::setRecordMediumWriteStatus));
190
m_valueSetters.insert("CurrentRecordQualityMode", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentRecordQualityMode));
191
m_valueSetters.insert("PossibleRecordQualityModes", ValueSetter(this, &HRendererConnectionInfoPrivate::setPossibleRecordQualityModes));
192
m_valueSetters.insert("NumberOfTracks", ValueSetter(this, &HRendererConnectionInfoPrivate::setNumberOfTracks));
193
m_valueSetters.insert("CurrentTrack", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentTrack));
194
m_valueSetters.insert("CurrentTrackDuration", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentTrackDuration));
195
m_valueSetters.insert("CurrentMediaDuration", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentMediaDuration));
196
m_valueSetters.insert("CurrentTrackMetaData", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentTrackMetaData));
197
m_valueSetters.insert("CurrentTrackURI", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentTrackURI));
198
m_valueSetters.insert("AVTransportURI", ValueSetter(this, &HRendererConnectionInfoPrivate::setAVTransportURI));
199
m_valueSetters.insert("AVTransportURIMetaData", ValueSetter(this, &HRendererConnectionInfoPrivate::setAVTransportURIMetaData));
200
m_valueSetters.insert("NextAVTransportURI", ValueSetter(this, &HRendererConnectionInfoPrivate::setNextAVTransportURI));
201
m_valueSetters.insert("NextAVTransportURIMetaData", ValueSetter(this, &HRendererConnectionInfoPrivate::setNextAVTransportURIMetaData));
202
m_valueSetters.insert("RelativeTimePosition", ValueSetter(this, &HRendererConnectionInfoPrivate::setRelativeTimePosition));
203
m_valueSetters.insert("AbsoluteTimePosition", ValueSetter(this, &HRendererConnectionInfoPrivate::setAbsoluteTimePosition));
204
m_valueSetters.insert("RelativeCounterPosition", ValueSetter(this, &HRendererConnectionInfoPrivate::setRelativeCounterPosition));
205
m_valueSetters.insert("AbsoluteCounterPosition", ValueSetter(this, &HRendererConnectionInfoPrivate::setAbsoluteCounterPosition));
206
m_valueSetters.insert("CurrentTransportActions", ValueSetter(this, &HRendererConnectionInfoPrivate::setCurrentTransportActions));
207
m_valueSetters.insert("DRMState", ValueSetter(this, &HRendererConnectionInfoPrivate::setDrmState));
209
m_valueSetters.insert("Brightness", ValueSetter(this, &HRendererConnectionInfoPrivate::setBrightness));
210
m_valueSetters.insert("Contrast", ValueSetter(this, &HRendererConnectionInfoPrivate::setContrast));
211
m_valueSetters.insert("Sharpness", ValueSetter(this, &HRendererConnectionInfoPrivate::setSharpness));
212
m_valueSetters.insert("RedVideoGain", ValueSetter(this, &HRendererConnectionInfoPrivate::setRedVideoGain));
213
m_valueSetters.insert("GreenVideoGain", ValueSetter(this, &HRendererConnectionInfoPrivate::setGreenVideoGain));
214
m_valueSetters.insert("BlueVideoGain", ValueSetter(this, &HRendererConnectionInfoPrivate::setBlueVideoGain));
215
m_valueSetters.insert("RedVideoBlackLevel", ValueSetter(this, &HRendererConnectionInfoPrivate::setRedVideoBlackLevel));
216
m_valueSetters.insert("GreenVideoBlackLevel", ValueSetter(this, &HRendererConnectionInfoPrivate::setGreenVideoBlackLevel));
217
m_valueSetters.insert("BlueVideoBlackLevel", ValueSetter(this, &HRendererConnectionInfoPrivate::setBlueVideoBlackLevel));
218
m_valueSetters.insert("ColorTemperature", ValueSetter(this, &HRendererConnectionInfoPrivate::setColorTemperature));
219
m_valueSetters.insert("HorizontalKeystone", ValueSetter(this, &HRendererConnectionInfoPrivate::setHorizontalKeystone));
220
m_valueSetters.insert("VerticalKeystone", ValueSetter(this, &HRendererConnectionInfoPrivate::setVerticalKeystone));
221
m_valueSetters.insert("Mute", ValueSetter(this, &HRendererConnectionInfoPrivate::setMute));
222
m_valueSetters.insert("Volume", ValueSetter(this, &HRendererConnectionInfoPrivate::setVolume));
223
m_valueSetters.insert("VolumeDB", ValueSetter(this, &HRendererConnectionInfoPrivate::setVolumeDB));
224
m_valueSetters.insert("Loudness", ValueSetter(this, &HRendererConnectionInfoPrivate::setLoudness));
226
m_valueGetters.insert("TransportState", ValueGetter(this, &HRendererConnectionInfoPrivate::getTransportState));
227
m_valueGetters.insert("TransportStatus", ValueGetter(this, &HRendererConnectionInfoPrivate::getTransportStatus));
228
m_valueGetters.insert("CurrentMediaCategory", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentMediaCategory));
229
m_valueGetters.insert("PlaybackStorageMedium", ValueGetter(this, &HRendererConnectionInfoPrivate::getPlaybackStorageMedium));
230
m_valueGetters.insert("RecordStorageMedium", ValueGetter(this, &HRendererConnectionInfoPrivate::getRecordStorageMedium));
231
m_valueGetters.insert("PossiblePlaybackStorageMedia", ValueGetter(this, &HRendererConnectionInfoPrivate::getPossiblePlaybackStorageMedia));
232
m_valueGetters.insert("PossibleRecordStorageMedia", ValueGetter(this, &HRendererConnectionInfoPrivate::getPossibleRecordStorageMedia));
233
m_valueGetters.insert("CurrentPlayMode", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentPlayMode));
234
m_valueGetters.insert("TransportPlaySpeed", ValueGetter(this, &HRendererConnectionInfoPrivate::getTransportPlaySpeed));
235
m_valueGetters.insert("RecordMediumWriteStatus", ValueGetter(this, &HRendererConnectionInfoPrivate::getRecordMediumWriteStatus));
236
m_valueGetters.insert("CurrentRecordQualityMode", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentRecordQualityMode));
237
m_valueGetters.insert("PossibleRecordQualityModes", ValueGetter(this, &HRendererConnectionInfoPrivate::getPossibleRecordQualityModes));
238
m_valueGetters.insert("NumberOfTracks", ValueGetter(this, &HRendererConnectionInfoPrivate::getNumberOfTracks));
239
m_valueGetters.insert("CurrentTrack", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentTrack));
240
m_valueGetters.insert("CurrentTrackDuration", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentTrackDuration));
241
m_valueGetters.insert("CurrentMediaDuration", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentMediaDuration));
242
m_valueGetters.insert("CurrentTrackMetaData", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentTrackMetaData));
243
m_valueGetters.insert("CurrentTrackURI", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentTrackURI));
244
m_valueGetters.insert("AVTransportURI", ValueGetter(this, &HRendererConnectionInfoPrivate::getAVTransportURI));
245
m_valueGetters.insert("AVTransportURIMetaData", ValueGetter(this, &HRendererConnectionInfoPrivate::getAVTransportURIMetaData));
246
m_valueGetters.insert("NextAVTransportURI", ValueGetter(this, &HRendererConnectionInfoPrivate::getNextAVTransportURI));
247
m_valueGetters.insert("NextAVTransportURIMetaData", ValueGetter(this, &HRendererConnectionInfoPrivate::getNextAVTransportURIMetaData));
248
m_valueGetters.insert("RelativeTimePosition", ValueGetter(this, &HRendererConnectionInfoPrivate::getRelativeTimePosition));
249
m_valueGetters.insert("AbsoluteTimePosition", ValueGetter(this, &HRendererConnectionInfoPrivate::getAbsoluteTimePosition));
250
m_valueGetters.insert("RelativeCounterPosition", ValueGetter(this, &HRendererConnectionInfoPrivate::getRelativeCounterPosition));
251
m_valueGetters.insert("AbsoluteCounterPosition", ValueGetter(this, &HRendererConnectionInfoPrivate::getAbsoluteCounterPosition));
252
m_valueGetters.insert("CurrentTransportActions", ValueGetter(this, &HRendererConnectionInfoPrivate::getCurrentTransportActions));
253
m_valueGetters.insert("DRMState", ValueGetter(this, &HRendererConnectionInfoPrivate::getDrmState));
255
m_valueGetters.insert("Brightness", ValueGetter(this, &HRendererConnectionInfoPrivate::getBrightness));
256
m_valueGetters.insert("Contrast", ValueGetter(this, &HRendererConnectionInfoPrivate::getContrast));
257
m_valueGetters.insert("Sharpness", ValueGetter(this, &HRendererConnectionInfoPrivate::getSharpness));
258
m_valueGetters.insert("RedVideoGain", ValueGetter(this, &HRendererConnectionInfoPrivate::getRedVideoGain));
259
m_valueGetters.insert("GreenVideoGain", ValueGetter(this, &HRendererConnectionInfoPrivate::getGreenVideoGain));
260
m_valueGetters.insert("BlueVideoGain", ValueGetter(this, &HRendererConnectionInfoPrivate::getBlueVideoGain));
261
m_valueGetters.insert("RedVideoBlackLevel", ValueGetter(this, &HRendererConnectionInfoPrivate::getRedVideoBlackLevel));
262
m_valueGetters.insert("GreenVideoBlackLevel", ValueGetter(this, &HRendererConnectionInfoPrivate::getGreenVideoBlackLevel));
263
m_valueGetters.insert("BlueVideoBlackLevel", ValueGetter(this, &HRendererConnectionInfoPrivate::getBlueVideoBlackLevel));
264
m_valueGetters.insert("ColorTemperature", ValueGetter(this, &HRendererConnectionInfoPrivate::getColorTemperature));
265
m_valueGetters.insert("HorizontalKeystone", ValueGetter(this, &HRendererConnectionInfoPrivate::getHorizontalKeystone));
266
m_valueGetters.insert("VerticalKeystone", ValueGetter(this, &HRendererConnectionInfoPrivate::getVerticalKeystone));
267
m_valueGetters.insert("Mute", ValueGetter(this, &HRendererConnectionInfoPrivate::getMute));
268
m_valueGetters.insert("Volume", ValueGetter(this, &HRendererConnectionInfoPrivate::getVolume));
269
m_valueGetters.insert("VolumeDB", ValueGetter(this, &HRendererConnectionInfoPrivate::getVolumeDB));
270
m_valueGetters.insert("Loudness", ValueGetter(this, &HRendererConnectionInfoPrivate::getLoudness));
273
HRendererConnectionInfoPrivate::~HRendererConnectionInfoPrivate()
275
qDeleteAll(m_channelInfo);
278
HChannelInformation* HRendererConnectionInfoPrivate::checkAndAddChannel(const HChannel& channel)
280
if (!channel.isValid())
285
HChannelInformation* info = getChannel(channel);
288
info = new HChannelInformation(channel);
289
m_channelInfo.append(info);
295
HChannelInformation* HRendererConnectionInfoPrivate::getChannel(const HChannel& channel) const
297
foreach(HChannelInformation* ch, m_channelInfo)
299
if (channel == ch->channel())
307
void HRendererConnectionInfoPrivate::setCurrentTransportActions(const QString& value, const HChannel&)
309
QSet<HTransportAction> actions;
310
foreach(const QString& arg, value.split(','))
312
HTransportAction action = arg;
313
if (action.isValid())
315
actions.insert(action);
318
q_ptr->setCurrentTransportActions(actions);
321
void HRendererConnectionInfoPrivate::setCurrentMediaCategory(const QString& value, const HChannel&)
323
q_ptr->setCurrentMediaCategory(HMediaInfo::mediaCategoryFromString(value));
326
void HRendererConnectionInfoPrivate::setDrmState(const QString& value, const HChannel&)
328
q_ptr->setDrmState(HAvTransportInfo::drmStateFromString(value));
331
void HRendererConnectionInfoPrivate::setPossiblePlaybackStorageMedia(const QString& value, const HChannel&)
333
QSet<HStorageMedium> mediums;
334
foreach(const QString& arg, value.split(','))
336
HStorageMedium medium = arg;
337
if (medium.isValid())
339
mediums.insert(medium);
342
q_ptr->setPossiblePlaybackStorageMedia(mediums);
345
void HRendererConnectionInfoPrivate::setPossibleRecordStorageMedia(const QString& value, const HChannel&)
347
QSet<HStorageMedium> mediums;
348
foreach(const QString& arg, value.split(','))
350
HStorageMedium medium = arg;
351
if (medium.isValid())
353
mediums.insert(medium);
356
q_ptr->setPossibleRecordStorageMedia(mediums);
359
void HRendererConnectionInfoPrivate::setPossibleRecordQualityModes(const QString& value, const HChannel&)
361
QSet<HRecordQualityMode> modes;
362
foreach(const QString& arg, value.split(','))
364
HRecordQualityMode mode = arg;
370
q_ptr->setPossibleRecordQualityModes(modes);
373
void HRendererConnectionInfoPrivate::setNumberOfTracks(const QString& value, const HChannel&)
375
q_ptr->setNumberOfTracks(value.toUInt());
378
void HRendererConnectionInfoPrivate::setCurrentMediaDuration(const QString& value, const HChannel&)
380
q_ptr->setCurrentMediaDuration(value);
383
void HRendererConnectionInfoPrivate::setAVTransportURI(const QString& value, const HChannel&)
385
q_ptr->setCurrentResourceUri(value);
388
void HRendererConnectionInfoPrivate::setAVTransportURIMetaData(const QString& value, const HChannel&)
390
q_ptr->setCurrentResourceMetadata(value);
393
void HRendererConnectionInfoPrivate::setNextAVTransportURI(const QString& value, const HChannel&)
395
q_ptr->setNextResourceUri(value);
398
void HRendererConnectionInfoPrivate::setNextAVTransportURIMetaData(const QString& value, const HChannel&)
400
q_ptr->setNextResourceMetadata(value);
403
void HRendererConnectionInfoPrivate::setPlaybackStorageMedium(const QString& value, const HChannel&)
405
q_ptr->setPlaybackStorageMedium(value);
408
void HRendererConnectionInfoPrivate::setRecordStorageMedium(const QString& value, const HChannel&)
410
q_ptr->setRecordStorageMedium(value);
413
void HRendererConnectionInfoPrivate::setRecordMediumWriteStatus(const QString& value, const HChannel&)
415
q_ptr->setRecordMediumWriteStatus(value);
418
void HRendererConnectionInfoPrivate::setCurrentTrack(const QString& value, const HChannel&)
420
q_ptr->setCurrentTrack(value.toUInt());
423
void HRendererConnectionInfoPrivate::setCurrentTrackDuration(const QString& value, const HChannel&)
425
q_ptr->setCurrentTrackDuration(value);
428
void HRendererConnectionInfoPrivate::setCurrentTrackMetaData(const QString& value, const HChannel&)
430
q_ptr->setCurrentTrackMetadata(value);
433
void HRendererConnectionInfoPrivate::setCurrentTrackURI(const QString& value, const HChannel&)
435
q_ptr->setCurrentTrackUri(value);
438
void HRendererConnectionInfoPrivate::setRelativeTimePosition(const QString& value, const HChannel&)
440
q_ptr->setRelativeTimePosition(value);
443
void HRendererConnectionInfoPrivate::setAbsoluteTimePosition(const QString& value, const HChannel&)
445
q_ptr->setAbsoluteTimePosition(value);
448
void HRendererConnectionInfoPrivate::setRelativeCounterPosition(const QString& value, const HChannel&)
450
q_ptr->setRelativeCounterPosition(value.toUInt());
453
void HRendererConnectionInfoPrivate::setAbsoluteCounterPosition(const QString& value, const HChannel&)
455
q_ptr->setAbsoluteCounterPosition(value.toUInt());
458
void HRendererConnectionInfoPrivate::setTransportState(const QString& value, const HChannel&)
460
q_ptr->setTransportState(value);
463
void HRendererConnectionInfoPrivate::setTransportStatus(const QString& value, const HChannel&)
465
q_ptr->setTransportStatus(value);
468
void HRendererConnectionInfoPrivate::setTransportPlaySpeed(const QString& value, const HChannel&)
470
q_ptr->setTransportPlaySpeed(value);
473
void HRendererConnectionInfoPrivate::setCurrentPlayMode(const QString& value, const HChannel&)
475
q_ptr->setCurrentPlayMode(value);
478
void HRendererConnectionInfoPrivate::setCurrentRecordQualityMode(const QString& value, const HChannel&)
480
q_ptr->setCurrentRecordQualityMode(value);
483
void HRendererConnectionInfoPrivate::setBrightness(const QString& value, const HChannel&)
485
q_ptr->setRcsValue(HRendererConnectionInfo::Brightness, value.toUShort());
488
void HRendererConnectionInfoPrivate::setContrast(const QString& value, const HChannel&)
490
q_ptr->setRcsValue(HRendererConnectionInfo::Contrast, value.toUShort());
493
void HRendererConnectionInfoPrivate::setSharpness(const QString& value, const HChannel&)
495
q_ptr->setRcsValue(HRendererConnectionInfo::Sharpness, value.toUShort());
498
void HRendererConnectionInfoPrivate::setRedVideoGain(const QString& value, const HChannel&)
500
q_ptr->setRcsValue(HRendererConnectionInfo::RedVideoGain, value.toUShort());
503
void HRendererConnectionInfoPrivate::setGreenVideoGain(const QString& value, const HChannel&)
505
q_ptr->setRcsValue(HRendererConnectionInfo::GreenVideoGain, value.toUShort());
508
void HRendererConnectionInfoPrivate::setBlueVideoGain(const QString& value, const HChannel&)
510
q_ptr->setRcsValue(HRendererConnectionInfo::BlueVideoGain, value.toUShort());
513
void HRendererConnectionInfoPrivate::setRedVideoBlackLevel(const QString& value, const HChannel&)
515
q_ptr->setRcsValue(HRendererConnectionInfo::RedVideoBlackLevel, value.toUShort());
518
void HRendererConnectionInfoPrivate::setGreenVideoBlackLevel(const QString& value, const HChannel&)
520
q_ptr->setRcsValue(HRendererConnectionInfo::GreenVideoBlackLevel, value.toUShort());
523
void HRendererConnectionInfoPrivate::setBlueVideoBlackLevel(const QString& value, const HChannel&)
525
q_ptr->setRcsValue(HRendererConnectionInfo::BlueVideoBlackLevel, value.toUShort());
528
void HRendererConnectionInfoPrivate::setColorTemperature(const QString& value, const HChannel&)
530
q_ptr->setRcsValue(HRendererConnectionInfo::ColorTemperature, value.toUShort());
533
void HRendererConnectionInfoPrivate::setHorizontalKeystone(const QString& value, const HChannel&)
535
q_ptr->setHorizontalKeystone(value.toShort());
538
void HRendererConnectionInfoPrivate::setVerticalKeystone(const QString& value, const HChannel&)
540
q_ptr->setVerticalKeystone(value.toShort());
543
void HRendererConnectionInfoPrivate::setMute(const QString& value, const HChannel& ch)
546
q_ptr->setMute(ch, toBool(value, &ok));
550
void HRendererConnectionInfoPrivate::setVolume(const QString& value, const HChannel& ch)
552
q_ptr->setVolume(ch, value.toUShort());
555
void HRendererConnectionInfoPrivate::setVolumeDB(const QString& value, const HChannel& ch)
557
q_ptr->setVolumeDb(ch, value.toShort());
560
void HRendererConnectionInfoPrivate::setLoudness(const QString& value, const HChannel& ch)
563
q_ptr->setLoudness(ch, toBool(value, &ok));
567
QString HRendererConnectionInfoPrivate::getCurrentMediaCategory(const HChannel&) const
569
return HMediaInfo::toString(m_mediaInfo.mediaCategory());
572
QString HRendererConnectionInfoPrivate::getCurrentTransportActions(const HChannel&) const
574
return strToCsvString(m_transportActions);
577
QString HRendererConnectionInfoPrivate::getDrmState(const HChannel&) const
579
return HAvTransportInfo::drmStateToString(m_drmState);
582
QString HRendererConnectionInfoPrivate::getPossiblePlaybackStorageMedia(const HChannel&) const
584
return strToCsvString(m_deviceCapabilities.playMedia());
587
QString HRendererConnectionInfoPrivate::getPossibleRecordStorageMedia(const HChannel&) const
589
return strToCsvString(m_deviceCapabilities.recordMedia());
592
QString HRendererConnectionInfoPrivate::getPossibleRecordQualityModes(const HChannel&) const
594
return strToCsvString(m_deviceCapabilities.recordQualityModes());
597
QString HRendererConnectionInfoPrivate::getNumberOfTracks(const HChannel&) const
599
return QString::number(m_mediaInfo.numberOfTracks());
602
QString HRendererConnectionInfoPrivate::getCurrentMediaDuration(const HChannel&) const
604
return m_mediaInfo.mediaDuration().toString();
607
QString HRendererConnectionInfoPrivate::getAVTransportURI(const HChannel&) const
609
return m_mediaInfo.currentUri().toString();
612
QString HRendererConnectionInfoPrivate::getAVTransportURIMetaData(const HChannel&) const
614
return m_mediaInfo.currentUriMetadata();
617
QString HRendererConnectionInfoPrivate::getNextAVTransportURI(const HChannel&) const
619
return m_mediaInfo.nextUri().toString();
622
QString HRendererConnectionInfoPrivate::getNextAVTransportURIMetaData(const HChannel&) const
624
return m_mediaInfo.nextUriMetadata();
627
QString HRendererConnectionInfoPrivate::getPlaybackStorageMedium(const HChannel&) const
629
return m_mediaInfo.playMedium().toString();
632
QString HRendererConnectionInfoPrivate::getRecordStorageMedium(const HChannel&) const
634
return m_mediaInfo.recordMedium().toString();
637
QString HRendererConnectionInfoPrivate::getRecordMediumWriteStatus(const HChannel&) const
639
return m_mediaInfo.writeStatus().toString();
642
QString HRendererConnectionInfoPrivate::getCurrentTrack(const HChannel&) const
644
return QString::number(m_positionInfo.track());
647
QString HRendererConnectionInfoPrivate::getCurrentTrackDuration(const HChannel&) const
649
return m_positionInfo.trackDuration().toString();
652
QString HRendererConnectionInfoPrivate::getCurrentTrackMetaData(const HChannel&) const
654
return m_positionInfo.trackMetadata();
657
QString HRendererConnectionInfoPrivate::getCurrentTrackURI(const HChannel&) const
659
return m_positionInfo.trackUri().toString();
662
QString HRendererConnectionInfoPrivate::getRelativeTimePosition(const HChannel&) const
664
return m_positionInfo.relativeTimePosition().toString();
667
QString HRendererConnectionInfoPrivate::getAbsoluteTimePosition(const HChannel&) const
669
return m_positionInfo.absoluteTimePosition().toString();
672
QString HRendererConnectionInfoPrivate::getRelativeCounterPosition(const HChannel&) const
674
return QString::number(m_positionInfo.relativeCounterPosition());
677
QString HRendererConnectionInfoPrivate::getAbsoluteCounterPosition(const HChannel&) const
679
return QString::number(m_positionInfo.absoluteCounterPosition());
682
QString HRendererConnectionInfoPrivate::getTransportState(const HChannel&) const
684
return m_transportInfo.state().toString();
687
QString HRendererConnectionInfoPrivate::getTransportStatus(const HChannel&) const
689
return m_transportInfo.status().toString();
692
QString HRendererConnectionInfoPrivate::getTransportPlaySpeed(const HChannel&) const
694
return m_transportInfo.speed();
697
QString HRendererConnectionInfoPrivate::getCurrentPlayMode(const HChannel&) const
699
return m_transportSettings.playMode().toString();
702
QString HRendererConnectionInfoPrivate::getCurrentRecordQualityMode(const HChannel&) const
704
return m_transportSettings.recordQualityMode().toString();
707
QString HRendererConnectionInfoPrivate::getBrightness(const HChannel&) const
709
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::Brightness));
712
QString HRendererConnectionInfoPrivate::getContrast(const HChannel&) const
714
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::Contrast));
717
QString HRendererConnectionInfoPrivate::getSharpness(const HChannel&) const
719
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::Sharpness));
722
QString HRendererConnectionInfoPrivate::getRedVideoGain(const HChannel&) const
724
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::RedVideoGain));
727
QString HRendererConnectionInfoPrivate::getGreenVideoGain(const HChannel&) const
729
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::GreenVideoGain));
732
QString HRendererConnectionInfoPrivate::getBlueVideoGain(const HChannel&) const
734
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::BlueVideoGain));
737
QString HRendererConnectionInfoPrivate::getRedVideoBlackLevel(const HChannel&) const
739
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::RedVideoBlackLevel));
742
QString HRendererConnectionInfoPrivate::getGreenVideoBlackLevel(const HChannel&) const
744
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::GreenVideoBlackLevel));
747
QString HRendererConnectionInfoPrivate::getBlueVideoBlackLevel(const HChannel&) const
749
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::BlueVideoBlackLevel));
752
QString HRendererConnectionInfoPrivate::getColorTemperature(const HChannel&) const
754
return QString::number(m_rcsAttributes.value(HRendererConnectionInfo::ColorTemperature));
757
QString HRendererConnectionInfoPrivate::getHorizontalKeystone(const HChannel&) const
759
return QString::number(m_horizontalKeystone);
762
QString HRendererConnectionInfoPrivate::getVerticalKeystone(const HChannel&) const
764
return QString::number(m_verticalKeystone);
767
QString HRendererConnectionInfoPrivate::getMute(const HChannel& ch) const
769
HChannelInformation* chInfo = getChannel(ch);
770
return chInfo ? (chInfo->muted ? "1" : "0") : QString();
773
QString HRendererConnectionInfoPrivate::getVolume(const HChannel& ch) const
775
HChannelInformation* chInfo = getChannel(ch);
776
return chInfo ? QString::number(chInfo->volume) : QString();
779
QString HRendererConnectionInfoPrivate::getVolumeDB(const HChannel& ch) const
781
HChannelInformation* chInfo = getChannel(ch);
782
return chInfo ? QString::number(chInfo->volumeDb) : QString();
785
QString HRendererConnectionInfoPrivate::getLoudness(const HChannel& ch) const
787
HChannelInformation* chInfo = getChannel(ch);
788
return chInfo ? (chInfo->loudness ? "1" : "0") : QString();
791
/*******************************************************************************
792
* HRendererConnectionInfo
793
******************************************************************************/
794
HRendererConnectionInfo::HRendererConnectionInfo(
795
HRendererConnection* owner) :
796
QObject(reinterpret_cast<QObject*>(owner)),
797
h_ptr(new HRendererConnectionInfoPrivate())
800
h_ptr->m_parent = owner;
803
HRendererConnectionInfo::~HRendererConnectionInfo()
808
HRendererConnection* HRendererConnectionInfo::connection() const
810
return h_ptr->m_parent;
813
HTransportState HRendererConnectionInfo::transportState() const
815
return h_ptr->m_transportInfo.state();
818
HTransportStatus HRendererConnectionInfo::transportStatus() const
820
return h_ptr->m_transportInfo.status();
823
HMediaInfo::MediaCategory HRendererConnectionInfo::currentMediaCategory() const
825
return h_ptr->m_mediaInfo.mediaCategory();
828
HStorageMedium HRendererConnectionInfo::playbackStorageMedium() const
830
return h_ptr->m_mediaInfo.playMedium();
833
HStorageMedium HRendererConnectionInfo::recordStorageMedium() const
835
return h_ptr->m_mediaInfo.recordMedium();
838
QSet<HStorageMedium> HRendererConnectionInfo::possiblePlaybackStorageMedia() const
840
return h_ptr->m_deviceCapabilities.playMedia();
843
QSet<HStorageMedium> HRendererConnectionInfo::possibleRecordStorageMedia() const
845
return h_ptr->m_deviceCapabilities.recordMedia();
848
HPlayMode HRendererConnectionInfo::currentPlayMode() const
850
return h_ptr->m_transportSettings.playMode();
853
QString HRendererConnectionInfo::transportPlaySpeed() const
855
return h_ptr->m_transportInfo.speed();
858
HRecordMediumWriteStatus HRendererConnectionInfo::recordMediumWriteStatus() const
860
return h_ptr->m_mediaInfo.writeStatus();
863
HRecordQualityMode HRendererConnectionInfo::currentRecordQualityMode() const
865
return h_ptr->m_transportSettings.recordQualityMode();
868
QSet<HRecordQualityMode> HRendererConnectionInfo::possibleRecordQualityModes() const
870
return h_ptr->m_deviceCapabilities.recordQualityModes();
873
quint32 HRendererConnectionInfo::numberOfTracks() const
875
return h_ptr->m_mediaInfo.numberOfTracks();
878
quint32 HRendererConnectionInfo::currentTrack() const
880
return h_ptr->m_positionInfo.track();
883
HDuration HRendererConnectionInfo::currentTrackDuration() const
885
return h_ptr->m_positionInfo.trackDuration();
888
HDuration HRendererConnectionInfo::currentMediaDuration() const
890
return h_ptr->m_mediaInfo.mediaDuration();
893
QString HRendererConnectionInfo::currentTrackMetadata() const
895
return h_ptr->m_positionInfo.trackMetadata();
898
QUrl HRendererConnectionInfo::currentTrackUri() const
900
return h_ptr->m_positionInfo.trackUri();
903
QUrl HRendererConnectionInfo::currentResourceUri() const
905
return h_ptr->m_mediaInfo.currentUri();
908
QString HRendererConnectionInfo::currentResourceMetadata() const
910
return h_ptr->m_mediaInfo.currentUriMetadata();
913
QUrl HRendererConnectionInfo::nextResourceUri() const
915
return h_ptr->m_mediaInfo.nextUri();
918
QString HRendererConnectionInfo::nextResourceMetadata() const
920
return h_ptr->m_mediaInfo.nextUriMetadata();
923
HDuration HRendererConnectionInfo::relativeTimePosition() const
925
return h_ptr->m_positionInfo.relativeTimePosition();
928
HDuration HRendererConnectionInfo::absoluteTimePosition() const
930
return h_ptr->m_positionInfo.absoluteTimePosition();
933
qint32 HRendererConnectionInfo::relativeCounterPosition() const
935
return h_ptr->m_positionInfo.relativeCounterPosition();
938
qint32 HRendererConnectionInfo::absoluteCounterPosition() const
940
return h_ptr->m_positionInfo.absoluteCounterPosition();
943
QSet<HTransportAction> HRendererConnectionInfo::currentTransportActions() const
945
return h_ptr->m_transportActions;
948
HAvTransportInfo::DrmState HRendererConnectionInfo::drmState() const
950
return h_ptr->m_drmState;
953
HDeviceCapabilities HRendererConnectionInfo::deviceCapabilities() const
955
return h_ptr->m_deviceCapabilities;
958
HMediaInfo HRendererConnectionInfo::mediaInfo() const
960
return h_ptr->m_mediaInfo;
963
HPositionInfo HRendererConnectionInfo::positionInfo() const
965
return h_ptr->m_positionInfo;
968
HTransportInfo HRendererConnectionInfo::transportInfo() const
970
return h_ptr->m_transportInfo;
973
HTransportSettings HRendererConnectionInfo::transportSettings() const
975
return h_ptr->m_transportSettings;
978
QSet<QString> HRendererConnectionInfo::presets() const
980
return h_ptr->m_presets;
983
QString HRendererConnectionInfo::rcsAttributeToString(RcsAttribute arg)
989
retVal = "Brightness";
995
retVal = "Sharpness";
998
retVal = "RedVideoGain";
1000
case GreenVideoGain:
1001
retVal = "GreenVideoGain";
1004
retVal = "BlueVideoGain";
1006
case RedVideoBlackLevel:
1007
retVal = "RedVideoBlackLevel";
1009
case GreenVideoBlackLevel:
1010
retVal = "GreenVideoBlackLevel";
1012
case BlueVideoBlackLevel:
1013
retVal = "BlueVideoBlackLevel";
1015
case ColorTemperature:
1016
retVal = "ColorTemperature";
1025
quint16 HRendererConnectionInfo::rcsValue(RcsAttribute attr) const
1027
return h_ptr->m_rcsAttributes.value(attr);
1030
qint16 HRendererConnectionInfo::horizontalKeystone() const
1032
return h_ptr->m_horizontalKeystone;
1035
qint16 HRendererConnectionInfo::verticalKeystone() const
1037
return h_ptr->m_verticalKeystone;
1040
bool HRendererConnectionInfo::muted(const HChannel& channel, bool* ok) const
1042
HChannelInformation* info = h_ptr->getChannel(channel);
1045
if (ok) { *ok = false; }
1048
if (ok) { *ok = true; }
1052
quint16 HRendererConnectionInfo::volume(const HChannel& channel, bool* ok) const
1054
HChannelInformation* info = h_ptr->getChannel(channel);
1057
if (ok) { *ok = false; }
1060
if (ok) { *ok = true; }
1061
return info->volume;
1064
qint16 HRendererConnectionInfo::volumeDb(const HChannel& channel, bool* ok) const
1066
HChannelInformation* info = h_ptr->getChannel(channel);
1069
if (ok) { *ok = false; }
1072
if (ok) { *ok = true; }
1073
return info->volumeDb;
1076
HVolumeDbRangeResult HRendererConnectionInfo::volumeDbRange(
1077
const HChannel& channel, bool* ok) const
1079
HVolumeDbRangeResult retVal;
1080
HChannelInformation* info = h_ptr->getChannel(channel);
1087
retVal = HVolumeDbRangeResult(info->minVolumeDb, info->maxVolumeDb);
1092
bool HRendererConnectionInfo::loudnessEnabled(const HChannel& channel, bool* ok) const
1094
HChannelInformation* info = h_ptr->getChannel(channel);
1097
if (ok) { *ok = false; }
1100
if (ok) { *ok = true; }
1101
return info->loudness;
1104
void HRendererConnectionInfo::setTransportState(const HTransportState& arg)
1106
if (arg != transportState())
1108
h_ptr->m_transportInfo.setState(arg);
1109
emit propertyChanged(this, HRendererConnectionEventInfo(
1110
"TransportState", h_ptr->getTransportState()));
1114
void HRendererConnectionInfo::setTransportStatus(const HTransportStatus& arg)
1116
if (arg != transportStatus())
1118
h_ptr->m_transportInfo.setStatus(arg);
1119
emit propertyChanged(this, HRendererConnectionEventInfo(
1120
"TransportStatus", h_ptr->getTransportStatus()));
1124
void HRendererConnectionInfo::setCurrentMediaCategory(HMediaInfo::MediaCategory arg)
1126
if (arg != currentMediaCategory())
1128
h_ptr->m_mediaInfo.setMediaCategory(arg);
1129
emit propertyChanged(this, HRendererConnectionEventInfo(
1130
"CurrentMediaCategory", h_ptr->getCurrentMediaCategory()));
1134
void HRendererConnectionInfo::setPlaybackStorageMedium(const HStorageMedium& arg)
1136
if (arg != playbackStorageMedium())
1138
h_ptr->m_mediaInfo.setPlayMedium(arg);
1139
emit propertyChanged(this, HRendererConnectionEventInfo(
1140
"PlaybackStorageMedium", h_ptr->getPlaybackStorageMedium()));
1144
void HRendererConnectionInfo::setRecordStorageMedium(const HStorageMedium& arg)
1146
if (arg != recordStorageMedium())
1148
h_ptr->m_mediaInfo.setRecordMedium(arg);
1149
emit propertyChanged(this, HRendererConnectionEventInfo(
1150
"RecordStorageMedium", h_ptr->getRecordStorageMedium()));
1154
void HRendererConnectionInfo::setPossiblePlaybackStorageMedia(
1155
const QSet<HStorageMedium>& arg)
1157
if (arg != possiblePlaybackStorageMedia())
1159
h_ptr->m_deviceCapabilities.setPlayMedia(arg);
1160
emit propertyChanged(this, HRendererConnectionEventInfo(
1161
"PossiblePlaybackStorageMedia", h_ptr->getPossiblePlaybackStorageMedia()));
1165
void HRendererConnectionInfo::setPossibleRecordStorageMedia(
1166
const QSet<HStorageMedium>& arg)
1168
if (arg != possibleRecordStorageMedia())
1170
h_ptr->m_deviceCapabilities.setRecordMedia(arg);
1171
emit propertyChanged(this, HRendererConnectionEventInfo(
1172
"PossibleRecordStorageMedia", h_ptr->getPossibleRecordStorageMedia()));
1176
void HRendererConnectionInfo::setCurrentPlayMode(const HPlayMode& arg)
1178
if (arg != currentPlayMode())
1180
h_ptr->m_transportSettings.setPlayMode(arg);
1181
emit propertyChanged(this, HRendererConnectionEventInfo(
1182
"CurrentPlayMode", h_ptr->getCurrentPlayMode()));
1186
void HRendererConnectionInfo::setTransportPlaySpeed(const QString& arg)
1188
if (arg != transportPlaySpeed())
1190
h_ptr->m_transportInfo.setSpeed(arg);
1191
emit propertyChanged(this, HRendererConnectionEventInfo(
1192
"TransportPlaySpeed", h_ptr->getTransportPlaySpeed()));
1196
void HRendererConnectionInfo::setRecordMediumWriteStatus(
1197
const HRecordMediumWriteStatus& arg)
1199
if (arg != recordMediumWriteStatus())
1201
h_ptr->m_mediaInfo.setWriteStatus(arg);
1202
emit propertyChanged(this, HRendererConnectionEventInfo(
1203
"RecordMediumWriteStatus", h_ptr->getRecordMediumWriteStatus()));
1207
void HRendererConnectionInfo::setCurrentRecordQualityMode(
1208
const HRecordQualityMode& arg)
1210
if (arg != currentRecordQualityMode())
1212
h_ptr->m_transportSettings.setRecordQualityMode(arg);
1213
emit propertyChanged(this, HRendererConnectionEventInfo(
1214
"CurrentRecordQualityMode", h_ptr->getCurrentRecordQualityMode()));
1218
void HRendererConnectionInfo::setPossibleRecordQualityModes(
1219
const QSet<HRecordQualityMode>& arg)
1221
if (arg != possibleRecordQualityModes())
1223
h_ptr->m_deviceCapabilities.setRecordQualityModes(arg);
1224
emit propertyChanged(this, HRendererConnectionEventInfo(
1225
"PossibleRecordQualityModes", h_ptr->getPossibleRecordQualityModes()));
1229
void HRendererConnectionInfo::setNumberOfTracks(quint32 arg)
1231
if (arg != numberOfTracks())
1233
h_ptr->m_mediaInfo.setNumberOfTracks(arg);
1234
emit propertyChanged(this, HRendererConnectionEventInfo(
1235
"NumberOfTracks", h_ptr->getNumberOfTracks()));
1239
void HRendererConnectionInfo::setCurrentTrack(quint32 arg)
1241
if (arg != currentTrack())
1243
h_ptr->m_positionInfo.setTrack(arg);
1244
emit propertyChanged(this, HRendererConnectionEventInfo(
1245
"CurrentTrack", h_ptr->getCurrentTrack()));
1249
void HRendererConnectionInfo::setCurrentTrackDuration(const HDuration& arg)
1251
if (arg != currentTrackDuration())
1253
h_ptr->m_positionInfo.setTrackDuration(arg);
1254
emit propertyChanged(this, HRendererConnectionEventInfo(
1255
"CurrentTrackDuration", h_ptr->getCurrentTrackDuration()));
1259
void HRendererConnectionInfo::setCurrentMediaDuration(const HDuration& arg)
1261
if (arg != currentMediaDuration())
1263
h_ptr->m_mediaInfo.setMediaDuration(arg);
1264
emit propertyChanged(this, HRendererConnectionEventInfo(
1265
"CurrentMediaDuration", h_ptr->getCurrentMediaDuration()));
1269
void HRendererConnectionInfo::setCurrentTrackMetadata(const QString& arg)
1271
if (arg != currentTrackMetadata())
1273
h_ptr->m_positionInfo.setTrackMetadata(arg);
1274
emit propertyChanged(this, HRendererConnectionEventInfo(
1275
"CurrentTrackMetaData", h_ptr->getCurrentTrackMetaData()));
1279
void HRendererConnectionInfo::setCurrentTrackUri(const QUrl& arg)
1281
if (arg != currentTrackUri())
1283
h_ptr->m_positionInfo.setTrackUri(arg);
1284
emit propertyChanged(this, HRendererConnectionEventInfo(
1285
"CurrentTrackURI", h_ptr->getCurrentTrackURI()));
1289
void HRendererConnectionInfo::setCurrentResourceUri(const QUrl& arg)
1291
if (arg != currentResourceUri())
1293
h_ptr->m_mediaInfo.setCurrentUri(arg);
1294
emit propertyChanged(this, HRendererConnectionEventInfo(
1295
"AVTransportURI", h_ptr->getAVTransportURI()));
1299
void HRendererConnectionInfo::setCurrentResourceMetadata(const QString& arg)
1301
if (arg != currentResourceMetadata())
1303
h_ptr->m_mediaInfo.setCurrentUriMetadata(arg);
1304
emit propertyChanged(this, HRendererConnectionEventInfo(
1305
"AVTransportURIMetaData", h_ptr->getAVTransportURIMetaData()));
1309
void HRendererConnectionInfo::setNextResourceUri(const QUrl& arg)
1311
if (arg != nextResourceUri())
1313
h_ptr->m_mediaInfo.setNextUri(arg);
1314
emit propertyChanged(this, HRendererConnectionEventInfo(
1315
"NextAVTransportURI", h_ptr->getNextAVTransportURI()));
1319
void HRendererConnectionInfo::setNextResourceMetadata(const QString& arg)
1321
if (arg != nextResourceMetadata())
1323
h_ptr->m_mediaInfo.setNextUriMetadata(arg);
1324
emit propertyChanged(this, HRendererConnectionEventInfo(
1325
"NextAVTransportURIMetaData", h_ptr->getNextAVTransportURIMetaData()));
1329
void HRendererConnectionInfo::setRelativeTimePosition(const HDuration& arg)
1331
if (arg != relativeTimePosition())
1333
h_ptr->m_positionInfo.setRelativeTimePosition(arg);
1334
emit propertyChanged(this, HRendererConnectionEventInfo(
1335
"RelativeTimePosition", h_ptr->getRelativeTimePosition()));
1339
void HRendererConnectionInfo::setAbsoluteTimePosition(const HDuration& arg)
1341
if (arg != absoluteTimePosition())
1343
h_ptr->m_positionInfo.setAbsoluteTimePosition(arg);
1344
emit propertyChanged(this, HRendererConnectionEventInfo(
1345
"AbsoluteTimePosition", h_ptr->getAbsoluteTimePosition()));
1349
void HRendererConnectionInfo::setRelativeCounterPosition(qint32 arg)
1351
if (arg != relativeCounterPosition())
1353
h_ptr->m_positionInfo.setRelativeCounterPosition(arg);
1354
emit propertyChanged(this, HRendererConnectionEventInfo(
1355
"RelativeCounterPosition", h_ptr->getRelativeCounterPosition()));
1359
void HRendererConnectionInfo::setAbsoluteCounterPosition(qint32 arg)
1361
if (arg != absoluteCounterPosition())
1363
h_ptr->m_positionInfo.setAbsoluteCounterPosition(arg);
1364
emit propertyChanged(this, HRendererConnectionEventInfo(
1365
"AbsoluteCounterPosition", h_ptr->getAbsoluteCounterPosition()));
1369
void HRendererConnectionInfo::setCurrentTransportActions(
1370
const QSet<HTransportAction>& arg)
1372
if (arg != currentTransportActions())
1374
h_ptr->m_transportActions = arg;
1375
emit propertyChanged(this, HRendererConnectionEventInfo(
1376
"CurrentTransportActions", h_ptr->getCurrentTransportActions()));
1380
void HRendererConnectionInfo::setDrmState(HAvTransportInfo::DrmState arg)
1382
if (arg != drmState())
1384
h_ptr->m_drmState = arg;
1385
emit propertyChanged(this, HRendererConnectionEventInfo(
1386
"DRMState", h_ptr->getDrmState()));
1390
void HRendererConnectionInfo::setDeviceCapabilities(
1391
const HDeviceCapabilities& arg)
1393
setPossiblePlaybackStorageMedia(arg.playMedia());
1394
setPossibleRecordQualityModes(arg.recordQualityModes());
1395
setPossibleRecordStorageMedia(arg.recordMedia());
1398
void HRendererConnectionInfo::setMediaInfo(const HMediaInfo& arg)
1400
setCurrentResourceUri(arg.currentUri());
1401
setCurrentResourceMetadata(arg.currentUriMetadata());
1402
setCurrentMediaCategory(arg.mediaCategory());
1403
setCurrentMediaDuration(arg.mediaDuration());
1404
setNextResourceUri(arg.nextUri());
1405
setNextResourceMetadata(arg.nextUriMetadata());
1406
setNumberOfTracks(arg.numberOfTracks());
1407
setPlaybackStorageMedium(arg.playMedium());
1408
setRecordStorageMedium(arg.recordMedium());
1409
setRecordMediumWriteStatus(arg.writeStatus());
1412
void HRendererConnectionInfo::setPositionInfo(const HPositionInfo& arg)
1414
setAbsoluteCounterPosition(arg.absoluteCounterPosition());
1415
setAbsoluteTimePosition(arg.absoluteTimePosition());
1416
setRelativeCounterPosition(arg.relativeCounterPosition());
1417
setRelativeTimePosition(arg.relativeTimePosition());
1418
setCurrentTrack(arg.track());
1419
setCurrentTrackDuration(arg.trackDuration());
1420
setCurrentTrackMetadata(arg.trackMetadata());
1421
setCurrentTrackUri(arg.trackUri());
1424
void HRendererConnectionInfo::setTransportInfo(const HTransportInfo& arg)
1426
setTransportPlaySpeed(arg.speed());
1427
setTransportState(arg.state());
1428
setTransportStatus(arg.status());
1431
void HRendererConnectionInfo::setTransportSettings(const HTransportSettings& arg)
1433
setCurrentPlayMode(arg.playMode());
1434
setCurrentRecordQualityMode(arg.recordQualityMode());
1437
void HRendererConnectionInfo::setPresets(const QSet<QString>& presets)
1439
h_ptr->m_presets = presets;
1442
void HRendererConnectionInfo::setRcsValue(RcsAttribute attr, quint16 value)
1444
if (h_ptr->m_rcsAttributes.value(attr) != value)
1446
h_ptr->m_rcsAttributes.insert(attr, value);
1447
emit propertyChanged(this, HRendererConnectionEventInfo(
1448
rcsAttributeToString(attr), QString::number(value)));
1452
void HRendererConnectionInfo::setHorizontalKeystone(qint16 value)
1454
if (horizontalKeystone() != value)
1456
h_ptr->m_horizontalKeystone = value;
1457
emit propertyChanged(this, HRendererConnectionEventInfo(
1458
"HorizontalKeystone", QString::number(value)));
1462
void HRendererConnectionInfo::setVerticalKeystone(qint16 value)
1464
if (verticalKeystone() != value)
1466
h_ptr->m_verticalKeystone = value;
1467
emit propertyChanged(this, HRendererConnectionEventInfo(
1468
"VerticalKeystone", QString::number(value)));
1472
bool HRendererConnectionInfo::setMute(const HChannel& channel, bool enabled)
1474
HChannelInformation* info = 0;
1475
if ((info = h_ptr->checkAndAddChannel(channel)))
1477
if (info->muted != enabled)
1479
info->muted = enabled;
1480
emit propertyChanged(this, HRendererConnectionEventInfo(
1481
"Mute", enabled ? "1" : "0"));
1487
bool HRendererConnectionInfo::setVolume(const HChannel& channel, quint16 value)
1489
HChannelInformation* info = 0;
1490
if ((info = h_ptr->checkAndAddChannel(channel)))
1492
if (info->volume != value)
1494
info->volume = value;
1495
emit propertyChanged(this, HRendererConnectionEventInfo(
1496
"Volume", QString::number(value)));
1502
bool HRendererConnectionInfo::setVolumeDb(const HChannel& channel, qint16 value)
1504
HChannelInformation* info = 0;
1505
if ((info = h_ptr->checkAndAddChannel(channel)))
1507
if (info->volumeDb != value)
1509
info->volumeDb = value;
1510
emit propertyChanged(this, HRendererConnectionEventInfo(
1511
"VolumeDB", QString::number(value)));
1517
bool HRendererConnectionInfo::setLoudness(const HChannel& channel, bool enabled)
1519
HChannelInformation* info = 0;
1520
if ((info = h_ptr->checkAndAddChannel(channel)))
1522
if (info->loudness != enabled)
1524
info->loudness = enabled;
1525
emit propertyChanged(this, HRendererConnectionEventInfo(
1526
"Loudness", enabled ? "1" : "0"));
1532
QString HRendererConnectionInfo::value(const QString& svName, bool* ok) const
1534
return value(svName, HChannel(), ok);
1537
QString HRendererConnectionInfo::value(
1538
const QString& svName, const HChannel& channel, bool* ok) const
1540
if (h_ptr->m_valueGetters.contains(svName))
1542
if (ok) { *ok = true; }
1543
ValueGetter getter = h_ptr->m_valueGetters.value(svName);
1544
return getter(channel);
1547
if (ok) { *ok = false; }
1551
bool HRendererConnectionInfo::setValue(const QString& svName, const QString& value)
1553
return setValue(svName, HChannel(), value);
1556
bool HRendererConnectionInfo::setValue(
1557
const QString& svName, const HChannel& channel, const QString& value)
1559
if (h_ptr->m_valueSetters.contains(svName))
1561
ValueSetter setter = h_ptr->m_valueSetters.value(svName);
1562
setter(value, channel);
1568
bool HRendererConnectionInfo::hasChannelAssociated(const QString& svName)
1570
bool retVal = false;
1571
QString trimmed = svName.trimmed();
1572
if (trimmed.compare("Mute", Qt::CaseInsensitive) == 0)
1576
else if (trimmed.compare("Volume", Qt::CaseInsensitive) == 0)
1580
else if (trimmed.compare("VolumeDB", Qt::CaseInsensitive) == 0)
1584
else if (trimmed.compare("Loudness", Qt::CaseInsensitive) == 0)