12#include "kdganttsummaryhandlingproxymodel_p.h"
38bool SummaryHandlingProxyModel::Private::cacheLookup(
const QModelIndex &idx,
44 if (it != cached_summary_items.
constEnd()) {
60 for (
int r = 0; r < sourceModel->
rowCount(mainIdx); ++r) {
66 qDebug() <<
"Skipping item " << sourceIdx <<
" because it doesn't contain QDateTime";
84 if (st.
isNull() || st > tmpst)
86 if (et.
isNull() || et < tmpet)
99 cached_summary_items[sourceIdx] = qMakePair(st, et);
102void SummaryHandlingProxyModel::Private::removeFromCache(
const QModelIndex &idx)
const
104 cached_summary_items.remove(idx);
107void SummaryHandlingProxyModel::Private::clearCache()
const
109 cached_summary_items.clear();
128void SummaryHandlingProxyModel::init()
135struct KDPrivateModelIndex
156 BASE::sourceModelReset();
162 BASE::sourceLayoutChanged();
179 BASE::sourceDataChanged(
from,
to);
186 BASE::sourceColumnsAboutToBeInserted(
parentIdx, start, end);
194 BASE::sourceColumnsAboutToBeRemoved(
parentIdx, start, end);
200 BASE::sourceRowsAboutToBeInserted(
parentIdx, start, end);
206 BASE::sourceRowsAboutToBeRemoved(
parentIdx, start, end);
216 if (
d->isSummary(
sidx)) {
217 f &=
~Qt::ItemIsEditable;
231 if (
d->cacheLookup(
sidx, &result)) {
237 return result.second;
241 d->insertInCache(
this,
sidx);
268#ifndef KDAB_NO_UNIT_TESTS
270#include "unittest/test.h"
272#include <QStandardItemModel>
299 topitem->appendRow(task1);
300 topitem->appendRow(task2);
316 assertEqual(task1startdt, startdt);
319 assertEqual(summarystartdt, startdt);
326#include "moc_kdganttsummaryhandlingproxymodel.cpp"
QDebug operator<<(QDebug dbg, const KDChart::ThreeDBarAttributes &a)
QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
Converts indexes in the source model to indexes in the proxy model.
QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
Converts indexes in the proxy model to indexes in the source model.
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Proxy model that supports summary gantt items.
Qt::ItemFlags flags(const QModelIndex &idx) const override
void sourceDataChanged(const QModelIndex &from, const QModelIndex &to) override
Called when the data in an existing item in the source model changes.
void sourceModelReset() override
Called when the source model is reset.
void sourceRowsAboutToBeInserted(const QModelIndex &idx, int start, int end) override
Called just before rows are inserted into the source model.
void sourceRowsAboutToBeRemoved(const QModelIndex &, int start, int end) override
Called just before rows are removed from the source model.
void sourceColumnsAboutToBeInserted(const QModelIndex &idx, int start, int end) override
Called just before columns are inserted into the source model.
void setSourceModel(QAbstractItemModel *model) override
Sets the model to be used as the source model for this proxy.
SummaryHandlingProxyModel(QObject *parent=nullptr)
Constructor.
~SummaryHandlingProxyModel() override
void sourceLayoutChanged() override
Called when the layout of the source model has changed.
QVariant data(const QModelIndex &proxyIndex, int role=Qt::DisplayRole) const override
void sourceColumnsAboutToBeRemoved(const QModelIndex &idx, int start, int end) override
Called just before columns are removed from the source model.
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
KDAB_SCOPED_UNITTEST_SIMPLE(KDGantt, Constraint, "test")
ForwardingProxyModel BASE
virtual QVariant data(const QModelIndex &index, int role) const const=0
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
virtual Qt::ItemFlags flags(const QModelIndex &index) const const
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const=0
virtual QModelIndex parent(const QModelIndex &index) const const=0
virtual int rowCount(const QModelIndex &parent) const const=0
virtual bool setData(const QModelIndex &index, const QVariant &value, int role)
virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override
virtual void setSourceModel(QAbstractItemModel *sourceModel)
const char * constData() const const
QDateTime addDays(qint64 ndays) const const
QDateTime currentDateTime()
bool isNull() const const
bool isValid() const const
QString toString(Qt::DateFormat format) const const
QHash::const_iterator constEnd() const const
QHash::const_iterator constFind(const Key &key) const const
T qobject_cast(QObject *object)
void appendRow(const QList< QStandardItem * > &items)
QString fromLatin1(const char *str, int size)
bool isEmpty() const const
QByteArray toLatin1() const const
std::string toStdString() const const
bool canConvert(int targetTypeId) const const
QDateTime toDateTime() const const
int toInt(bool *ok) const const
QString toString() const const
QVariant::Type type() const const