diff options
Diffstat (limited to 'TelepathyQt4Yell/Models/flat-model-proxy.cpp')
-rw-r--r-- | TelepathyQt4Yell/Models/flat-model-proxy.cpp | 22 |
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); + } +} + } |