# KDChart::PrivateAttributesModel Class Reference

`#include <KDChartAbstractDiagram.h>`

Inheritance diagram for KDChart::PrivateAttributesModel:

[legend]
Collaboration diagram for KDChart::PrivateAttributesModel:

[legend]
List of all members.

## Detailed Description

Internally used class just adding a special constructor used by AbstractDiagram.

Definition at line 656 of file KDChartAbstractDiagram.h.

## Public Types

enum | PaletteType { PaletteTypeDefault = 0, PaletteTypeRainbow = 1, PaletteTypeSubdued = 2 }

## Signals

void | attributesChanged (const QModelIndex &, const QModelIndex &)

## Public Member Functions

int | columnCount (const QModelIndex &) const
| [reimplemented]
bool | compare (const AttributesModel *other) const
bool | compareAttributes (int role, const QVariant &a, const QVariant &b) const
QVariant | data (const QModelIndex &, int role=Qt::DisplayRole) const
| [reimplemented]
QVariant | data (int column, int role) const
| Returns the data that were specified at per column level, or the globally set data, or the default data, or QVariant().
QVariant | data (int role) const
| Returns the data that were specified at global level, or the default data, or QVariant().
QVariant | headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
| [reimplemented]
QModelIndex | index (int row, int col, const QModelIndex &index) const
void | initFrom (const AttributesModel *other)
bool | isKnownAttributesRole (int role) const
| Returns whether the given role corresponds to one of the known internally used ones.
QModelIndex | mapFromSource (const QModelIndex &sourceIndex) const
QModelIndex | mapToSource (const QModelIndex &proxyIndex) const
QVariant | modelData (int role) const
PaletteType | paletteType () const
QModelIndex | parent (const QModelIndex &index) const
| PrivateAttributesModel (QAbstractItemModel *model, QObject *parent=0)
bool | resetData (const QModelIndex &index, int role=Qt::DisplayRole)
| Remove any explicit attributes settings that might have been specified before.
bool | resetHeaderData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole)
| Remove any explicit attributes settings that might have been specified before.
int | rowCount (const QModelIndex &) const
| [reimplemented]
bool | setData (const QModelIndex &index, const QVariant &value, int role=Qt::DisplayRole)
| [reimplemented]
void | setDefaultForRole (int role, const QVariant &value)
| Define the default value for a certain role.
bool | setHeaderData (int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::DisplayRole)
| [reimplemented]
bool | setModelData (const QVariant value, int role)
void | setPaletteType (PaletteType type)
| Sets the palettetype used by this attributesmodel.
void | setSourceModel (QAbstractItemModel *sourceModel)
| [reimplemented]

## Protected Member Functions

const QMap< int, QMap< int, QMap< int, QVariant > > > | dataMap () const
| needed for serialization
const QMap< int, QMap< int, QVariant > > | horizontalHeaderDataMap () const
| needed for serialization
const QMap< int, QVariant > | modelDataMap () const
| needed for serialization
void | setDataMap (const QMap< int, QMap< int, QMap< int, QVariant > > > map)
| needed for serialization
void | setHorizontalHeaderDataMap (const QMap< int, QMap< int, QVariant > > map)
| needed for serialization
void | setModelDataMap (const QMap< int, QVariant > map)
| needed for serialization
void | setVerticalHeaderDataMap (const QMap< int, QMap< int, QVariant > > map)
| needed for serialization
const QMap< int, QMap< int, QVariant > > | verticalHeaderDataMap () const
| needed for serialization

## Member Enumeration Documentation

enum KDChart::AttributesModel::PaletteType `[inherited]`

Enumerator:

  PaletteTypeDefault |
  PaletteTypeRainbow |
  PaletteTypeSubdued |

Definition at line 50 of file KDChartAttributesModel.h.

    00050                      {
    00051         PaletteTypeDefault = 0,
    00052         PaletteTypeRainbow = 1,
    00053         PaletteTypeSubdued = 2
    00054     };

## Constructor & Destructor Documentation

KDChart::PrivateAttributesModel::PrivateAttributesModel | ( | QAbstractItemModel * | model,
|  | QObject * | parent = `0` |
| ) |  |  | `[explicit]`

Definition at line 659 of file KDChartAbstractDiagram.h.

    00660             : AttributesModel(model,parent) {}

## Member Function Documentation

void KDChart::AttributesModel::attributesChanged | ( | const QModelIndex & | ,
|  | const QModelIndex & |  |
| ) |  |  | `[signal, inherited]`

Referenced by KDChart::AttributesModel::setData(), KDChart::AttributesModel::setHeaderData(), and KDChart::AttributesModel::setModelData().

int AttributesModel::columnCount | ( | const QModelIndex & |  | ) | const`[inherited]`

[reimplemented]

Definition at line 523 of file KDChartAttributesModel.cpp.

References KDChart::AbstractProxyModel::mapToSource().

Referenced by KDChart::AbstractDiagram::datasetBrushes(), KDChart::AbstractDiagram::datasetLabels(), KDChart::AbstractDiagram::datasetMarkers(), KDChart::AbstractDiagram::datasetPens(), and KDChart::AttributesModel::setModelData().

    00524 {
    00525     if ( sourceModel() ) {
    00526         return sourceModel()->columnCount( mapToSource(index) );
    00527     } else {
    00528         return 0;
    00529     }
    00530 }

bool AttributesModel::compare | ( | const AttributesModel * | other | ) | const`[inherited]`

Definition at line 83 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::compareAttributes(), KDChart::AttributesModel::mDataMap, KDChart::AttributesModel::mHorizontalHeaderDataMap, KDChart::AttributesModel::mModelDataMap, KDChart::AttributesModel::mVerticalHeaderDataMap, and KDChart::AttributesModel::paletteType().

Referenced by KDChart::AbstractDiagram::compare().

    00084 {
    00085     if( other == this ) return true;
    00086     if( ! other ){
    00087         //qDebug() << "AttributesModel::compare() cannot compare to Null pointer";
    00088         return false;
    00089     }
    00090
    00091     {
    00092         if (mDataMap.count() != other->mDataMap.count()){
    00093             //qDebug() << "AttributesModel::compare() dataMap have different sizes";
    00094             return false;
    00095         }
    00096         QMap<int, QMap<int, QMap<int, QVariant> > >::const_iterator itA = mDataMap.constBegin();
    00097         QMap<int, QMap<int, QMap<int, QVariant> > >::const_iterator itB = other->mDataMap.constBegin();
    00098         while (itA != mDataMap.constEnd()) {
    00099             if ((*itA).count() != (*itB).count()){
    00100                 //qDebug() << "AttributesModel::compare() dataMap/map have different sizes";
    00101                 return false;
    00102             }
    00103             QMap<int, QMap<int, QVariant> >::const_iterator it2A = (*itA).constBegin();
    00104             QMap<int, QMap<int, QVariant> >::const_iterator it2B = (*itB).constBegin();
    00105             while (it2A != itA->constEnd()) {
    00106                 if ((*it2A).count() != (*it2B).count()){
    00107                     //qDebug() << "AttributesModel::compare() dataMap/map/map have different sizes:"
    00108                     //        << (*it2A).count() << (*it2B).count();
    00109                     return false;
    00110                 }
    00111                 QMap<int, QVariant>::const_iterator it3A = (*it2A).constBegin();
    00112                 QMap<int, QVariant>::const_iterator it3B = (*it2B).constBegin();
    00113                 while (it3A != it2A->constEnd()) {
    00114                     if ( it3A.key() != it3B.key() ){
    00115                         //qDebug( "AttributesModel::compare()\n"
    00116                         //        "   dataMap[%i, %i] values have different types.  A: %x  B: %x",
    00117                         //        itA.key(), it2A.key(), it3A.key(), it3B.key());
    00118                         return false;
    00119                     }
    00120                     if ( ! compareAttributes( it3A.key(), it3A.value(), it3B.value() ) ){
    00121                         //qDebug( "AttributesModel::compare()\n"
    00122                         //        "   dataMap[%i, %i] values are different. Role: %x", itA.key(), it2A.key(), it3A.key());
    00123                         return false;
    00124                     }
    00125                     ++it3A;
    00126                     ++it3B;
    00127                 }
    00128                 ++it2A;
    00129                 ++it2B;
    00130             }
    00131             ++itA;
    00132             ++itB;
    00133         }
    00134     }
    00135     {
    00136         if (mHorizontalHeaderDataMap.count() != other->mHorizontalHeaderDataMap.count()){
    00137             //qDebug() << "AttributesModel::compare() horizontalHeaderDataMap have different sizes";
    00138             return false;
    00139         }
    00140         QMap<int, QMap<int, QVariant> >::const_iterator itA = mHorizontalHeaderDataMap.constBegin();
    00141         QMap<int, QMap<int, QVariant> >::const_iterator itB = other->mHorizontalHeaderDataMap.constBegin();
    00142         while (itA != mHorizontalHeaderDataMap.constEnd()) {
    00143             if ((*itA).count() != (*itB).count()){
    00144                 //qDebug() << "AttributesModel::compare() horizontalHeaderDataMap/map have different sizes";
    00145                 return false;
    00146             }
    00147             QMap<int, QVariant>::const_iterator it2A = (*itA).constBegin();
    00148             QMap<int, QVariant>::const_iterator it2B = (*itB).constBegin();
    00149             while (it2A != itA->constEnd()) {
    00150                 if ( it2A.key() != it2B.key() ){
    00151                     //qDebug( "AttributesModel::compare()\n"
    00152                     //        "   horizontalHeaderDataMap[ %i ] values have different types.  A: %x  B: %x",
    00153                     //        itA.key(), it2A.key(), it2B.key());
    00154                     return false;
    00155                 }
    00156                 if ( ! compareAttributes( it2A.key(), it2A.value(), it2B.value() ) ){
    00157                     //qDebug( "AttributesModel::compare()\n"
    00158                     //        "   horizontalHeaderDataMap[ %i ] values are different. Role: %x", itA.key(), it2A.key() );
    00159                     return false;
    00160                 }
    00161                 ++it2A;
    00162                 ++it2B;
    00163             }
    00164             ++itA;
    00165             ++itB;
    00166         }
    00167     }
    00168     {
    00169         if (mVerticalHeaderDataMap.count() != other->mVerticalHeaderDataMap.count()){
    00170             //qDebug() << "AttributesModel::compare() verticalHeaderDataMap have different sizes";
    00171             return false;
    00172         }
    00173         QMap<int, QMap<int, QVariant> >::const_iterator itA = mVerticalHeaderDataMap.constBegin();
    00174         QMap<int, QMap<int, QVariant> >::const_iterator itB = other->mVerticalHeaderDataMap.constBegin();
    00175         while (itA != mVerticalHeaderDataMap.constEnd()) {
    00176             if ((*itA).count() != (*itB).count()){
    00177                 //qDebug() << "AttributesModel::compare() verticalHeaderDataMap/map have different sizes";
    00178                 return false;
    00179             }
    00180             QMap<int, QVariant>::const_iterator it2A = (*itA).constBegin();
    00181             QMap<int, QVariant>::const_iterator it2B = (*itB).constBegin();
    00182             while (it2A != itA->constEnd()) {
    00183                 if ( it2A.key() != it2B.key() ){
    00184                     //qDebug( "AttributesModel::compare()\n"
    00185                     //        "   verticalHeaderDataMap[ %i ] values have different types.  A: %x  B: %x",
    00186                     //        itA.key(), it2A.key(), it2B.key());
    00187                     return false;
    00188                 }
    00189                 if ( ! compareAttributes( it2A.key(), it2A.value(), it2B.value() ) ){
    00190                     //qDebug( "AttributesModel::compare()\n"
    00191                     //        "   verticalHeaderDataMap[ %i ] values are different. Role: %x", itA.key(), it2A.key() );
    00192                     return false;
    00193                 }
    00194                 ++it2A;
    00195                 ++it2B;
    00196             }
    00197             ++itA;
    00198             ++itB;
    00199         }
    00200     }
    00201     {
    00202         if (mModelDataMap.count() != other->mModelDataMap.count()){
    00203             //qDebug() << "AttributesModel::compare() modelDataMap have different sizes:" << mModelDataMap.count() << other->mModelDataMap.count();
    00204             return false;
    00205         }
    00206         QMap<int, QVariant>::const_iterator itA = mModelDataMap.constBegin();
    00207         QMap<int, QVariant>::const_iterator itB = other->mModelDataMap.constBegin();
    00208         while (itA != mModelDataMap.constEnd()) {
    00209             if ( itA.key() != itB.key() ){
    00210                 //qDebug( "AttributesModel::compare()\n"
    00211                 //        "   modelDataMap values have different types.  A: %x  B: %x",
    00212                 //        itA.key(), itB.key());
    00213                 return false;
    00214             }
    00215             if ( ! compareAttributes( itA.key(), itA.value(), itB.value() ) ){
    00216                 //qDebug( "AttributesModel::compare()\n"
    00217                 //        "   modelDataMap values are different. Role: %x", itA.key() );
    00218                 return false;
    00219             }
    00220             ++itA;
    00221             ++itB;
    00222         }
    00223     }
    00224     if (paletteType() != other->paletteType()){
    00225         //qDebug() << "AttributesModel::compare() palette types are different";
    00226         return false;
    00227     }
    00228     return true;
    00229 }

bool AttributesModel::compareAttributes | ( | int | role,
|  | const QVariant & | a,
|  | const QVariant & | b |
| ) |  |  | const`[inherited]`

Definition at line 231 of file KDChartAttributesModel.cpp.

References KDChart::BarAttributesRole, KDChart::DataHiddenRole, KDChart::DatasetBrushRole, KDChart::DatasetPenRole, KDChart::DataValueLabelAttributesRole, KDChart::AttributesModel::isKnownAttributesRole(), KDChart::LineAttributesRole, KDChart::PieAttributesRole, KDChart::ThreeDAttributesRole, KDChart::ThreeDBarAttributesRole, KDChart::ThreeDLineAttributesRole, KDChart::ThreeDPieAttributesRole, and KDChart::ValueTrackerAttributesRole.

Referenced by KDChart::AttributesModel::compare().

    00233 {
    00234     if( isKnownAttributesRole( role ) ){
    00235         switch( role ) {
    00236             case DataValueLabelAttributesRole:
    00237                 return (qVariantValue<DataValueAttributes>( a ) ==
    00238                         qVariantValue<DataValueAttributes>( b ));
    00239             case DatasetBrushRole:
    00240                 return (qVariantValue<QBrush>( a ) ==
    00241                         qVariantValue<QBrush>( b ));
    00242             case DatasetPenRole:
    00243                 return (qVariantValue<QPen>( a ) ==
    00244                         qVariantValue<QPen>( b ));
    00245             case ThreeDAttributesRole:
    00246                 // As of yet there is no ThreeDAttributes class,
    00247                 // and the AbstractThreeDAttributes class is pure virtual,
    00248                 // so we ignore this role for now.
    00249                 // (khz, 04.04.2007)
    00250                 /*
    00251                 return (qVariantValue<ThreeDAttributes>( a ) ==
    00252                         qVariantValue<ThreeDAttributes>( b ));
    00253                 */
    00254                 break;
    00255             case LineAttributesRole:
    00256                 return (qVariantValue<LineAttributes>( a ) ==
    00257                         qVariantValue<LineAttributes>( b ));
    00258             case ThreeDLineAttributesRole:
    00259                 return (qVariantValue<ThreeDLineAttributes>( a ) ==
    00260                         qVariantValue<ThreeDLineAttributes>( b ));
    00261             case BarAttributesRole:
    00262                 return (qVariantValue<BarAttributes>( a ) ==
    00263                         qVariantValue<BarAttributes>( b ));
    00264             case ThreeDBarAttributesRole:
    00265                 return (qVariantValue<ThreeDBarAttributes>( a ) ==
    00266                         qVariantValue<ThreeDBarAttributes>( b ));
    00267             case PieAttributesRole:
    00268                 return (qVariantValue<PieAttributes>( a ) ==
    00269                         qVariantValue<PieAttributes>( b ));
    00270             case ThreeDPieAttributesRole:
    00271                 return (qVariantValue<ThreeDPieAttributes>( a ) ==
    00272                         qVariantValue<ThreeDPieAttributes>( b ));
    00273             case ValueTrackerAttributesRole:
    00274                 return (qVariantValue<ValueTrackerAttributes>( a ) ==
    00275                         qVariantValue<ValueTrackerAttributes>( b ));
    00276             case DataHiddenRole:
    00277                 return (qVariantValue<bool>( a ) ==
    00278                         qVariantValue<bool>( b ));
    00279             default:
    00280                 Q_ASSERT( false ); // all of our own roles need to be handled
    00281                 break;
    00282         }
    00283     }else{
    00284         return (a == b);
    00285     }
    00286     return true;
    00287 }

QVariant AttributesModel::data | ( | const QModelIndex & | ,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | const`[inherited]`

[reimplemented]

Definition at line 373 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::data(), KDChart::AttributesModel::dataMap(), and KDChart::AbstractProxyModel::mapToSource().

    00374 {
    00375     //qDebug() << "AttributesModel::data(" << index << role << ")";
    00376     if( index.isValid() ) {
    00377         Q_ASSERT( index.model() == this );
    00378     }
    00379
    00380     if( sourceModel() == 0 )
    00381         return QVariant();
    00382
    00383     if( index.isValid() )
    00384     {
    00385         const QVariant sourceData = sourceModel()->data( mapToSource(index), role );
    00386         if( sourceData.isValid() )
    00387             return sourceData;
    00388     }
    00389
    00390     // check if we are storing a value for this role at this cell index
    00391     if( mDataMap.contains( index.column() ) )
    00392     {
    00393         const QMap< int,  QMap< int, QVariant > >& colDataMap = mDataMap[ index.column() ];
    00394         if( colDataMap.contains( index.row() ) )
    00395         {
    00396             const QMap< int, QVariant >& dataMap = colDataMap[ index.row() ];
    00397             if( dataMap.contains( role ) )
    00398             {
    00399               const QVariant v = dataMap[ role ];
    00400               if( v.isValid() )
    00401                   return v;
    00402             }
    00403         }
    00404     }
    00405     // check if there is something set for the column (dataset), or at global level
    00406     if( index.isValid() )
    00407         return data( index.column(), role ); // includes automatic fallback to default
    00408
    00409     return QVariant();
    00410 }

QVariant AttributesModel::data | ( | int | column,
|  | int | role |
| ) |  |  | const`[inherited]`

Returns the data that were specified at per column level, or the globally set data, or the default data, or QVariant().

Definition at line 357 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::data(), KDChart::AttributesModel::headerData(), and KDChart::AttributesModel::isKnownAttributesRole().

    00358 {
    00359   if ( isKnownAttributesRole( role ) ) {
    00360       // check if there is something set for the column (dataset)
    00361       QVariant v;
    00362       v = headerData( column, Qt::Vertical, role );
    00363
    00364       // check if there is something set at global level
    00365       if ( !v.isValid() )
    00366           v = data( role ); // includes automatic fallback to default
    00367       return v;
    00368   }
    00369   return QVariant();
    00370 }

QVariant AttributesModel::data | ( | int | role | ) | const`[inherited]`

Returns the data that were specified at global level, or the default data, or QVariant().

Definition at line 339 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::isKnownAttributesRole(), and KDChart::AttributesModel::modelData().

Referenced by KDChart::AbstractDiagram::brush(), KDChart::AttributesModel::data(), KDChart::AbstractDiagram::dataValueAttributes(), KDChart::AbstractDiagram::isHidden(), and KDChart::AbstractDiagram::pen().

    00340 {
    00341   if ( isKnownAttributesRole( role ) ) {
    00342       // check if there is something set at global level
    00343       QVariant v = modelData( role );
    00344
    00345       // else return the default setting, if any
    00346       if ( !v.isValid() )
    00347           v = defaultsForRole( role );
    00348       return v;
    00349   }
    00350   return QVariant();
    00351 }

const QMap< int, QMap< int, QMap< int, QVariant > > > AttributesModel::dataMap | ( |  | ) | const`[protected, inherited]`

needed for serialization

Definition at line 564 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::data(), KDChart::AttributesModel::headerData(), KDChart::AttributesModel::setData(), and KDChart::AttributesModel::setHeaderData().

    00565 {
    00566     return mDataMap;
    00567 }

QVariant AttributesModel::headerData | ( | int | section,
|  | Qt::Orientation | orientation,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | const`[inherited]`

[reimplemented]

Definition at line 290 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::dataMap(), KDChart::DatasetBrushRole, KDChart::DatasetPenRole, KDChart::Palette::defaultPalette(), KDChart::Palette::getBrush(), KDChart::AttributesModel::modelData(), KDChart::AttributesModel::paletteType(), KDChart::AttributesModel::PaletteTypeDefault, KDChart::AttributesModel::PaletteTypeRainbow, KDChart::AttributesModel::PaletteTypeSubdued, KDChart::Palette::rainbowPalette(), and KDChart::Palette::subduedPalette().

Referenced by KDChart::AttributesModel::data(), KDChart::AbstractDiagram::datasetLabels(), and KDChart::AttributesModel::setHeaderData().

    00293 {
    00294   QVariant sourceData = sourceModel()->headerData( section, orientation, role );
    00295   if ( sourceData.isValid() ) return sourceData;
    00296   // the source model didn't have data set, let's use our stored values
    00297   const QMap<int, QMap<int, QVariant> >& map = orientation == Qt::Horizontal ? mHorizontalHeaderDataMap : mVerticalHeaderDataMap;
    00298   if ( map.contains( section ) ) {
    00299       const QMap<int, QVariant> &dataMap = map[ section ];
    00300       if ( dataMap.contains( role ) ) {
    00301           return dataMap[ role ];
    00302       }
    00303   }
    00304
    00305   // Default values if nothing else matches
    00306   switch ( role ) {
    00307   case Qt::DisplayRole:
    00308       return QLatin1String( orientation == Qt::Vertical ?  "Series " : "Item " ) + QString::number( section ) ;
    00309
    00310   case KDChart::DatasetBrushRole: {
    00311       if ( paletteType() == PaletteTypeSubdued )
    00312           return Palette::subduedPalette().getBrush( section );
    00313       else if ( paletteType() == PaletteTypeRainbow )
    00314           return Palette::rainbowPalette().getBrush( section );
    00315       else if ( paletteType() == PaletteTypeDefault )
    00316           return Palette::defaultPalette().getBrush( section );
    00317       else
    00318           qWarning("Unknown type of fallback palette!");
    00319   }
    00320   case KDChart::DatasetPenRole: {
    00321       // default to the color set for the brush (or it's defaults)
    00322       // but only if no per model override was set
    00323       if ( !modelData( role ).isValid() ) {
    00324           QBrush brush = qVariantValue<QBrush>( headerData( section, orientation, DatasetBrushRole ) );
    00325           return QPen( brush.color() );
    00326       }
    00327   }
    00328   default:
    00329       break;
    00330   }
    00331
    00332   return QVariant();
    00333 }

const QMap< int, QMap< int, QVariant > > AttributesModel::horizontalHeaderDataMap | ( |  | ) | const`[protected, inherited]`

needed for serialization

Definition at line 569 of file KDChartAttributesModel.cpp.

    00570 {
    00571     return mHorizontalHeaderDataMap;
    00572 }

QModelIndex KDChart::AbstractProxyModel::index | ( | int | row,
|  | int | col,
|  | const QModelIndex & | index |
| ) |  |  | const`[inherited]`

[reimplemented]

Definition at line 84 of file KDChartAbstractProxyModel.cpp.

References KDChart::AbstractProxyModel::mapFromSource(), and KDChart::AbstractProxyModel::mapToSource().

Referenced by KDChart::AttributesModel::setHeaderData(), and KDChart::AttributesModel::setModelData().

    00085 {
    00086     Q_ASSERT(sourceModel());
    00087     return mapFromSource(sourceModel()->index( row, col, mapToSource(index) ));
    00088 }

void AttributesModel::initFrom | ( | const AttributesModel * | other | ) | `[inherited]`

Definition at line 70 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::mDataMap, KDChart::AttributesModel::mDefaultsMap, KDChart::AttributesModel::mHorizontalHeaderDataMap, KDChart::AttributesModel::mModelDataMap, KDChart::AttributesModel::mVerticalHeaderDataMap, KDChart::AttributesModel::paletteType(), and KDChart::AttributesModel::setPaletteType().

Referenced by KDChart::AbstractDiagram::setModel().

    00071 {
    00072     if( other == this || ! other ) return;
    00073
    00074     mDataMap = other->mDataMap;
    00075     mHorizontalHeaderDataMap = other->mHorizontalHeaderDataMap;
    00076     mVerticalHeaderDataMap = other->mVerticalHeaderDataMap;
    00077     mModelDataMap = other->mModelDataMap;
    00078     mDefaultsMap =  other->mDefaultsMap;
    00079
    00080     setPaletteType( other->paletteType() );
    00081 }

bool AttributesModel::isKnownAttributesRole | ( | int | role | ) | const`[inherited]`

Returns whether the given role corresponds to one of the known internally used ones.

Definition at line 413 of file KDChartAttributesModel.cpp.

References KDChart::BarAttributesRole, KDChart::DataHiddenRole, KDChart::DatasetBrushRole, KDChart::DatasetPenRole, KDChart::DataValueLabelAttributesRole, KDChart::LineAttributesRole, KDChart::PieAttributesRole, KDChart::ThreeDAttributesRole, KDChart::ThreeDBarAttributesRole, KDChart::ThreeDLineAttributesRole, KDChart::ThreeDPieAttributesRole, and KDChart::ValueTrackerAttributesRole.

Referenced by KDChart::AttributesModel::compareAttributes(), KDChart::AttributesModel::data(), KDChart::AttributesModel::setData(), and KDChart::AttributesModel::setHeaderData().

    00414 {
    00415     bool oneOfOurs = false;
    00416     switch( role ) {
    00417         // fallthrough intended
    00418     case DataValueLabelAttributesRole:
    00419     case DatasetBrushRole:
    00420     case DatasetPenRole:
    00421     case ThreeDAttributesRole:
    00422     case LineAttributesRole:
    00423     case ThreeDLineAttributesRole:
    00424     case BarAttributesRole:
    00425     case ThreeDBarAttributesRole:
    00426     case PieAttributesRole:
    00427     case ThreeDPieAttributesRole:
    00428     case ValueTrackerAttributesRole:
    00429     case DataHiddenRole:
    00430         oneOfOurs = true;
    00431     default:
    00432         break;
    00433     }
    00434     return oneOfOurs;
    00435 }

QModelIndex KDChart::AbstractProxyModel::mapFromSource | ( | const QModelIndex & | sourceIndex | ) | const`[inherited]`

[reimplemented]

Definition at line 52 of file KDChartAbstractProxyModel.cpp.

Referenced by KDChart::AbstractProxyModel::index(), and KDChart::AbstractProxyModel::parent().

    00053 {
    00054   if ( !sourceIndex.isValid() )
    00055     return QModelIndex();
    00056   //qDebug() << "sourceIndex.model()="<<sourceIndex.model();
    00057   //qDebug() << "model()="<<sourceModel();
    00058   Q_ASSERT( sourceIndex.model() == sourceModel() );
    00059
    00060   // Create an index that preserves the internal pointer from the source;
    00061   // this way AbstractProxyModel preserves the structure of the source model
    00062   return createIndex( sourceIndex.row(), sourceIndex.column(), sourceIndex.internalPointer() );
    00063 }

QModelIndex KDChart::AbstractProxyModel::mapToSource | ( | const QModelIndex & | proxyIndex | ) | const`[inherited]`

[reimplemented]

Definition at line 65 of file KDChartAbstractProxyModel.cpp.

Referenced by KDChart::AttributesModel::columnCount(), KDChart::AttributesModel::data(), KDChart::AbstractProxyModel::index(), KDChart::AbstractProxyModel::parent(), KDChart::AttributesModel::rowCount(), and KDChart::AttributesModel::setData().

    00066 {
    00067   if ( !proxyIndex.isValid() )
    00068     return QModelIndex();
    00069   if( proxyIndex.model() != this )
    00070     qDebug() << proxyIndex.model() << this;
    00071   Q_ASSERT( proxyIndex.model() == this );
    00072   // So here we need to create a source index which holds that internal pointer.
    00073   // No way to pass it to sourceModel()->index... so we have to do the ugly way:
    00074   QModelIndex sourceIndex;
    00075   KDPrivateModelIndex* hack = reinterpret_cast<KDPrivateModelIndex*>(&sourceIndex);
    00076   hack->r = proxyIndex.row();
    00077   hack->c = proxyIndex.column();
    00078   hack->p = proxyIndex.internalPointer();
    00079   hack->m = sourceModel();
    00080   Q_ASSERT( sourceIndex.isValid() );
    00081   return sourceIndex;
    00082 }

QVariant KDChart::AttributesModel::modelData | ( | int | role | ) | const`[inherited]`

Definition at line 509 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::data(), KDChart::AbstractDiagram::dataValueAttributes(), KDChart::AttributesModel::headerData(), and KDChart::AbstractDiagram::isHidden().

    00510 {
    00511     return mModelDataMap.value( role, QVariant() );
    00512 }

const QMap< int, QVariant > AttributesModel::modelDataMap | ( |  | ) | const`[protected, inherited]`

needed for serialization

Definition at line 579 of file KDChartAttributesModel.cpp.

    00580 {
    00581     return mModelDataMap;
    00582 }

AttributesModel::PaletteType AttributesModel::paletteType | ( |  | ) | const`[inherited]`

Definition at line 493 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::compare(), KDChart::AttributesModel::headerData(), and KDChart::AttributesModel::initFrom().

    00494 {
    00495     return mPaletteType;
    00496 }

QModelIndex KDChart::AbstractProxyModel::parent | ( | const QModelIndex & | index | ) | const`[inherited]`

[reimplemented]

Definition at line 90 of file KDChartAbstractProxyModel.cpp.

References KDChart::AbstractProxyModel::mapFromSource(), and KDChart::AbstractProxyModel::mapToSource().

    00091 {
    00092     Q_ASSERT(sourceModel());
    00093     return mapFromSource(sourceModel()->parent( mapToSource(index) ));
    00094 }

bool AttributesModel::resetData | ( | const QModelIndex & | index,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | `[inherited]`

Remove any explicit attributes settings that might have been specified before.

Definition at line 457 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::setData().

    00458 {
    00459     return setData ( index, QVariant(), role );
    00460 }

bool AttributesModel::resetHeaderData | ( | int | section,
|  | Qt::Orientation | orientation,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | `[inherited]`

Remove any explicit attributes settings that might have been specified before.

Definition at line 483 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::setHeaderData().

    00484 {
    00485     return setHeaderData ( section, orientation, QVariant(), role );
    00486 }

int AttributesModel::rowCount | ( | const QModelIndex & |  | ) | const`[inherited]`

[reimplemented]

Definition at line 514 of file KDChartAttributesModel.cpp.

References KDChart::AbstractProxyModel::mapToSource().

Referenced by KDChart::AbstractDiagram::itemRowLabels(), KDChart::AttributesModel::setHeaderData(), and KDChart::AttributesModel::setModelData().

    00515 {
    00516     if ( sourceModel() ) {
    00517         return sourceModel()->rowCount( mapToSource(index) );
    00518     } else {
    00519         return 0;
    00520     }
    00521 }

bool AttributesModel::setData | ( | const QModelIndex & | index,
|  | const QVariant & | value,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | `[inherited]`

[reimplemented]

Definition at line 443 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::attributesChanged(), KDChart::AttributesModel::dataMap(), KDChart::AttributesModel::isKnownAttributesRole(), and KDChart::AbstractProxyModel::mapToSource().

Referenced by KDChart::AttributesModel::resetData(), KDChart::BarDiagram::setBarAttributes(), KDChart::AbstractDiagram::setBrush(), and KDChart::AbstractDiagram::setPen().

    00444 {
    00445     if ( !isKnownAttributesRole( role ) ) {
    00446         return sourceModel()->setData( mapToSource(index), value, role );
    00447     } else {
    00448         QMap< int,  QMap< int, QVariant> > &colDataMap = mDataMap[ index.column() ];
    00449         QMap<int, QVariant> &dataMap = colDataMap[ index.row() ];
    00450         //qDebug() <<  "AttributesModel::setData" <<"role" << role << "value" << value;
    00451         dataMap.insert( role, value );
    00452         emit attributesChanged( index, index );
    00453         return true;
    00454     }
    00455 }

void AttributesModel::setDataMap | ( | const QMap< int, QMap< int, QMap< int, QVariant > > > | map | ) | `[protected, inherited]`

needed for serialization

Definition at line 585 of file KDChartAttributesModel.cpp.

    00586 {
    00587     mDataMap = map;
    00588 }

void AttributesModel::setDefaultForRole | ( | int | role,
|  | const QVariant & | value |
| ) |  |  | `[inherited]`

Define the default value for a certain role.

Passing a default-constructed QVariant is equivalent to removing the default.

Definition at line 605 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::AttributesModel(), and KDChart::TernaryLineDiagram::TernaryLineDiagram().

    00606 {
    00607     if ( value.isValid() ) {
    00608         mDefaultsMap.insert( role, value );
    00609     } else {
    00610         // erase the possibily existing value to not let the map grow:
    00611         QMap<int, QVariant>::iterator it = mDefaultsMap.find( role );
    00612         if ( it != mDefaultsMap.end() ) {
    00613             mDefaultsMap.erase( it );
    00614         }
    00615     }
    00616
    00617     Q_ASSERT( defaultsForRole( role ) == value );
    00618 }

bool AttributesModel::setHeaderData | ( | int | section,
|  | Qt::Orientation | orientation,
|  | const QVariant & | value,
|  | int | role = `Qt::DisplayRole` |
| ) |  |  | `[inherited]`

[reimplemented]

Definition at line 462 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::attributesChanged(), KDChart::AttributesModel::dataMap(), KDChart::AttributesModel::headerData(), KDChart::AbstractProxyModel::index(), KDChart::AttributesModel::isKnownAttributesRole(), and KDChart::AttributesModel::rowCount().

Referenced by KDChart::AttributesModel::resetHeaderData(), KDChart::AbstractDiagram::setBrush(), and KDChart::AbstractDiagram::setPen().

    00464 {
    00465     if( sourceModel() != 0 && headerData( section, orientation, role ) == value )
    00466         return true;
    00467     if ( !isKnownAttributesRole( role ) ) {
    00468         return sourceModel()->setHeaderData( section, orientation, value, role );
    00469     } else {
    00470         QMap<int,  QMap<int, QVariant> > &sectionDataMap
    00471             = orientation == Qt::Horizontal ? mHorizontalHeaderDataMap : mVerticalHeaderDataMap;
    00472         QMap<int, QVariant> &dataMap = sectionDataMap[ section ];
    00473         dataMap.insert( role, value );
    00474         if( sourceModel() ){
    00475             emit attributesChanged( index( 0, section, QModelIndex() ),
    00476                                     index( rowCount( QModelIndex() ), section, QModelIndex() ) );
    00477             emit headerDataChanged( orientation, section, section );
    00478         }
    00479         return true;
    00480     }
    00481 }

void AttributesModel::setHorizontalHeaderDataMap | ( | const QMap< int, QMap< int, QVariant > > | map | ) | `[protected, inherited]`

needed for serialization

Definition at line 590 of file KDChartAttributesModel.cpp.

    00591 {
    00592     mHorizontalHeaderDataMap = map;
    00593 }

bool KDChart::AttributesModel::setModelData | ( | const QVariant | value,
|  | int | role |
| ) |  |  | `[inherited]`

Definition at line 498 of file KDChartAttributesModel.cpp.

References KDChart::AttributesModel::attributesChanged(), KDChart::AttributesModel::columnCount(), KDChart::AbstractProxyModel::index(), and KDChart::AttributesModel::rowCount().

Referenced by KDChart::AbstractDiagram::setBrush(), and KDChart::AbstractDiagram::setPen().

    00499 {
    00500     mModelDataMap.insert( role, value );
    00501     if( sourceModel() ){
    00502         emit attributesChanged( index( 0, 0, QModelIndex() ),
    00503                                 index( rowCount( QModelIndex() ),
    00504                                        columnCount( QModelIndex() ), QModelIndex() ) );
    00505     }
    00506     return true;
    00507 }

void AttributesModel::setModelDataMap | ( | const QMap< int, QVariant > | map | ) | `[protected, inherited]`

needed for serialization

Definition at line 600 of file KDChartAttributesModel.cpp.

    00601 {
    00602     mModelDataMap = map;
    00603 }

void AttributesModel::setPaletteType | ( | PaletteType | type | ) | `[inherited]`

Sets the palettetype used by this attributesmodel.

Definition at line 488 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::initFrom().

    00489 {
    00490     mPaletteType = type;
    00491 }

void AttributesModel::setSourceModel | ( | QAbstractItemModel * | sourceModel | ) | `[inherited]`

[reimplemented]

Definition at line 532 of file KDChartAttributesModel.cpp.

Referenced by KDChart::AttributesModel::AttributesModel().

    00533 {
    00534     if( this->sourceModel() != 0 )
    00535     {
    00536         disconnect( this->sourceModel(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)),
    00537                                   this, SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)));
    00538         disconnect( this->sourceModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ),
    00539                                   this, SIGNAL( rowsInserted( const QModelIndex&, int, int ) ) );
    00540         disconnect( this->sourceModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ),
    00541                                   this, SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ) );
    00542         disconnect( this->sourceModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ),
    00543                                   this, SIGNAL( columnsInserted( const QModelIndex&, int, int ) ) );
    00544         disconnect( this->sourceModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ),
    00545                                   this, SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ) );
    00546     }
    00547     QAbstractProxyModel::setSourceModel( sourceModel );
    00548     if( this->sourceModel() != NULL )
    00549     {
    00550         connect( this->sourceModel(), SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)),
    00551                                 this, SIGNAL( dataChanged( const QModelIndex&, const QModelIndex&)));
    00552         connect( this->sourceModel(), SIGNAL( rowsInserted( const QModelIndex&, int, int ) ),
    00553                                 this, SIGNAL( rowsInserted( const QModelIndex&, int, int ) ) );
    00554         connect( this->sourceModel(), SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ),
    00555                                 this, SIGNAL( rowsRemoved( const QModelIndex&, int, int ) ) );
    00556         connect( this->sourceModel(), SIGNAL( columnsInserted( const QModelIndex&, int, int ) ),
    00557                                 this, SIGNAL( columnsInserted( const QModelIndex&, int, int ) ) );
    00558         connect( this->sourceModel(), SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ),
    00559                                 this, SIGNAL( columnsRemoved( const QModelIndex&, int, int ) ) );
    00560     }
    00561 }

void AttributesModel::setVerticalHeaderDataMap | ( | const QMap< int, QMap< int, QVariant > > | map | ) | `[protected, inherited]`

needed for serialization

Definition at line 595 of file KDChartAttributesModel.cpp.

    00596 {
    00597     mVerticalHeaderDataMap = map;
    00598 }

const QMap< int, QMap< int, QVariant > > AttributesModel::verticalHeaderDataMap | ( |  | ) | const`[protected, inherited]`

needed for serialization

Definition at line 574 of file KDChartAttributesModel.cpp.

    00575 {
    00576     return mVerticalHeaderDataMap;
    00577 }

The documentation for this class was generated from the following file:

- KDChartAbstractDiagram.h