diff --git a/src/Gui/KSMainWindow.cpp b/src/Gui/KSMainWindow.cpp --- a/src/Gui/KSMainWindow.cpp +++ b/src/Gui/KSMainWindow.cpp @@ -276,7 +276,7 @@ QTimer* timer = new QTimer; timer->setSingleShot(true); timer->setInterval(theTimeout); - TimerProgress::fromTimer(timer); + TimerProgress::fromTimer(timer, this); connect(timer, &QTimer::timeout, this, [this, timer] { this->hide(); delete timer; diff --git a/src/Gui/TimerProgress.h b/src/Gui/TimerProgress.h --- a/src/Gui/TimerProgress.h +++ b/src/Gui/TimerProgress.h @@ -23,6 +23,8 @@ #ifndef UNITYLAUNCHER_H #define UNITYLAUNCHER_H +#include "KSMainWindow.h" + #include class QTimer; @@ -34,17 +36,17 @@ public: int progress() const; - static const TimerProgress& fromTimer(QTimer *timer, int updateInterval = 50); + static const TimerProgress& fromTimer(QTimer *timer, KSMainWindow *parent, int updateInterval = 50); private: - explicit TimerProgress(QTimer *timer, int updateInterval, QObject *parent = nullptr); + explicit TimerProgress(QTimer *timer, KSMainWindow *parent, int updateInterval); ~TimerProgress() override; void update(const QVariantMap &properties); QString mLauncherId; + KSMainWindow *mMainWindow; QTimer *mTimer; QTimer *mUpdateTimer; - }; diff --git a/src/Gui/TimerProgress.cpp b/src/Gui/TimerProgress.cpp --- a/src/Gui/TimerProgress.cpp +++ b/src/Gui/TimerProgress.cpp @@ -28,13 +28,14 @@ #include #include -const TimerProgress& TimerProgress::fromTimer(QTimer* timer, int updateInterval ) +const TimerProgress& TimerProgress::fromTimer(QTimer* timer, KSMainWindow* parent, int updateInterval) { - return *(new TimerProgress(timer, updateInterval)); + return *(new TimerProgress(timer, parent, updateInterval)); } -TimerProgress::TimerProgress(QTimer *timer, int updateInterval, QObject *parent) +TimerProgress::TimerProgress(QTimer *timer, KSMainWindow *parent, int updateInterval) : QObject(parent) + , mMainWindow(parent) , mTimer(timer) , mUpdateTimer(new QTimer(this)) { @@ -61,6 +62,10 @@ void TimerProgress::update(const QVariantMap &properties) { + // +1s so it never displays "0 s". -100 ms so it never displays one second too much. + QString timerInTitle = QString::fromStdString("%1 s").arg((mTimer->remainingTime() - 100)/1000 + 1); + mMainWindow->setWindowTitle(timerInTitle); + QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/org/kde/Spectacle"), QStringLiteral("com.canonical.Unity.LauncherEntry"), QStringLiteral("Update"));