X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2FMediaView.cpp;h=10160658c224238c83653f67b877bfbff215d680;hb=2a60b737c72fc6799f78c548328281c257375549;hp=e372bb21bb4ae414da2f98b4cf9b6fede5207588;hpb=4c56fc563c303b0e9e52f9ab7b78905566682b0c;p=minitube diff --git a/src/MediaView.cpp b/src/MediaView.cpp index e372bb2..1016065 100644 --- a/src/MediaView.cpp +++ b/src/MediaView.cpp @@ -19,25 +19,31 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) { splitter->setChildrenCollapsible(false); sortBar = new THBlackBar(this); - mostRelevantAction = new THAction(tr("Most relevant"), this); + mostRelevantAction = new QAction(tr("Most relevant"), this); + mostRelevantAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_1)); + addAction(mostRelevantAction); connect(mostRelevantAction, SIGNAL(triggered()), this, SLOT(searchMostRelevant()), Qt::QueuedConnection); sortBar->addAction(mostRelevantAction); - mostRecentAction = new THAction(tr("Most recent"), this); + mostRecentAction = new QAction(tr("Most recent"), this); + mostRecentAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_2)); + addAction(mostRecentAction); connect(mostRecentAction, SIGNAL(triggered()), this, SLOT(searchMostRecent()), Qt::QueuedConnection); sortBar->addAction(mostRecentAction); - mostViewedAction = new THAction(tr("Most viewed"), this); + mostViewedAction = new QAction(tr("Most viewed"), this); + mostViewedAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_3)); + addAction(mostViewedAction); connect(mostViewedAction, SIGNAL(triggered()), this, SLOT(searchMostViewed()), Qt::QueuedConnection); sortBar->addAction(mostViewedAction); listView = new QListView(this); - listView->setItemDelegate(new Playlist::PrettyItemDelegate(this)); + listView->setItemDelegate(new PrettyItemDelegate(this)); listView->setSelectionMode(QAbstractItemView::ExtendedSelection); // dragndrop listView->setDragEnabled(true); listView->setAcceptDrops(true); listView->setDropIndicatorShown(true); - listView->setDragDropMode(QAbstractItemView::InternalMove); + listView->setDragDropMode(QAbstractItemView::DragDrop); // cosmetics listView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); @@ -67,6 +73,7 @@ MediaView::MediaView(QWidget *parent) : QWidget(parent) { videoWidget = new Phonon::VideoWidget(this); videoAreaWidget->setVideoWidget(videoWidget); + videoAreaWidget->setListModel(listModel); loadingWidget = new LoadingWidget(this); videoAreaWidget->setLoadingWidget(loadingWidget); @@ -104,11 +111,15 @@ void MediaView::setMediaObject(Phonon::MediaObject *mediaObject) { void MediaView::search(SearchParams *searchParams) { this->searchParams = searchParams; + // start serching for videos + listModel->search(searchParams); + // this implies that the enum and the bar action order is the same sortBar->setCheckedAction(searchParams->sortBy()-1); - listModel->search(searchParams); listView->setFocus(); + + loadingWidget->clear(); } void MediaView::disappear() { @@ -124,6 +135,7 @@ void MediaView::stateChanged(Phonon::State newState, Phonon::State /*oldState*/) case Phonon::ErrorState: qDebug() << "Phonon error:" << mediaObject->errorString() << mediaObject->errorType(); + videoAreaWidget->showError(mediaObject->errorString()); // recover from errors by skipping to the next video skip(); break; @@ -138,9 +150,12 @@ void MediaView::stateChanged(Phonon::State newState, Phonon::State /*oldState*/) // play() has already been called when setting the source // but Phonon on Linux needs a little more help to start playback mediaObject->play(); + + // Workaround for Mac playback start problem if (!timerPlayFlag) { QTimer::singleShot(1000, this, SLOT(timerPlay())); } + break; case Phonon::PausedState: @@ -161,6 +176,7 @@ void MediaView::stateChanged(Phonon::State newState, Phonon::State /*oldState*/) } void MediaView::pause() { + // qDebug() << "pause() called" << mediaObject->state(); switch( mediaObject->state() ) { case Phonon::PlayingState: mediaObject->pause(); @@ -171,20 +187,6 @@ void MediaView::pause() { } } -void MediaView::fullscreen() { - splitterState = splitter->saveState(); - videoAreaWidget->setParent(0); - videoAreaWidget->showFullScreen(); -} - -void MediaView::exitFullscreen() { - // videoAreaWidget->setParent(this); - splitter->addWidget(videoAreaWidget); - // Just calling show() on the Mac won't work - videoAreaWidget->showNormal(); - splitter->restoreState(splitterState); -} - void MediaView::stop() { listModel->abortSearch(); mediaObject->stop(); @@ -201,6 +203,8 @@ void MediaView::activeRowChanged(int row) { // mediaObject->pause(); connect(video, SIGNAL(gotStreamUrl(QUrl)), SLOT(gotStreamUrl(QUrl))); + // TODO handle signal in a proper slot and impl item error status + connect(video, SIGNAL(errorStreamUrl()), SLOT(skip())); video->loadStreamUrl(); // reset the timer flag