From bbfbba30b0e27dbd606fa09c0e016e94aacd4858 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 25 Oct 2023 23:22:39 +0200 Subject: Allow setting presence state again --- src/ChatPage.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/ChatPage.cpp') diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 90d542dd..25af8974 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -21,7 +21,6 @@ #include "encryption/DeviceVerificationFlow.h" #include "encryption/Olm.h" #include "ui/RoomSummary.h" -#include "ui/Theme.h" #include "ui/UserProfile.h" #include "voip/CallManager.h" @@ -29,8 +28,6 @@ #include "timeline/TimelineViewManager.h" -#include "blurhash.hpp" - ChatPage *ChatPage::instance_ = nullptr; static constexpr int CHECK_CONNECTIVITY_INTERVAL = 15'000; static constexpr int RETRY_TIMEOUT = 5'000; @@ -404,6 +401,19 @@ ChatPage::ChatPage(QSharedPointer userSettings, QObject *parent) [](std::function f) { f(); }, Qt::QueuedConnection); + connect(qobject_cast(QGuiApplication::instance()), + &QGuiApplication::focusWindowChanged, + this, + [this](QWindow *activeWindow) { + if (activeWindow) { + nhlog::ui()->debug("Stopping inactive timer."); + lastWindowActive = QDateTime(); + } else { + nhlog::ui()->debug("Starting inactive timer."); + lastWindowActive = QDateTime::currentDateTime(); + } + }); + connectCallMessage(); connectCallMessage(); connectCallMessage(); @@ -1107,6 +1117,13 @@ ChatPage::currentPresence() const return mtx::presence::unavailable; case UserSettings::Presence::Offline: return mtx::presence::offline; + case UserSettings::Presence::AutomaticPresence: + if (lastWindowActive.isValid() && + lastWindowActive.addSecs(60 * 5) < QDateTime::currentDateTime()) + return mtx::presence::unavailable; + else + return mtx::presence::online; + default: return mtx::presence::online; } -- cgit 1.5.1