Implemented the drag and drop from a *.wgs app

preferencesAboutTextFull
shibakaneki 13 years ago
parent c508ec6adf
commit 4860f7d17a
  1. 9
      src/board/UBBoardController.cpp
  2. 52
      src/gui/UBLibPathViewer.cpp

@ -1884,7 +1884,14 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
if (pMimeData->hasText())
{
if("" != pMimeData->text()){
mActiveScene->addText(pMimeData->text(), pPos);
// Sometimes, it is possible to have an URL as text. we check here if it is the case
QString qsTmp = pMimeData->text().remove(QRegExp("[\\0]"));
if(qsTmp.startsWith("http")){
downloadURL(QUrl(qsTmp), pPos);
}
else{
mActiveScene->addText(pMimeData->text(), pPos);
}
}
else{
#ifdef Q_WS_MACX

@ -457,39 +457,33 @@ void UBPathScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event)
{
bool bAccept = false;
const QMimeData* pMimeData = event->mimeData();
if(NULL != event->source() && 0 == QString::compare(event->source()->metaObject()->className(), "UBLibraryWidget"))
{
if(NULL != event->source() && 0 == QString::compare(event->source()->metaObject()->className(), "UBLibraryWidget")){
UBLibElement* pTargetElement = elementFromPos(event->scenePos());
if(NULL != pTargetElement)
{
if(eUBLibElementType_Folder == pTargetElement->type())
{
if(NULL != pTargetElement){
if(eUBLibElementType_Folder == pTargetElement->type()){
// The drag comes from this application, we have now to get the list of UBLibElements*
QList<QString> qlDroppedElems;
foreach(QUrl url, pMimeData->urls())
qlDroppedElems << url.toString();
if(!qlDroppedElems.empty())
{
if(!qlDroppedElems.empty()){
// Send a signal with the target dir and the list of ublibelement*
emit elementsDropped(qlDroppedElems, pTargetElement);
}
}
}
event->accept();
bAccept = true;
}
else if(NULL != event->mimeData() && event->mimeData()->hasUrls())
{
else if(NULL != event->mimeData() && event->mimeData()->hasUrls()){
QList<QUrl> urls = event->mimeData()->urls();
foreach(QUrl eachUrl, urls)
{
foreach(QUrl eachUrl, urls){
QString sUrl = eachUrl.toString();
if(!sUrl.startsWith("uniboardTool://") && !sUrl.startsWith("file://") && !sUrl.startsWith("/"))
{
if(!sUrl.startsWith("uniboardTool://") && !sUrl.startsWith("file://") && !sUrl.startsWith("/")){
// The dropped URL comes from the web
qDebug() << "Dropped url: " << sUrl;
@ -508,9 +502,33 @@ void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event)
UBDownloadManager::downloadManager()->addFileToDownload(desc);
}
}
bAccept = true;
}
else
{
else if(NULL != event->mimeData() && event->mimeData()->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]"));
if(qsTxt.startsWith("http")){
// 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(qsTxt).fileName();
desc.totalSize = 0;
desc.url = qsTxt;
UBDownloadManager::downloadManager()->addFileToDownload(desc);
bAccept = true;
}
}
if(bAccept){
event->accept();
}
else{
event->ignore();
}
}

Loading…
Cancel
Save