]> git.sur5r.net Git - minitube/commitdiff
Clear video area before loading a new video
authorFlavio Tordini <flavio.tordini@gmail.com>
Wed, 11 Nov 2009 20:30:20 +0000 (21:30 +0100)
committerFlavio Tordini <flavio.tordini@gmail.com>
Wed, 11 Nov 2009 20:30:20 +0000 (21:30 +0100)
HD mode refinements
Stop timers before loading a new video

src/MediaView.cpp
src/videoareawidget.cpp
src/videoareawidget.h

index ea0df725d13da13deb7d1a40a3ec07e91cd635c5..2913a4c6c032c2cb1c1950ec1a87dcaf54833c14 100644 (file)
@@ -3,6 +3,7 @@
 #include "networkaccess.h"
 #include "videowidget.h"
 #include "minisplitter.h"
+#include "flickcharm.h"
 
 namespace The {
     QMap<QString, QAction*>* globalActions();
@@ -58,6 +59,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
     listView->setFrameShape( QFrame::NoFrame );
     listView->setAttribute(Qt::WA_MacShowFocusRect, false);
     listView->setMinimumSize(320,240);
+    listView->setUniformItemSizes(true);
 
     // respond to the user doubleclicking a playlist item
     connect(listView, SIGNAL(activated(const QModelIndex &)), this, SLOT(itemActivated(const QModelIndex &)));
@@ -112,6 +114,9 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) {
     workaroundTimer->setInterval(3000);
     connect(workaroundTimer, SIGNAL(timeout()), SLOT(timerPlay()));
 
+    FlickCharm *flickCharm = new FlickCharm(this);
+    flickCharm->activateOn(listView);
+
 }
 
 MediaView::~MediaView() {
@@ -140,6 +145,10 @@ void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) {
 void MediaView::search(SearchParams *searchParams) {
     reallyStopped = false;
 
+    videoAreaWidget->clear();
+    workaroundTimer->stop();
+    errorTimer->stop();
+
     this->searchParams = searchParams;
 
     // start serching for videos
@@ -150,7 +159,6 @@ void MediaView::search(SearchParams *searchParams) {
 
     listView->setFocus();
 
-    loadingWidget->clear();
 }
 
 void MediaView::disappear() {
@@ -229,8 +237,16 @@ void MediaView::stop() {
     listModel->abortSearch();
     reallyStopped = true;
     mediaObject->stop();
+    videoAreaWidget->clear();
     workaroundTimer->stop();
     errorTimer->stop();
+    listView->selectionModel()->clearSelection();
+
+    // turn off HD indicator
+    bool ret = QMetaObject::invokeMethod(parent()->parent(), "hdIndicator", Qt::DirectConnection, Q_ARG(bool, false));
+    if (!ret) qDebug() << "hdIndicator invokeMethod failed";
+    QAction *hdAct = The::globalActions()->value("hd");
+    hdAct->setToolTip("");
 }
 
 void MediaView::activeRowChanged(int row) {
@@ -312,7 +328,7 @@ void MediaView::aboutToFinish() {
 }
 
 void MediaView::currentSourceChanged(const Phonon::MediaSource source) {
-    qDebug() << source.url().toString();
+    qDebug() << "Playing" << source.url().toString();
 }
 
 
@@ -403,12 +419,12 @@ void MediaView::setPlaylistVisible(bool visible) {
 
 void MediaView::timerPlay() {
     // Workaround Phonon bug on Mac OSX
-    qDebug() << mediaObject->currentTime();
+    // qDebug() << mediaObject->currentTime();
     if (mediaObject->currentTime() <= 0 && mediaObject->state() == Phonon::PlayingState) {
         // qDebug() << "Mac playback workaround";
         mediaObject->pause();
-        QTimer::singleShot(1000, mediaObject, SLOT(play()));
-        // mediaObject->play();
+        // QTimer::singleShot(1000, mediaObject, SLOT(play()));
+        mediaObject->play();
     }
 }
 
index 81a29cb6d6ce0e2fde7a94d7172f2ad044c646b3..1d743a88f13e6a2bbec44c1ab5ad087422777ca7 100644 (file)
@@ -54,6 +54,13 @@ void VideoAreaWidget::showLoading(Video *video) {
     messageLabel->clear();
 }
 
+void VideoAreaWidget::clear() {
+    stackedLayout->setCurrentWidget(loadingWidget);
+    loadingWidget->clear();
+    messageLabel->hide();
+    messageLabel->clear();
+}
+
 void VideoAreaWidget::mouseDoubleClickEvent(QMouseEvent *event) {
     if (event->button() == Qt::LeftButton)
         emit doubleClicked();
@@ -65,7 +72,7 @@ void VideoAreaWidget::mousePressEvent(QMouseEvent *event) {
 }
 
 void VideoAreaWidget::dragEnterEvent(QDragEnterEvent *event) {
-    qDebug() << event->mimeData()->formats();
+    // qDebug() << event->mimeData()->formats();
     if (event->mimeData()->hasFormat("application/x-minitube-video")) {
         event->acceptProposedAction();
     }
@@ -77,10 +84,11 @@ void VideoAreaWidget::dropEvent(QDropEvent *event) {
     if(!videoMimeData ) return;
     
     QList<Video*> droppedVideos = videoMimeData->videos();
-    foreach( Video *video, droppedVideos) {
-        int row = listModel->rowForVideo(video);
-        if (row != -1)
-            listModel->setActiveRow(row);
-    }
+    if (droppedVideos.isEmpty())
+        return;
+    Video *video = droppedVideos.first();
+    int row = listModel->rowForVideo(video);
+    if (row != -1)
+        listModel->setActiveRow(row);
     event->acceptProposedAction();
 }
index 3fd1cab562d63a16bf4c6c9b41bf40abed429b5c..fa37a599207b8c0580a2a3d193c6d20258c2fc76 100644 (file)
@@ -17,6 +17,7 @@ public:
     void showLoading(Video* video);
     void showVideo();
     void showError(QString message);
+    void clear();
     void setListModel(ListModel *listModel) {
         this->listModel = listModel;
     }