diff --git a/libdiscover/resources/discoverabstractnotifier.notifyrc b/libdiscover/resources/discoverabstractnotifier.notifyrc --- a/libdiscover/resources/discoverabstractnotifier.notifyrc +++ b/libdiscover/resources/discoverabstractnotifier.notifyrc @@ -129,5 +129,6 @@ Comment[x-test]=xxUpdates Availablexx Comment[zh_CN]=可用更新 Comment[zh_TW]=有可用的更新 +Urgency=Low Action=Popup diff --git a/notifier/DiscoverNotifier.h b/notifier/DiscoverNotifier.h --- a/notifier/DiscoverNotifier.h +++ b/notifier/DiscoverNotifier.h @@ -25,6 +25,8 @@ #include #include +#include + class QNetworkConfigurationManager; class DiscoverNotifier : public QObject @@ -82,6 +84,7 @@ bool m_hasUpdates = false; bool m_needsReboot = false; QNetworkConfigurationManager* m_manager = nullptr; + KNotification* m_updatesAvailableNotification = nullptr; }; #endif //ABSTRACTKDEDMODULE_H diff --git a/notifier/DiscoverNotifier.cpp b/notifier/DiscoverNotifier.cpp --- a/notifier/DiscoverNotifier.cpp +++ b/notifier/DiscoverNotifier.cpp @@ -74,11 +74,13 @@ void DiscoverNotifier::showDiscover() { KRun::runCommand(QStringLiteral("plasma-discover"), nullptr); + if (m_updatesAvailableNotification) { m_updatesAvailableNotification->close(); } } void DiscoverNotifier::showDiscoverUpdates() { KRun::runCommand(QStringLiteral("plasma-discover --mode update"), nullptr); + if (m_updatesAvailableNotification) { m_updatesAvailableNotification->close(); } } void DiscoverNotifier::showUpdatesNotification() @@ -88,11 +90,11 @@ return; } - auto e = KNotification::event(QStringLiteral("Update"), message(), {}, iconName(), nullptr, KNotification::CloseOnTimeout, QStringLiteral("discoverabstractnotifier")); + m_updatesAvailableNotification = KNotification::event(QStringLiteral("Update"), message(), {}, iconName(), nullptr, KNotification::Persistent, QStringLiteral("discoverabstractnotifier")); const QString name = i18n("Update"); - e->setDefaultAction(name); - e->setActions({name}); - connect(e, QOverload::of(&KNotification::activated), this, &DiscoverNotifier::showDiscoverUpdates); + m_updatesAvailableNotification->setDefaultAction(name); + m_updatesAvailableNotification->setActions({name}); + connect(m_updatesAvailableNotification, QOverload::of(&KNotification::activated), this, &DiscoverNotifier::showDiscoverUpdates); } void DiscoverNotifier::updateStatusNotifier()