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.