Merge pull request #1341 from Decodetalkers/ft_clean_notify

clean all notifications if exit on linux
This commit is contained in:
DeepBlueV7.X 2023-02-02 01:07:16 +01:00 committed by GitHub
commit 539db70fd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 0 deletions

View file

@ -1648,3 +1648,11 @@ ChatPage::isRoomActive(const QString &room_id)
return QGuiApplication::focusWindow() && QGuiApplication::focusWindow()->isActive() && return QGuiApplication::focusWindow() && QGuiApplication::focusWindow()->isActive() &&
MainWindow::instance()->windowForRoom(room_id) == QGuiApplication::focusWindow(); MainWindow::instance()->windowForRoom(room_id) == QGuiApplication::focusWindow();
} }
void
ChatPage::removeAllNotifications()
{
#if defined (Q_OS_LINUX)
notificationsManager->closeAllNotifications();
#endif
}

View file

@ -84,6 +84,8 @@ public:
return pushrules; return pushrules;
} }
void removeAllNotifications();
public slots: public slots:
bool handleMatrixUri(QString uri); bool handleMatrixUri(QString uri);
bool handleMatrixUri(const QUrl &uri); bool handleMatrixUri(const QUrl &uri);

View file

@ -350,6 +350,7 @@ main(int argc, char *argv[])
w.show(); w.show();
QObject::connect(&app, &QApplication::aboutToQuit, &w, [&w]() { QObject::connect(&app, &QApplication::aboutToQuit, &w, [&w]() {
ChatPage::instance()->removeAllNotifications();
w.saveCurrentWindowSize(); w.saveCurrentWindowSize();
if (http::client() != nullptr) { if (http::client() != nullptr) {
nhlog::net()->debug("shutting down all I/O threads & open connections"); nhlog::net()->debug("shutting down all I/O threads & open connections");

View file

@ -55,6 +55,9 @@ public slots:
#if defined(NHEKO_DBUS_SYS) #if defined(NHEKO_DBUS_SYS)
public: public:
void closeNotifications(QString roomId); void closeNotifications(QString roomId);
#if defined(Q_OS_LINUX)
void closeAllNotifications();
#endif
private: private:
QDBusInterface dbus; QDBusInterface dbus;

View file

@ -271,3 +271,12 @@ NotificationsManager::notificationClosed(uint id, uint reason)
Q_UNUSED(reason); Q_UNUSED(reason);
notificationIds.remove(id); notificationIds.remove(id);
} }
void
NotificationsManager::closeAllNotifications()
{
for (auto id : notificationIds.keys()) {
closeNotification(id);
notificationIds.remove(id);
}
}