summary refs log tree commit diff
path: root/src/ChatPage.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2023-10-25 23:22:39 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2023-10-25 23:22:39 +0200
commitbbfbba30b0e27dbd606fa09c0e016e94aacd4858 (patch)
treeb01103e1228a548a12d9f79ae6423f10a73738b2 /src/ChatPage.cpp
parentFix linting (diff)
downloadnheko-bbfbba30b0e27dbd606fa09c0e016e94aacd4858.tar.xz
Allow setting presence state again
Diffstat (limited to '')
-rw-r--r--src/ChatPage.cpp23
1 files changed, 20 insertions, 3 deletions
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> userSettings, QObject *parent) [](std::function<void()> f) { f(); }, Qt::QueuedConnection); + connect(qobject_cast<QGuiApplication *>(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<mtx::events::voip::CallInvite>(); connectCallMessage<mtx::events::voip::CallCandidates>(); connectCallMessage<mtx::events::voip::CallAnswer>(); @@ -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; }