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);
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);
18 vLayout->addWidget(messageLabel);
20 stackedLayout = new QStackedLayout();
21 vLayout->addLayout(stackedLayout);
26 setMouseTracking(true);
29 void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
30 this->videoWidget = videoWidget;
31 videoWidget->setMouseTracking(true);
32 stackedLayout->addWidget(videoWidget);
35 void VideoAreaWidget::setLoadingWidget(LoadingWidget *loadingWidget) {
36 this->loadingWidget = loadingWidget;
37 stackedLayout->addWidget(loadingWidget);
40 void VideoAreaWidget::showVideo() {
41 stackedLayout->setCurrentWidget(videoWidget);
44 void VideoAreaWidget::showError(QString message) {
45 // loadingWidget->setError(message);
46 messageLabel->setText(message);
48 stackedLayout->setCurrentWidget(loadingWidget);
51 void VideoAreaWidget::showLoading(Video *video) {
52 this->loadingWidget->setVideo(video);
53 stackedLayout->setCurrentWidget(loadingWidget);
55 messageLabel->clear();
58 void VideoAreaWidget::clear() {
59 stackedLayout->setCurrentWidget(loadingWidget);
60 loadingWidget->clear();
62 messageLabel->clear();
65 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
66 if (event->button() == Qt::LeftButton)
70 void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
71 switch(event->button() == Qt::RightButton)
75 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
76 // qDebug() << event->mimeData()->formats();
77 if (event->mimeData()->hasFormat("application/x-minitube-video")) {
78 event->acceptProposedAction();
82 void VideoAreaWidget::dropEvent(QDropEvent *event) {
84 const VideoMimeData* videoMimeData = dynamic_cast<const VideoMimeData*>( event->mimeData() );
85 if(!videoMimeData ) return;
87 QList<Video*> droppedVideos = videoMimeData->videos();
88 if (droppedVideos.isEmpty())
90 Video *video = droppedVideos.first();
91 int row = listModel->rowForVideo(video);
93 listModel->setActiveRow(row);
94 event->acceptProposedAction();
97 void VideoAreaWidget::mouseMoveEvent(QMouseEvent *event) {
98 // qDebug() << "VideoAreaWidget::mouseMoveEvent" << event->pos();
100 QMainWindow* mainWindow = dynamic_cast<QMainWindow*>(qApp->topLevelWidgets().first());
101 bool visible = event->pos().y() <= 0;
102 bool ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenToolbar", Qt::DirectConnection, Q_ARG(bool, visible));
103 if (!ret) qDebug() << "showFullscreenToolbar invokeMethod failed";
105 visible = event->pos().x() <= 0;
106 ret = QMetaObject::invokeMethod(mainWindow, "showFullscreenPlaylist", Qt::DirectConnection, Q_ARG(bool, visible));
107 if (!ret) qDebug() << "showFullscreenPlaylist invokeMethod failed";