diff options
Diffstat (limited to 'src-qt5/desktop-utils/lumina-fm-dev/widgets/MultimediaWidget.cpp')
-rw-r--r-- | src-qt5/desktop-utils/lumina-fm-dev/widgets/MultimediaWidget.cpp | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm-dev/widgets/MultimediaWidget.cpp b/src-qt5/desktop-utils/lumina-fm-dev/widgets/MultimediaWidget.cpp deleted file mode 100644 index eaa15a59..00000000 --- a/src-qt5/desktop-utils/lumina-fm-dev/widgets/MultimediaWidget.cpp +++ /dev/null @@ -1,222 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "MultimediaWidget.h" -#include "ui_MultimediaWidget.h" - -#include <QTimer> - -MultimediaWidget::MultimediaWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MultimediaWidget){ - ui->setupUi(this); //load the designer file - - //Add in the special QMultimediaWidgets - mediaObj = new QMediaPlayer(this); - mediaObj->setVolume(100); - mediaObj->setNotifyInterval(500); //only every 1/2 second update - videoDisplay = new QVideoWidget(this); - videoDisplay->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - ui->videoLayout->addWidget(videoDisplay); - mediaObj->setVideoOutput(videoDisplay); - videoDisplay->setVisible(false); - - UpdateIcons(); - UpdateText(); - - //Connect the special signals/slots for the media object - connect(mediaObj, SIGNAL(durationChanged(qint64)), this, SLOT(playerDurationChanged(qint64)) ); - connect(mediaObj, SIGNAL(seekableChanged(bool)), ui->playerSlider, SLOT(setEnabled(bool)) ); - connect(mediaObj, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(playerStatusChanged(QMediaPlayer::MediaStatus)) ); - connect(mediaObj, SIGNAL(positionChanged(qint64)), this, SLOT(playerTimeChanged(qint64)) ); - connect(mediaObj, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(playerStateChanged(QMediaPlayer::State)) ); - connect(mediaObj, SIGNAL(videoAvailableChanged(bool)), this, SLOT(playerVideoAvailable(bool)) ); - connect(mediaObj, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(playerError()) ); - - //Disable some of the initial states - ui->tool_player_stop->setEnabled(false); //nothing to stop yet - ui->tool_player_pause->setVisible(false); //nothing to pause yet - ui->playerSlider->setEnabled(false); //nothing to seek yet -} - -MultimediaWidget::~MultimediaWidget(){ - -} - -// ================ -// PUBLIC SLOTS -// ================ -void MultimediaWidget::ClearPlaylist(){ - mediaObj->stop(); - ui->combo_player_list->clear(); -} - -void MultimediaWidget::LoadMultimedia(QList<LFileInfo> list){ - for(int i=0; i<list.length(); i++){ - if(list[i].isAVFile()){ ui->combo_player_list->addItem(list[i].fileName(), list[i].absoluteFilePath() ); } - } -} - -void MultimediaWidget::Cleanup(){ - mediaObj->stop(); //just make sure the player is stopped -} - -//Theme change functions -void MultimediaWidget::UpdateIcons(){ - ui->tool_player_next->setIcon( LXDG::findIcon("media-skip-forward","") ); - ui->tool_player_prev->setIcon( LXDG::findIcon("media-skip-backward","") ); - ui->tool_player_pause->setIcon( LXDG::findIcon("media-playback-pause","") ); - ui->tool_player_play->setIcon( LXDG::findIcon("media-playback-start","") ); - ui->tool_player_stop->setIcon( LXDG::findIcon("media-playback-stop","") ); -} - -void MultimediaWidget::UpdateText(){ - ui->retranslateUi(this); -} - - -// ================= -// PRIVATE -// ================= -QString MultimediaWidget::msToText(qint64 ms){ - QString disp; - if(ms>3600000){ - disp.append( QString::number(ms/3600000)+":" ); - ms = ms%3600000; - } - if(ms>60000){ - disp.append( QString::number(ms/60000)+":" ); - ms = ms%60000; - }else{ - disp.append("0:"); - } - if(ms>1000){ - if(ms>=10000){ disp.append( QString::number(ms/1000) ); } - else{ disp.append( "0"+QString::number(ms/1000) ); } - }else{ - disp.append("00"); - } - return disp; -} - -// ================= -// PRIVATE SLOTS -// ================= -void MultimediaWidget::playerStatusChanged(QMediaPlayer::MediaStatus stat){ - //Only use this for end-of-file detection - use the state detection otherwise - if(stat == QMediaPlayer::EndOfMedia){ - if(!mediaObj->isMuted()){ playerFinished(); } //make sure it is not being seeked right now - } -} - -void MultimediaWidget::playerStateChanged(QMediaPlayer::State newstate){ - //This function keeps track of updating the visuals of the player - bool running = false; - bool showVideo = false; - QString msg; - switch(newstate){ - case QMediaPlayer::PlayingState: - running=true; - showVideo = mediaObj->isVideoAvailable(); - msg = "";//mediaObj->metaData(Phonon::TitleMetaData).join(" "); - if(msg.simplified().isEmpty()){ msg = ui->combo_player_list->currentText(); } - ui->label_player_novideo->setText(tr("Playing:")+"\n"+msg); - break; - case QMediaPlayer::PausedState: - showVideo=videoDisplay->isVisible(); //don't change the screen - break; - case QMediaPlayer::StoppedState: - ui->label_player_novideo->setText(tr("Stopped")); - break; - } - ui->tool_player_play->setVisible(!running); - ui->tool_player_pause->setVisible(running); - ui->tool_player_stop->setEnabled(running); - ui->label_player_novideo->setVisible(!showVideo); - videoDisplay->setVisible(showVideo); -} - -void MultimediaWidget::playerVideoAvailable(bool showVideo){ - ui->label_player_novideo->setVisible(!showVideo); - videoDisplay->setVisible(showVideo); -} - -void MultimediaWidget::playerDurationChanged(qint64 dur){ - if(dur < 0){ return; } //not ready yet - ui->playerSlider->setMaximum(mediaObj->duration()); - playerTTime = msToText(dur); -} - -void MultimediaWidget::playerTimeChanged(qint64 ctime){ - if(mediaObj->isMuted() || playerTTime.isEmpty() ){ return; } //currently being moved - ui->playerSlider->setSliderPosition(ctime); -} - -void MultimediaWidget::playerError(){ - QString msg = QString(tr("Error Playing File: %1")); - msg = msg.arg( mediaObj->currentMedia().canonicalUrl().fileName() ); - msg.append("\n"+mediaObj->errorString()); - ui->label_player_novideo->setText(msg); -} - -void MultimediaWidget::playerFinished(){ - if(ui->combo_player_list->currentIndex()<(ui->combo_player_list->count()-1) && ui->check_player_gotonext->isChecked()){ - ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()+1 ); - QTimer::singleShot(0,this,SLOT(on_tool_player_play_clicked())); - }else{ - ui->label_player_novideo->setText(tr("Finished")); - } -} - -void MultimediaWidget::on_tool_player_play_clicked(){ - if(mediaObj->state()==QMediaPlayer::PausedState \ - && mediaObj->currentMedia().canonicalUrl().fileName()==ui->combo_player_list->currentText() ){ - mediaObj->play(); - }else{ - mediaObj->stop(); - //Get the selected file path - QString filePath = ui->combo_player_list->currentData().toString(); - mediaObj->setMedia( QUrl::fromLocalFile(filePath) ); - playerTTime.clear(); - ui->playerSlider->setEnabled(mediaObj->isSeekable()); - mediaObj->play(); - } -} - -void MultimediaWidget::on_combo_player_list_currentIndexChanged(int index){ - ui->tool_player_next->setEnabled( ui->combo_player_list->count() > (index+1) ); - ui->tool_player_prev->setEnabled( (index-1) >= 0 ); -} - -void MultimediaWidget::on_tool_player_next_clicked(){ - ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()+1); - if(mediaObj->state()!=QMediaPlayer::StoppedState){ on_tool_player_play_clicked(); } -} - -void MultimediaWidget::on_tool_player_prev_clicked(){ - ui->combo_player_list->setCurrentIndex( ui->combo_player_list->currentIndex()-1); - if(mediaObj->state()!=QMediaPlayer::StoppedState){ on_tool_player_play_clicked(); } -} - -void MultimediaWidget::on_tool_player_pause_clicked(){ - mediaObj->pause(); -} - -void MultimediaWidget::on_tool_player_stop_clicked(){ - mediaObj->stop(); -} - -//Slider controls -void MultimediaWidget::on_playerSlider_sliderPressed(){ - mediaObj->setMuted(true); - mediaObj->pause(); -} -void MultimediaWidget::on_playerSlider_sliderReleased(){ - if(mediaObj->state()==QMediaPlayer::PausedState){ mediaObj->play(); } - mediaObj->setMuted(false); -} -void MultimediaWidget::on_playerSlider_valueChanged(int val){ - ui->label_player_runstats->setText( msToText(val)+"/"+playerTTime ); - if(mediaObj->isMuted()){ mediaObj->setPosition(val); } //currently seeking -} |