00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "KDChartAbstractPieDiagram.h"
00027 #include "KDChartAbstractPieDiagram_p.h"
00028
00029 #include "KDChartAttributesModel.h"
00030 #include "KDChartPieAttributes.h"
00031 #include "KDChartThreeDPieAttributes.h"
00032
00033 #include <QMap>
00034
00035 #include <KDABLibFakes>
00036
00037
00038 using namespace KDChart;
00039
00040 AbstractPieDiagram::Private::Private() :
00041 granularity( 1.0 )
00042 {
00043 }
00044
00045 AbstractPieDiagram::Private::~Private() {}
00046
00047 AbstractPieDiagram::AbstractPieDiagram( QWidget* parent, PolarCoordinatePlane *plane ) :
00048 AbstractPolarDiagram( new Private(), parent, plane )
00049 {
00050 init();
00051 }
00052
00053 AbstractPieDiagram::~AbstractPieDiagram()
00054 {
00055 }
00056
00057
00058 void AbstractPieDiagram::init()
00059 {
00060 }
00061
00062
00063 bool AbstractPieDiagram::compare( const AbstractPieDiagram* other )const
00064 {
00065 if( other == this ) return true;
00066 if( ! other ){
00067
00068 return false;
00069 }
00070
00071
00072
00073
00074
00075
00076
00077 return
00078 ( static_cast<const AbstractPolarDiagram*>(this)->compare( other ) ) &&
00079
00080 (granularity() == other->granularity()) &&
00081 (startPosition() == other->startPosition());
00082 }
00083
00084
00085 #define d d_func()
00086
00087 void AbstractPieDiagram::setGranularity( qreal value )
00088 {
00089 d->granularity = value;
00090 }
00091
00092 qreal AbstractPieDiagram::granularity() const
00093 {
00094 return (d->granularity < 0.05 || d->granularity > 36.0)
00095 ? 1.0
00096 : d->granularity;
00097 }
00098
00099
00100 void AbstractPieDiagram::setStartPosition( int degrees )
00101 {
00102 Q_UNUSED( degrees );
00103 qWarning() << "Deprecated AbstractPieDiagram::setStartPosition() called, setting ignored.";
00104 }
00105
00106 int AbstractPieDiagram::startPosition() const
00107 {
00108 qWarning() << "Deprecated AbstractPieDiagram::startPosition() called.";
00109 return 0;
00110 }
00111
00112 void AbstractPieDiagram::setPieAttributes( const PieAttributes & attrs )
00113 {
00114 d->attributesModel->setModelData( qVariantFromValue( attrs ), PieAttributesRole );
00115 emit layoutChanged( this );
00116 }
00117
00118 void AbstractPieDiagram::setPieAttributes( int column, const PieAttributes & attrs )
00119 {
00120 d->attributesModel->setHeaderData(
00121 column, Qt::Vertical, qVariantFromValue( attrs ), PieAttributesRole );
00122 emit layoutChanged( this );
00123 }
00124
00125 void AbstractPieDiagram::setPieAttributes( const QModelIndex & index, const PieAttributes & attrs )
00126 {
00127 d->attributesModel->setData( index, qVariantFromValue( attrs), PieAttributesRole );
00128 emit layoutChanged( this );
00129 }
00130
00131
00132
00133
00134 PieAttributes AbstractPieDiagram::pieAttributes() const
00135 {
00136 return qVariantValue<PieAttributes>(
00137 d->attributesModel->data( PieAttributesRole ) );
00138 }
00139
00140
00141
00142
00143 PieAttributes AbstractPieDiagram::pieAttributes( int column ) const
00144 {
00145 const QVariant attrs(
00146 d->attributesModel->headerData( column, Qt::Vertical,
00147 PieAttributesRole ) );
00148 if( attrs.isValid() )
00149 return qVariantValue< PieAttributes >( attrs );
00150 return pieAttributes();
00151 }
00152
00153 PieAttributes AbstractPieDiagram::pieAttributes( const QModelIndex & index ) const
00154 {
00155 return qVariantValue<PieAttributes>(
00156 d->attributesModel->data(
00157 d->attributesModel->mapFromSource( index ),
00158 PieAttributesRole ) );
00159 }
00160
00161
00162 void AbstractPieDiagram::setThreeDPieAttributes( const ThreeDPieAttributes & tda )
00163 {
00164 d->attributesModel->setModelData( qVariantFromValue( tda ), ThreeDPieAttributesRole );
00165 emit layoutChanged( this );
00166 }
00167
00168 void AbstractPieDiagram::setThreeDPieAttributes( int column, const ThreeDPieAttributes & tda )
00169 {
00170 d->attributesModel->setHeaderData(
00171 column, Qt::Vertical, qVariantFromValue( tda ), ThreeDPieAttributesRole );
00172 emit layoutChanged( this );
00173 }
00174
00175 void AbstractPieDiagram::setThreeDPieAttributes( const QModelIndex & index, const ThreeDPieAttributes & tda )
00176 {
00177 model()->setData( index, qVariantFromValue( tda ), ThreeDPieAttributesRole );
00178 emit layoutChanged( this );
00179 }
00180
00181
00182
00183
00184 ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes() const
00185 {
00186 return qVariantValue<ThreeDPieAttributes>(
00187 d->attributesModel->data( ThreeDPieAttributesRole ) );
00188 }
00189
00190
00191
00192
00193 ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes( int column ) const
00194 {
00195 const QVariant attrs(
00196 d->attributesModel->headerData( column, Qt::Vertical,
00197 ThreeDPieAttributesRole ) );
00198 if( attrs.isValid() )
00199 return qVariantValue< ThreeDPieAttributes >( attrs );
00200 return threeDPieAttributes();
00201 }
00202
00203 ThreeDPieAttributes AbstractPieDiagram::threeDPieAttributes( const QModelIndex & index ) const
00204 {
00205 return qVariantValue<ThreeDPieAttributes>(
00206 d->attributesModel->data(
00207 d->attributesModel->mapFromSource( index ),
00208 ThreeDPieAttributesRole ) );
00209 }
00210