]> git.sur5r.net Git - minitube/blob - src/videoareawidget.cpp
Ability to drag playlist items on the video area
[minitube] / src / videoareawidget.cpp
1 #include "videoareawidget.h"
2 #include "videomimedata.h"
3
4 VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent) {
5     stackedLayout = new QStackedLayout(this);
6     setLayout(stackedLayout);
7     setAcceptDrops(true);
8 }
9
10 void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
11     this->videoWidget = videoWidget;
12     stackedLayout->addWidget(videoWidget);
13 }
14
15 void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
16     this->loadingWidget = loadingWidget;
17     stackedLayout->addWidget(loadingWidget);
18 }
19
20 void VideoAreaWidget::showVideo() {
21     stackedLayout->setCurrentWidget(videoWidget);
22 }
23
24 void VideoAreaWidget::showLoading(Video *video) {
25     this->loadingWidget->setVideo(video);
26     stackedLayout->setCurrentWidget(loadingWidget);
27 }
28
29 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
30     if (event->button() == Qt::LeftButton)
31         emit doubleClicked();
32 }
33
34 void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
35     switch(event->button() == Qt::RightButton)
36             emit rightClicked();
37 }
38
39 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
40     qDebug() << event->mimeData()->formats();
41     if (event->mimeData()->hasFormat("application/x-minitube-video")) {
42         event->acceptProposedAction();
43     }
44 }
45
46 void VideoAreaWidget::dropEvent(QDropEvent *event) {
47
48     const VideoMimeData* videoMimeData = dynamic_cast<const VideoMimeData*>( event->mimeData() );
49     if(!videoMimeData ) return;
50
51     QList<Video*> droppedVideos = videoMimeData->videos();
52     foreach( Video *video, droppedVideos) {
53         int row = listModel->rowForVideo(video);
54         if (row != -1)
55             listModel->setActiveRow(row);
56     }
57     event->acceptProposedAction();
58 }