From 2ff72f033af3f24ffb816bc19a34fc794f585775 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 5 Mar 2017 17:23:33 +0100 Subject: Implement statusBar Display in statusBar: * viewMode * number of files in playlist * length of playlist in h:m:s * player status (Stopped, Playing, Paused) --- beetplayer.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 2 deletions(-) (limited to 'beetplayer.cpp') diff --git a/beetplayer.cpp b/beetplayer.cpp index 0a2c962..1fd0aa7 100644 --- a/beetplayer.cpp +++ b/beetplayer.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include "beetplayer.h" #include "configurationdialog.h" @@ -18,8 +20,13 @@ BeetPlayer::BeetPlayer(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, setMinimumHeight(768); openDatabase(); createGlobalActions(); - PlayerWidget *player = new PlayerWidget; - setCentralWidget(player); + mPlayerWidget = new PlayerWidget; + connect(mPlayerWidget, SIGNAL(viewModeChanged(QString)), this, SLOT(setViewMode(QString))); + connect(mPlayerWidget->player(), SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(setPlayMode(QMediaPlayer::State))); + connect(mPlayerWidget, SIGNAL(numFilesChanged(int)), this, SLOT(setNumFiles(int))); + connect(mPlayerWidget, SIGNAL(playListLengthChanged(quint64)), this, SLOT(setPlayListLength(quint64))); + createStatusbar(); + setCentralWidget(mPlayerWidget); } void BeetPlayer::openDatabase(){ @@ -65,3 +72,68 @@ void BeetPlayer::configure(){ openDatabase(); } } + +void BeetPlayer::setViewMode(const QString &viewMode){ + mModeL->setText(viewMode); +} + +void BeetPlayer::setPlayMode(QMediaPlayer::State state){ + if(state == QMediaPlayer::StoppedState){ + mActionL->setText(tr("Stopped")); + }else if(state == QMediaPlayer::PlayingState){ + mActionL->setText("Playing"); + }else if(state == QMediaPlayer::PausedState){ + mActionL->setText("Paused"); + }else{ + mActionL->setText(tr("Unknown")); + } +} + +void BeetPlayer::setNumFiles(int numFiles){ + QString n = QString("%1").arg(numFiles, 4, 10, QChar('0')); + mFilesL->setText(n); +} + +void BeetPlayer::setPlayListLength(quint64 seconds){ + int h = (seconds / 60 / 60); + int min = (seconds / 60) % 60; + int secs = seconds % 60; + QString r = QString("%1:%2:%3").arg(h, 3, 10, QChar('0')).arg(min, 2, 10, QChar('0')).arg(secs, 2, 10, QChar('0')); + mPlaylistDurL->setText(r); +} + +void BeetPlayer::createStatusbar(){ + QLabel *l1 = new QLabel(tr("View:")); + mModeL = new QLabel; + mModeL->setFrameStyle(QFrame::Panel | QFrame::Sunken); + mModeL->setFont(QFont("courier")); + mModeL->setText(tr("(none)")); + statusBar()->addPermanentWidget(l1); + statusBar()->addPermanentWidget(mModeL); + mGeneralL = new QLabel; + mGeneralL->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addPermanentWidget(mGeneralL, 20); //20 is an arbitray value, stretch to max + QLabel *l2 = new QLabel(tr("Status:")); + mActionL = new QLabel; + mActionL->setFrameStyle(QFrame::Panel | QFrame::Sunken); + mActionL->setFont(QFont("courier")); + mActionL->setText(tr("Stopped")); + statusBar()->addPermanentWidget(l2); + statusBar()->addPermanentWidget(mActionL); + QLabel *l3 = new QLabel(tr("NumFiles:")); + mFilesL = new QLabel; + mFilesL->setFrameStyle(QFrame::Panel | QFrame::Sunken); + mFilesL->setFont(QFont("courier")); + mFilesL->setText(tr("0000")); + statusBar()->addPermanentWidget(l3); + statusBar()->addPermanentWidget(mFilesL); + QLabel *l4 = new QLabel(tr("Dur:")); + mPlaylistDurL = new QLabel; + mPlaylistDurL->setFrameStyle(QFrame::Panel | QFrame::Sunken); + mPlaylistDurL->setFont(QFont("courier")); + mPlaylistDurL->setText("000:00:00"); + statusBar()->addPermanentWidget(l4); + statusBar()->addPermanentWidget(mPlaylistDurL); + +} + -- cgit v1.2.3-70-g09d2