From 10f9ef5cd5cd989ec34177463fb2285fcf4fcff7 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Mon, 13 Feb 2023 21:18:41 +0100 Subject: [PATCH] to store subjectRichParameters use a QVariantMap that is qml friendly will make it much easier to access fom qml in order to use the data inside to improve activity list items Signed-off-by: Matthieu Gallien --- src/gui/tray/activitydata.cpp | 6 +++--- src/gui/tray/activitydata.h | 12 +++++++----- src/gui/tray/notificationhandler.cpp | 6 +++--- test/testactivitydata.cpp | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/gui/tray/activitydata.cpp b/src/gui/tray/activitydata.cpp index 268874c84..bc2bdda58 100644 --- a/src/gui/tray/activitydata.cpp +++ b/src/gui/tray/activitydata.cpp @@ -109,13 +109,13 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP const auto parameterJsonObject = i.value().toObject(); const auto richParamLink = stringToUrl(account->url(), parameterJsonObject.value(QStringLiteral("link")).toString()); - activity._subjectRichParameters[i.key()] = Activity::RichSubjectParameter { + activity._subjectRichParameters[i.key()] = QVariant::fromValue(Activity::RichSubjectParameter{ parameterJsonObject.value(QStringLiteral("type")).toString(), parameterJsonObject.value(QStringLiteral("id")).toString(), parameterJsonObject.value(QStringLiteral("name")).toString(), parameterJsonObject.contains(QStringLiteral("path")) ? parameterJsonObject.value(QStringLiteral("path")).toString() : QString(), richParamLink, - }; + }); if (activity._objectType == QStringLiteral("calendar") && activity._link.isEmpty()) { activity._link = richParamLink; @@ -131,7 +131,7 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP word.remove(subjectRichParameterBracesRe); Q_ASSERT(activity._subjectRichParameters.contains(word)); - displayString = displayString.replace(match.captured(1), activity._subjectRichParameters[word].name); + displayString = displayString.replace(match.captured(1), activity._subjectRichParameters[word].value().name); } activity._subjectDisplay = displayString; diff --git a/src/gui/tray/activitydata.h b/src/gui/tray/activitydata.h index 36671e473..67dfe6f44 100644 --- a/src/gui/tray/activitydata.h +++ b/src/gui/tray/activitydata.h @@ -15,14 +15,15 @@ #ifndef ACTIVITYDATA_H #define ACTIVITYDATA_H -#include -#include -#include - #include "syncfileitem.h" #include "folder.h" #include "account.h" +#include +#include +#include +#include + namespace OCC { /** * @brief The ActivityLink class describes actions of an activity @@ -131,7 +132,7 @@ public: QString _objectName; QString _subject; QString _subjectRich; - QHash _subjectRichParameters; + QVariantMap _subjectRichParameters; QString _subjectDisplay; QString _message; QString _folder; @@ -180,6 +181,7 @@ using ActivityList = QList; Q_DECLARE_METATYPE(OCC::Activity) Q_DECLARE_METATYPE(OCC::ActivityList) Q_DECLARE_METATYPE(OCC::Activity::Type) +Q_DECLARE_METATYPE(OCC::Activity::RichSubjectParameter) Q_DECLARE_METATYPE(OCC::ActivityLink) Q_DECLARE_METATYPE(OCC::PreviewData) diff --git a/src/gui/tray/notificationhandler.cpp b/src/gui/tray/notificationhandler.cpp index eb3e00da5..e41baa470 100644 --- a/src/gui/tray/notificationhandler.cpp +++ b/src/gui/tray/notificationhandler.cpp @@ -94,13 +94,13 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j const auto richParamsKeys = richParams.keys(); for(const auto &key : richParamsKeys) { const auto parameterJsonObject = richParams.value(key).toObject(); - a._subjectRichParameters.insert(key, Activity::RichSubjectParameter{ + a._subjectRichParameters.insert(key, QVariant::fromValue(Activity::RichSubjectParameter{ parameterJsonObject.value(QStringLiteral("type")).toString(), parameterJsonObject.value(QStringLiteral("id")).toString(), parameterJsonObject.value(QStringLiteral("name")).toString(), QString(), QUrl() - }); + })); } } @@ -135,7 +135,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j al._primary = false; } - a._talkNotificationData.userAvatar = ai->account()->url().toString() + QStringLiteral("/index.php/avatar/") + a._subjectRichParameters["user"].id + QStringLiteral("/128"); + a._talkNotificationData.userAvatar = ai->account()->url().toString() + QStringLiteral("/index.php/avatar/") + a._subjectRichParameters["user"].value().id + QStringLiteral("/128"); } // We want to serve incoming call dialogs to the user for calls that diff --git a/test/testactivitydata.cpp b/test/testactivitydata.cpp index e62b71a43..91d85aa16 100644 --- a/test/testactivitydata.cpp +++ b/test/testactivitydata.cpp @@ -321,7 +321,7 @@ private slots: QCOMPARE(activity._link, eventLink); QCOMPARE(activity._subjectDisplay, QStringLiteral("%1 updated event %2 in calendar %3").arg(account->displayName(), eventName, - richParams[calendarC].name)); + richParams[calendarC].value().name)); QCOMPARE(activity._icon, iconExpected); } } -- 2.30.2