| 255 | |
| 256 | #else |
| 257 | QVariant CClipboardMimeData::retrieveData(const QString &mimeType, |
| 258 | QVariant::Type preferredType) const |
| 259 | #endif |
| 260 | { |
| 261 | //* |
| 262 | qDebug(log) << "CClipboardMimeData::retrieveData:" << GetId() << mimeType |
| 263 | << "Variant:" << m_Variant; //*/ |
| 264 | if(MIME_TYPE_RABBITREMOTECONTROL_PLUGINS_FREERDP == mimeType) |
| 265 | return GetId(); |
| 266 | |
| 267 | QString mt = mimeType; |
| 268 | if(isImage(mt)) mt = "image/bmp"; |
| 269 | if(m_indexString.find(mt) == m_indexString.end()) |
| 270 | return QVariant(); |
| 271 | |
| 272 | _FORMAT value; |
| 273 | auto lstValue = m_indexString.values(mt); |
| 274 | if(lstValue.isEmpty()) |
| 275 | return QVariant(); |
| 276 | value = *lstValue.crbegin(); |
| 277 | //* |
| 278 | qDebug(log) << "CClipboardMimeData::retrieveData: format id:" << value.id |
| 279 | << "name:" << value.name << "mimeData:" << mimeType; //*/ |
| 280 | |
| 281 | if(m_Variant.isValid() && !m_Variant.isNull()) { |
| 282 | if(isUrls(mimeType)) |
| 283 | { |
| 284 | QByteArray data = m_Variant.toByteArray(); |
| 285 | emit sigRequestFileFromServer(mimeType, value.name, data.data(), data.size()); |
| 286 | } |
| 287 | return m_Variant; |
| 288 | } |
| 289 | if(!m_pContext) return QVariant(); |
| 290 | |
| 291 | emit sigSendDataRequest(m_pContext, value.id); |
| 292 | |
| 293 | // add wait response event |
| 294 | QEventLoop loop; |
| 295 | connect(this, SIGNAL(sigContinue()), &loop, SLOT(quit()), Qt::DirectConnection); |
| 296 | loop.exec(); |
| 297 | qDebug(log) << "CClipboardMimeData::retrieveData end"; |
| 298 | // Objecte destruct |
| 299 | if(m_bExit) |
| 300 | return QVariant(); |
| 301 | |
| 302 | if(isUrls(mimeType) && !m_Variant.isNull()) |
| 303 | { |
| 304 | QByteArray data = m_Variant.toByteArray(); |
| 305 | emit sigRequestFileFromServer(mimeType, value.name, data.data(), data.size()); |
| 306 | } |
| 307 | return m_Variant; |
| 308 | } |
| 309 | |
| 310 | //! if(pData == nullptr && nLen == 0) is Notify clipboard program has exited |
| 311 | void CClipboardMimeData::slotServerFormatData(const BYTE* pData, UINT32 nLen, |