1 #include "videoareawidget.h"
2 #include "videomimedata.h"
4 VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent) {
5 QBoxLayout *vLayout = new QVBoxLayout(this);
7 vLayout->setSpacing(0);
10 QPalette p = palette();
11 p.setBrush(QPalette::Window, Qt::black);
13 setAutoFillBackground(true);
16 // hidden message widget
17 messageLabel = new QLabel(this);
18 messageLabel->setOpenExternalLinks(true);
19 messageLabel->setMargin(7);
20 messageLabel->setBackgroundRole(QPalette::ToolTipBase);
21 messageLabel->setForegroundRole(QPalette::ToolTipText);
22 messageLabel->setAutoFillBackground(true);
23 messageLabel->setWordWrap(true);
25 vLayout->addWidget(messageLabel);
27 stackedLayout = new QStackedLayout();
28 vLayout->addLayout(stackedLayout);
33 setMouseTracking(true);
36 void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
37 this->videoWidget = videoWidget;
38 videoWidget->setMouseTracking(true);
39 stackedLayout->addWidget(videoWidget);
42 void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
43 this->loadingWidget = loadingWidget;
44 stackedLayout->addWidget(loadingWidget);
47 void VideoAreaWidget::showVideo() {
48 stackedLayout->setCurrentWidget(videoWidget);
51 void VideoAreaWidget::showError(QString message) {
52 // loadingWidget->setError(message);
53 messageLabel->setText(message);
55 stackedLayout->setCurrentWidget(loadingWidget);
58 void VideoAreaWidget::showLoading(Video *video) {
59 stackedLayout->setCurrentWidget(loadingWidget);
60 this->loadingWidget->setVideo(video);
62 messageLabel->clear();
65 void VideoAreaWidget::clear() {
66 stackedLayout->setCurrentWidget(loadingWidget);
67 loadingWidget->clear();
69 messageLabel->clear();
72 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
73 if (event->button() == Qt::LeftButton)
77 void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
78 QWidget::mousePressEvent(event);
80 if(event->button() == Qt::RightButton)
84 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
85 // qDebug() << event->mimeData()->formats();
86 if (event->mimeData()->hasFormat("application/x-minitube-video")) {
87 event->acceptProposedAction();
91 void VideoAreaWidget::dropEvent(QDropEvent *event) {
93 const VideoMimeData* videoMimeData = dynamic_cast<const VideoMimeData*>( event->mimeData() );
94 if(!videoMimeData ) return;
96 QList<Video*> droppedVideos = videoMimeData->videos();
97 if (droppedVideos.isEmpty())
99 Video *video = droppedVideos.first();
100 int row = listModel->rowForVideo(video);
102 listModel->setActiveRow(row);
103 event->acceptProposedAction();
106 void VideoAreaWidget::mouseMoveEvent(QMouseEvent *event) {
107 QWidget::mouseMoveEvent(event);
110 QWidget* mainWindow = window();
111 if (!mainWindow->isFullScreen()) return;
113 // qDebug() << "VideoAreaWidget::mouseMoveEvent" << event->pos();
115 const int x = event->pos().x();
116 const int y = event->pos().y();
118 bool visible = y <= 10;
119 bool ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenToolbar", Qt::DirectConnection, Q_ARG(bool, visible));
120 if (!ret) qDebug() << "showFullscreenToolbar invokeMethod failed";
123 ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenPlaylist", Qt::DirectConnection, Q_ARG(bool, visible));
124 if (!ret) qDebug() << "showFullscreenPlaylist invokeMethod failed";
128 void VideoAreaWidget::leaveEvent(QMouseEvent *event) {
129 QWidget::leaveEvent(event);
132 QWidget* mainWindow = window();
133 if (!mainWindow->isFullScreen()) return;
135 bool visible = false;
136 bool ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenToolbar", Qt::DirectConnection, Q_ARG(bool, visible));
137 if (!ret) qDebug() << "showFullscreenToolbar invokeMethod failed";
139 ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenPlaylist", Qt::DirectConnection, Q_ARG(bool, visible));
140 if (!ret) qDebug() << "showFullscreenPlaylist invokeMethod failed";