From 85bcd5481ca01bcc669431f4ef978021519ba3e4 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 25 Mar 2021 16:53:13 +0100 Subject: [PATCH] Fix updating the tags proxy on dataChanged --- libnymea-app/models/tagsproxymodel.cpp | 10 +++++++++- libnymea-app/tagsmanager.cpp | 13 +++++++++---- libnymea-app/types/tags.cpp | 6 +++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/libnymea-app/models/tagsproxymodel.cpp b/libnymea-app/models/tagsproxymodel.cpp index 64f4ca86..4428865b 100644 --- a/libnymea-app/models/tagsproxymodel.cpp +++ b/libnymea-app/models/tagsproxymodel.cpp @@ -33,6 +33,9 @@ #include "tagsmanager.h" #include "types/tag.h" +#include +Q_DECLARE_LOGGING_CATEGORY(dcTags) + TagsProxyModel::TagsProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { } @@ -51,6 +54,9 @@ void TagsProxyModel::setTags(Tags *tags) invalidateFilter(); emit countChanged(); }, Qt::QueuedConnection); + connect(tags, &Tags::dataChanged, this, [=](){ + emit countChanged(); + }, Qt::QueuedConnection); setSortRole(Tags::RoleValue); sort(0); emit tagsChanged(); @@ -141,6 +147,8 @@ bool TagsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_ { Q_UNUSED(source_parent) Tag *tag = m_tags->get(source_row); + qCDebug(dcTags) << "Filtering tag. ID:" << tag->tagId() << "Thing:" << tag->thingId() << "Value:" << tag->value(); + qCDebug(dcTags) << "Filter: ID:" << m_filterTagId << "Thing:" << m_filterThingId << "value:" << m_filterValue; if (!m_filterTagId.isEmpty()) { QRegExp exp(m_filterTagId); if (!exp.exactMatch(tag->tagId())) { @@ -158,11 +166,11 @@ bool TagsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_ } } if (!m_filterValue.isEmpty()) { - qDebug() << "**************************************************************" << tag->value() << m_filterValue; if (tag->value() != m_filterValue) { return false; } } + qCDebug(dcTags) << "Accepted!"; return true; } diff --git a/libnymea-app/tagsmanager.cpp b/libnymea-app/tagsmanager.cpp index c7383408..fb7d19e6 100644 --- a/libnymea-app/tagsmanager.cpp +++ b/libnymea-app/tagsmanager.cpp @@ -32,6 +32,11 @@ #include "types/tag.h" #include "engine.h" +#include + +#include "logging.h" +NYMEA_LOGGING_CATEGORY(dcTags, "Tags") + TagsManager::TagsManager(JsonRpcClient *jsonClient, QObject *parent): JsonHandler(parent), m_jsonClient(jsonClient), @@ -116,7 +121,7 @@ int TagsManager::untagRule(const QString &ruleId, const QString &tagId) void TagsManager::handleTagsNotification(const QVariantMap ¶ms) { - qDebug() << "Have tags notification" << params; + qCDebug(dcTags()) << "Tags notification:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson()); QVariantMap tagMap = params.value("params").toMap().value("tag").toMap(); if (tagMap.value("appId").toString() != "nymea:app") { @@ -171,12 +176,12 @@ void TagsManager::getTagsReply(int /*commandId*/, const QVariantMap ¶ms) void TagsManager::addTagReply(int commandId, const QVariantMap ¶ms) { - qDebug() << "AddTag reply" << commandId << params; + qCDebug(dcTags()) << "AddTag reply" << commandId << params; } void TagsManager::removeTagReply(int commandId, const QVariantMap ¶ms) { - qDebug() << "RemoveTag reply" << commandId << params; + qCDebug(dcTags()) << "RemoveTag reply" << commandId << params; } Tag* TagsManager::unpackTag(const QVariantMap &tagMap) @@ -193,7 +198,7 @@ Tag* TagsManager::unpackTag(const QVariantMap &tagMap) tag = new Tag(tagId, value); tag->setRuleId(ruleId); } else { - qWarning() << "Invalid tag. Neither thingId nor ruleId are set. Skipping..."; + qCWarning(dcTags()) << "Invalid tag. Neither thingId nor ruleId are set. Skipping..."; tag->deleteLater(); return nullptr; } diff --git a/libnymea-app/types/tags.cpp b/libnymea-app/types/tags.cpp index bbee21d0..33b44fe5 100644 --- a/libnymea-app/types/tags.cpp +++ b/libnymea-app/types/tags.cpp @@ -33,6 +33,10 @@ #include +#include +Q_DECLARE_LOGGING_CATEGORY(dcTags) + + Tags::Tags(QObject *parent) : QAbstractListModel(parent) { @@ -148,7 +152,7 @@ void Tags::clear() void Tags::tagValueChanged() { - qDebug() << "Tag value in mode changed"; + qCInfo(dcTags) << "Tag value in model changed"; Tag *tag = static_cast(sender()); int idx = m_list.indexOf(tag); emit dataChanged(index(idx, 0), index(idx, 0), {RoleValue});