kchart
kchart_part.h00001
00005 #ifndef KCHART_PART_H
00006 #define KCHART_PART_H
00007
00008
00009 #include <kconfig.h>
00010
00011 #include <koChart.h>
00012 #include "kchart_params.h"
00013 #include "koffice_export.h"
00014
00015 class KoXmlWriter;
00016 class KoGenStyles;
00017 namespace KChart
00018 {
00019
00020 class KChartParams;
00021
00022
00023 class KCHART_EXPORT KChartPart : public KoChart::Part
00024 {
00025 Q_OBJECT
00026
00027 public:
00028 KChartPart( QWidget *parentWidget = 0, const char *widgetName = 0,
00029 QObject* parent = 0, const char* name = 0,
00030 bool singleViewMode = false );
00031 ~KChartPart();
00032
00033
00034
00035 virtual bool initDoc(InitDocFlags flags, QWidget* parentWidget=0);
00036
00037 virtual void paintContent( QPainter& painter, const QRect& rect,
00038 bool transparent = false,
00039 double zoomX = 1.0, double zoomY = 1.0 );
00040
00041
00042
00043
00044 virtual void resizeData( int rows, int columns );
00045 virtual void setCellData( int row, int column, const QVariant &);
00046 virtual void analyzeHeaders( );
00047 virtual void setCanChangeValue( bool b ) { m_bCanChangeValue = b; }
00048
00049
00050
00051 void analyzeHeaders( const KDChartTableData& data );
00052 void doSetData( const KDChartTableData& data,
00053 bool firstRowHeader,
00054 bool firstRowHeader );
00055
00056 bool showWizard( QString &dataArea );
00057 void initLabelAndLegend();
00058 void loadConfig(KConfig *conf);
00059 void saveConfig(KConfig *conf);
00060 void defaultConfig();
00061
00062 KChartParams::ChartType chartType() const { return (KChartParams::ChartType) params()->chartType(); }
00063 KDChartTableData *data() { return &m_currentData; }
00064 KChartParams *params() const { return m_params; }
00065
00066 QStringList &rowLabelTexts() { return m_rowLabels; }
00067 QStringList &colLabelTexts() { return m_colLabels; }
00068
00069
00070 virtual QDomDocument saveXML();
00071 virtual bool loadXML( QIODevice *, const QDomDocument& doc );
00072 virtual bool loadOasis( const QDomDocument& doc,
00073 KoOasisStyles& oasisStyles,
00074 const QDomDocument& settings,
00075 KoStore *store );
00076 virtual bool saveOasis( KoStore* store,
00077 KoXmlWriter* manifestWriter );
00078
00079 bool canChangeValue() const { return m_bCanChangeValue; }
00080
00081 void initNullChart();
00082
00083
00084 void generateBarChartTemplate();
00085
00086 virtual bool showEmbedInitDialog(QWidget* parent);
00087
00088 public slots:
00089 void slotModified();
00090 virtual void initEmpty();
00091
00092 signals:
00093 void docChanged();
00094
00095 protected:
00096 virtual KoView* createViewInstance( QWidget* parent, const char* name );
00097 bool loadOldXML( const QDomDocument& doc );
00098 bool loadAuxiliary( const QDomDocument& doc );
00099 bool loadData( const QDomDocument& doc, KDChartTableData& currentData );
00100 bool loadOasisData( const QDomElement& tableElem );
00101 void saveOasisData( KoXmlWriter* bodyWriter, KoGenStyles& mainStyles ) const;
00102 void writeAutomaticStyles( KoXmlWriter& contentWriter, KoGenStyles& mainStyles ) const;
00103
00104 private:
00105
00106 int createDisplayData();
00107 void createLabelsAndLegend( QStringList &longLabels,
00108 QStringList &shortLabels );
00109
00110
00111 QDomElement createElement(const QString &tagName,
00112 const QFont &font,
00113 QDomDocument &doc) const;
00114 QFont toFont(QDomElement &element) const;
00115
00116 void setChartDefaults();
00117
00118 private:
00119
00120 KChartParams *m_params;
00121 KDChartTableData m_currentData;
00122 QStringList m_rowLabels;
00123 QStringList m_colLabels;
00124
00125
00126
00127 bool m_bCanChangeValue;
00128
00129
00130 QWidget *m_parentWidget;
00131
00132
00133 KDChartTableData m_displayData;
00134
00135 QPixmap m_bufferPixmap;
00136 };
00137
00138
00139 class WizardExt : public KoChart::WizardExtension
00140 {
00141 public:
00142 WizardExt( KoChart::Part *part )
00143 : KoChart::WizardExtension( part ) {};
00144
00145 virtual bool show( QString &dataArea ) {
00146 return static_cast<KChartPart *>( part() )->showWizard( dataArea );
00147 }
00148 };
00149
00150 }
00151
00152 #endif
|