From 0a329e6602d4bf55ba15374960dbc1b59005eee8 Mon Sep 17 00:00:00 2001 From: Didier Date: Wed, 7 Dec 2011 15:31:49 +0100 Subject: [PATCH] Resolved some issues related to the drag and drop from an external browser on Mac --- src/core/UBApplication.cpp | 13 ++++++++++--- src/gui/UBLibPathViewer.cpp | 31 +++++++++++++++++++++++++------ src/gui/UBLibraryWidget.cpp | 1 + 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 4e681cea..304f4177 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -643,15 +643,22 @@ QString UBApplication::globalStyleSheet() QString UBApplication::urlFromHtml(QString html) { - qDebug() << "HTML: " << html.remove(QRegExp("[\\0]")); QString url; - QDomDocument domDoc; domDoc.setContent(html.remove(QRegExp("[\\0]"))); QDomElement rootElem = domDoc.documentElement(); - url = rootElem.attribute("src"); + // QUICKFIX: Here we have to check rootElem. Sometimes it can be a tag + // In such a case we will not be able to retrieve the src value + if(rootElem.tagName().toLower().contains("meta")){ + qDebug() << rootElem.firstChildElement().tagName(); + // In that case we get the next element + url = rootElem.firstChildElement().attribute("src"); + }else{ + url = rootElem.attribute("src"); + } + qDebug() << "The URL is: " << url; return url; } diff --git a/src/gui/UBLibPathViewer.cpp b/src/gui/UBLibPathViewer.cpp index d63f95d2..28a10fdd 100644 --- a/src/gui/UBLibPathViewer.cpp +++ b/src/gui/UBLibPathViewer.cpp @@ -478,9 +478,8 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) } bAccept = true; - } - else if(NULL != event->mimeData() && event->mimeData()->hasUrls()){ - QList urls = event->mimeData()->urls(); + }else if(NULL != pMimeData && pMimeData->hasUrls()){ + QList urls = pMimeData->urls(); foreach(QUrl eachUrl, urls){ QString sUrl = eachUrl.toString(); if(!sUrl.startsWith("uniboardTool://") && !sUrl.startsWith("file://") && !sUrl.startsWith("/")){ @@ -503,11 +502,10 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) } } bAccept = true; - } - else if(NULL != event->mimeData() && event->mimeData()->hasText()){ + }else if(NULL != pMimeData && pMimeData->hasText()){ // The user can only drop an Url in this location so if the text is not an Url, // we discard it. - QString qsTxt = event->mimeData()->text().remove(QRegExp("[\\0]")); + QString qsTxt = pMimeData->text().remove(QRegExp("[\\0]")); if(qsTxt.startsWith("http")){ // Show the download palette if it is hidden UBApplication::boardController->paletteManager()->startDownloads(); @@ -524,6 +522,27 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) UBDownloadManager::downloadManager()->addFileToDownload(desc); bAccept = true; } + }else if(NULL != pMimeData && pMimeData->hasHtml()){ + QString html = pMimeData->html(); + QString url = UBApplication::urlFromHtml(html); + if("" != url) + { + bAccept = true; + + // Show the download palette if it is hidden + UBApplication::boardController->paletteManager()->startDownloads(); + + // Add the dropped url to the download list + sDownloadFileDesc desc; + desc.currentSize = 0; + desc.id = 0; + desc.isBackground = false; + desc.modal = false; + desc.name = QFileInfo(url).fileName(); + desc.totalSize = 0; + desc.url = url; + UBDownloadManager::downloadManager()->addFileToDownload(desc); + } } if(bAccept){ event->accept(); diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 26180856..22c27adc 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -385,6 +385,7 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) else if (pMimeData->hasHtml()){ qDebug() << "hasHtml"; QString html = pMimeData->html(); + qDebug() << html; QString url = UBApplication::urlFromHtml(html); if("" != url) {