summaryrefslogtreecommitdiff
path: root/TelepathyQt4Yell/Models/flat-model-proxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TelepathyQt4Yell/Models/flat-model-proxy.cpp')
-rw-r--r--TelepathyQt4Yell/Models/flat-model-proxy.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/TelepathyQt4Yell/Models/flat-model-proxy.cpp b/TelepathyQt4Yell/Models/flat-model-proxy.cpp
index 86d21e5..dae0341 100644
--- a/TelepathyQt4Yell/Models/flat-model-proxy.cpp
+++ b/TelepathyQt4Yell/Models/flat-model-proxy.cpp
@@ -21,6 +21,7 @@
#include <TelepathyQt4Yell/Models/FlatModelProxy>
#include "TelepathyQt4Yell/Models/_gen/flat-model-proxy.moc.hpp"
+#include <TelepathyQt4Yell/Models/AccountsModel>
namespace Tpy
{
@@ -66,6 +67,13 @@ FlatModelProxy::FlatModelProxy(QAbstractItemModel *source)
connect(source,
SIGNAL(dataChanged(QModelIndex,QModelIndex)),
SLOT(onDataChanged(QModelIndex,QModelIndex)));
+
+ Tpy::AccountsModel *accountsModel = qobject_cast<Tpy::AccountsModel *> (source);
+ if (accountsModel) {
+ connect(accountsModel,
+ SIGNAL(hierarchicalDataChanged(QModelIndex,QModelIndex)),
+ SLOT(onHierarchicalDataChanged(QModelIndex,QModelIndex)));
+ }
}
FlatModelProxy::~FlatModelProxy()
@@ -175,4 +183,18 @@ void FlatModelProxy::onDataChanged(const QModelIndex &first, const QModelIndex &
}
}
+void FlatModelProxy::onHierarchicalDataChanged(const QModelIndex &first, const QModelIndex &last)
+{
+ if (!first.parent().isValid() && !last.parent().isValid()) {
+ int firstOffset = mPriv->offsetOf(this, first.row());
+ int lastOffset = mPriv->offsetOf(this, last.row() + 1) - 1;
+ QModelIndex firstIndex = createIndex(firstOffset, 0, first.row());
+ QModelIndex lastIndex = createIndex(lastOffset, 0, last.row());
+ emit dataChanged(firstIndex, lastIndex);
+ } else {
+ // do not do normal dataChanged, since dataChanged it was already triggered separately
+ //onDataChanged(first, last);
+ }
+}
+
}