aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/qsui/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/qsui/mainwindow.cpp')
-rw-r--r--src/plugins/Ui/qsui/mainwindow.cpp53
1 files changed, 42 insertions, 11 deletions
diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp
index c387269ba..63aff4b49 100644
--- a/src/plugins/Ui/qsui/mainwindow.cpp
+++ b/src/plugins/Ui/qsui/mainwindow.cpp
@@ -83,7 +83,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
//status
connect(m_core, SIGNAL(elapsedChanged(qint64)), SLOT(updatePosition(qint64)));
connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(showState(Qmmp::State)));
- connect(m_core, SIGNAL(bitrateChanged(int)), SLOT(updateStatus()));
+ connect(m_core, SIGNAL(bitrateChanged(int)), SLOT(updateBitrate(int)));
connect(m_core, SIGNAL(audioParametersChanged(AudioParameters)), SLOT(updateStatus()));
connect(m_core, SIGNAL(bufferingProgress(int)), SLOT(showBuffering(int)));
connect(m_core, SIGNAL(trackInfoChanged()), SLOT(showMetaData()));
@@ -126,13 +126,22 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
connect(m_tabWidget, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showTabMenu(QPoint)));
m_tab_menu = new QMenu(m_tabWidget);
//status bar
- m_timeLabel = new QLabel(this);
m_statusLabel = new QLabel(this);
+ m_bitrateLabel = new QLabel(this);
+ m_bitrateLabel->setAlignment(Qt::AlignRight);
+ m_timeLabel = new QLabel(this);
+ m_timeLabel->setAlignment(Qt::AlignRight);
m_ui.statusbar->addPermanentWidget(m_statusLabel, 0);
- m_ui.statusbar->addPermanentWidget(m_timeLabel, 1);
- m_ui.statusbar->setMinimumWidth(2);
- m_statusLabel->setMinimumWidth(2);
- m_ui.statusbar->setStyleSheet("QStatusBar::item { border: 0px solid black };");
+ QFrame *l = new QFrame(this);
+ l->setFrameStyle(QFrame::VLine | QFrame::Raised);
+ m_ui.statusbar->addPermanentWidget(l);
+ m_ui.statusbar->addPermanentWidget(m_bitrateLabel, 0);
+ l = new QFrame(this);
+ l->setFrameStyle(QFrame::VLine | QFrame::Raised);
+ m_ui.statusbar->addPermanentWidget(l);
+ m_ui.statusbar->addPermanentWidget(m_timeLabel, 0);
+ m_ui.statusbar->addPermanentWidget(new QWidget(this), 1); //spacer
+ m_ui.statusbar->setStyleSheet("QStatusBar::item { border: 0px solid black; };");
//volume
m_volumeSlider = new VolumeSlider(this);
m_volumeSlider->setFocusPolicy(Qt::NoFocus);
@@ -154,7 +163,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
m_ui.analyzerDockWidget->setWidget(m_analyzer);
Visual::add(m_analyzer);
//waveform seek bar
- m_seekBar = new QSUIWaveformSeekBar(this);
+ m_seekBar = new QSUiWaveformSeekBar(this);
m_ui.waveformSeekBarDockWidget->setWidget(m_seekBar);
//filesystem browser
m_ui.fileSystemDockWidget->setWidget(new FileSystemBrowser(this));
@@ -200,6 +209,21 @@ void MainWindow::addUrl()
m_uiHelper->addUrl(this);
}
+void MainWindow::updateBitrate(int bitrate)
+{
+ QString text = tr("%1 kbps").arg(bitrate);
+ if(text.size() > m_bitrateLabel->text().size()) //label width tuning to avoid text jumping
+ {
+ QString tmp = text;
+ tmp.replace(QRegularExpression("\\d"), "4");
+ int width = m_bitrateLabel->fontMetrics().horizontalAdvance(tmp);
+ m_bitrateLabel->setMinimumWidth(2);
+ m_bitrateLabel->setMargin(0);
+ m_bitrateLabel->setIndent(0);
+ }
+ m_bitrateLabel->setText(text);
+}
+
void MainWindow::updatePosition(qint64 pos)
{
m_positionSlider->setMaximum(m_core->duration()/1000);
@@ -212,6 +236,13 @@ void MainWindow::updatePosition(qint64 pos)
text.append("/");
text.append(MetaDataFormatter::formatDuration(m_core->duration()));
}
+ if(text.size() != m_timeLabel->text().size()) //label width tuning to avoid text jumping
+ {
+ QString tmp = text;
+ tmp.replace(QRegularExpression("\\d"), "4");
+ int width = m_timeLabel->fontMetrics().horizontalAdvance(tmp);
+ m_timeLabel->setMinimumWidth(width);
+ }
m_timeLabel->setText(text);
}
@@ -243,6 +274,7 @@ void MainWindow::showState(Qmmp::State state)
break;
case Qmmp::Stopped:
updateStatus();
+ m_bitrateLabel->clear();
m_timeLabel->clear();
m_positionSlider->setValue(0);
m_analyzer->clearCover();
@@ -381,18 +413,17 @@ void MainWindow::updateStatus()
if(m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused)
{
AudioParameters ap = m_core->audioParameters();
- m_statusLabel->setText(tr("<b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps|")
+ m_statusLabel->setText(tr("<b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|")
.arg(m_core->state() == Qmmp::Playing ? tr("Playing") : tr("Paused"))
.arg(ap.validBitsPerSample())
.arg(ap.channels())
.arg(ap.sampleRate())
.arg(tracks)
- .arg(MetaDataFormatter::formatDuration(duration, false))
- .arg(m_core->bitrate()));
+ .arg(MetaDataFormatter::formatDuration(duration, false)));
}
else if(m_core->state() == Qmmp::Stopped)
{
- m_statusLabel->setText(tr("<b>%1</b>|tracks: %2|total time: %3|")
+ m_statusLabel->setText(tr("<b>%1</b>|tracks: %2|total time: %3")
.arg(tr("Stopped"))
.arg(tracks)
.arg(MetaDataFormatter::formatDuration(duration, false)));