$END_LICENSE */
#include "videoareawidget.h"
-#include "video.h"
#include "loadingwidget.h"
+#include "mainwindow.h"
#include "playlistmodel.h"
+#include "video.h"
#include "videomimedata.h"
-#include "mainwindow.h"
#ifdef Q_OS_MAC
#include "macutils.h"
#endif
#include "snapshotpreview.h"
+#include "fontutils.h"
+
+namespace {
+
+class MessageWidget : public QWidget {
+public:
+ MessageWidget(QWidget *parent = nullptr) : QWidget(parent) {
+ QPalette p = palette();
+ p.setColor(QPalette::Window, Qt::black);
+ p.setColor(QPalette::WindowText, Qt::darkGray);
+ p.setColor(QPalette::Base, Qt::black);
+ p.setColor(QPalette::Text, Qt::darkGray);
+ setPalette(p);
+ setAutoFillBackground(true);
+
+ QBoxLayout *l = new QHBoxLayout(this);
+ l->setMargin(32);
+ l->setSpacing(32);
+ l->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
+
+ QLabel *arrowLabel = new QLabel("←");
+ arrowLabel->setFont(FontUtils::light(64));
+ arrowLabel->setPalette(p);
+ l->addWidget(arrowLabel);
+
+ QLabel *msgLabel = new QLabel(tr("Pick a video"));
+ msgLabel->setFont(FontUtils::light(32));
+ msgLabel->setPalette(p);
+ l->addWidget(msgLabel);
+ }
+};
+}
+
+VideoAreaWidget::VideoAreaWidget(QWidget *parent)
+ : QWidget(parent), videoWidget(0), messageWidget(0) {
+ setAttribute(Qt::WA_OpaquePaintEvent);
-VideoAreaWidget::VideoAreaWidget(QWidget *parent) : QWidget(parent), videoWidget(0) {
- QBoxLayout *vLayout = new QVBoxLayout(this);
- vLayout->setMargin(0);
- vLayout->setSpacing(0);
+ QBoxLayout *layout = new QVBoxLayout(this);
+ layout->setMargin(0);
+ layout->setSpacing(0);
// hidden message widget
messageLabel = new QLabel(this);
messageLabel->setAutoFillBackground(true);
messageLabel->setWordWrap(true);
messageLabel->hide();
- vLayout->addWidget(messageLabel);
+ layout->addWidget(messageLabel);
stackedLayout = new QStackedLayout();
- vLayout->addLayout(stackedLayout);
+ layout->addLayout(stackedLayout);
#ifdef APP_SNAPSHOT
snapshotPreview = new SnapshotPreview();
#endif
setAcceptDrops(true);
- setMouseTracking(true);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+ setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
+ SLOT(showContextMenu(const QPoint &)));
}
void VideoAreaWidget::setVideoWidget(QWidget *videoWidget) {
this->videoWidget = videoWidget;
- videoWidget->setMouseTracking(true);
stackedLayout->addWidget(videoWidget);
}
}
void VideoAreaWidget::showVideo() {
- if (videoWidget)
- stackedLayout->setCurrentWidget(videoWidget);
+ if (videoWidget) stackedLayout->setCurrentWidget(videoWidget);
loadingWidget->clear();
}
void VideoAreaWidget::showError(const QString &message) {
- // loadingWidget->setError(message);
messageLabel->setText(message);
messageLabel->show();
stackedLayout->setCurrentWidget(loadingWidget);
}
+void VideoAreaWidget::showPickMessage() {
+ if (!messageWidget) {
+ messageWidget = new MessageWidget();
+ stackedLayout->addWidget(messageWidget);
+ }
+ stackedLayout->setCurrentWidget(messageWidget);
+}
+
void VideoAreaWidget::showLoading(Video *video) {
messageLabel->hide();
messageLabel->clear();
snapshotPreview->start(videoWidget, pixmap, soundOnly);
}
-void VideoAreaWidget::hideSnapshotPreview() {
-
-}
+void VideoAreaWidget::hideSnapshotPreview() {}
#endif
void VideoAreaWidget::clear() {
}
void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
- if (event->button() == Qt::LeftButton)
- emit doubleClicked();
-}
-
-void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
- QWidget::mousePressEvent(event);
-
- if(event->button() == Qt::RightButton)
- emit rightClicked();
-
- else if (event->button() == Qt::LeftButton) {
- bool isNormalWindow = !window()->isMaximized() &&
- !MainWindow::instance()->isReallyFullScreen();
- if (isNormalWindow) {
- dragPosition = event->globalPos() - window()->frameGeometry().topLeft();
- event->accept();
- }
- }
-}
-
-void VideoAreaWidget::mouseMoveEvent(QMouseEvent *event) {
- bool isNormalWindow = !window()->isMaximized() &&
- !MainWindow::instance()->isReallyFullScreen();
- if (event->buttons() & Qt::LeftButton && isNormalWindow) {
- QPoint p = event->globalPos() - dragPosition;
-#ifdef Q_OS_MAC
- // FIXME mac::moveWindowTo(window()->winId(), p.x(), p.y());
-#else
- window()->move(p);
-#endif
- event->accept();
- }
+ if (event->button() == Qt::LeftButton) emit doubleClicked();
}
void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
}
void VideoAreaWidget::dropEvent(QDropEvent *event) {
-
- const VideoMimeData* videoMimeData = qobject_cast<const VideoMimeData*>( event->mimeData() );
- if(!videoMimeData ) return;
-
- QList<Video*> droppedVideos = videoMimeData->videos();
- if (droppedVideos.isEmpty())
- return;
- Video *video = droppedVideos.first();
+ const VideoMimeData *videoMimeData = qobject_cast<const VideoMimeData *>(event->mimeData());
+ if (!videoMimeData) return;
+
+ QVector<Video *> droppedVideos = videoMimeData->getVideos();
+ if (droppedVideos.isEmpty()) return;
+ Video *video = droppedVideos.at(0);
int row = listModel->rowForVideo(video);
- if (row != -1)
- listModel->setActiveRow(row);
+ if (row != -1) listModel->setActiveRow(row);
event->acceptProposedAction();
}
+
+void VideoAreaWidget::showContextMenu(const QPoint &point) {
+ QMenu *menu = MainWindow::instance()->getMenu("video");
+ menu->exec(mapToGlobal(point));
+}