diff --git a/src/elisa_core.kcfg b/src/elisa_core.kcfg
--- a/src/elisa_core.kcfg
+++ b/src/elisa_core.kcfg
@@ -8,4 +8,8 @@
+
+
+
+
diff --git a/src/elisaapplication.h b/src/elisaapplication.h
--- a/src/elisaapplication.h
+++ b/src/elisaapplication.h
@@ -73,6 +73,10 @@
READ manageHeaderBar
NOTIFY manageHeaderBarChanged)
+ Q_PROPERTY(bool showProgressOnTaskBar
+ READ showProgressOnTaskBar
+ NOTIFY showProgressOnTaskBarChanged)
+
public:
explicit ElisaApplication(QObject *parent = nullptr);
@@ -100,6 +104,8 @@
ManageHeaderBar *manageHeaderBar() const;
+ bool showProgressOnTaskBar() const;
+
Q_SIGNALS:
void argumentsChanged();
@@ -123,6 +129,8 @@
void initializationDone();
+ void showProgressOnTaskBarChanged();
+
public Q_SLOTS:
void appHelpActivated();
@@ -159,6 +167,8 @@
void playPause();
+ void configChanged();
+
private:
void initializeModels();
diff --git a/src/elisaapplication.cpp b/src/elisaapplication.cpp
--- a/src/elisaapplication.cpp
+++ b/src/elisaapplication.cpp
@@ -59,6 +59,7 @@
#include
#include
#include
+#include
#include
@@ -78,6 +79,8 @@
Elisa::ElisaConfiguration::instance(configurationFileName);
Elisa::ElisaConfiguration::self()->load();
Elisa::ElisaConfiguration::self()->save();
+
+ mConfigFileWatcher.addPath(configurationFileName);
}
#if defined KF5XmlGui_FOUND && KF5XmlGui_FOUND
@@ -98,10 +101,17 @@
std::unique_ptr mManageHeaderBar;
+ QFileSystemWatcher mConfigFileWatcher;
+
};
ElisaApplication::ElisaApplication(QObject *parent) : QObject(parent), d(std::make_unique(this))
{
+ connect(Elisa::ElisaConfiguration::self(), &Elisa::ElisaConfiguration::configChanged,
+ this, &ElisaApplication::configChanged);
+
+ connect(&d->mConfigFileWatcher, &QFileSystemWatcher::fileChanged,
+ this, &ElisaApplication::configChanged);
}
ElisaApplication::~ElisaApplication()
@@ -286,6 +296,18 @@
void ElisaApplication::playPause() {}
+void ElisaApplication::configChanged()
+{
+ auto currentConfiguration = Elisa::ElisaConfiguration::self();
+
+ d->mConfigFileWatcher.addPath(currentConfiguration->config()->name());
+
+ currentConfiguration->load();
+ currentConfiguration->read();
+
+ Q_EMIT showProgressOnTaskBarChanged();
+}
+
ElisaUtils::EntryDataList ElisaApplication::checkFileListAndMakeAbsolute(const ElisaUtils::EntryDataList &filesList,
const QString &workingDirectory) const
{
@@ -486,4 +508,11 @@
return d->mManageHeaderBar.get();
}
+bool ElisaApplication::showProgressOnTaskBar() const
+{
+ auto currentConfiguration = Elisa::ElisaConfiguration::self();
+
+ return currentConfiguration->showProgressOnTaskBar();
+}
+
#include "moc_elisaapplication.cpp"
diff --git a/src/mpris2/mediaplayer2player.h b/src/mpris2/mediaplayer2player.h
--- a/src/mpris2/mediaplayer2player.h
+++ b/src/mpris2/mediaplayer2player.h
@@ -63,6 +63,7 @@
ManageMediaPlayerControl* manageMediaPlayerControl,
ManageHeaderBar * manageHeaderBar,
AudioWrapper *audioPlayer,
+ bool showProgressOnTaskBar,
QObject* parent = nullptr);
~MediaPlayer2Player() override;
@@ -82,6 +83,9 @@
int currentTrack() const;
int mediaPlayerPresent() const;
+ bool showProgressOnTaskBar() const;
+ void setShowProgressOnTaskBar(bool value);
+
Q_SIGNALS:
void Seeked(qlonglong Position);
@@ -163,6 +167,7 @@
ManageHeaderBar * m_manageHeaderBar = nullptr;
AudioWrapper *m_audioPlayer = nullptr;
mutable QDBusMessage mProgressIndicatorSignal;
+ bool mShowProgressOnTaskBar = true;
};
#endif // MEDIAPLAYER2PLAYER_H
diff --git a/src/mpris2/mediaplayer2player.cpp b/src/mpris2/mediaplayer2player.cpp
--- a/src/mpris2/mediaplayer2player.cpp
+++ b/src/mpris2/mediaplayer2player.cpp
@@ -40,12 +40,14 @@
static const double MIN_RATE = 1.0;
MediaPlayer2Player::MediaPlayer2Player(MediaPlayList *playListControler, ManageAudioPlayer *manageAudioPlayer,
- ManageMediaPlayerControl *manageMediaPlayerControl, ManageHeaderBar *manageHeaderBar, AudioWrapper *audioPlayer, QObject* parent)
+ ManageMediaPlayerControl *manageMediaPlayerControl, ManageHeaderBar *manageHeaderBar,
+ AudioWrapper *audioPlayer, bool showProgressOnTaskBar, QObject* parent)
: QDBusAbstractAdaptor(parent), m_playListControler(playListControler), m_manageAudioPlayer(manageAudioPlayer),
m_manageMediaPlayerControl(manageMediaPlayerControl), m_manageHeaderBar(manageHeaderBar), m_audioPlayer(audioPlayer),
mProgressIndicatorSignal(QDBusMessage::createSignal(QStringLiteral("/org/kde/elisa"),
QStringLiteral("com.canonical.Unity.LauncherEntry"),
- QStringLiteral("Update")))
+ QStringLiteral("Update"))),
+ mShowProgressOnTaskBar(showProgressOnTaskBar)
{
if (!m_playListControler) {
return;
@@ -97,19 +99,21 @@
result = QStringLiteral("Paused");
}
- QVariantMap parameters;
+ if (mShowProgressOnTaskBar) {
+ QVariantMap parameters;
- if (m_manageAudioPlayer->playerPlaybackState() == QMediaPlayer::StoppedState || m_audioPlayer->duration() == 0) {
- parameters.insert(QStringLiteral("progress-visible"), false);
- parameters.insert(QStringLiteral("progress"), 0);
- } else {
- parameters.insert(QStringLiteral("progress-visible"), true);
- parameters.insert(QStringLiteral("progress"), qRound(static_cast(m_position / m_audioPlayer->duration())) / 1000.0);
- }
+ if (m_manageAudioPlayer->playerPlaybackState() == QMediaPlayer::StoppedState || m_audioPlayer->duration() == 0) {
+ parameters.insert(QStringLiteral("progress-visible"), false);
+ parameters.insert(QStringLiteral("progress"), 0);
+ } else {
+ parameters.insert(QStringLiteral("progress-visible"), true);
+ parameters.insert(QStringLiteral("progress"), qRound(static_cast(m_position / m_audioPlayer->duration())) / 1000.0);
+ }
- mProgressIndicatorSignal.setArguments({QStringLiteral("application://org.kde.elisa.desktop"), parameters});
+ mProgressIndicatorSignal.setArguments({QStringLiteral("application://org.kde.elisa.desktop"), parameters});
- QDBusConnection::sessionBus().send(mProgressIndicatorSignal);
+ QDBusConnection::sessionBus().send(mProgressIndicatorSignal);
+ }
return result;
}
@@ -216,13 +220,15 @@
Q_EMIT Seeked(m_position);
- QVariantMap parameters;
- parameters.insert(QStringLiteral("progress-visible"), true);
- parameters.insert(QStringLiteral("progress"), static_cast(newPositionInMs) / m_audioPlayer->duration());
+ if (mShowProgressOnTaskBar) {
+ QVariantMap parameters;
+ parameters.insert(QStringLiteral("progress-visible"), true);
+ parameters.insert(QStringLiteral("progress"), static_cast(newPositionInMs) / m_audioPlayer->duration());
- mProgressIndicatorSignal.setArguments({QStringLiteral("application://org.kde.elisa.desktop"), parameters});
+ mProgressIndicatorSignal.setArguments({QStringLiteral("application://org.kde.elisa.desktop"), parameters});
- QDBusConnection::sessionBus().send(mProgressIndicatorSignal);
+ QDBusConnection::sessionBus().send(mProgressIndicatorSignal);
+ }
}
double MediaPlayer2Player::Rate() const
@@ -415,6 +421,30 @@
return m_mediaPlayerPresent;
}
+bool MediaPlayer2Player::showProgressOnTaskBar() const
+{
+ return mShowProgressOnTaskBar;
+}
+
+void MediaPlayer2Player::setShowProgressOnTaskBar(bool value)
+{
+ mShowProgressOnTaskBar = value;
+
+ QVariantMap parameters;
+
+ if (!mShowProgressOnTaskBar || m_manageAudioPlayer->playerPlaybackState() == QMediaPlayer::StoppedState || m_audioPlayer->duration() == 0) {
+ parameters.insert(QStringLiteral("progress-visible"), false);
+ parameters.insert(QStringLiteral("progress"), 0);
+ } else {
+ parameters.insert(QStringLiteral("progress-visible"), true);
+ parameters.insert(QStringLiteral("progress"), qRound(static_cast(m_position / m_audioPlayer->duration())) / 1000.0);
+ }
+
+ mProgressIndicatorSignal.setArguments({QStringLiteral("application://org.kde.elisa.desktop"), parameters});
+
+ QDBusConnection::sessionBus().send(mProgressIndicatorSignal);
+}
+
void MediaPlayer2Player::setMediaPlayerPresent(int status)
{
if (m_mediaPlayerPresent != status) {
@@ -438,7 +468,7 @@
properties[property] = value;
const int ifaceIndex = metaObject()->indexOfClassInfo("D-Bus Interface");
QDBusMessage msg = QDBusMessage::createSignal(QStringLiteral("/org/mpris/MediaPlayer2"),
- QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"));
+ QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"));
msg << QLatin1String(metaObject()->classInfo(ifaceIndex).value());
msg << properties;
diff --git a/src/mpris2/mpris2.h b/src/mpris2/mpris2.h
--- a/src/mpris2/mpris2.h
+++ b/src/mpris2/mpris2.h
@@ -72,6 +72,11 @@
WRITE setAudioPlayer
NOTIFY audioPlayerChanged)
+ Q_PROPERTY(bool showProgressOnTaskBar
+ READ showProgressOnTaskBar
+ WRITE setShowProgressOnTaskBar
+ NOTIFY showProgressOnTaskBarChanged)
+
public:
explicit Mpris2(QObject* parent = nullptr);
~Mpris2() override;
@@ -88,6 +93,8 @@
AudioWrapper* audioPlayer() const;
+ bool showProgressOnTaskBar() const;
+
public Q_SLOTS:
void setPlayerName(const QString &playerName);
@@ -102,6 +109,8 @@
void setAudioPlayer(AudioWrapper* audioPlayer);
+ void setShowProgressOnTaskBar(bool value);
+
Q_SIGNALS:
void raisePlayer();
@@ -117,6 +126,8 @@
void audioPlayerChanged();
+ void showProgressOnTaskBarChanged();
+
private:
void initDBusService();
@@ -129,6 +140,7 @@
ManageMediaPlayerControl* m_manageMediaPlayerControl = nullptr;
ManageHeaderBar* m_manageHeaderBar = nullptr;
AudioWrapper* m_audioPlayer = nullptr;
+ bool mShowProgressOnTaskBar = true;
};
#endif //MEDIACENTER_MPRIS2_H
diff --git a/src/mpris2/mpris2.cpp b/src/mpris2/mpris2.cpp
--- a/src/mpris2/mpris2.cpp
+++ b/src/mpris2/mpris2.cpp
@@ -60,7 +60,7 @@
if (success) {
m_mp2 = std::make_unique(this);
- m_mp2p = std::make_unique(m_playListModel, m_manageAudioPlayer, m_manageMediaPlayerControl, m_manageHeaderBar, m_audioPlayer, this);
+ m_mp2p = std::make_unique(m_playListModel, m_manageAudioPlayer, m_manageMediaPlayerControl, m_manageHeaderBar, m_audioPlayer, mShowProgressOnTaskBar, this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/mpris/MediaPlayer2"), this, QDBusConnection::ExportAdaptors);
@@ -101,6 +101,11 @@
return m_audioPlayer;
}
+bool Mpris2::showProgressOnTaskBar() const
+{
+ return mShowProgressOnTaskBar;
+}
+
void Mpris2::setPlayerName(const QString &playerName)
{
if (m_playerName == playerName) {
@@ -201,4 +206,11 @@
emit audioPlayerChanged();
}
+void Mpris2::setShowProgressOnTaskBar(bool value)
+{
+ m_mp2p->setShowProgressOnTaskBar(value);
+ mShowProgressOnTaskBar = value;
+ Q_EMIT showProgressOnTaskBarChanged();
+}
+
#include "moc_mpris2.cpp"
diff --git a/src/qml/ElisaMainWindow.qml b/src/qml/ElisaMainWindow.qml
--- a/src/qml/ElisaMainWindow.qml
+++ b/src/qml/ElisaMainWindow.qml
@@ -159,6 +159,8 @@
player: elisa.audioPlayer
headerBarManager: elisa.manageHeaderBar
manageMediaPlayerControl: elisa.playerControl
+ showProgressOnTaskBar: elisa.showProgressOnTaskBar
+
onRaisePlayer: {
mainWindow.show()
mainWindow.raise()
diff --git a/src/qml/PlatformIntegration.qml b/src/qml/PlatformIntegration.qml
--- a/src/qml/PlatformIntegration.qml
+++ b/src/qml/PlatformIntegration.qml
@@ -26,6 +26,7 @@
property alias player: mpris2Interface.audioPlayer
property alias headerBarManager: mpris2Interface.headerBarManager
property alias manageMediaPlayerControl: mpris2Interface.manageMediaPlayerControl
+ property alias showProgressOnTaskBar: mpris2Interface.showProgressOnTaskBar
signal raisePlayer()
diff --git a/src/windows/PlatformIntegration.qml b/src/windows/PlatformIntegration.qml
--- a/src/windows/PlatformIntegration.qml
+++ b/src/windows/PlatformIntegration.qml
@@ -27,21 +27,32 @@
property var player
property var headerBarManager
property var manageMediaPlayerControl
+ property alias showProgressOnTaskBar: progressBar.active
signal raisePlayer()
Theme {
id: elisaTheme
}
- TaskbarButton {
- progress.minimum: 0
- progress.maximum: player.duration
- progress.value: player.position
- progress.visible: manageMediaPlayerControl.musicPlaying
+ Loader {
+ id: progressBar
- overlay.iconSource: (manageMediaPlayerControl.musicPlaying ?
- Qt.resolvedUrl(elisaTheme.playingIndicatorIcon) : Qt.resolvedUrl(elisaTheme.pausedIndicatorIcon))
+ sourceComponent: taskBarComponent
+ }
+
+ Component {
+ id:taskBarComponent
+
+ TaskbarButton {
+ progress.minimum: 0
+ progress.maximum: player.duration
+ progress.value: player.position
+ progress.visible: manageMediaPlayerControl.musicPlaying
+
+ overlay.iconSource: (manageMediaPlayerControl.musicPlaying ?
+ Qt.resolvedUrl(elisaTheme.playingIndicatorIcon) : Qt.resolvedUrl(elisaTheme.pausedIndicatorIcon))
+ }
}
ThumbnailToolBar {