kchart

kchart_part.h

00001 
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     // Methods inherited from KoDocument:
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     // Methods unique to KChart, and available in the new interface
00042     // (see /interfaces/koChart.h.)
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  hasRowHeader,
00054              bool  hasRowHeader );
00055 
00056     bool showWizard( QString &area );
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     // Save and load
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     // Functions that generate templates (not used yet):
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     // Helper methods for painting.
00106     void         createDisplayData();
00107 
00108     QDomElement  createElement(const QString &tagName,
00109                    const QFont &font,
00110                    QDomDocument &doc) const;
00111     QFont        toFont(QDomElement &element)     const;
00112 
00113     void         setChartDefaults();
00114 
00115 private:
00116     // The chart and its contents
00117     KChartParams            *m_params;      // Everything about the chart
00118     KDChartTableData         m_currentData; // The data in the chart.
00119     QString                  m_regionName;
00120 
00121     // Other auxiliary values
00122     bool                     m_bCanChangeValue;
00123 
00124     // Graphics
00125     QWidget                 *m_parentWidget;
00126 
00127     // Used when displaying.
00128     KDChartTableData         m_displayData;
00129     QStringList              m_rowLabels;
00130     QStringList              m_colLabels;
00131 
00132     QPixmap                  m_bufferPixmap;
00133 };
00134 
00135 
00136 class WizardExt : public KoChart::WizardExtension
00137 {
00138 public:
00139     WizardExt( KoChart::Part *part )
00140         : KoChart::WizardExtension( part ) {};
00141 
00142     virtual bool show( QString &area ) {
00143         return static_cast<KChartPart *>( part() )->showWizard( area );
00144     }
00145 };
00146 
00147 }  //KChart namespace
00148 
00149 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys