diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 304f4177..992204ee 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -643,14 +643,19 @@ QString UBApplication::globalStyleSheet() QString UBApplication::urlFromHtml(QString html) { - QString url; + QString _html; + QRegExp comments("\\"); + QString url; QDomDocument domDoc; - domDoc.setContent(html.remove(QRegExp("[\\0]"))); + + // We remove all the comments & CRLF of this html + _html = html.remove(comments); + domDoc.setContent(_html.remove(QRegExp("[\\0]"))); QDomElement rootElem = domDoc.documentElement(); // 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")){ + if(rootElem.tagName().toLower().contains("meta")){ qDebug() << rootElem.firstChildElement().tagName(); // In that case we get the next element url = rootElem.firstChildElement().attribute("src"); @@ -658,8 +663,7 @@ QString UBApplication::urlFromHtml(QString html) url = rootElem.attribute("src"); } - qDebug() << "The URL is: " << url; - return url; + return url; } bool UBApplication::isFromWeb(QString url) diff --git a/src/gui/UBLibPathViewer.cpp b/src/gui/UBLibPathViewer.cpp index 28a10fdd..2dff5098 100644 --- a/src/gui/UBLibPathViewer.cpp +++ b/src/gui/UBLibPathViewer.cpp @@ -484,8 +484,6 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) QString sUrl = eachUrl.toString(); if(!sUrl.startsWith("uniboardTool://") && !sUrl.startsWith("file://") && !sUrl.startsWith("/")){ // The dropped URL comes from the web - qDebug() << "Dropped url: " << sUrl; - // Show the download palette if it is hidden UBApplication::boardController->paletteManager()->startDownloads(); @@ -499,10 +497,11 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) desc.totalSize = 0; desc.url = sUrl; UBDownloadManager::downloadManager()->addFileToDownload(desc); + bAccept = true; } } - bAccept = true; - }else if(NULL != pMimeData && pMimeData->hasText()){ + } + if(!bAccept && 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 = pMimeData->text().remove(QRegExp("[\\0]")); @@ -522,13 +521,12 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) UBDownloadManager::downloadManager()->addFileToDownload(desc); bAccept = true; } - }else if(NULL != pMimeData && pMimeData->hasHtml()){ + } + if(!bAccept && 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(); @@ -542,6 +540,7 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event) desc.totalSize = 0; desc.url = url; UBDownloadManager::downloadManager()->addFileToDownload(desc); + bAccept = true; } } if(bAccept){ diff --git a/src/gui/UBLibPathViewer.h b/src/gui/UBLibPathViewer.h index ee002e98..faf1714a 100644 --- a/src/gui/UBLibPathViewer.h +++ b/src/gui/UBLibPathViewer.h @@ -70,6 +70,7 @@ private: QTime mClickTime; /** A map between a widget and a chained element */ QMap mMapWidgetToChainedElem; + }; class UBLibPathViewer : public QGraphicsView diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 22c27adc..53a0b2a1 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -330,21 +330,17 @@ void UBLibraryWidget::onDropMe(const QMimeData *_data) void UBLibraryWidget::dropEvent(QDropEvent *event) { const QMimeData* pMimeData = event->mimeData(); - if(event->source() == this) - { + if(event->source() == this){ event->accept(); // Get the destination item UBLibElement* pElem = elementAt(event->pos()); - if(NULL != pElem) - { - if(eUBLibElementType_Folder == pElem->type()) - { + if(NULL != pElem){ + if(eUBLibElementType_Folder == pElem->type()){ // The drag comes from this application, we have now to get the list of UBLibElements* QList qlDroppedElems; - foreach(QUrl url, pMimeData->urls()) - { + foreach(QUrl url, pMimeData->urls()){ qlDroppedElems << url.toString(); } @@ -360,7 +356,6 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) // and if we want to display the download widget in order to make the user wait for the end of the download, we need // to check the URLs first! if (pMimeData->hasUrls()){ - qDebug() << "hasUrls"; QList urlList = pMimeData->urls(); for (int i = 0; i < urlList.size() && i < 32; ++i){ QString filePath; @@ -382,20 +377,16 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) // When an HTML is present, it means that we dropped something from the web. Normally, the HTML contains the element // of the webpage and has a 'src' attribute containing the URL of the web ressource. Here we are looking for this // 'src' attribute, get its value and download the ressource from this URL. - else if (pMimeData->hasHtml()){ - qDebug() << "hasHtml"; + if (!bDropAccepted && pMimeData->hasHtml()){ QString html = pMimeData->html(); - qDebug() << html; QString url = UBApplication::urlFromHtml(html); - if("" != url) - { + if("" != url){ mLibraryController->importItemOnLibrary(url); bDropAccepted = true; } } - else if (pMimeData->hasText()){ + if (!bDropAccepted && pMimeData->hasText()){ // On linux external dragged element are considered as text; - qDebug() << "hasText: " << pMimeData->text(); QString filePath = QUrl(pMimeData->text()).toLocalFile(); if("" != filePath){ mLibraryController->importItemOnLibrary(filePath); @@ -415,15 +406,11 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) #endif } } - else if (pMimeData->hasImage()){ - qDebug() << "hasImage"; + if (!bDropAccepted && pMimeData->hasImage()){ QImage image = qvariant_cast(pMimeData->imageData()); mLibraryController->importImageOnLibrary(image); bDropAccepted = true; } - else{ - qWarning() << "Cannot import data"; - } if(bDropAccepted){ onRefreshCurrentFolder();