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);
14 setStyleSheet("background:black");
17 // hidden message widget
18 messageLabel = new QLabel(this);
19 messageLabel->setOpenExternalLinks(true);
20 messageLabel->setMargin(7);
21 messageLabel->setBackgroundRole(QPalette::ToolTipBase);
22 messageLabel->setForegroundRole(QPalette::ToolTipText);
23 messageLabel->setAutoFillBackground(true);
24 messageLabel->setWordWrap(true);
26 vLayout->addWidget(messageLabel);
28 stackedLayout = new QStackedLayout();
29 vLayout->addLayout(stackedLayout);
34 setMouseTracking(true);
37 void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
38 this->videoWidget = videoWidget;
39 videoWidget->setMouseTracking(true);
40 stackedLayout->addWidget(videoWidget);
43 void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
44 this->loadingWidget = loadingWidget;
45 stackedLayout->addWidget(loadingWidget);
48 void VideoAreaWidget::showVideo() {
49 stackedLayout->setCurrentWidget(videoWidget);
52 void VideoAreaWidget::showError(QString message) {
53 // loadingWidget->setError(message);
54 messageLabel->setText(message);
56 stackedLayout->setCurrentWidget(loadingWidget);
59 void VideoAreaWidget::showLoading(Video *video) {
60 this->loadingWidget->setVideo(video);
61 stackedLayout->setCurrentWidget(loadingWidget);
63 messageLabel->clear();
66 void VideoAreaWidget::clear() {
67 stackedLayout->setCurrentWidget(loadingWidget);
68 loadingWidget->clear();
70 messageLabel->clear();
73 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
74 if (event->button() == Qt::LeftButton)
78 void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
79 QWidget::mousePressEvent(event);
81 if(event->button() == Qt::RightButton)
85 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
86 // qDebug() << event->mimeData()->formats();
87 if (event->mimeData()->hasFormat("application/x-minitube-video")) {
88 event->acceptProposedAction();
92 void VideoAreaWidget::dropEvent(QDropEvent *event) {
94 const VideoMimeData* videoMimeData = dynamic_cast<const VideoMimeData*>( event->mimeData() );
95 if(!videoMimeData ) return;
97 QList<Video*> droppedVideos = videoMimeData->videos();
98 if (droppedVideos.isEmpty())
100 Video *video = droppedVideos.first();
101 int row = listModel->rowForVideo(video);
103 listModel->setActiveRow(row);
104 event->acceptProposedAction();
107 void VideoAreaWidget::mouseMoveEvent(QMouseEvent *event) {
108 QWidget::mouseMoveEvent(event);
111 QWidget* mainWindow = window();
112 if (!mainWindow->isFullScreen()) return;
114 // qDebug() << "VideoAreaWidget::mouseMoveEvent" << event->pos();
116 const int x = event->pos().x();
117 const int y = event->pos().y();
119 bool visible = y <= 10;
120 bool ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenToolbar", Qt::DirectConnection, Q_ARG(bool, visible));
121 if (!ret) qDebug() << "showFullscreenToolbar invokeMethod failed";
124 ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenPlaylist", Qt::DirectConnection, Q_ARG(bool, visible));
125 if (!ret) qDebug() << "showFullscreenPlaylist invokeMethod failed";
129 void VideoAreaWidget::leaveEvent(QMouseEvent *event) {
130 QWidget::leaveEvent(event);
133 QWidget* mainWindow = window();
134 if (!mainWindow->isFullScreen()) return;
136 bool visible = false;
137 bool ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenToolbar", Qt::DirectConnection, Q_ARG(bool, visible));
138 if (!ret) qDebug() << "showFullscreenToolbar invokeMethod failed";
140 ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenPlaylist", Qt::DirectConnection, Q_ARG(bool, visible));
141 if (!ret) qDebug() << "showFullscreenPlaylist invokeMethod failed";