##// END OF EJS Templates
QML Plugins and sample for that...
Mika Salmela -
r2481:20a93e498d73
parent child
Show More
@@ -0,0 +1,36
1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
14 **
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
18 **
19 ****************************************************************************/
20
21 #include <QApplication>
22 #include <QtDeclarative/QDeclarativeEngine>
23 #include "qmlapplicationviewer.h"
24
25 Q_DECL_EXPORT int main(int argc, char *argv[])
26 {
27 QScopedPointer<QApplication> app(createApplication(argc, argv));
28 QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
29
30 // // viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
31 viewer->setSource(QUrl("qrc:/qml/qmlboxplot/main.qml"));
32 viewer->setRenderHint(QPainter::Antialiasing, true);
33 viewer->showExpanded();
34
35 return app->exec();
36 }
@@ -0,0 +1,49
1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
14 **
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
18 **
19 ****************************************************************************/
20
21 //![1]
22 import QtQuick 1.0
23 import QtCommercial.Chart 1.1
24
25 ChartView {
26 title: "Box Plot series"
27 width: 400
28 height: 300
29 theme: ChartView.ChartThemeBrownSand
30 legend.alignment: Qt.AlignBottom
31
32 //![1]
33 //![2]
34 BoxPlotSeries {
35 id: plotSeries
36 name: "Income"
37 axisX: BarCategoryAxis { categories: ["Jan", "Feb", "Mar", "Apr", "May"] }
38 BarSet { label: "Jan"; values: [3, 4, 4.4, 6, 7] }
39 BarSet { label: "Feb"; values: [5, 6, 7.5, 8, 12] }
40 BarSet { label: "Mar"; values: [2, 5, 5.7, 8, 9] }
41 BarSet { label: "Apr"; values: [5, 6, 6.8, 7, 8] }
42 BarSet { label: "May"; values: [4, 5, 5.2, 6, 7] }
43 }
44 //![2]
45
46
47 //![3]
48 }
49 //![3]
@@ -0,0 +1,177
1 // checksum 0xbd34 version 0x80016
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 <QDir>
14 #include <QFileInfo>
15 #include <QApplication>
16 #include <QDeclarativeComponent>
17 #include <QDeclarativeEngine>
18 #include <QDeclarativeContext>
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 QString mainQmlFile;
54 friend class QmlApplicationViewer;
55 static QString adjustPath(const QString &path);
56 };
57
58 QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
59 {
60 #ifdef Q_OS_MAC
61 if (!QDir::isAbsolutePath(path))
62 return QString::fromLatin1("%1/../Resources/%2")
63 .arg(QCoreApplication::applicationDirPath(), path);
64 #elif defined(Q_OS_QNX)
65 if (!QDir::isAbsolutePath(path))
66 return QString::fromLatin1("app/native/%1").arg(path);
67 #elif !defined(Q_OS_ANDROID)
68 QString pathInInstallDir =
69 QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
70 if (QFileInfo(pathInInstallDir).exists())
71 return pathInInstallDir;
72 pathInInstallDir =
73 QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path);
74 if (QFileInfo(pathInInstallDir).exists())
75 return pathInInstallDir;
76 #endif
77 return path;
78 }
79
80 QmlApplicationViewer::QmlApplicationViewer(QWidget *parent)
81 : QDeclarativeView(parent)
82 , d(new QmlApplicationViewerPrivate())
83 {
84 connect(engine(), SIGNAL(quit()), SLOT(close()));
85 setResizeMode(QDeclarativeView::SizeRootObjectToView);
86
87 // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
88 #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
89 #if !defined(NO_JSDEBUGGER)
90 new QmlJSDebugger::JSDebuggerAgent(engine());
91 #endif
92 #if !defined(NO_QMLOBSERVER)
93 new QmlJSDebugger::QDeclarativeViewObserver(this, this);
94 #endif
95 #endif
96 }
97
98 QmlApplicationViewer::~QmlApplicationViewer()
99 {
100 delete d;
101 }
102
103 QmlApplicationViewer *QmlApplicationViewer::create()
104 {
105 return new QmlApplicationViewer();
106 }
107
108 void QmlApplicationViewer::setMainQmlFile(const QString &file)
109 {
110 d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
111 #ifdef Q_OS_ANDROID
112 setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile));
113 #else
114 setSource(QUrl::fromLocalFile(d->mainQmlFile));
115 #endif
116 }
117
118 void QmlApplicationViewer::addImportPath(const QString &path)
119 {
120 engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path));
121 }
122
123 void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
124 {
125 #if QT_VERSION < 0x050000
126 Qt::WidgetAttribute attribute;
127 switch (orientation) {
128 #if QT_VERSION < 0x040702
129 // Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
130 case ScreenOrientationLockPortrait:
131 attribute = static_cast<Qt::WidgetAttribute>(128);
132 break;
133 case ScreenOrientationLockLandscape:
134 attribute = static_cast<Qt::WidgetAttribute>(129);
135 break;
136 default:
137 case ScreenOrientationAuto:
138 attribute = static_cast<Qt::WidgetAttribute>(130);
139 break;
140 #else // QT_VERSION < 0x040702
141 case ScreenOrientationLockPortrait:
142 attribute = Qt::WA_LockPortraitOrientation;
143 break;
144 case ScreenOrientationLockLandscape:
145 attribute = Qt::WA_LockLandscapeOrientation;
146 break;
147 default:
148 case ScreenOrientationAuto:
149 attribute = Qt::WA_AutoOrientation;
150 break;
151 #endif // QT_VERSION < 0x040702
152 };
153 setAttribute(attribute, true);
154 #else // QT_VERSION < 0x050000
155 Q_UNUSED(orientation)
156 #endif // QT_VERSION < 0x050000
157 }
158
159 void QmlApplicationViewer::showExpanded()
160 {
161 #if defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR)
162 showFullScreen();
163 #elif defined(Q_WS_MAEMO_5) || defined(Q_OS_QNX)
164 showMaximized();
165 #else
166 show();
167 #endif
168 }
169
170 QApplication *createApplication(int &argc, char **argv)
171 {
172 #ifdef HARMATTAN_BOOSTER
173 return MDeclarativeCache::qApplication(argc, argv);
174 #else
175 return new QApplication(argc, argv);
176 #endif
177 }
@@ -0,0 +1,46
1 // checksum 0xc67a version 0x80016
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 <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 Fremantle.
36 void setOrientation(ScreenOrientation orientation);
37
38 void showExpanded();
39
40 private:
41 class QmlApplicationViewerPrivate *d;
42 };
43
44 QApplication *createApplication(int &argc, char **argv);
45
46 #endif // QMLAPPLICATIONVIEWER_H
@@ -0,0 +1,13
1 QT += declarative
2
3 SOURCES += $$PWD/qmlapplicationviewer.cpp
4 HEADERS += $$PWD/qmlapplicationviewer.h
5 INCLUDEPATH += $$PWD
6
7 # Include JS debugger library if QMLJSDEBUGGER_PATH is set
8 !isEmpty(QMLJSDEBUGGER_PATH) {
9 include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri)
10 } else {
11 DEFINES -= QMLJSDEBUGGER
12 }
13
@@ -0,0 +1,11
1 !include( ../examples.pri ) {
2 error( "Couldn't find the examples.pri file!" )
3 }
4
5 RESOURCES += resources.qrc
6 SOURCES += main.cpp
7
8 include(qmlapplicationviewer/qmlapplicationviewer.pri)
9
10 OTHER_FILES += \
11 qml/qmlboxplot/main.qml
@@ -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>
@@ -0,0 +1,5
1 <RCC>
2 <qresource prefix="/">
3 <file>qml/qmlboxplot/main.qml</file>
4 </qresource>
5 </RCC>
@@ -0,0 +1,93
1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
14 **
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
18 **
19 ****************************************************************************/
20
21 #include "declarativebarseries.h"
22 #include "declarativeboxplotseries.h"
23 #include "qbarset.h"
24 #include "qvbarmodelmapper.h"
25 #include "qhbarmodelmapper.h"
26
27 QTCOMMERCIALCHART_BEGIN_NAMESPACE
28
29 DeclarativeBoxPlotSeries::DeclarativeBoxPlotSeries(QDeclarativeItem *parent) :
30 QBoxPlotSeries(parent),
31 m_axes(new DeclarativeAxes(this))
32 {
33 connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*)));
34 connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*)));
35 connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*)));
36 connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*)));
37 }
38
39 void DeclarativeBoxPlotSeries::classBegin()
40 {
41 }
42
43 void DeclarativeBoxPlotSeries::componentComplete()
44 {
45 foreach (QObject *child, children()) {
46 if (qobject_cast<DeclarativeBarSet *>(child)) {
47 QAbstractBarSeries::append(qobject_cast<DeclarativeBarSet *>(child));
48 } else if (qobject_cast<QVBarModelMapper *>(child)) {
49 QVBarModelMapper *mapper = qobject_cast<QVBarModelMapper *>(child);
50 mapper->setSeries(this);
51 } else if (qobject_cast<QHBarModelMapper *>(child)) {
52 QHBarModelMapper *mapper = qobject_cast<QHBarModelMapper *>(child);
53 mapper->setSeries(this);
54 }
55 }
56 }
57
58 QDeclarativeListProperty<QObject> DeclarativeBoxPlotSeries::seriesChildren()
59 {
60 return QDeclarativeListProperty<QObject>(this, 0, &DeclarativeBoxPlotSeries::appendSeriesChildren);
61 }
62
63 void DeclarativeBoxPlotSeries::appendSeriesChildren(QDeclarativeListProperty<QObject> * list, QObject *element)
64 {
65 // Empty implementation; the children are parsed in componentComplete instead
66 Q_UNUSED(list);
67 Q_UNUSED(element);
68 }
69
70 DeclarativeBarSet *DeclarativeBoxPlotSeries::at(int index)
71 {
72 QList<QBarSet *> setList = barSets();
73 if (index >= 0 && index < setList.count())
74 return qobject_cast<DeclarativeBarSet *>(setList[index]);
75
76 return 0;
77 }
78
79 DeclarativeBarSet *DeclarativeBoxPlotSeries::insert(int index, QString label, QVariantList values)
80 {
81 DeclarativeBarSet *barset = new DeclarativeBarSet(this);
82 barset->setLabel(label);
83 barset->setValues(values);
84 if (QBoxPlotSeries::insert(index, barset))
85 return barset;
86 delete barset;
87 return 0;
88 }
89
90
91 #include "moc_declarativeboxplotseries.cpp"
92
93 QTCOMMERCIALCHART_END_NAMESPACE
@@ -0,0 +1,81
1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc
4 ** All rights reserved.
5 ** For any questions to Digia, please use contact form at http://qt.digia.com
6 **
7 ** This file is part of the Qt Commercial Charts Add-on.
8 **
9 ** $QT_BEGIN_LICENSE$
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Commercial License Agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia.
14 **
15 ** If you have questions regarding the use of this file, please use
16 ** contact form at http://qt.digia.com
17 ** $QT_END_LICENSE$
18 **
19 ****************************************************************************/
20
21 #ifndef DECLARATIVEBOXPLOT_H
22 #define DECLARATIVEBOXPLOT_H
23
24 #include "qbarset.h"
25 #include "declarativeaxes.h"
26 #include "qboxplotseries.h"
27 #include <QtDeclarative/QDeclarativeItem>
28 #include <QtDeclarative/QDeclarativeParserStatus>
29
30 QTCOMMERCIALCHART_BEGIN_NAMESPACE
31
32 class DeclarativeBoxPlotSeries : public QBoxPlotSeries, public QDeclarativeParserStatus
33 {
34 Q_OBJECT
35 Q_INTERFACES(QDeclarativeParserStatus)
36 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1)
37 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1)
38 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2)
39 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2)
40 Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren)
41 Q_CLASSINFO("DefaultProperty", "seriesChildren")
42
43 public:
44 explicit DeclarativeBoxPlotSeries(QDeclarativeItem *parent = 0);
45 QAbstractAxis *axisX() { return m_axes->axisX(); }
46 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
47 QAbstractAxis *axisY() { return m_axes->axisY(); }
48 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
49 Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
50 Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
51 Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
52 Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
53 QDeclarativeListProperty<QObject> seriesChildren();
54
55 public:
56 Q_INVOKABLE DeclarativeBarSet *at(int index);
57 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(count(), label, values); }
58 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
59 Q_INVOKABLE bool remove(QBarSet *barset) { return QBoxPlotSeries::remove(barset); }
60 Q_INVOKABLE void clear() { return QBoxPlotSeries::clear(); }
61
62 public: // from QDeclarativeParserStatus
63 void classBegin();
64 void componentComplete();
65
66 Q_SIGNALS:
67 Q_REVISION(1) void axisXChanged(QAbstractAxis *axis);
68 Q_REVISION(1) void axisYChanged(QAbstractAxis *axis);
69 Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis);
70 Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis);
71
72 public Q_SLOTS:
73 static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element);
74
75 public:
76 DeclarativeAxes *m_axes;
77 };
78
79 QTCOMMERCIALCHART_END_NAMESPACE
80
81 #endif // DECLARATIVEBOXPLOT_H
@@ -22,6 +22,7 SUBDIRS += \
22 22 boxplotchart \
23 23 legend \
24 24 barmodelmapper \
25 qmlboxplot \
25 26 qmlpiechart \
26 27 lineandbar \
27 28 horizontalbarchart \
@@ -25,7 +25,8 SOURCES += \
25 25 declarativebarseries.cpp \
26 26 declarativecategoryaxis.cpp \
27 27 declarativemargins.cpp \
28 declarativeaxes.cpp
28 declarativeaxes.cpp \
29 declarativeboxplotseries.cpp
29 30
30 31 HEADERS += \
31 32 declarativechart.h \
@@ -39,7 +40,8 HEADERS += \
39 40 declarativebarseries.h \
40 41 declarativecategoryaxis.h \
41 42 declarativemargins.h \
42 declarativeaxes.h
43 declarativeaxes.h \
44 declarativeboxplotseries.h
43 45
44 46 TARGETPATH = QtCommercial/Chart
45 47 target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
@@ -26,6 +26,7
26 26 #include "declarativebarseries.h"
27 27 #include "declarativepieseries.h"
28 28 #include "declarativesplineseries.h"
29 #include "declarativeboxplotseries.h"
29 30 #include "declarativescatterseries.h"
30 31 #include "qbarcategoryaxis.h"
31 32 #include "qvalueaxis.h"
@@ -622,6 +623,9 QAbstractSeries *DeclarativeChart::createSeries(int type, QString name, QAbstrac
622 623 case DeclarativeChart::SeriesTypeHorizontalStackedBar:
623 624 series = new DeclarativeHorizontalStackedBarSeries();
624 625 break;
626 case DeclarativeChart::SeriesTypeBoxPlot:
627 series = new DeclarativeBoxPlotSeries();
628 break;
625 629 case DeclarativeChart::SeriesTypePie:
626 630 series = new DeclarativePieSeries();
627 631 break;
@@ -735,6 +739,8 void DeclarativeChart::initializeAxes(QAbstractSeries *series)
735 739 doInitializeAxes(series, qobject_cast<DeclarativeHorizontalStackedBarSeries *>(series)->m_axes);
736 740 else if (qobject_cast<DeclarativeHorizontalPercentBarSeries *>(series))
737 741 doInitializeAxes(series, qobject_cast<DeclarativeHorizontalPercentBarSeries *>(series)->m_axes);
742 else if (qobject_cast<DeclarativeBoxPlotSeries *>(series))
743 doInitializeAxes(series, qobject_cast<DeclarativeBoxPlotSeries *>(series)->m_axes);
738 744 // else: do nothing
739 745 }
740 746
@@ -81,6 +81,7 public:
81 81 SeriesTypeBar,
82 82 SeriesTypeStackedBar,
83 83 SeriesTypePercentBar,
84 SeriesTypeBoxPlot,
84 85 SeriesTypePie,
85 86 SeriesTypeScatter,
86 87 SeriesTypeSpline,
@@ -30,6 +30,7
30 30 #include "declarativeareaseries.h"
31 31 #include "declarativescatterseries.h"
32 32 #include "declarativebarseries.h"
33 #include "declarativeboxplotseries.h"
33 34 #include "declarativepieseries.h"
34 35 #include "declarativeaxes.h"
35 36 #include "qvxymodelmapper.h"
@@ -65,6 +66,7 Q_DECLARE_METATYPE(DeclarativeChart *)
65 66 Q_DECLARE_METATYPE(DeclarativeMargins *)
66 67 Q_DECLARE_METATYPE(DeclarativeAreaSeries *)
67 68 Q_DECLARE_METATYPE(DeclarativeBarSeries *)
69 Q_DECLARE_METATYPE(DeclarativeBoxPlotSeries *)
68 70 Q_DECLARE_METATYPE(DeclarativeLineSeries *)
69 71 Q_DECLARE_METATYPE(DeclarativePieSeries *)
70 72 Q_DECLARE_METATYPE(DeclarativeScatterSeries *)
@@ -141,6 +143,7 public:
141 143 qmlRegisterType<DeclarativeBarSeries>(uri, 1, 0, "BarSeries");
142 144 qmlRegisterType<DeclarativeStackedBarSeries>(uri, 1, 0, "StackedBarSeries");
143 145 qmlRegisterType<DeclarativePercentBarSeries>(uri, 1, 0, "PercentBarSeries");
146 qmlRegisterType<DeclarativeBoxPlotSeries>(uri, 1, 0, "BoxPlotSeries");
144 147 qmlRegisterType<DeclarativePieSeries>(uri, 1, 0, "PieSeries");
145 148 qmlRegisterType<QPieSlice>(uri, 1, 0, "PieSlice");
146 149 qmlRegisterType<DeclarativeBarSet>(uri, 1, 0, "BarSet");
@@ -186,6 +189,7 public:
186 189 qmlRegisterType<DeclarativeBarSeries, 1>(uri, 1, 1, "BarSeries");
187 190 qmlRegisterType<DeclarativeStackedBarSeries, 1>(uri, 1, 1, "StackedBarSeries");
188 191 qmlRegisterType<DeclarativePercentBarSeries, 1>(uri, 1, 1, "PercentBarSeries");
192 qmlRegisterType<DeclarativeBoxPlotSeries, 1>(uri, 1, 1, "BoxPlotSeries");
189 193 qmlRegisterType<DeclarativeHorizontalBarSeries, 1>(uri, 1, 1, "HorizontalBarSeries");
190 194 qmlRegisterType<DeclarativeHorizontalStackedBarSeries, 1>(uri, 1, 1, "HorizontalStackedBarSeries");
191 195 qmlRegisterType<DeclarativeHorizontalPercentBarSeries, 1>(uri, 1, 1, "HorizontalPercentBarSeries");
@@ -210,6 +214,7 public:
210 214 qmlRegisterType<DeclarativeBarSeries, 2>(uri, 1, 2, "BarSeries");
211 215 qmlRegisterType<DeclarativeStackedBarSeries, 2>(uri, 1, 2, "StackedBarSeries");
212 216 qmlRegisterType<DeclarativePercentBarSeries, 2>(uri, 1, 2, "PercentBarSeries");
217 qmlRegisterType<DeclarativeBoxPlotSeries, 2>(uri, 1, 2, "BoxPlotSeries");
213 218 qmlRegisterType<DeclarativeHorizontalBarSeries, 2>(uri, 1, 2, "HorizontalBarSeries");
214 219 qmlRegisterType<DeclarativeHorizontalStackedBarSeries, 2>(uri, 1, 2, "HorizontalStackedBarSeries");
215 220 qmlRegisterType<DeclarativeHorizontalPercentBarSeries, 2>(uri, 1, 2, "HorizontalPercentBarSeries");
General Comments 0
You need to be logged in to leave comments. Login now