1 /* This file is part of the KDE project 2 * Copyright (C) 2007-2008 by Adam Pigg (adam@piggz.co.uk) 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef KRCHARTDATA_H 19 #define KRCHARTDATA_H 20 21 #include <KDChartWidget> 22 23 #include "KReportItemBase.h" 24 #include "KReportData.h" 25 26 namespace Scripting 27 { 28 class Chart; 29 } 30 31 /** 32 */ 33 class KReportItemChart : public KReportItemBase 34 { 35 Q_OBJECT 36 public: 37 KReportItemChart(); 38 explicit KReportItemChart(QDomNode *element); 39 ~KReportItemChart(); 40 41 virtual QString typeName() const; 42 43 virtual int renderReportData(OROPage *page, OROSection *section, const QPointF &offset, KReportData *data, KReportScriptHandler *script); 44 widget()45 KDChart::Widget *widget() { 46 return m_chartWidget; 47 } 48 49 /** 50 @brief Perform the query for the chart and set the charts data 51 */ 52 void populateData(); 53 void setConnection(const KReportData *c); 54 55 /** 56 @brief Set the value of a field from the master (report) data set 57 This data will be used when retrieving the data for the chart 58 as the values in a 'where' clause. 59 */ 60 void setLinkData(QString, QVariant); 61 62 /** 63 @brief Return the list of master fields 64 The caller will use this to set the current value for each field 65 at that stage in the report 66 */ 67 QStringList masterFields() const; 68 69 /** 70 @brief The chart object is a complex object that uses its own data source 71 @return true 72 */ supportsSubQuery()73 virtual bool supportsSubQuery() const { return true; } 74 75 protected: 76 KProperty * m_font; 77 KProperty * m_chartType; 78 KProperty * m_chartSubType; 79 KProperty * m_threeD; 80 KProperty * m_colorScheme; 81 KProperty * m_aa; 82 KProperty * m_xTitle; 83 KProperty * m_yTitle; 84 85 KProperty *m_backgroundColor; 86 KProperty *m_displayLegend; 87 KProperty *m_legendPosition; 88 KProperty *m_legendOrientation; 89 90 KProperty *m_linkMaster; 91 KProperty *m_linkChild; 92 93 KDChart::Widget *m_chartWidget; 94 95 void set3D(bool td); 96 void setAA(bool aa); 97 void setColorScheme(const QString &cs); 98 void setAxis(const QString &xa, const QString &ya); 99 void setBackgroundColor(const QColor&); 100 void setLegend(bool le, const QStringList &legends = QStringList()); 101 102 private: 103 virtual void createProperties(); 104 const KReportData *m_reportData; 105 106 friend class Scripting::Chart; 107 108 QMap<QString, QVariant> m_links; //Map of field->value for child/master links 109 110 }; 111 112 #endif 113