added playback speed and time lalbe
This commit is contained in:
parent
fed4560268
commit
be6b8984c0
@ -4504,87 +4504,127 @@ Login tokens expiration: %2</source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="167"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="35"/>
|
||||||
|
<source>Play/pause</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="42"/>
|
||||||
|
<source>Stop</source>
|
||||||
|
<translation type="unfinished">Stop</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="49"/>
|
||||||
|
<source>Speed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="77"/>
|
||||||
|
<source>Progress</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="87"/>
|
||||||
|
<source>Duration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="94"/>
|
||||||
|
<source>Mute/unmute</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="107"/>
|
||||||
|
<source>Volume</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.ui" line="126"/>
|
||||||
|
<source>Download</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="199"/>
|
||||||
<source>Cannot load media (missing codecs)</source>
|
<source>Cannot load media (missing codecs)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="170"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="202"/>
|
||||||
<source>Unrecognized format</source>
|
<source>Unrecognized format</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="173"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="205"/>
|
||||||
<source>Network problem</source>
|
<source>Network problem</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="176"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="208"/>
|
||||||
<source>Access denied</source>
|
<source>Access denied</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="180"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="212"/>
|
||||||
<source>Service is missing</source>
|
<source>Service is missing</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="183"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="215"/>
|
||||||
<source>This is playlist</source>
|
<source>This is playlist</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="187"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="219"/>
|
||||||
<source>No errors</source>
|
<source>No errors</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="190"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="222"/>
|
||||||
<source>Unknown error</source>
|
<source>Unknown error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="205"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="237"/>
|
||||||
<source>No media</source>
|
<source>No media</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="208"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="240"/>
|
||||||
<source>Loading...</source>
|
<source>Loading...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="211"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="243"/>
|
||||||
<source>Media loaded</source>
|
<source>Media loaded</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="214"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="246"/>
|
||||||
<source>Media stalled</source>
|
<source>Media stalled</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="217"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="249"/>
|
||||||
<source>Buffering...</source>
|
<source>Buffering...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="220"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="252"/>
|
||||||
<source>Loaded</source>
|
<source>Loaded</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="223"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="255"/>
|
||||||
<source>Ended</source>
|
<source>Ended</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="226"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="258"/>
|
||||||
<source>Media is invalid</source>
|
<source>Media is invalid</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="229"/>
|
<location filename="../src/librssguard/gui/reusable/mediaplayer.cpp" line="261"/>
|
||||||
<source>Unknown</source>
|
<source>Unknown</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -82,6 +82,10 @@ void MediaPlayer::muteUnmute() {
|
|||||||
m_muted = !m_muted;
|
m_muted = !m_muted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaPlayer::setSpeed(int speed) {
|
||||||
|
m_player->setPlaybackRate(convertSpeed(speed));
|
||||||
|
}
|
||||||
|
|
||||||
void MediaPlayer::setVolume(int volume) {
|
void MediaPlayer::setVolume(int volume) {
|
||||||
#if QT_VERSION_MAJOR == 6
|
#if QT_VERSION_MAJOR == 6
|
||||||
m_player->audioOutput()->setVolume(convertSliderVolume(volume));
|
m_player->audioOutput()->setVolume(convertSliderVolume(volume));
|
||||||
@ -96,19 +100,36 @@ void MediaPlayer::seek(int position) {
|
|||||||
m_player->setPosition(convertSliderProgress(position));
|
m_player->setPosition(convertSliderProgress(position));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaPlayer::onPlaybackRateChanged(qreal speed) {
|
||||||
|
m_ui.m_spinSpeed->blockSignals(true);
|
||||||
|
m_ui.m_spinSpeed->setValue(convertSpinSpeed(speed));
|
||||||
|
m_ui.m_spinSpeed->blockSignals(false);
|
||||||
|
}
|
||||||
|
|
||||||
void MediaPlayer::onDurationChanged(qint64 duration) {
|
void MediaPlayer::onDurationChanged(qint64 duration) {
|
||||||
m_ui.m_slidProgress->blockSignals(true);
|
m_ui.m_slidProgress->blockSignals(true);
|
||||||
m_ui.m_slidProgress->setMaximum(duration / 1000);
|
m_ui.m_slidProgress->setMaximum(convertDuration(duration));
|
||||||
m_ui.m_slidProgress->blockSignals(false);
|
m_ui.m_slidProgress->blockSignals(false);
|
||||||
|
|
||||||
|
updateTimeAndProgress(convertToSliderProgress(m_player->position()), convertDuration(duration));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaPlayer::onPositionChanged(qint64 position) {
|
||||||
|
m_ui.m_slidProgress->blockSignals(true);
|
||||||
|
m_ui.m_slidProgress->setValue(convertToSliderProgress(position));
|
||||||
|
m_ui.m_slidProgress->blockSignals(false);
|
||||||
|
|
||||||
|
updateTimeAndProgress(convertToSliderProgress(position), convertDuration(m_player->duration()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaPlayer::updateTimeAndProgress(int progress, int total) {
|
||||||
|
m_ui.m_lblTime->setText(QSL("%1/%2").arg(QDateTime::fromSecsSinceEpoch(progress).toUTC().toString("hh:mm:ss"),
|
||||||
|
QDateTime::fromSecsSinceEpoch(total).toUTC().toString("hh:mm:ss")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer::onErrorOccurred(QMediaPlayer::Error error, const QString& error_string) {
|
void MediaPlayer::onErrorOccurred(QMediaPlayer::Error error, const QString& error_string) {
|
||||||
if (error_string.isEmpty()) {
|
QString err = error_string.isEmpty() ? errorToString(error) : error_string;
|
||||||
m_ui.m_lblStatus->setText(errorToString(error));
|
m_ui.m_lblStatus->setStatus(WidgetWithStatus::StatusType::Error, err, err);
|
||||||
}
|
|
||||||
else {
|
|
||||||
m_ui.m_lblStatus->setText(error_string);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer::onAudioAvailable(bool available) {
|
void MediaPlayer::onAudioAvailable(bool available) {
|
||||||
@ -121,7 +142,12 @@ void MediaPlayer::onVideoAvailable(bool available) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer::onMediaStatusChanged(QMediaPlayer::MediaStatus status) {
|
void MediaPlayer::onMediaStatusChanged(QMediaPlayer::MediaStatus status) {
|
||||||
m_ui.m_lblStatus->setText(mediaStatusToString(status));
|
QString st = mediaStatusToString(status);
|
||||||
|
m_ui.m_lblStatus->setStatus(status == QMediaPlayer::MediaStatus::InvalidMedia
|
||||||
|
? WidgetWithStatus::StatusType::Error
|
||||||
|
: WidgetWithStatus::StatusType::Information,
|
||||||
|
st,
|
||||||
|
st);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer::onPlaybackStateChanged(QMediaPlayer::PLAYBACK_STATE state) {
|
void MediaPlayer::onPlaybackStateChanged(QMediaPlayer::PLAYBACK_STATE state) {
|
||||||
@ -143,16 +169,22 @@ void MediaPlayer::onPlaybackStateChanged(QMediaPlayer::PLAYBACK_STATE state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaPlayer::onPositionChanged(qint64 position) {
|
|
||||||
m_ui.m_slidProgress->blockSignals(true);
|
|
||||||
m_ui.m_slidProgress->setValue(convertToSliderProgress(position));
|
|
||||||
m_ui.m_slidProgress->blockSignals(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MediaPlayer::convertToSliderProgress(qint64 player_progress) const {
|
int MediaPlayer::convertToSliderProgress(qint64 player_progress) const {
|
||||||
return player_progress / 1000;
|
return player_progress / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int MediaPlayer::convertDuration(qint64 duration) const {
|
||||||
|
return duration / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
qreal MediaPlayer::convertSpeed(int speed) const {
|
||||||
|
return speed / 100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int MediaPlayer::convertSpinSpeed(qreal speed) const {
|
||||||
|
return speed * 100;
|
||||||
|
}
|
||||||
|
|
||||||
void MediaPlayer::onSeekableChanged(bool seekable) {
|
void MediaPlayer::onSeekableChanged(bool seekable) {
|
||||||
m_ui.m_slidProgress->setEnabled(seekable);
|
m_ui.m_slidProgress->setEnabled(seekable);
|
||||||
|
|
||||||
@ -264,6 +296,7 @@ void MediaPlayer::createConnections() {
|
|||||||
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &MediaPlayer::onMediaStatusChanged);
|
connect(m_player, &QMediaPlayer::mediaStatusChanged, this, &MediaPlayer::onMediaStatusChanged);
|
||||||
connect(m_player, &QMediaPlayer::positionChanged, this, &MediaPlayer::onPositionChanged);
|
connect(m_player, &QMediaPlayer::positionChanged, this, &MediaPlayer::onPositionChanged);
|
||||||
connect(m_player, &QMediaPlayer::seekableChanged, this, &MediaPlayer::onSeekableChanged);
|
connect(m_player, &QMediaPlayer::seekableChanged, this, &MediaPlayer::onSeekableChanged);
|
||||||
|
connect(m_player, &QMediaPlayer::playbackRateChanged, this, &MediaPlayer::onPlaybackRateChanged);
|
||||||
|
|
||||||
connect(m_ui.m_btnPlayPause, &PlainToolButton::clicked, this, &MediaPlayer::playPause);
|
connect(m_ui.m_btnPlayPause, &PlainToolButton::clicked, this, &MediaPlayer::playPause);
|
||||||
connect(m_ui.m_btnStop, &PlainToolButton::clicked, this, &MediaPlayer::stop);
|
connect(m_ui.m_btnStop, &PlainToolButton::clicked, this, &MediaPlayer::stop);
|
||||||
@ -271,4 +304,5 @@ void MediaPlayer::createConnections() {
|
|||||||
connect(m_ui.m_btnVolume, &PlainToolButton::clicked, this, &MediaPlayer::muteUnmute);
|
connect(m_ui.m_btnVolume, &PlainToolButton::clicked, this, &MediaPlayer::muteUnmute);
|
||||||
connect(m_ui.m_slidVolume, &QSlider::valueChanged, this, &MediaPlayer::setVolume);
|
connect(m_ui.m_slidVolume, &QSlider::valueChanged, this, &MediaPlayer::setVolume);
|
||||||
connect(m_ui.m_slidProgress, &QSlider::valueChanged, this, &MediaPlayer::seek);
|
connect(m_ui.m_slidProgress, &QSlider::valueChanged, this, &MediaPlayer::seek);
|
||||||
|
connect(m_ui.m_spinSpeed, &QSpinBox::valueChanged, this, &MediaPlayer::setSpeed);
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ class MediaPlayer : public TabContent {
|
|||||||
void stop();
|
void stop();
|
||||||
void download();
|
void download();
|
||||||
void muteUnmute();
|
void muteUnmute();
|
||||||
|
void setSpeed(int speed);
|
||||||
|
|
||||||
// NOTE: Volume is from 0 to 100 taken directly from slider or
|
// NOTE: Volume is from 0 to 100 taken directly from slider or
|
||||||
// elsewhere.
|
// elsewhere.
|
||||||
@ -45,14 +46,13 @@ class MediaPlayer : public TabContent {
|
|||||||
// for "int" data type, therefore we seek by second.
|
// for "int" data type, therefore we seek by second.
|
||||||
void seek(int position);
|
void seek(int position);
|
||||||
|
|
||||||
|
void onPlaybackRateChanged(qreal speed);
|
||||||
void onDurationChanged(qint64 duration);
|
void onDurationChanged(qint64 duration);
|
||||||
void onErrorOccurred(QMediaPlayer::Error error, const QString& error_string = {});
|
void onErrorOccurred(QMediaPlayer::Error error, const QString& error_string = {});
|
||||||
void onAudioAvailable(bool available);
|
void onAudioAvailable(bool available);
|
||||||
void onVideoAvailable(bool available);
|
void onVideoAvailable(bool available);
|
||||||
void onMediaStatusChanged(QMediaPlayer::MediaStatus status);
|
void onMediaStatusChanged(QMediaPlayer::MediaStatus status);
|
||||||
|
|
||||||
void onPlaybackStateChanged(QMediaPlayer::PLAYBACK_STATE state);
|
void onPlaybackStateChanged(QMediaPlayer::PLAYBACK_STATE state);
|
||||||
|
|
||||||
void onPositionChanged(qint64 position);
|
void onPositionChanged(qint64 position);
|
||||||
void onSeekableChanged(bool seekable);
|
void onSeekableChanged(bool seekable);
|
||||||
|
|
||||||
@ -63,10 +63,14 @@ class MediaPlayer : public TabContent {
|
|||||||
float convertSliderVolume(int slider_volume) const;
|
float convertSliderVolume(int slider_volume) const;
|
||||||
qint64 convertSliderProgress(int slider_progress) const;
|
qint64 convertSliderProgress(int slider_progress) const;
|
||||||
int convertToSliderProgress(qint64 player_progress) const;
|
int convertToSliderProgress(qint64 player_progress) const;
|
||||||
|
int convertDuration(qint64 duration) const;
|
||||||
|
qreal convertSpeed(int speed) const;
|
||||||
|
int convertSpinSpeed(qreal speed) const;
|
||||||
|
|
||||||
QString errorToString(QMediaPlayer::Error error) const;
|
QString errorToString(QMediaPlayer::Error error) const;
|
||||||
QString mediaStatusToString(QMediaPlayer::MediaStatus status) const;
|
QString mediaStatusToString(QMediaPlayer::MediaStatus status) const;
|
||||||
|
|
||||||
|
void updateTimeAndProgress(int progress, int total);
|
||||||
void setupIcons();
|
void setupIcons();
|
||||||
void createConnections();
|
void createConnections();
|
||||||
|
|
||||||
|
@ -27,26 +27,73 @@
|
|||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="m_lblStatus"/>
|
<widget class="LabelWithStatus" name="m_lblStatus" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="PlainToolButton" name="m_btnPlayPause"/>
|
<widget class="PlainToolButton" name="m_btnPlayPause">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Play/pause</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="PlainToolButton" name="m_btnStop"/>
|
<widget class="PlainToolButton" name="m_btnStop">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Stop</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="m_spinSpeed">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Speed</string>
|
||||||
|
</property>
|
||||||
|
<property name="accelerated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string notr="true"> %</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>1000</number>
|
||||||
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSlider" name="m_slidProgress">
|
<widget class="QSlider" name="m_slidProgress">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Progress</string>
|
||||||
|
</property>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="m_lblTime"/>
|
<widget class="QLabel" name="m_lblTime">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Duration</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="PlainToolButton" name="m_btnVolume"/>
|
<widget class="PlainToolButton" name="m_btnVolume">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Mute/unmute</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSlider" name="m_slidVolume">
|
<widget class="QSlider" name="m_slidVolume">
|
||||||
@ -56,6 +103,9 @@
|
|||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Volume</string>
|
||||||
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>100</number>
|
<number>100</number>
|
||||||
</property>
|
</property>
|
||||||
@ -71,7 +121,11 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="PlainToolButton" name="m_btnDownload"/>
|
<widget class="PlainToolButton" name="m_btnDownload">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Download</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
@ -89,7 +143,22 @@
|
|||||||
<extends>QToolButton</extends>
|
<extends>QToolButton</extends>
|
||||||
<header>plaintoolbutton.h</header>
|
<header>plaintoolbutton.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>LabelWithStatus</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>labelwithstatus.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>m_btnPlayPause</tabstop>
|
||||||
|
<tabstop>m_btnStop</tabstop>
|
||||||
|
<tabstop>m_spinSpeed</tabstop>
|
||||||
|
<tabstop>m_slidProgress</tabstop>
|
||||||
|
<tabstop>m_btnVolume</tabstop>
|
||||||
|
<tabstop>m_slidVolume</tabstop>
|
||||||
|
<tabstop>m_btnDownload</tabstop>
|
||||||
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user