]> git.sur5r.net Git - minitube/blob - src/videoareawidget.cpp
Moved autohide to Phonon:VideoWidget subclass
[minitube] / src / videoareawidget.cpp
1 #include "videoareawidget.h"
2 #include "videomimedata.h"
3
4 VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent) {
5     QBoxLayout *vLayout = new QVBoxLayout(this);
6     vLayout->setMargin(0);
7     vLayout->setSpacing(0);
8     
9     // hidden message widget
10     messageLabel = new QLabel(this);
11     messageLabel->setOpenExternalLinks(true);
12     messageLabel->setMargin(7);
13     messageLabel->setBackgroundRole(QPalette::ToolTipBase);
14     messageLabel->setForegroundRole(QPalette::ToolTipText);
15     messageLabel->setAutoFillBackground(true);
16     messageLabel->setWordWrap(true);
17     messageLabel->hide();
18     vLayout->addWidget(messageLabel);
19     
20     stackedLayout = new QStackedLayout();
21     vLayout->addLayout(stackedLayout);
22     
23     setLayout(vLayout);
24     setAcceptDrops(true);
25     
26 }
27
28 void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
29     this->videoWidget = videoWidget;
30     videoWidget->setMouseTracking(true);
31     stackedLayout->addWidget(videoWidget);
32 }
33
34 void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
35     this->loadingWidget = loadingWidget;
36     stackedLayout->addWidget(loadingWidget);
37 }
38
39 void VideoAreaWidget::showVideo() {
40     stackedLayout->setCurrentWidget(videoWidget);
41 }
42
43 void VideoAreaWidget::showError(QString message) {
44     // loadingWidget->setError(message);
45     messageLabel->setText(message);
46     messageLabel->show();
47     stackedLayout->setCurrentWidget(loadingWidget);
48 }
49
50 void VideoAreaWidget::showLoading(Video *video) {
51     this->loadingWidget->setVideo(video);
52     stackedLayout->setCurrentWidget(loadingWidget);
53     messageLabel->hide();
54     messageLabel->clear();
55 }
56
57 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
58     if (event->button() == Qt::LeftButton)
59         emit doubleClicked();
60 }
61
62 void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
63     switch(event->button() == Qt::RightButton)
64             emit rightClicked();
65 }
66
67 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
68     qDebug() << event->mimeData()->formats();
69     if (event->mimeData()->hasFormat("application/x-minitube-video")) {
70         event->acceptProposedAction();
71     }
72 }
73
74 void VideoAreaWidget::dropEvent(QDropEvent *event) {
75     
76     const VideoMimeData* videoMimeData = dynamic_cast<const VideoMimeData*>( event->mimeData() );
77     if(!videoMimeData ) return;
78     
79     QList<Video*> droppedVideos = videoMimeData->videos();
80     foreach( Video *video, droppedVideos) {
81         int row = listModel->rowForVideo(video);
82         if (row != -1)
83             listModel->setActiveRow(row);
84     }
85     event->acceptProposedAction();
86 }