37
41
ContentPeer::ContentPeer(QObject *parent)
44
m_handler(ContentHandler::Source),
45
m_contentType(ContentType::Unknown),
46
m_selectionType(ContentTransfer::Single),
47
m_explicit_peer(false)
41
qDebug() << Q_FUNC_INFO;
49
TRACE() << Q_FUNC_INFO;
51
m_hub = cuc::Hub::Client::instance();
45
55
* \qmlproperty string ContentPeer::name
47
* Returns user friendly name of the peer
57
* Returns user friendly name of the peer.
49
59
QString ContentPeer::name()
51
qDebug() << Q_FUNC_INFO;
61
TRACE() << Q_FUNC_INFO;
52
62
return m_peer.name();
56
66
* \qmlproperty string ContentPeer::appId
58
* Returns the Application id
67
* When set, this property allows for a specific application to be used as a peer.
60
69
const QString &ContentPeer::appId() const
62
qDebug() << Q_FUNC_INFO;
71
TRACE() << Q_FUNC_INFO;
63
72
return m_peer.id();
76
* \brief ContentPeer::setAppId
78
* Sets the Application id
80
void ContentPeer::setAppId(const QString& appId)
82
TRACE() << Q_FUNC_INFO << appId;
83
this->setPeer(cuc::Peer{appId});
86
QImage &ContentPeer::icon()
88
TRACE() << Q_FUNC_INFO;
67
93
* \brief ContentPeer::peer
76
102
* \brief ContentPeer::setPeer
79
void ContentPeer::setPeer(const cuc::Peer &peer)
105
void ContentPeer::setPeer(const cuc::Peer &peer, bool explicitPeer)
107
TRACE() << Q_FUNC_INFO;
109
m_explicit_peer = explicitPeer;
110
if (peer.iconData().isEmpty())
112
if (QIcon::hasThemeIcon(peer.iconName().toUtf8()))
113
m_icon = QIcon::fromTheme(peer.iconName().toUtf8()).pixmap(256).toImage();
115
m_icon.loadFromData(peer.iconData());
116
ContentIconProvider *iconProvider = ContentIconProvider::instance();
117
iconProvider->addImage(appId(), m_icon);
82
119
Q_EMIT nameChanged();
83
120
Q_EMIT appIdChanged();
124
* \qmlproperty ContentHandler ContentPeer::handler
125
* Specifies which ContentHandler this peer should support (e.g. Source, Destination, Share).
127
ContentHandler::Handler ContentPeer::handler()
129
TRACE() << Q_FUNC_INFO;
134
* \brief ContentPeer::setHandler
137
void ContentPeer::setHandler(ContentHandler::Handler handler)
139
TRACE() << Q_FUNC_INFO;
142
Q_EMIT handlerChanged();
146
* \qmlproperty ContentType ContentPeer::contentType
147
* Specifies the ContentType this peer should support.
149
ContentType::Type ContentPeer::contentType()
151
TRACE() << Q_FUNC_INFO;
152
return m_contentType;
156
* \brief ContentPeer::setContentType
159
void ContentPeer::setContentType(ContentType::Type contentType)
161
TRACE() << Q_FUNC_INFO;
162
m_contentType = contentType;
164
if(!m_explicit_peer) {
165
const cuc::Type &hubType = ContentType::contentType2HubType(m_contentType);
166
setPeer(m_hub->default_source_for_type(hubType), false);
169
Q_EMIT contentTypeChanged();
173
* \qmlproperty ContentTransfer.SelectionType ContentPeer::selectionType
174
* Specifies whether this peer is allowed to return multiple items.
176
ContentTransfer::SelectionType ContentPeer::selectionType()
178
TRACE() << Q_FUNC_INFO;
179
return m_selectionType;
183
* \brief ContentPeer::setSelectionType
186
void ContentPeer::setSelectionType(ContentTransfer::SelectionType selectionType)
188
TRACE() << Q_FUNC_INFO;
189
m_selectionType = selectionType;
191
Q_EMIT selectionTypeChanged();
195
* \brief ContentPeer::isDefaultPeer
198
bool ContentPeer::isDefaultPeer()
200
TRACE() << Q_FUNC_INFO;
201
return m_peer.isDefaultPeer();
205
* \qmlmethod ContentPeer::request()
207
* \brief Request an active transfer from this ContentPeer.
209
ContentTransfer *ContentPeer::request()
211
TRACE() << Q_FUNC_INFO;
212
return request(nullptr);
216
* \qmlmethod ContentPeer::request(ContentStore)
218
* \brief Request to an active transfer from this ContentPeer and use
219
* a ContentStore for permanent storage.
221
ContentTransfer *ContentPeer::request(ContentStore *store)
223
TRACE() << Q_FUNC_INFO;
225
ContentHub *contentHub = ContentHub::instance();
226
ContentTransfer *qmlTransfer = NULL;
227
if(m_handler == ContentHandler::Source) {
228
qmlTransfer = contentHub->importContent(m_peer);
229
} else if (m_handler == ContentHandler::Destination) {
230
qmlTransfer = contentHub->exportContent(m_peer);
231
} else if (m_handler == ContentHandler::Share) {
232
qmlTransfer = contentHub->shareContent(m_peer);
235
qmlTransfer->setSelectionType(m_selectionType);
237
store->updateStore(m_contentType);
238
qmlTransfer->setStore(store);
241
/* We only need to start it for import requests */
242
if (m_handler == ContentHandler::Source)
243
qmlTransfer->start();