summaryrefslogtreecommitdiff
path: root/eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@jolla.com>2026-02-13 06:26:11 +0100
committerAndrew Branson <andrew.branson@jolla.com>2026-02-13 06:26:11 +0100
commitce4447024641c0ee793539d79a6d9be7a34a000b (patch)
tree9fc690b3c5e8c0f6f6b027f2d8461f5907397a55 /eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp
parent8c09980c00061a97eab050a4f0fd5fb4135d6ee7 (diff)
Drop libsocialcache files in MastodonPostsModel
Diffstat (limited to 'eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp')
-rw-r--r--eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp104
1 files changed, 61 insertions, 43 deletions
diff --git a/eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp b/eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp
index 855d9be..aa98a95 100644
--- a/eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp
+++ b/eventsview-plugins/eventsview-plugin-mastodon/mastodonpostsmodel.cpp
@@ -17,37 +17,57 @@
*/
#include "mastodonpostsmodel.h"
-#include "abstractsocialcachemodel_p.h"
-#include "mastodonpostsdatabase.h"
-#include "postimagehelper_p.h"
+#include <QtCore/QVariantMap>
-class MastodonPostsModelPrivate: public AbstractSocialCacheModelPrivate
-{
-public:
- explicit MastodonPostsModelPrivate(MastodonPostsModel *q);
-
- MastodonPostsDatabase database;
+namespace {
-private:
- Q_DECLARE_PUBLIC(MastodonPostsModel)
-};
+static const char *URL_KEY = "url";
+static const char *TYPE_KEY = "type";
+static const char *TYPE_PHOTO = "photo";
+static const char *TYPE_VIDEO = "video";
-MastodonPostsModelPrivate::MastodonPostsModelPrivate(MastodonPostsModel *q)
- : AbstractSocialCacheModelPrivate(q)
+QVariantMap createImageData(const SocialPostImage::ConstPtr &image)
{
+ QVariantMap imageData;
+ imageData.insert(QLatin1String(URL_KEY), image->url());
+ switch (image->type()) {
+ case SocialPostImage::Video:
+ imageData.insert(QLatin1String(TYPE_KEY), QLatin1String(TYPE_VIDEO));
+ break;
+ default:
+ imageData.insert(QLatin1String(TYPE_KEY), QLatin1String(TYPE_PHOTO));
+ break;
+ }
+ return imageData;
+}
+
}
MastodonPostsModel::MastodonPostsModel(QObject *parent)
- : AbstractSocialCacheModel(*(new MastodonPostsModelPrivate(this)), parent)
+ : QAbstractListModel(parent)
{
- Q_D(MastodonPostsModel);
-
- connect(&d->database, &AbstractSocialPostCacheDatabase::postsChanged,
+ connect(&m_database, &AbstractSocialPostCacheDatabase::postsChanged,
this, &MastodonPostsModel::postsChanged);
- connect(&d->database, SIGNAL(accountIdFilterChanged()),
+ connect(&m_database, SIGNAL(accountIdFilterChanged()),
this, SIGNAL(accountIdFilterChanged()));
}
+int MastodonPostsModel::rowCount(const QModelIndex &parent) const
+{
+ Q_UNUSED(parent)
+ return m_data.count();
+}
+
+QVariant MastodonPostsModel::data(const QModelIndex &index, int role) const
+{
+ const int row = index.row();
+ if (!index.isValid() || row < 0 || row >= m_data.count()) {
+ return QVariant();
+ }
+
+ return m_data.at(row).value(role);
+}
+
QHash<int, QByteArray> MastodonPostsModel::roleNames() const
{
QHash<int, QByteArray> roleNames;
@@ -75,41 +95,33 @@ QHash<int, QByteArray> MastodonPostsModel::roleNames() const
QVariantList MastodonPostsModel::accountIdFilter() const
{
- Q_D(const MastodonPostsModel);
-
- return d->database.accountIdFilter();
+ return m_database.accountIdFilter();
}
void MastodonPostsModel::setAccountIdFilter(const QVariantList &accountIds)
{
- Q_D(MastodonPostsModel);
-
- d->database.setAccountIdFilter(accountIds);
+ m_database.setAccountIdFilter(accountIds);
}
void MastodonPostsModel::refresh()
{
- Q_D(MastodonPostsModel);
-
- d->database.refresh();
+ m_database.refresh();
}
void MastodonPostsModel::postsChanged()
{
- Q_D(MastodonPostsModel);
-
- SocialCacheModelData data;
- QList<SocialPost::ConstPtr> postsData = d->database.posts();
+ QList<RowData> data;
+ QList<SocialPost::ConstPtr> postsData = m_database.posts();
Q_FOREACH (const SocialPost::ConstPtr &post, postsData) {
- QMap<int, QVariant> eventMap;
- const QString accountName = d->database.accountName(post);
- const QString postUrl = d->database.url(post);
- const QString boostedBy = d->database.boostedBy(post);
- const int repliesCount = d->database.repliesCount(post);
- const int favouritesCount = d->database.favouritesCount(post);
- const int reblogsCount = d->database.reblogsCount(post);
- const bool favourited = d->database.favourited(post);
- const bool reblogged = d->database.reblogged(post);
+ RowData eventMap;
+ const QString accountName = m_database.accountName(post);
+ const QString postUrl = m_database.url(post);
+ const QString boostedBy = m_database.boostedBy(post);
+ const int repliesCount = m_database.repliesCount(post);
+ const int favouritesCount = m_database.favouritesCount(post);
+ const int reblogsCount = m_database.reblogsCount(post);
+ const bool favourited = m_database.favourited(post);
+ const bool reblogged = m_database.reblogged(post);
eventMap.insert(MastodonPostsModel::MastodonId, post->identifier());
eventMap.insert(MastodonPostsModel::Name, post->name());
@@ -127,7 +139,7 @@ void MastodonPostsModel::postsChanged()
eventMap.insert(MastodonPostsModel::ReblogsCount, reblogsCount);
eventMap.insert(MastodonPostsModel::Favourited, favourited);
eventMap.insert(MastodonPostsModel::Reblogged, reblogged);
- eventMap.insert(MastodonPostsModel::InstanceUrl, d->database.instanceUrl(post));
+ eventMap.insert(MastodonPostsModel::InstanceUrl, m_database.instanceUrl(post));
QVariantList images;
Q_FOREACH (const SocialPostImage::ConstPtr &image, post->images()) {
@@ -143,5 +155,11 @@ void MastodonPostsModel::postsChanged()
data.append(eventMap);
}
- updateData(data);
+ const int oldCount = m_data.count();
+ beginResetModel();
+ m_data = data;
+ endResetModel();
+ if (oldCount != m_data.count()) {
+ emit countChanged();
+ }
}