]> git.sur5r.net Git - minitube/commitdiff
Sidebar and mouse autohide in fullscreen mode for Mac
authorFlavio <flavio@odisseo.local>
Tue, 11 Sep 2012 14:34:22 +0000 (16:34 +0200)
committerFlavio <flavio@odisseo.local>
Tue, 11 Sep 2012 14:34:22 +0000 (16:34 +0200)
src/MainWindow.cpp
src/MainWindow.h
src/MediaView.cpp
src/MediaView.h

index 600d794ea4fe3514aafba66a9e7a08fcc5ba5263..299b9df45ebcefd58fa6bcc555555cb09176f548 100644 (file)
@@ -124,6 +124,11 @@ MainWindow::MainWindow() :
 
     setAcceptDrops(true);
 
+    mouseTimer = new QTimer(this);
+    mouseTimer->setInterval(3000);
+    mouseTimer->setSingleShot(true);
+    connect(mouseTimer, SIGNAL(timeout()), SLOT(hideMouse()));
+
     QTimer::singleShot(0, this, SLOT(checkForUpdate()));
 
 }
@@ -155,12 +160,35 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
     }
 #endif
 
+#ifndef Q_WS_X11
+    // mac::IsFullScreen(winId())
+    if (event->type() == QEvent::MouseMove && m_fullscreen) {
+
+        // show the normal cursor
+        unsetCursor();
+        // then hide it again after a few seconds
+        mouseTimer->start();
+
+        QMouseEvent *mouseEvent = static_cast<QMouseEvent*> (event);
+        const int x = mouseEvent->pos().x();
+        const QString className = QString(obj->metaObject()->className());
+        const bool isHoveringVideo = className == "QGLWidget";
+        // qDebug() << obj << x << isHoveringVideo << mediaView->isPlaylistVisible();
+        if (mediaView->isPlaylistVisible()) {
+            if (isHoveringVideo && x > 5) mediaView->setPlaylistVisible(false);
+        } else {
+            bool visible = (isHoveringVideo && x >= 0 && x < 5);
+            mediaView->setPlaylistVisible(visible);
+        }
+    }
+#endif
+
     if (event->type() == QEvent::ToolTip) {
         // kill tooltips
         return true;
     }
     // standard event processing
-    return QObject::eventFilter(obj, event);
+    return QMainWindow::eventFilter(obj, event);
 }
 
 void MainWindow::createActions() {
@@ -1035,6 +1063,11 @@ void MainWindow::updateUIForFullscreen() {
 
     if (views->currentWidget() == mediaView)
         mediaView->setFocus();
+
+    if (!m_fullscreen) {
+        mouseTimer->stop();
+        unsetCursor();
+    }
 }
 
 void MainWindow::compactView(bool enable) {
@@ -1427,3 +1460,8 @@ void MainWindow::messageReceived(const QString &message) {
         showMedia(searchParams);
     }
 }
+
+void MainWindow::hideMouse() {
+    setCursor(Qt::BlankCursor);
+    mediaView->setPlaylistVisible(false);
+}
index 713422d43d56b69071607110e2d26de6700cba60..d22cf94eae1dde26a18d6b65b0be183bd533e09d 100644 (file)
@@ -83,6 +83,8 @@ private slots:
     void showActionInStatusBar(QAction*, bool show);
     void showStopAfterThisInStatusBar(bool show);
 
+    void hideMouse();
+
 private:
     void initPhonon();
     void createActions();
@@ -158,6 +160,8 @@ private:
     bool m_fullscreen;
     bool m_maximized;
 
+    QTimer *mouseTimer;
+
 };
 
 #endif
index 204f956dd0dc455a347d3dbd5c34169cb7f9b74c..611992ea128568e17427ec3935b9c6b5938b99b3 100644 (file)
@@ -13,6 +13,9 @@
 #include "playlistwidget.h"
 #include "refinesearchwidget.h"
 #include "sidebarwidget.h"
+#ifdef APP_MAC
+#include "macfullscreen.h"
+#endif
 
 namespace The {
 NetworkAccess* http();
@@ -80,7 +83,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
     videoAreaWidget = new VideoAreaWidget(this);
     // videoAreaWidget->setMinimumSize(320,240);
 
-#ifdef APP_MAC_NO
+#ifdef APP_MAC
     // mouse autohide does not work on the Mac (no mouseMoveEvent)
     videoWidget = new Phonon::VideoWidget(this);
 #else
@@ -177,6 +180,7 @@ void MediaView::search(SearchParams *searchParams) {
 
     sidebar->getRefineSearchWidget()->setSearchParams(searchParams);
     sidebar->hideSuggestions();
+
 }
 
 void MediaView::searchAgain() {
@@ -622,7 +626,13 @@ void MediaView::searchMostViewed() {
 }
 
 void MediaView::setPlaylistVisible(bool visible) {
+    if (splitter->widget(0)->isVisible() == visible) return;
     splitter->widget(0)->setVisible(visible);
+    listView->setFocus();
+}
+
+bool MediaView::isPlaylistVisible() {
+    return splitter->widget(0)->isVisible();
 }
 
 void MediaView::timerPlay() {
index e4dec2aea48008b1c0168071cae0f1fd91219dbe..9d30c5017dc7c3a7d5287e510f5de34bfcfba059 100644 (file)
@@ -60,6 +60,7 @@ public slots:
     void removeSelected();
     void moveUpSelected();
     void moveDownSelected();
+    bool isPlaylistVisible();
     void setPlaylistVisible(bool visible=true);
     void saveSplitterState();
     void downloadVideo();