12 #include "kdganttproxymodel_p.h"
20 : calendarMode(
false )
25 columnMap[Qt::DisplayRole] = 0;
32 roleMap[Qt::DisplayRole] = Qt::DisplayRole;
42 , _d(new Private(this))
55 void ProxyModel::init()
62 if ( sourceIdx.isValid() ) {
63 if ( calendarMode() ) {
64 const QAbstractItemModel* model = sourceIdx.model();
65 if ( model->hasChildren( sourceIdx ) ) {
66 return BASE::mapFromSource( model->index( sourceIdx.row(),0,sourceIdx.parent()));
69 return BASE::mapFromSource( model->index( sourceIdx.row(),0,sourceIdx.parent()))
70 .child( 0, sourceIdx.column() );
73 return BASE::mapFromSource( sourceIdx.model()->index( sourceIdx.row(),0,sourceIdx.parent()));
75 else return QModelIndex();
77 return BASE::mapFromSource(sourceIdx.model() ? sourceIdx.model()->index(sourceIdx.row(), 0, sourceIdx.parent()) : QModelIndex());
84 if ( proxyIdx.isValid() ) {
85 if ( calendarMode() && proxyIdx.column() > 0 ) {
86 return BASE::mapToSource( proxyIdx.model()->index( proxyIdx.column(), 0, proxyIdx ) );
88 return BASE::mapToSource( proxyIdx );
90 else return QModelIndex();
92 return BASE::mapToSource(proxyIdx);
98 d->columnMap[ganttrole] = col;
103 return d->columnMap[ganttrole];
108 d->roleMap[ganttrole] =
role;
113 return d->roleMap[ganttrole];
117 void ProxyModel::setCalendarMode(
bool enable )
119 if (
d->calendarMode != enable ) {
120 d->calendarMode = enable;
125 bool ProxyModel::calendarMode()
const
127 return d->calendarMode;
134 return BASE::rowCount(proxyIndex);
145 int scol = proxyIdx.column();
146 QHash<int, int>::const_iterator it =
d->roleMap.find(
role);
147 if (it !=
d->roleMap.end())
149 it =
d->columnMap.find(
role);
150 if (it !=
d->columnMap.end())
154 qDebug() <<
"mapping "<<
static_cast<ItemDataRole>(
role)<<
", "<<proxyIdx.column()
155 <<
" => " <<
static_cast<ItemDataRole>(srole)<<
", " << scol
157 << sourceModel()->data( sourceModel()->index( proxyIdx.row(), scol,
161 const QAbstractItemModel *model = sourceModel();
162 return model->data(model->index(proxyIdx.row(), scol,
mapToSource(proxyIdx.parent())), srole);
168 int scol = proxyIdx.column();
169 QHash<int, int>::const_iterator it =
d->roleMap.constFind(
role);
170 if (it !=
d->roleMap.constEnd())
172 it =
d->columnMap.constFind(
role);
173 if (it !=
d->columnMap.constEnd())
176 QAbstractItemModel *model = sourceModel();
177 return model->setData(model->index(proxyIdx.row(), scol,
mapToSource(proxyIdx.parent())), value, srole);
180 #include "moc_kdganttproxymodel.cpp"
int role(int ganttrole) const
void setRole(int ganttrole, int role)
int column(int ganttrole) const
QVariant data(const QModelIndex &idx, int role=Qt::DisplayRole) const override
int columnCount(const QModelIndex &idx) const override
void setColumn(int ganttrole, int col)
QModelIndex mapFromSource(const QModelIndex &idx) const override
QModelIndex mapToSource(const QModelIndex &proxyIdx) const override
int rowCount(const QModelIndex &idx) const override
ProxyModel(QObject *parent=nullptr)
bool setData(const QModelIndex &idx, const QVariant &value, int role=Qt::EditRole) override
ForwardingProxyModel BASE
ItemDataRole
The values of this enum are used for the special data roles for gantt items.