QVariant ChartItemModel::data( const QModelIndex &index, int role ) const { QString r; if ( role == KDChart::DatasetPenRole ) r = "DatasetPenRole"; if ( role == KDChart::DatasetBrushRole ) r = "DatasetBrushRole"; if ( role == KDChart::DataValueLabelAttributesRole ) r = "DataValueLabelAttributesRole"; if ( role == KDChart::ThreeDAttributesRole ) r = "ThreeDAttributesRole"; if ( role == KDChart::LineAttributesRole ) r = "LineAttributesRole"; if ( role == KDChart::ThreeDLineAttributesRole ) r = "ThreeDLineAttributesRole"; if ( role == KDChart::BarAttributesRole ) r = "BarAttributesRole"; if ( role == KDChart::StockBarAttributesRole ) r = "StockBarAttributesRole"; if ( role == KDChart::ThreeDBarAttributesRole ) r = "ThreeDBarAttributesRole"; if ( role == KDChart::PieAttributesRole ) r = "PieAttributesRole"; if ( role == KDChart::ThreeDPieAttributesRole ) r = "ThreeDPieAttributesRole"; if ( role == KDChart::DataHiddenRole ) r = "DataHiddenRole"; if ( role == KDChart::ValueTrackerAttributesRole ) r = "ValueTrackerAttributesRole"; if ( role == KDChart::CommentRole ) r = "CommentRole"; QVariant result; if ( role == Qt::DisplayRole ) { r = "DisplayRole"; switch ( index.column() ) { case 0: result = bcwsCost( index.row() ); break; case 1: result = bcwpCost( index.row() ); break; case 2: result = acwpCost( index.row() ); break; case 3: result = bcwsEffort( index.row() ); break; case 4: result = bcwpEffort( index.row() ); break; case 5: result = acwpEffort( index.row() ); break; default: break; } //kDebug()<<index<<r<<result; return result; } else if ( role == KDChart::DatasetBrushRole ) { return headerData( index.column(), Qt::Horizontal, role ); } else if ( role == KDChart::DatasetPenRole ) { return headerData( index.column(), Qt::Horizontal, role ); } //kDebug()<<index<<r<<result; return result; }
double ChartItemModel::cpiCost( int day ) const { double p = bcwpCost( day ); double a = acwpCost( day ); return a == 0.0 ? 0.0 : p / a; }
QVariant ChartItemModel::data( const QModelIndex &index, int role ) const { QVariant result; if ( role == Qt::DisplayRole ) { if ( ! m_localizeValues ) { return data( index, Qt::EditRole ); } else { QLocale locale; // TODO: temporary workaround while KLocale/money logic still used Locale *planLocale; Locale *tmpPlanLocale = 0; if (project()) { planLocale = project()->locale(); } else { tmpPlanLocale = new Locale(); planLocale = tmpPlanLocale; } switch ( index.column() ) { case BCWSCost: result = planLocale->formatMoney( bcwsCost( index.row() ), QString(), 0 ); break; case BCWPCost: result = planLocale->formatMoney( bcwpCost( index.row() ), QString(), 0 ); break; case ACWPCost: result = planLocale->formatMoney( acwpCost( index.row() ), QString(), 0 ); break; case BCWSEffort: result = locale.toString( bcwsEffort( index.row() ), 'f', 0 ); break; case BCWPEffort: result = locale.toString( bcwpEffort( index.row() ), 'f', 0 ); break; case ACWPEffort: result = locale.toString( acwpEffort( index.row() ), 'f', 0 ); break; case SPICost: result = locale.toString( spiCost( index.row() ), 'f', 2 ); break; case CPICost: result = locale.toString( cpiCost( index.row() ), 'f', 2 ); break; case SPIEffort: result = locale.toString( spiEffort( index.row() ), 'f', 2 ); break; case CPIEffort: result = locale.toString( cpiEffort( index.row() ), 'f', 2 ); break; default: break; } delete tmpPlanLocale; } //debugPlan<<index<<role<<result; return result; } else if ( role == Qt::EditRole ) { switch ( index.column() ) { case BCWSCost: result = bcwsCost( index.row() ); break; case BCWPCost: result = bcwpCost( index.row() ); break; case ACWPCost: result = acwpCost( index.row() ); break; case BCWSEffort: result = bcwsEffort( index.row() ); break; case BCWPEffort: result = bcwpEffort( index.row() ); break; case ACWPEffort: result = acwpEffort( index.row() ); break; case SPICost: result = spiCost( index.row() ); break; case CPICost: result = cpiCost( index.row() ); break; case SPIEffort: result = spiEffort( index.row() ); break; case CPIEffort: result = cpiEffort( index.row() ); break; default: break; } //debugPlan<<index<<role<<result; return result; } else if ( role == Qt::ForegroundRole ) { double v = 0.0; switch ( index.column() ) { case SPICost: v = spiCost( index.row() ); break; case CPICost: v = cpiCost( index.row() ); break; case SPIEffort: v = spiEffort( index.row() ); break; case CPIEffort: v = cpiEffort( index.row() ); break; default: break; } if ( v > 0.0 && v < 1.0 ) { result = QBrush( Qt::red ); } return result; } else if ( role == KChart::DatasetBrushRole ) { return headerData( index.column(), Qt::Horizontal, role ); } else if ( role == KChart::DatasetPenRole ) { return headerData( index.column(), Qt::Horizontal, role ); } //debugPlan<<index<<role<<result; return result; }
double ChartItemModel::spiCost( int day ) const { double p = bcwpCost( day ); double s = bcwsCost( day ); return s == 0.0 ? 0.0 : p / s; }