aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-03-02 17:52:04 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-03-02 17:52:04 +0000
commit5e158baa2c05f45d124e3f63ac4a532005d4577d (patch)
tree45867040dda06be537e6c29be0e75ba54955f8b2
parent9030c447f1e0f0cc390c4a3eafff20d60867955b (diff)
downloadqmmp-5e158baa2c05f45d124e3f63ac4a532005d4577d.tar.gz
qmmp-5e158baa2c05f45d124e3f63ac4a532005d4577d.tar.bz2
qmmp-5e158baa2c05f45d124e3f63ac4a532005d4577d.zip
refactoring
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9257 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/qsui/mainwindow.cpp53
-rw-r--r--src/plugins/Ui/qsui/mainwindow.h9
-rw-r--r--src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp48
-rw-r--r--src/plugins/Ui/qsui/qsuiwaveformseekbar.h14
4 files changed, 78 insertions, 46 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)));
diff --git a/src/plugins/Ui/qsui/mainwindow.h b/src/plugins/Ui/qsui/mainwindow.h
index 90c14c978..cb78de8b2 100644
--- a/src/plugins/Ui/qsui/mainwindow.h
+++ b/src/plugins/Ui/qsui/mainwindow.h
@@ -43,7 +43,8 @@ class QSUIVisualization;
class ListWidget;
class QSUiTabWidget;
class QSUiQuickSearch;
-class QSUIWaveformSeekBar;
+class QSUiWaveformSeekBar;
+class QSUiStatusBar;
/**
@@ -62,6 +63,7 @@ private slots:
void playFiles();
void record(bool enabled);
void addUrl();
+ void updateBitrate(int bitrate);
void updatePosition(qint64 pos);
void seek();
void showState(Qmmp::State);
@@ -108,9 +110,8 @@ private:
MediaPlayer *m_player;
QmmpUiSettings *m_ui_settings;
PositionSlider *m_positionSlider;
- QLabel *m_timeLabel;
+ QLabel *m_statusLabel, *m_bitrateLabel, *m_timeLabel;
SoundCore *m_core;
- QLabel *m_statusLabel;
VisualMenu *m_visMenu;
UiHelper *m_uiHelper;
QMenu *m_pl_menu;
@@ -119,7 +120,7 @@ private:
QSUiQuickSearch *m_quickSearch;
KeyboardManager *m_key_manager;
QSUIVisualization *m_analyzer;
- QSUIWaveformSeekBar *m_seekBar;
+ QSUiWaveformSeekBar *m_seekBar;
QToolButton *m_addListButton, *m_tabListMenuButton;
ListWidget *m_listWidget;
MetaDataFormatter m_titleFormatter;
diff --git a/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp b/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp
index 4a8c80211..ec60c6c5d 100644
--- a/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp
+++ b/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp
@@ -37,7 +37,7 @@
#define NUMBER_OF_VALUES (4096)
-QSUIWaveformSeekBar::QSUIWaveformSeekBar(QWidget *parent) : QWidget(parent)
+QSUiWaveformSeekBar::QSUiWaveformSeekBar(QWidget *parent) : QWidget(parent)
{
m_core = SoundCore::instance();
connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(onStateChanged(Qmmp::State)));
@@ -46,12 +46,12 @@ QSUIWaveformSeekBar::QSUIWaveformSeekBar(QWidget *parent) : QWidget(parent)
readSettings();
}
-QSize QSUIWaveformSeekBar::sizeHint() const
+QSize QSUiWaveformSeekBar::sizeHint() const
{
return QSize(200, 100);
}
-void QSUIWaveformSeekBar::readSettings()
+void QSUiWaveformSeekBar::readSettings()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Simple");
@@ -70,7 +70,7 @@ void QSUIWaveformSeekBar::readSettings()
}
-void QSUIWaveformSeekBar::onStateChanged(Qmmp::State state)
+void QSUiWaveformSeekBar::onStateChanged(Qmmp::State state)
{
switch (state)
{
@@ -78,7 +78,7 @@ void QSUIWaveformSeekBar::onStateChanged(Qmmp::State state)
{
if(!m_scanner && isVisible())
{
- m_scanner = new QSUIWaveformScanner(this);
+ m_scanner = new QSUiWaveformScanner(this);
connect(m_scanner, SIGNAL(finished()), SLOT(onScanFinished()));
connect(m_scanner, SIGNAL(dataChanged()), SLOT(onDataChanged()));
}
@@ -107,7 +107,7 @@ void QSUIWaveformSeekBar::onStateChanged(Qmmp::State state)
}
}
-void QSUIWaveformSeekBar::onScanFinished()
+void QSUiWaveformSeekBar::onScanFinished()
{
if(!m_scanner)
return;
@@ -119,7 +119,7 @@ void QSUIWaveformSeekBar::onScanFinished()
drawWaveform();
}
-void QSUIWaveformSeekBar::onDataChanged()
+void QSUiWaveformSeekBar::onDataChanged()
{
if(!m_scanner || !m_scanner->isRunning())
return;
@@ -129,7 +129,7 @@ void QSUIWaveformSeekBar::onDataChanged()
drawWaveform();
}
-void QSUIWaveformSeekBar::onElapsedChanged(qint64 elapsed)
+void QSUiWaveformSeekBar::onElapsedChanged(qint64 elapsed)
{
m_elapsed = elapsed;
m_duration = m_core->duration();
@@ -137,7 +137,7 @@ void QSUIWaveformSeekBar::onElapsedChanged(qint64 elapsed)
update();
}
-void QSUIWaveformSeekBar::writeSettings()
+void QSUiWaveformSeekBar::writeSettings()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("Simple");
@@ -147,7 +147,7 @@ void QSUIWaveformSeekBar::writeSettings()
drawWaveform();
}
-void QSUIWaveformSeekBar::paintEvent(QPaintEvent *e)
+void QSUiWaveformSeekBar::paintEvent(QPaintEvent *e)
{
QPainter painter (this);
painter.fillRect(e->rect(), m_bgColor);
@@ -167,18 +167,18 @@ void QSUIWaveformSeekBar::paintEvent(QPaintEvent *e)
}
}
-void QSUIWaveformSeekBar::resizeEvent(QResizeEvent *)
+void QSUiWaveformSeekBar::resizeEvent(QResizeEvent *)
{
drawWaveform();
}
-void QSUIWaveformSeekBar::showEvent(QShowEvent *)
+void QSUiWaveformSeekBar::showEvent(QShowEvent *)
{
if(m_data.isEmpty() && (m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused))
onStateChanged(Qmmp::Playing); //force redraw
}
-void QSUIWaveformSeekBar::mousePressEvent(QMouseEvent *e)
+void QSUiWaveformSeekBar::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton)
{
@@ -189,7 +189,7 @@ void QSUIWaveformSeekBar::mousePressEvent(QMouseEvent *e)
m_menu->exec(e->globalPos());
}
-void QSUIWaveformSeekBar::mouseReleaseEvent(QMouseEvent *)
+void QSUiWaveformSeekBar::mouseReleaseEvent(QMouseEvent *)
{
if(m_pressedPos >= 0)
{
@@ -199,7 +199,7 @@ void QSUIWaveformSeekBar::mouseReleaseEvent(QMouseEvent *)
}
}
-void QSUIWaveformSeekBar::mouseMoveEvent(QMouseEvent *e)
+void QSUiWaveformSeekBar::mouseMoveEvent(QMouseEvent *e)
{
if(m_pressedPos >= 0)
{
@@ -211,7 +211,7 @@ void QSUIWaveformSeekBar::mouseMoveEvent(QMouseEvent *e)
}
}
-void QSUIWaveformSeekBar::drawWaveform()
+void QSUiWaveformSeekBar::drawWaveform()
{
if(m_data.isEmpty())
{
@@ -319,7 +319,7 @@ void QSUIWaveformSeekBar::drawWaveform()
update();
}
-void QSUIWaveformSeekBar::createMenu()
+void QSUiWaveformSeekBar::createMenu()
{
m_menu = new QMenu(this);
m_showTwoChannelsAction = m_menu->addAction(tr("2 Channels"), this, SLOT(writeSettings()));
@@ -329,15 +329,15 @@ void QSUIWaveformSeekBar::createMenu()
m_showRmsAction->setCheckable(true);
}
-QSUIWaveformScanner::QSUIWaveformScanner(QObject *parent) : QThread(parent)
+QSUiWaveformScanner::QSUiWaveformScanner(QObject *parent) : QThread(parent)
{}
-QSUIWaveformScanner::~QSUIWaveformScanner()
+QSUiWaveformScanner::~QSUiWaveformScanner()
{
stop();
}
-bool QSUIWaveformScanner::scan(const QString &path)
+bool QSUiWaveformScanner::scan(const QString &path)
{
InputSource *source = InputSource::create(path, this);
if(!source->initialize())
@@ -392,7 +392,7 @@ bool QSUIWaveformScanner::scan(const QString &path)
return true;
}
-void QSUIWaveformScanner::stop()
+void QSUiWaveformScanner::stop()
{
if(isRunning())
{
@@ -415,18 +415,18 @@ void QSUIWaveformScanner::stop()
}
}
-const QList<int> &QSUIWaveformScanner::data() const
+const QList<int> &QSUiWaveformScanner::data() const
{
QMutexLocker locker(&m_mutex);
return m_data;
}
-const AudioParameters &QSUIWaveformScanner::audioParameters() const
+const AudioParameters &QSUiWaveformScanner::audioParameters() const
{
return m_ap;
}
-void QSUIWaveformScanner::run()
+void QSUiWaveformScanner::run()
{
m_ap = m_decoder->audioParameters();
unsigned char tmp[QMMP_BLOCK_FRAMES * m_ap.frameSize() * 4];
diff --git a/src/plugins/Ui/qsui/qsuiwaveformseekbar.h b/src/plugins/Ui/qsui/qsuiwaveformseekbar.h
index 12e3a7a32..e8526e254 100644
--- a/src/plugins/Ui/qsui/qsuiwaveformseekbar.h
+++ b/src/plugins/Ui/qsui/qsuiwaveformseekbar.h
@@ -32,16 +32,16 @@ class QMenu;
class SoundCore;
class Decoder;
class InputSource;
-class QSUIWaveformScanner;
+class QSUiWaveformScanner;
/**
@author Ilya Kotov <forkotov02@ya.ru>
*/
-class QSUIWaveformSeekBar : public QWidget
+class QSUiWaveformSeekBar : public QWidget
{
Q_OBJECT
public:
- explicit QSUIWaveformSeekBar(QWidget *parent = nullptr);
+ explicit QSUiWaveformSeekBar(QWidget *parent = nullptr);
QSize sizeHint() const override;
void readSettings();
@@ -63,7 +63,7 @@ private:
void createMenu();
SoundCore *m_core;
- QSUIWaveformScanner *m_scanner = nullptr;
+ QSUiWaveformScanner *m_scanner = nullptr;
QMenu *m_menu;
QAction *m_showTwoChannelsAction, *m_showRmsAction;
QList<int> m_data;
@@ -76,12 +76,12 @@ private:
bool m_update = false;
};
-class QSUIWaveformScanner : public QThread
+class QSUiWaveformScanner : public QThread
{
Q_OBJECT
public:
- explicit QSUIWaveformScanner(QObject *parent);
- ~QSUIWaveformScanner();
+ explicit QSUiWaveformScanner(QObject *parent);
+ ~QSUiWaveformScanner();
bool scan(const QString &path);
void stop();
const QList<int> &data() const;