From 08f9384b4321c77ae073d3415ce9be605d79ad0f Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 6 Jan 2012 10:51:35 +0100 Subject: [PATCH] handling drop from preview mode --- src/board/UBBoardView.cpp | 10 +++--- src/core/UBDisplayManager.cpp | 2 +- src/customWidgets/UBDraggableLabel.cpp | 39 +++++++++++++++++++++++ src/customWidgets/UBDraggableLabel.h | 23 ++++++++++++++ src/customWidgets/customWidgets.pri | 8 +++-- src/gui/UBMediaPlayer.cpp | 28 ++++++++++++++++ src/gui/UBMediaPlayer.h | 12 +++++++ src/gui/UBTeacherBarWidget.cpp | 44 +++++++------------------- src/gui/UBTeacherBarWidget.h | 7 +--- 9 files changed, 126 insertions(+), 47 deletions(-) create mode 100644 src/customWidgets/UBDraggableLabel.cpp create mode 100644 src/customWidgets/UBDraggableLabel.h diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index af99f131..4cbfe088 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -19,6 +19,7 @@ #include "UBDrawingController.h" #include "frameworks/UBGeometryUtils.h" +#include "frameworks/UBPlatformUtils.h" #include "core/UBSettings.h" #include "core/UBMimeData.h" @@ -33,8 +34,8 @@ #include "gui/UBToolWidget.h" #include "gui/UBResources.h" #include "gui/UBMainWindow.h" -#include "gui/UBTeacherBarWidget.h" - +#include "gui/UBMediaPlayer.h" +#include "gui/UBThumbnailWidget.h" #include "board/UBBoardController.h" @@ -44,9 +45,8 @@ #include "domain/UBItem.h" #include "document/UBDocumentProxy.h" -#include "../gui/UBThumbnailWidget.h" -#include "frameworks/UBPlatformUtils.h" +#include "customWidgets/UBDraggableLabel.h" #include "core/memcheck.h" @@ -727,7 +727,7 @@ void UBBoardView::dropEvent (QDropEvent *event) { qDebug() << event->source(); - if(!event->source() || dynamic_cast(event->source()) || dynamic_cast(event->source()) || dynamic_cast(event->source())) + if(!event->source() || dynamic_cast(event->source()) || dynamic_cast(event->source()) || dynamic_cast(event->source()) || dynamic_cast(event->source())) { mController->processMimeData (event->mimeData (), mapToScene (event->pos ())); event->acceptProposedAction (); diff --git a/src/core/UBDisplayManager.cpp b/src/core/UBDisplayManager.cpp index 6ecdc679..c6214d15 100644 --- a/src/core/UBDisplayManager.cpp +++ b/src/core/UBDisplayManager.cpp @@ -48,7 +48,7 @@ UBDisplayManager::UBDisplayManager(QObject *parent) void UBDisplayManager::initScreenIndexes() { - int screenCount = numScreens(); + int screenCount = 1;//numScreens(); mScreenIndexesRoles.clear(); diff --git a/src/customWidgets/UBDraggableLabel.cpp b/src/customWidgets/UBDraggableLabel.cpp new file mode 100644 index 00000000..200205b9 --- /dev/null +++ b/src/customWidgets/UBDraggableLabel.cpp @@ -0,0 +1,39 @@ +#include +#include +#include + +#include "UBDraggableLabel.h" + + +UBDraggableLabel::UBDraggableLabel(QWidget *parent) : + QLabel(parent) +{ +} + +UBDraggableLabel::~UBDraggableLabel() +{ + //NOOP +} + +void UBDraggableLabel::loadImage(QString imagePath) +{ + mSourcePath = imagePath; + QPixmap pix = QPixmap(mSourcePath); + setPixmap(pix); + setScaledContents(true); +} + +void UBDraggableLabel::mousePressEvent(QMouseEvent *event) +{ + Q_UNUSED(event); + QMimeData *mimeData = new QMimeData; + QList urls; + urls << QUrl::fromLocalFile(mSourcePath); + mimeData->setUrls(urls); + mimeData->setText(mSourcePath); + + + QDrag *drag = new QDrag(this); + drag->setMimeData(mimeData); + drag->start(); +} diff --git a/src/customWidgets/UBDraggableLabel.h b/src/customWidgets/UBDraggableLabel.h new file mode 100644 index 00000000..384b313e --- /dev/null +++ b/src/customWidgets/UBDraggableLabel.h @@ -0,0 +1,23 @@ +#ifndef UBDRAGGABLELABEL_H +#define UBDRAGGABLELABEL_H + +#include + +class UBDraggableLabel : public QLabel +{ + Q_OBJECT +public: + UBDraggableLabel(QWidget *parent = 0); + ~UBDraggableLabel(); + void loadImage(QString imagePath); +signals: + +public slots: + +protected: + QString mSourcePath; + void mousePressEvent(QMouseEvent *event); + +}; + +#endif // UBDRAGGABLELABEL_H diff --git a/src/customWidgets/customWidgets.pri b/src/customWidgets/customWidgets.pri index a5609d31..321f3d45 100644 --- a/src/customWidgets/customWidgets.pri +++ b/src/customWidgets/customWidgets.pri @@ -1,5 +1,9 @@ -HEADERS += src/customWidgets/UBWidgetList.h +HEADERS += src/customWidgets/UBWidgetList.h \ + src/customWidgets/UBDraggableLabel.h -SOURCES += src/customWidgets/UBWidgetList.cpp +SOURCES += src/customWidgets/UBWidgetList.cpp \ + src/customWidgets/UBDraggableLabel.cpp + + diff --git a/src/gui/UBMediaPlayer.cpp b/src/gui/UBMediaPlayer.cpp index 357d161e..c68253b3 100644 --- a/src/gui/UBMediaPlayer.cpp +++ b/src/gui/UBMediaPlayer.cpp @@ -343,3 +343,31 @@ void UBMediaPlayer::hasVideoChanged(bool bHasVideo) // info->setVisible(!bHasVideo); m_videoWindow.setVisible(bHasVideo); } + +//************************************************************************* +UBDraggableMediaPlayer::UBDraggableMediaPlayer():UBMediaPlayer() +{ +// setAcceptDrops(true); +} + +void UBDraggableMediaPlayer::setFile(const QString &text) +{ + mSourcePath = text; + UBMediaPlayer::setFile(text); +} + +void UBDraggableMediaPlayer::mousePressEvent(QMouseEvent *event) +{ + Q_UNUSED(event); + QMimeData *mimeData = new QMimeData; + QList urls; + urls << QUrl::fromLocalFile(mSourcePath); + mimeData->setUrls(urls); + mimeData->setText(mSourcePath); + + + QDrag *drag = new QDrag(this); + drag->setMimeData(mimeData); + drag->start(); +} + diff --git a/src/gui/UBMediaPlayer.h b/src/gui/UBMediaPlayer.h index 6e563698..86534802 100644 --- a/src/gui/UBMediaPlayer.h +++ b/src/gui/UBMediaPlayer.h @@ -89,4 +89,16 @@ private: Phonon::Path m_audioOutputPath; }; +class UBDraggableMediaPlayer : public UBMediaPlayer +{ + Q_OBJECT +public: + UBDraggableMediaPlayer(); + void setFile(const QString &text); +protected: + QString mSourcePath; + void mousePressEvent(QMouseEvent *event); +}; + + #endif // UBUBMediaPlayer_H diff --git a/src/gui/UBTeacherBarWidget.cpp b/src/gui/UBTeacherBarWidget.cpp index 65c4ad91..e2336b10 100644 --- a/src/gui/UBTeacherBarWidget.cpp +++ b/src/gui/UBTeacherBarWidget.cpp @@ -15,6 +15,8 @@ #include "frameworks/UBFileSystemUtils.h" +#include "customWidgets/UBDraggableLabel.h" + #include "core/memcheck.h" UBTeacherBarWidget::UBTeacherBarWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent) @@ -583,7 +585,6 @@ void UBTeacherBarDropMediaZone::reloadMedia(QStringList pList) foreach(QString eachString, pList){ addMedia(eachString); } - } void UBTeacherBarDropMediaZone::dropEvent(QDropEvent *pEvent) @@ -722,15 +723,11 @@ void UBTeacherBarPreviewWidget::onEdit() UBTeacherBarPreviewMedia::UBTeacherBarPreviewMedia(QWidget* parent, const char* name) : QWidget(parent) { setObjectName(name); - setAcceptDrops(true); mWidget = new UBWidgetList(parent); mWidget->setEmptyText(tr("No media found")); mLayout.addWidget(mWidget); setLayout(&mLayout); - //TO TEST only -// QStringList mediaPathList; -// mediaPathList << "/home/claudio/Desktop/PIPPO.jpg"; -// loadMedia(mediaPathList); + mWidgetList.clear(); } UBTeacherBarPreviewMedia::~UBTeacherBarPreviewMedia() @@ -743,28 +740,25 @@ UBTeacherBarPreviewMedia::~UBTeacherBarPreviewMedia() } -// for test only -QString tempString; - void UBTeacherBarPreviewMedia::loadMedia(QStringList pMedias) { + foreach(QWidget* eachWidget, mWidgetList.keys()) + delete eachWidget; + mWidgetList.clear(); foreach(QString eachString, pMedias){ if(!eachString.isEmpty()){ - tempString = eachString; QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(eachString); if(mimeType.contains("image")){ - QPixmap pix = QPixmap(eachString); - QLabel* label = new QLabel(); - label->setPixmap(pix); - label->setScaledContents(true); + UBDraggableLabel* label = new UBDraggableLabel(); + label->loadImage(eachString); mWidget->addWidget(label); - // mWidgetList << label; + mWidgetList[label]=eachString; } else if(mimeType.contains("video") || mimeType.contains("audio")){ - UBMediaPlayer* mediaPlayer = new UBMediaPlayer(); + UBDraggableMediaPlayer* mediaPlayer = new UBDraggableMediaPlayer(); mediaPlayer->setFile(eachString); mWidget->addWidget(mediaPlayer); - // mWidgetList << mediaPlayer; + mWidgetList[mediaPlayer] = eachString; } else{ qWarning() << "pMediaPath" << eachString; @@ -773,19 +767,3 @@ void UBTeacherBarPreviewMedia::loadMedia(QStringList pMedias) } } } - -void UBTeacherBarPreviewMedia::mousePressEvent(QMouseEvent *event) -{ - Q_UNUSED(event); - QMimeData *mimeData = new QMimeData; - QList urls; - urls << QUrl::fromLocalFile(tempString); - mimeData->setUrls(urls); - mimeData->setText(tempString); - - - QDrag *drag = new QDrag(this); - drag->setMimeData(mimeData); - drag->start(); -} - diff --git a/src/gui/UBTeacherBarWidget.h b/src/gui/UBTeacherBarWidget.h index 50377d65..a7097cbe 100644 --- a/src/gui/UBTeacherBarWidget.h +++ b/src/gui/UBTeacherBarWidget.h @@ -81,12 +81,7 @@ public: private: UBWidgetList* mWidget; QVBoxLayout mLayout; - -protected: - void mousePressEvent(QMouseEvent *event); - -public slots: - + QMapmWidgetList; }; class UBUrlWidget : public QWidget