##// END OF EJS Templates
Proof-of-concept for QML api...
Tero Ahola -
r120:c64ea33f6f52
parent child
Show More
@@ -0,0 +1,96
1 #include "declarativeseries.h"
2 #include "declarativechart.h"
3 #include <qxychartseries.h>
4 #include <cmath>
5 #include <QDebug>
6
7 QTCOMMERCIALCHART_BEGIN_NAMESPACE
8
9 DeclarativeSeries::DeclarativeSeries(QDeclarativeItem *parent) :
10 QDeclarativeItem(parent),
11 m_seriesType(SeriesTypeInvalid), // TODO: default type?
12 m_chart(0),
13 m_series(0)
14 {
15 setFlag(QGraphicsItem::ItemHasNoContents, false);
16 connect(this, SIGNAL(parentChanged()),
17 this, SLOT(setParentForSeries()));
18 }
19
20 void DeclarativeSeries::setSeriesType(SeriesType type)
21 {
22 if (!m_series || type != m_seriesType) {
23 m_seriesType = type;
24 initSeries();
25 }
26 }
27
28 void DeclarativeSeries::setParentForSeries()
29 {
30 initSeries();
31 }
32
33 void DeclarativeSeries::initSeries()
34 {
35 DeclarativeChart *declarativeChart = qobject_cast<DeclarativeChart *>(parent());
36
37 if (declarativeChart && m_seriesType != SeriesTypeInvalid) {
38 delete m_series;
39 m_series = 0;
40
41 QChart *chart = qobject_cast<QChart *>(declarativeChart->m_chart);
42 qDebug() << "creating series for chart: " << chart;
43 Q_ASSERT(chart);
44
45 switch (m_seriesType) {
46 case SeriesTypeLine: {
47 m_series = QXYChartSeries::create(this);
48 for (qreal i(0.0); i < 100.0; i += 1.0)
49 ((QXYChartSeries *)m_series)->add(i, i);
50 chart->addSeries(m_series);
51 break;
52 }
53 case SeriesTypeBar:
54 // fallthrough; bar and scatter use the same test data
55 case SeriesTypeScatter: {
56 m_series = chart->createSeries((QChartSeries::QChartSeriesType) m_seriesType);
57 QList<qreal> datax;
58 QList<qreal> datay;
59 for (qreal i = 0; i < 100; i += 0.1) {
60 datax.append(i + (rand() % 5));
61 datay.append(abs(sin(3.14159265358979 / 50 * i) * 100) + (rand() % 5));
62 }
63 Q_ASSERT(m_series->setData(datax, datay));
64 break;
65 }
66 case SeriesTypeStackedBar:
67 break;
68 case SeriesTypePercentBar:
69 break;
70 case SeriesTypePie: {
71 m_series = chart->createSeries((QChartSeries::QChartSeriesType) m_seriesType);
72 QList<qreal> data;
73 data << 1.0;
74 data << 12.0;
75 data << 4.0;
76 Q_ASSERT(m_series->setData(data));
77 break;
78 }
79 default:
80 break;
81 }
82 }
83 }
84
85 QVariant DeclarativeSeries::itemChange(GraphicsItemChange change,
86 const QVariant &value)
87 {
88 // For debugging purposes only:
89 // qDebug() << QString::number(change) << " : " << value.toString();
90 return QGraphicsItem::itemChange(change, value);
91 }
92
93
94 #include "moc_declarativeseries.cpp"
95
96 QTCOMMERCIALCHART_END_NAMESPACE
@@ -0,0 +1,53
1 #ifndef DECLARATIVESERIES_H
2 #define DECLARATIVESERIES_H
3
4 #include <QDeclarativeItem>
5 #include <qchart.h>
6 #include <qchartseries.h>
7
8 QTCOMMERCIALCHART_BEGIN_NAMESPACE
9
10 class DeclarativeSeries : public QDeclarativeItem
11 {
12 Q_OBJECT
13 Q_ENUMS(SeriesType)
14 Q_PROPERTY(SeriesType seriesType READ seriesType WRITE setSeriesType)
15
16 public:
17 // TODO: how to re-use the existing enum from QChart?
18 enum SeriesType {
19 SeriesTypeInvalid = QChartSeries::SeriesTypeInvalid,
20 SeriesTypeLine,
21 // SeriesTypeArea,
22 SeriesTypeBar,
23 SeriesTypeStackedBar,
24 SeriesTypePercentBar,
25 SeriesTypePie,
26 SeriesTypeScatter
27 // SeriesTypeSpline
28 };
29
30 explicit DeclarativeSeries(QDeclarativeItem *parent = 0);
31
32 signals:
33
34 public slots:
35 void setParentForSeries();
36
37 public: // from QDeclarativeItem
38 QVariant itemChange(GraphicsItemChange, const QVariant &);
39
40 public:
41 void setSeriesType(SeriesType type);
42 SeriesType seriesType() { return m_seriesType; }
43
44 private:
45 void initSeries();
46 SeriesType m_seriesType;
47 QChart *m_chart;
48 QChartSeries *m_series;
49 };
50
51 QTCOMMERCIALCHART_END_NAMESPACE
52
53 #endif // DECLARATIVESERIES_H
@@ -0,0 +1,59
1 #ifndef CHART_H
2 #define CHART_H
3
4 #include <QDeclarativeItem>
5 #include <QPainter>
6
7 class Chart : public QDeclarativeItem
8 {
9 Q_OBJECT
10 Q_PROPERTY(int theme READ theme WRITE setTheme NOTIFY themeChanged)
11
12 public:
13 Chart(QDeclarativeItem *parent = 0) :
14 QDeclarativeItem(parent), m_theme(0)
15 {
16 setFlag(QGraphicsItem::ItemHasNoContents, false);
17 }
18
19 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
20 {
21 // TODO: remove
22 QPen pen(QColor(0, 0, 0), 10);
23 painter->setPen(pen);
24 if(smooth() == true) {
25 painter->setRenderHint(QPainter::Antialiasing, true);
26 }
27 painter->drawLine(0, 0, 100, 100);
28 }
29
30 int theme() const { return m_theme; }
31
32 // Set methods
33 void setTheme(int theme) {
34 if (theme != m_theme) {
35 m_theme = theme;
36 updateSize();
37 emit themeChanged();
38 update();
39 }
40 }
41
42 signals:
43 void themeChanged();
44
45 private:
46 void updateSize() {
47 // setX(qMin(m_x1, m_x2) - m_penWidth/2);
48 // setY(qMin(m_y1, m_y2) - m_penWidth/2);
49 // setWidth(qAbs(m_x2 - m_x1) + m_penWidth);
50 // setHeight(qAbs(m_y2 - m_y1) + m_penWidth);
51 }
52
53 private:
54 int m_theme;
55 };
56
57 QML_DECLARE_TYPE(Chart)
58
59 #endif // CHART_H
@@ -0,0 +1,16
1 #include <QtGui/QApplication>
2 #include <QDeclarativeEngine>
3 #include "qmlapplicationviewer.h"
4 #include "chart.h"
5
6 Q_DECL_EXPORT int main(int argc, char *argv[])
7 {
8 QScopedPointer<QApplication> app(createApplication(argc, argv));
9 QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
10
11 viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
12 viewer->setMainQmlFile(QLatin1String("qml/qmlchart/main.qml"));
13 viewer->showExpanded();
14
15 return app->exec();
16 }
@@ -0,0 +1,76
1 import QtQuick 1.0
2 import QtCommercial.Chart 1.0
3
4 Rectangle {
5 width: 360
6 height: 360
7 Text {
8 text: qsTr("Hello World")
9 anchors.centerIn: parent
10 }
11
12 // Component.onCompleted: {
13 // for (var i = 0.0; i < 100.0; i += 0.1) {
14 // var x = i + Math.random() * 5;
15 // var y = Math.abs(Math.sin(3.14159 / 50 * x) * 100) + (Math.random() * 5);
16 // myData.append({'x':x, 'y':y});
17 // }
18 // }
19
20 // ChartModel {
21 // id: chartData
22 // ChartElement {
23 // y: 1.2
24 // }
25 // ChartElement {
26 // x: 1.1
27 // y: 1.2
28 // }
29 // ChartElement {
30 // label: "February"
31 // y: 1.2
32 // }
33 // ChartElement {
34 // label: "January"
35 // x: 0.2
36 // y: 2.1
37 // }
38 // }
39
40 // Series {
41 // model: chartData
42 // seriesType: pie
43 // axis: Series.AxisSecondaryY
44 // }
45
46 ListModel {
47 id: myData
48 ListElement {
49 nnn: 55.2
50 mmm: 13.1
51 }
52 ListElement {
53 nnn: 15.3
54 mmm: 3.4
55 }
56 }
57
58 Chart {
59 anchors.fill: parent
60 theme: Chart.ThemeIcy
61
62 Series {
63 seriesType: Series.SeriesTypePie
64 }
65 Series {
66 seriesType: Series.SeriesTypeScatter
67 }
68 Series {
69 seriesType: Series.SeriesTypeLine
70 }
71 // TODO:
72 // Series {
73 // seriesType: Series.SeriesTypeBar
74 // }
75 }
76 }
@@ -0,0 +1,200
1 // checksum 0x78c version 0x60010
2 /*
3 This file was generated by the Qt Quick Application wizard of Qt Creator.
4 QmlApplicationViewer is a convenience class containing mobile device specific
5 code such as screen orientation handling. Also QML paths and debugging are
6 handled here.
7 It is recommended not to modify this file, since newer versions of Qt Creator
8 may offer an updated version of it.
9 */
10
11 #include "qmlapplicationviewer.h"
12
13 #include <QtCore/QDir>
14 #include <QtCore/QFileInfo>
15 #include <QtDeclarative/QDeclarativeComponent>
16 #include <QtDeclarative/QDeclarativeEngine>
17 #include <QtDeclarative/QDeclarativeContext>
18 #include <QtGui/QApplication>
19
20 #include <qplatformdefs.h> // MEEGO_EDITION_HARMATTAN
21
22 #ifdef HARMATTAN_BOOSTER
23 #include <MDeclarativeCache>
24 #endif
25
26 #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
27
28 #include <qt_private/qdeclarativedebughelper_p.h>
29
30 #if !defined(NO_JSDEBUGGER)
31 #include <jsdebuggeragent.h>
32 #endif
33 #if !defined(NO_QMLOBSERVER)
34 #include <qdeclarativeviewobserver.h>
35 #endif
36
37 // Enable debugging before any QDeclarativeEngine is created
38 struct QmlJsDebuggingEnabler
39 {
40 QmlJsDebuggingEnabler()
41 {
42 QDeclarativeDebugHelper::enableDebugging();
43 }
44 };
45
46 // Execute code in constructor before first QDeclarativeEngine is instantiated
47 static QmlJsDebuggingEnabler enableDebuggingHelper;
48
49 #endif // QMLJSDEBUGGER
50
51 class QmlApplicationViewerPrivate
52 {
53 QmlApplicationViewerPrivate(QDeclarativeView *view_) : view(view_) {}
54
55 QString mainQmlFile;
56 QDeclarativeView *view;
57 friend class QmlApplicationViewer;
58 QString adjustPath(const QString &path);
59 };
60
61 QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
62 {
63 #ifdef Q_OS_UNIX
64 #ifdef Q_OS_MAC
65 if (!QDir::isAbsolutePath(path))
66 return QCoreApplication::applicationDirPath()
67 + QLatin1String("/../Resources/") + path;
68 #else
69 QString pathInInstallDir;
70 const QString applicationDirPath = QCoreApplication::applicationDirPath();
71 pathInInstallDir = QString::fromAscii("%1/../%2").arg(applicationDirPath, path);
72
73 if (QFileInfo(pathInInstallDir).exists())
74 return pathInInstallDir;
75 #endif
76 #endif
77 return path;
78 }
79
80 QmlApplicationViewer::QmlApplicationViewer(QWidget *parent)
81 : QDeclarativeView(parent)
82 , d(new QmlApplicationViewerPrivate(this))
83 {
84 connect(engine(), SIGNAL(quit()), SLOT(close()));
85 setResizeMode(QDeclarativeView::SizeRootObjectToView);
86 // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
87 #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
88 #if !defined(NO_JSDEBUGGER)
89 new QmlJSDebugger::JSDebuggerAgent(d->view->engine());
90 #endif
91 #if !defined(NO_QMLOBSERVER)
92 new QmlJSDebugger::QDeclarativeViewObserver(d->view, d->view);
93 #endif
94 #endif
95 }
96
97 QmlApplicationViewer::QmlApplicationViewer(QDeclarativeView *view, QWidget *parent)
98 : QDeclarativeView(parent)
99 , d(new QmlApplicationViewerPrivate(view))
100 {
101 connect(view->engine(), SIGNAL(quit()), view, SLOT(close()));
102 view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
103 // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
104 #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
105 #if !defined(NO_JSDEBUGGER)
106 new QmlJSDebugger::JSDebuggerAgent(d->view->engine());
107 #endif
108 #if !defined(NO_QMLOBSERVER)
109 new QmlJSDebugger::QDeclarativeViewObserver(d->view, d->view);
110 #endif
111 #endif
112 }
113
114 QmlApplicationViewer::~QmlApplicationViewer()
115 {
116 delete d;
117 }
118
119 QmlApplicationViewer *QmlApplicationViewer::create()
120 {
121 #ifdef HARMATTAN_BOOSTER
122 return new QmlApplicationViewer(MDeclarativeCache::qDeclarativeView(), 0);
123 #else
124 return new QmlApplicationViewer();
125 #endif
126 }
127
128 void QmlApplicationViewer::setMainQmlFile(const QString &file)
129 {
130 d->mainQmlFile = d->adjustPath(file);
131 d->view->setSource(QUrl::fromLocalFile(d->mainQmlFile));
132 }
133
134 void QmlApplicationViewer::addImportPath(const QString &path)
135 {
136 d->view->engine()->addImportPath(d->adjustPath(path));
137 }
138
139 void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
140 {
141 #if defined(Q_OS_SYMBIAN)
142 // If the version of Qt on the device is < 4.7.2, that attribute won't work
143 if (orientation != ScreenOrientationAuto) {
144 const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.'));
145 if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) {
146 qWarning("Screen orientation locking only supported with Qt 4.7.2 and above");
147 return;
148 }
149 }
150 #endif // Q_OS_SYMBIAN
151
152 Qt::WidgetAttribute attribute;
153 switch (orientation) {
154 #if QT_VERSION < 0x040702
155 // Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
156 case ScreenOrientationLockPortrait:
157 attribute = static_cast<Qt::WidgetAttribute>(128);
158 break;
159 case ScreenOrientationLockLandscape:
160 attribute = static_cast<Qt::WidgetAttribute>(129);
161 break;
162 default:
163 case ScreenOrientationAuto:
164 attribute = static_cast<Qt::WidgetAttribute>(130);
165 break;
166 #else // QT_VERSION < 0x040702
167 case ScreenOrientationLockPortrait:
168 attribute = Qt::WA_LockPortraitOrientation;
169 break;
170 case ScreenOrientationLockLandscape:
171 attribute = Qt::WA_LockLandscapeOrientation;
172 break;
173 default:
174 case ScreenOrientationAuto:
175 attribute = Qt::WA_AutoOrientation;
176 break;
177 #endif // QT_VERSION < 0x040702
178 };
179 setAttribute(attribute, true);
180 }
181
182 void QmlApplicationViewer::showExpanded()
183 {
184 #if defined(Q_OS_SYMBIAN) || defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR)
185 d->view->showFullScreen();
186 #elif defined(Q_WS_MAEMO_5)
187 d->view->showMaximized();
188 #else
189 d->view->show();
190 #endif
191 }
192
193 QApplication *createApplication(int &argc, char **argv)
194 {
195 #ifdef HARMATTAN_BOOSTER
196 return MDeclarativeCache::qApplication(argc, argv);
197 #else
198 return new QApplication(argc, argv);
199 #endif
200 }
@@ -0,0 +1,47
1 // checksum 0x82ed version 0x60010
2 /*
3 This file was generated by the Qt Quick Application wizard of Qt Creator.
4 QmlApplicationViewer is a convenience class containing mobile device specific
5 code such as screen orientation handling. Also QML paths and debugging are
6 handled here.
7 It is recommended not to modify this file, since newer versions of Qt Creator
8 may offer an updated version of it.
9 */
10
11 #ifndef QMLAPPLICATIONVIEWER_H
12 #define QMLAPPLICATIONVIEWER_H
13
14 #include <QtDeclarative/QDeclarativeView>
15
16 class QmlApplicationViewer : public QDeclarativeView
17 {
18 Q_OBJECT
19
20 public:
21 enum ScreenOrientation {
22 ScreenOrientationLockPortrait,
23 ScreenOrientationLockLandscape,
24 ScreenOrientationAuto
25 };
26
27 explicit QmlApplicationViewer(QWidget *parent = 0);
28 virtual ~QmlApplicationViewer();
29
30 static QmlApplicationViewer *create();
31
32 void setMainQmlFile(const QString &file);
33 void addImportPath(const QString &path);
34
35 // Note that this will only have an effect on Symbian and Fremantle.
36 void setOrientation(ScreenOrientation orientation);
37
38 void showExpanded();
39
40 private:
41 explicit QmlApplicationViewer(QDeclarativeView *view, QWidget *parent);
42 class QmlApplicationViewerPrivate *d;
43 };
44
45 QApplication *createApplication(int &argc, char **argv);
46
47 #endif // QMLAPPLICATIONVIEWER_H
@@ -0,0 +1,146
1 # checksum 0x368d version 0x60010
2 # This file was generated by the Qt Quick Application wizard of Qt Creator.
3 # The code below adds the QmlApplicationViewer to the project and handles the
4 # activation of QML debugging.
5 # It is recommended not to modify this file, since newer versions of Qt Creator
6 # may offer an updated version of it.
7
8 QT += declarative
9
10 SOURCES += $$PWD/qmlapplicationviewer.cpp
11 HEADERS += $$PWD/qmlapplicationviewer.h
12 INCLUDEPATH += $$PWD
13
14 # Include JS debugger library if QMLJSDEBUGGER_PATH is set
15 !isEmpty(QMLJSDEBUGGER_PATH) {
16 include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri)
17 } else {
18 DEFINES -= QMLJSDEBUGGER
19 }
20
21 contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
22 DEFINES += HARMATTAN_BOOSTER
23 }
24 # This file was generated by an application wizard of Qt Creator.
25 # The code below handles deployment to Symbian and Maemo, aswell as copying
26 # of the application data to shadow build directories on desktop.
27 # It is recommended not to modify this file, since newer versions of Qt Creator
28 # may offer an updated version of it.
29
30 defineTest(qtcAddDeployment) {
31 for(deploymentfolder, DEPLOYMENTFOLDERS) {
32 item = item$${deploymentfolder}
33 itemsources = $${item}.sources
34 $$itemsources = $$eval($${deploymentfolder}.source)
35 itempath = $${item}.path
36 $$itempath= $$eval($${deploymentfolder}.target)
37 export($$itemsources)
38 export($$itempath)
39 DEPLOYMENT += $$item
40 }
41
42 MAINPROFILEPWD = $$PWD
43
44 symbian {
45 isEmpty(ICON):exists($${TARGET}.svg):ICON = $${TARGET}.svg
46 isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
47 } else:win32 {
48 copyCommand =
49 for(deploymentfolder, DEPLOYMENTFOLDERS) {
50 source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
51 source = $$replace(source, /, \\)
52 sourcePathSegments = $$split(source, \\)
53 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
54 target = $$replace(target, /, \\)
55 !isEqual(source,$$target) {
56 !isEmpty(copyCommand):copyCommand += &&
57 isEqual(QMAKE_DIR_SEP, \\) {
58 copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
59 } else {
60 source = $$replace(source, \\\\, /)
61 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
62 target = $$replace(target, \\\\, /)
63 copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
64 }
65 }
66 }
67 !isEmpty(copyCommand) {
68 copyCommand = @echo Copying application data... && $$copyCommand
69 copydeploymentfolders.commands = $$copyCommand
70 first.depends = $(first) copydeploymentfolders
71 export(first.depends)
72 export(copydeploymentfolders.commands)
73 QMAKE_EXTRA_TARGETS += first copydeploymentfolders
74 }
75 } else:unix {
76 maemo5 {
77 desktopfile.files = $${TARGET}.desktop
78 desktopfile.path = /usr/share/applications/hildon
79 icon.files = $${TARGET}64.png
80 icon.path = /usr/share/icons/hicolor/64x64/apps
81 } else:!isEmpty(MEEGO_VERSION_MAJOR) {
82 desktopfile.files = $${TARGET}_harmattan.desktop
83 desktopfile.path = /usr/share/applications
84 icon.files = $${TARGET}80.png
85 icon.path = /usr/share/icons/hicolor/80x80/apps
86 } else { # Assumed to be a Desktop Unix
87 copyCommand =
88 for(deploymentfolder, DEPLOYMENTFOLDERS) {
89 source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
90 source = $$replace(source, \\\\, /)
91 macx {
92 target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
93 } else {
94 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
95 }
96 target = $$replace(target, \\\\, /)
97 sourcePathSegments = $$split(source, /)
98 targetFullPath = $$target/$$last(sourcePathSegments)
99 !isEqual(source,$$targetFullPath) {
100 !isEmpty(copyCommand):copyCommand += &&
101 copyCommand += $(MKDIR) \"$$target\"
102 copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
103 }
104 }
105 !isEmpty(copyCommand) {
106 copyCommand = @echo Copying application data... && $$copyCommand
107 copydeploymentfolders.commands = $$copyCommand
108 first.depends = $(first) copydeploymentfolders
109 export(first.depends)
110 export(copydeploymentfolders.commands)
111 QMAKE_EXTRA_TARGETS += first copydeploymentfolders
112 }
113 }
114 installPrefix = /opt/$${TARGET}
115 for(deploymentfolder, DEPLOYMENTFOLDERS) {
116 item = item$${deploymentfolder}
117 itemfiles = $${item}.files
118 $$itemfiles = $$eval($${deploymentfolder}.source)
119 itempath = $${item}.path
120 $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
121 export($$itemfiles)
122 export($$itempath)
123 INSTALLS += $$item
124 }
125
126 !isEmpty(desktopfile.path) {
127 export(icon.files)
128 export(icon.path)
129 export(desktopfile.files)
130 export(desktopfile.path)
131 INSTALLS += icon desktopfile
132 }
133
134 target.path = $${installPrefix}/bin
135 export(target.path)
136 INSTALLS += target
137 }
138
139 export (ICON)
140 export (INSTALLS)
141 export (DEPLOYMENT)
142 export (TARGET.EPOCHEAPSIZE)
143 export (TARGET.CAPABILITY)
144 export (LIBS)
145 export (QMAKE_EXTRA_TARGETS)
146 }
@@ -0,0 +1,11
1 [Desktop Entry]
2 Encoding=UTF-8
3 Version=1.0
4 Type=Application
5 Terminal=false
6 Name=qmlchart
7 Exec=/opt/qmlchart/bin/qmlchart
8 Icon=qmlchart64
9 X-Window-Icon=
10 X-HildonDesk-ShowInToolbar=true
11 X-Osso-Type=application/x-executable
@@ -0,0 +1,56
1 !include( ../../common.pri ) {
2 error( "Couldn't find the common.pri file!" )
3 }
4 !include( ../../integrated.pri ) {
5 error( "Couldn't find the integrated.pri file !")
6 }
7
8 integrated_build: {
9 # cannot use integrated build for now; we would need the qml files copied to
10 # charts/bin folder also to make this work. And even in that case I'm not sure if
11 # the chart qml plugin can be found or if it needs to be installed to the qt's plugin
12 # folder always.
13 warning("TODO: Charts qml test app does not work with integrated builds")
14 }
15
16 # Add more folders to ship with the application, here
17 folder_01.source = qml/qmlchart
18 folder_01.target = qml
19 DEPLOYMENTFOLDERS = folder_01
20
21 # Additional import path used to resolve QML modules in Creator's code model
22 QML_IMPORT_PATH =
23
24 symbian:TARGET.UID3 = 0xE421236E
25
26 # Smart Installer package's UID
27 # This UID is from the protected range and therefore the package will
28 # fail to install if self-signed. By default qmake uses the unprotected
29 # range value if unprotected UID is defined for the application and
30 # 0x2002CCCF value if protected UID is given to the application
31 #symbian:DEPLOYMENT.installer_header = 0x2002CCCF
32
33 # Allow network access on Symbian
34 symbian:TARGET.CAPABILITY += NetworkServices
35
36 # If your application uses the Qt Mobility libraries, uncomment the following
37 # lines and add the respective components to the MOBILITY variable.
38 # CONFIG += mobility
39 # MOBILITY +=
40
41 # Speed up launching on MeeGo/Harmattan when using applauncherd daemon
42 # CONFIG += qdeclarative-boostable
43
44 # Add dependency to Symbian components
45 # CONFIG += qt-components
46
47 # The .cpp file which was generated for your project. Feel free to hack it.
48 SOURCES += main.cpp
49
50 # Please do not modify the following two lines. Required for deployment.
51 include(qmlapplicationviewer/qmlapplicationviewer.pri)
52 qtcAddDeployment()
53
54 #HEADERS += \
55 # chart.h
56
@@ -0,0 +1,93
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10 height="44px"
11 version="1.1"
12 viewBox="0 0 44 44"
13 width="44px"
14 x="0px"
15 y="0px"
16 id="svg2"
17 inkscape:version="0.47 r22583"
18 sodipodi:docname="qt.svg">
19 <metadata
20 id="metadata18">
21 <rdf:RDF>
22 <cc:Work
23 rdf:about="">
24 <dc:format>image/svg+xml</dc:format>
25 <dc:type
26 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
27 </cc:Work>
28 </rdf:RDF>
29 </metadata>
30 <defs
31 id="defs16">
32 <inkscape:perspective
33 sodipodi:type="inkscape:persp3d"
34 inkscape:vp_x="0 : 22 : 1"
35 inkscape:vp_y="0 : 1000 : 0"
36 inkscape:vp_z="44 : 22 : 1"
37 inkscape:persp3d-origin="22 : 14.666667 : 1"
38 id="perspective2836" />
39 </defs>
40 <sodipodi:namedview
41 pagecolor="#ffffff"
42 bordercolor="#666666"
43 borderopacity="1"
44 objecttolerance="10"
45 gridtolerance="10"
46 guidetolerance="10"
47 inkscape:pageopacity="0"
48 inkscape:pageshadow="2"
49 inkscape:window-width="1920"
50 inkscape:window-height="1020"
51 id="namedview14"
52 showgrid="false"
53 inkscape:zoom="21.454545"
54 inkscape:cx="49.412871"
55 inkscape:cy="21.894358"
56 inkscape:window-x="-4"
57 inkscape:window-y="-4"
58 inkscape:window-maximized="1"
59 inkscape:current-layer="g3" />
60 <g
61 transform="matrix(0.18308778,0,0,0.18308778,6.6100946,3.2385199)"
62 id="g3">
63 <path
64 d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
65 style="fill:#006225"
66 id="path5"
67 sodipodi:nodetypes="cccccccc" />
68 <path
69 d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
70 style="fill:#80c342"
71 id="path7" />
72 <path
73 d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
74 style="fill:#006225"
75 id="path11" />
76 <path
77 d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
78 style="fill:#006225"
79 id="path13" />
80 <path
81 id="path17"
82 style="fill:#ffffff"
83 d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z" />
84 <path
85 d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
86 style="fill:#006225"
87 id="path19" />
88 <path
89 id="path21"
90 style="fill:#006225"
91 d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z" />
92 </g>
93 </svg>
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
@@ -0,0 +1,11
1 [Desktop Entry]
2 Encoding=UTF-8
3 Version=1.0
4 Type=Application
5 Terminal=false
6 Name=qmlchart
7 Exec=/usr/bin/single-instance /opt/qmlchart/bin/qmlchart
8 Icon=/usr/share/icons/hicolor/80x80/apps/qmlchart80.png
9 X-Window-Icon=
10 X-HildonDesk-ShowInToolbar=true
11 X-Osso-Type=application/x-executable
@@ -3,7 +3,7
3 3 }
4 4
5 5 TEMPLATE = subdirs
6 SUBDIRS += src example test
6 SUBDIRS += src qmlplugin example test
7 7 CONFIG += ordered
8 8 QMAKE_CXXFLAGS += -g -Wall
9 9 unix:QMAKE_DISTCLEAN += -r build bin
@@ -6,12 +6,11 CHART_BUILD_DIR = $$PWD/build
6 6 CHART_BUILD_BIN_DIR = $$PWD/bin
7 7
8 8 # hack to fix windows builds
9
10 9 win32:{
11 CHART_BUILD_HEADER_DIR = $$replace(CHART_BUILD_HEADER_DIR, "/","\\")
12 CHART_BUILD_LIB_DIR = $$replace(CHART_BUILD_LIB_DIR, "/","\\")
13 CHART_BUILD_BUILD_DIR = $$replace(CHART_BUILD_BUILD_DIR, "/","\\")
14 CHART_BUILD_BIN_DIR = $$replace(CHART_BUILD_BIN_DIR, "/","\\")
10 CHART_BUILD_HEADER_DIR = $$replace(CHART_BUILD_HEADER_DIR, "/","\\")
11 CHART_BUILD_LIB_DIR = $$replace(CHART_BUILD_LIB_DIR, "/","\\")
12 CHART_BUILD_BUILD_DIR = $$replace(CHART_BUILD_BUILD_DIR, "/","\\")
13 CHART_BUILD_BIN_DIR = $$replace(CHART_BUILD_BIN_DIR, "/","\\")
15 14 }
16 15
17 16 mac: {
@@ -1,5 +1,3
1 message( "Configuring with QtCommercialChart addon..." )
2
3 1 INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtCommercialChart
4 2
5 3 CONFIG(debug, debug|release) {
@@ -1,27 +1,29
1 1 #include "declarativechart.h"
2 #include <QPainter>
3 2
4 #ifndef QTQUICK2
3 QTCOMMERCIALCHART_BEGIN_NAMESPACE
4
5 5 DeclarativeChart::DeclarativeChart(QDeclarativeItem *parent)
6 : QDeclarativeItem(parent)
6 : QDeclarativeItem(parent),
7 m_chart(new QChart(this))
7 8 {
8 // need to disable this flag to draw inside a QDeclarativeItem
9 9 setFlag(QGraphicsItem::ItemHasNoContents, false);
10 m_chart->resize(QSize(height(), width()));
11 m_chart->setMargin(25); // TODO: should not be needed?
10 12 }
11 #else
12 DeclarativeChart::DeclarativeChart(QQuickItem *parent)
13 : QQuickPaintedItem(parent)
14 {
15 13
14 DeclarativeChart::ChartTheme DeclarativeChart::theme()
15 {
16 if (m_chart)
17 return (ChartTheme) m_chart->theme();
18 else
19 return ThemeInvalid;
16 20 }
17 #endif
18 21
19 #ifndef QTQUICK2
20 void DeclarativeChart::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
21 #else
22 void DeclarativeChart::paint(QPainter *painter)
23 #endif
22 void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
24 23 {
25 drawChart(painter, boundingRect());
24 m_chart->resize(QSize(newGeometry.width(), newGeometry.height()));
26 25 }
27 26
27 #include "moc_declarativechart.cpp"
28
29 QTCOMMERCIALCHART_END_NAMESPACE
@@ -2,36 +2,44
2 2 #define DECLARATIVECHART_H
3 3
4 4 #include <QtCore/QtGlobal>
5 #ifndef QTQUICK2
6 #include <QDeclarativeItem>
7 #else
8 #include <QtQuick/QQuickPaintedItem>
9 #endif
10 #include <QColor>
11 #include "../src/chart.h"
12
13 #ifndef QTQUICK2
14 class DeclarativeChart : public QDeclarativeItem, public Chart
15 #else
16 class DeclarativeChart : public QQuickPaintedItem, public Chart
17 #endif
5 #include <QDeclarativeItem>
6 #include <qchart.h>
7
8 QTCOMMERCIALCHART_BEGIN_NAMESPACE
9
10 class DeclarativeChart : public QDeclarativeItem
11 // TODO: for QTQUICK2: extend QQuickPainterItem instead
12 //class DeclarativeChart : public QQuickPaintedItem, public Chart
18 13 {
19 14 Q_OBJECT
20 Q_PROPERTY(QColor color READ color WRITE setColor)
15 Q_ENUMS(ChartTheme)
16 Q_PROPERTY(ChartTheme theme READ theme WRITE setTheme)
21 17
22 18 public:
23 #ifndef QTQUICK2
19 enum ChartTheme {
20 ThemeInvalid = QChart::ChartThemeInvalid,
21 ThemeDefault,
22 ThemeVanilla,
23 ThemeIcy,
24 ThemeGrayscale,
25 //ThemeScientific,
26 ThemeUnnamed1
27 };
24 28 DeclarativeChart(QDeclarativeItem *parent = 0);
25 #else
26 DeclarativeChart(QQuickItem *parent = 0);
27 #endif
28
29 #ifndef QTQUICK2
30 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
31 #else
32 void paint(QPainter *painter);
33 #endif
29
30 public: // From QDeclarativeItem/QGraphicsItem
31 void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
32
33 public:
34 void setTheme(ChartTheme theme) {m_chart->setTheme((QChart::ChartThemeId) theme);}
35 ChartTheme theme();
36
37 public:
38 // Extending QChart with DeclarativeChart is not possible because QObject does not support
39 // multi inheritance, so we now have a QChart as a member instead
40 QChart *m_chart;
34 41 };
35 42
43 QTCOMMERCIALCHART_END_NAMESPACE
36 44
37 45 #endif // DECLARATIVECHART_H
@@ -1,22 +1,27
1 1 #include <QtDeclarative/qdeclarativeextensionplugin.h>
2 2 #include <QtDeclarative/qdeclarative.h>
3 3 #include "declarativechart.h"
4 #include "declarativeseries.h"
4 5
5 QT_BEGIN_NAMESPACE
6 QTCOMMERCIALCHART_BEGIN_NAMESPACE
6 7
7 class QmlChartPlugin : public QDeclarativeExtensionPlugin
8 class ChartQmlPlugin : public QDeclarativeExtensionPlugin
8 9 {
9 10 Q_OBJECT
10 11 public:
11 12 virtual void registerTypes(const char *uri)
12 13 {
13 Q_ASSERT(QLatin1String(uri) == QLatin1String("com.digia.charts"));
14 Q_ASSERT(QLatin1String(uri) == QLatin1String("QtCommercial.Chart"));
14 15 qmlRegisterType<DeclarativeChart>(uri, 1, 0, "Chart");
16 qmlRegisterType<DeclarativeSeries>(uri, 1, 0, "Series");
17 //qmlRegisterUncreatableType<QChartSeries::SeriesTypeBar>(uri, 1, 0, "Series.Se", QLatin1String("Do not create objects of this type."));
15 18 }
16 19 };
17 20
18 QT_END_NAMESPACE
19
20 21 #include "plugin.moc"
21 22
22 Q_EXPORT_PLUGIN2(qmlchartplugin, QT_PREPEND_NAMESPACE(QmlChartPlugin));
23 QTCOMMERCIALCHART_END_NAMESPACE
24
25 QTCOMMERCIALCHART_USE_NAMESPACE
26
27 Q_EXPORT_PLUGIN2(qtcommercialchartqml, QT_PREPEND_NAMESPACE(ChartQmlPlugin))
@@ -1,1 +1,1
1 plugin qmlchartplugin
1 plugin qtcommercialchartqml
@@ -1,30 +1,39
1 !include( ../common.pri ) {
2 error( "Couldn't find the common.pri file!" )
3 }
4 !include( ../integrated.pri ) {
5 error( "Couldn't find the integrated.pri file !")
6 }
7
1 8 TEMPLATE = lib
2 TARGET = qmlchartplugin
9 TARGET = qtcommercialchartqml
3 10
4 11 CONFIG += qt plugin
5 12 QT += declarative
6 13
7 14 contains(QT_MAJOR_VERSION, 5) {
15 # TODO: QtQuick2 not supported by the implementation currently
8 16 DEFINES += QTQUICK2
9 17 }
10 18
11 OBJECTS_DIR = tmp
12 MOC_DIR = tmp
19 OBJECTS_DIR = $$CHART_BUILD_DIR/lib
20 MOC_DIR = $$CHART_BUILD_DIR/lib
21 UI_DIR = $$CHART_BUILD_DIR/lib
22 RCC_DIR = $$CHART_BUILD_DIR/lib
13 23
14 24 SOURCES += \
15 25 plugin.cpp \
16 declarativechart.cpp
26 declarativechart.cpp \
27 declarativeseries.cpp
17 28 HEADERS += \
18 declarativechart.h
19 include(../src/chart.pri)
29 declarativechart.h \
30 declarativeseries.h
20 31
21 TARGETPATH = com/digia/charts
22
23 #DESTDIR = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
32 TARGETPATH = QtCommercial/Chart
24 33 target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
25
26 34 qmldir.files += $$PWD/qmldir
27 35 qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
28 36
29 37 INSTALLS += target qmldir
30 38
39
@@ -47,6 +47,8 QChart::~QChart(){}
47 47 void QChart::addSeries(QChartSeries* series)
48 48 {
49 49 // TODO: we should check the series not already added
50 Q_ASSERT(series);
51 Q_ASSERT(series->type() != QChartSeries::SeriesTypeInvalid);
50 52
51 53 m_chartSeries << series;
52 54
@@ -178,6 +180,8 void QChart::addSeries(QChartSeries* series)
178 180 m_chartTheme->addObserver(pieSeries->d);
179 181 break;
180 182 }
183 default:
184 break;
181 185 }
182 186
183 187 // Update all the items to match the new visible area of the chart
@@ -288,6 +292,11 void QChart::setTheme(QChart::ChartThemeId theme)
288 292 update();
289 293 }
290 294
295 QChart::ChartThemeId QChart::theme()
296 {
297 return (QChart::ChartThemeId) m_chartTheme->d->m_currentTheme;
298 }
299
291 300 void QChart::zoomInToRect(const QRectF& rectangle)
292 301 {
293 302
@@ -58,6 +58,7 public:
58 58 void setMargin(int margin);
59 59 int margin() const;
60 60 void setTheme(QChart::ChartThemeId theme);
61 QChart::ChartThemeId theme();
61 62
62 63 void setTitle(const QString& title,const QFont& font = QFont());
63 64 void setBackground(const QColor& startColor, const QColor& endColor = Qt::white, GradientOrientation orientation = VerticalGradientOrientation);
@@ -12,7 +12,8 class QTCOMMERCIALCHART_EXPORT QChartSeries : public QObject
12 12 Q_OBJECT
13 13 public:
14 14 enum QChartSeriesType {
15 SeriesTypeLine = 0,
15 SeriesTypeInvalid = -1,
16 SeriesTypeLine,
16 17 // SeriesTypeArea,
17 18 SeriesTypeBar,
18 19 SeriesTypeStackedBar,
@@ -1,5 +1,3
1 1 TEMPLATE = subdirs
2 SUBDIRS += chartwidgettest
3
4
5
2 SUBDIRS += chartwidgettest \
3 qmlchart
General Comments 0
You need to be logged in to leave comments. Login now