From 5a69fc23537a8bdee6a5f7e28c50eb425aac6c7e Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Fri, 5 Aug 2022 18:02:02 +0200 Subject: [PATCH] Fix bugs with setting away user state and handling of default/unset user status Signed-off-by: Claudio Cambra --- src/gui/userstatusselectormodel.cpp | 1 + src/libsync/ocsuserstatusconnector.cpp | 5 +++-- src/libsync/userstatusconnector.cpp | 4 +++- src/libsync/userstatusconnector.h | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gui/userstatusselectormodel.cpp b/src/gui/userstatusselectormodel.cpp index 857c71305ffd5..4b3303a453177 100644 --- a/src/gui/userstatusselectormodel.cpp +++ b/src/gui/userstatusselectormodel.cpp @@ -330,6 +330,7 @@ QVector UserStatusSelectorModel::predefinedStatuses() const void UserStatusSelectorModel::setPredefinedStatus(const UserStatus &predefinedStatus) { + _userStatus.setState(UserStatus::OnlineStatus::Online); _userStatus.setMessagePredefined(true); _userStatus.setId(predefinedStatus.id()); _userStatus.setMessage(predefinedStatus.message()); diff --git a/src/libsync/ocsuserstatusconnector.cpp b/src/libsync/ocsuserstatusconnector.cpp index a8364d6cdbc9b..fb9cb39f73843 100644 --- a/src/libsync/ocsuserstatusconnector.cpp +++ b/src/libsync/ocsuserstatusconnector.cpp @@ -59,7 +59,7 @@ QString onlineStatusToString(OCC::UserStatus::OnlineStatus status) case OCC::UserStatus::OnlineStatus::DoNotDisturb: return QStringLiteral("dnd"); case OCC::UserStatus::OnlineStatus::Away: - return QStringLiteral("offline"); + return QStringLiteral("away"); case OCC::UserStatus::OnlineStatus::Offline: return QStringLiteral("offline"); case OCC::UserStatus::OnlineStatus::Invisible: @@ -402,7 +402,7 @@ void OcsUserStatusConnector::setUserStatus(const UserStatus &userStatus) return; } - if (userStatus.state() != _userStatus.state()) { + if (userStatus.state() != _userStatus.state() && userStatus.state() != UserStatus::OnlineStatus::Unknown) { setUserStatusOnlineStatus(userStatus.state()); } setUserStatusMessage(userStatus); @@ -473,3 +473,4 @@ void OcsUserStatusConnector::onMessageCleared(const QJsonDocument &json, int sta emit messageCleared(); } } + diff --git a/src/libsync/userstatusconnector.cpp b/src/libsync/userstatusconnector.cpp index 178e8d7948cc9..07d1b21bd398b 100644 --- a/src/libsync/userstatusconnector.cpp +++ b/src/libsync/userstatusconnector.cpp @@ -46,7 +46,7 @@ QString UserStatus::icon() const return _icon; } -auto UserStatus::state() const -> OnlineStatus +UserStatus::OnlineStatus UserStatus::state() const { return _state; } @@ -67,6 +67,7 @@ QUrl UserStatus::stateIcon() const case UserStatus::OnlineStatus::Invisible: case UserStatus::OnlineStatus::Offline: + case UserStatus::OnlineStatus::Unknown: return Theme::instance()->statusInvisibleImageSource(); case UserStatus::OnlineStatus::Online: @@ -119,3 +120,4 @@ UserStatusConnector::UserStatusConnector(QObject *parent) UserStatusConnector::~UserStatusConnector() = default; } + diff --git a/src/libsync/userstatusconnector.h b/src/libsync/userstatusconnector.h index 5d6d062ff00e1..7ca006d155770 100644 --- a/src/libsync/userstatusconnector.h +++ b/src/libsync/userstatusconnector.h @@ -57,6 +57,7 @@ class OWNCLOUDSYNC_EXPORT UserStatus public: enum class OnlineStatus : quint8 { + Unknown, Online, DoNotDisturb, Away, @@ -93,7 +94,7 @@ class OWNCLOUDSYNC_EXPORT UserStatus QString _id; QString _message; QString _icon; - OnlineStatus _state = OnlineStatus::Online; + OnlineStatus _state = OnlineStatus::Unknown; bool _messagePredefined; Optional _clearAt; }; @@ -139,3 +140,4 @@ class OWNCLOUDSYNC_EXPORT UserStatusConnector : public QObject Q_DECLARE_METATYPE(OCC::UserStatusConnector *) Q_DECLARE_METATYPE(OCC::UserStatus) +