##// END OF EJS Templates
Added ChartView.minimumMargins to QML properties
Tero Ahola -
r1928:6a089ea6fc66
parent child
Show More
@@ -0,0 +1,111
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 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 "declarativemargins.h"
22 #include <QDataStream>
23 #include <QDebug>
24
25 QTCOMMERCIALCHART_BEGIN_NAMESPACE
26
27 /*!
28 \qmlclass Margins
29 Uncreatable type that is used to define top, bottom, left and right margins.
30 */
31
32 /*!
33 \qmlproperty int Margins::top
34 The top margin.
35 */
36
37 /*!
38 \qmlproperty int Margins::bottom
39 The bottom margin.
40 */
41
42 /*!
43 \qmlproperty int Margins::left
44 The left margin.
45 */
46
47 /*!
48 \qmlproperty int Margins::right
49 The right margin.
50 */
51
52 DeclarativeMargins::DeclarativeMargins(QObject *parent) :
53 QObject(parent)
54 {
55 QMargins::setTop(0);
56 QMargins::setBottom(0);
57 QMargins::setLeft(0);
58 QMargins::setRight(0);
59 }
60
61 void DeclarativeMargins::setTop(int top)
62 {
63 if (top < 0) {
64 qWarning() << "Cannot set top margin to a negative value:" << top;
65 } else {
66 if (top != QMargins::top()) {
67 QMargins::setTop(top);
68 emit topChanged(QMargins::top(), QMargins::bottom(), QMargins::left(), QMargins::right());
69 }
70 }
71 }
72
73 void DeclarativeMargins::setBottom(int bottom)
74 {
75 if (bottom < 0) {
76 qWarning() << "Cannot set bottom margin to a negative value:" << bottom;
77 } else {
78 if (bottom != QMargins::bottom()) {
79 QMargins::setBottom(bottom);
80 emit bottomChanged(QMargins::top(), QMargins::bottom(), QMargins::left(), QMargins::right());
81 }
82 }
83 }
84
85 void DeclarativeMargins::setLeft(int left)
86 {
87 if (left < 0) {
88 qWarning() << "Cannot set left margin to a negative value:" << left;
89 } else {
90 if (left != QMargins::left()) {
91 QMargins::setLeft(left);
92 emit leftChanged(QMargins::top(), QMargins::bottom(), QMargins::left(), QMargins::right());
93 }
94 }
95 }
96
97 void DeclarativeMargins::setRight(int right)
98 {
99 if (right < 0) {
100 qWarning() << "Cannot set left margin to a negative value:" << right;
101 } else {
102 if (right != QMargins::right()) {
103 QMargins::setRight(right);
104 emit rightChanged(QMargins::top(), QMargins::bottom(), QMargins::left(), QMargins::right());
105 }
106 }
107 }
108
109 #include "moc_declarativemargins.cpp"
110
111 QTCOMMERCIALCHART_END_NAMESPACE
@@ -0,0 +1,54
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 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 DECLARATIVE_MARGINS_H
22 #define DECLARATIVE_MARGINS_H
23
24 #include "qchartglobal.h"
25 #include <QObject>
26 #include <QMargins>
27
28 QTCOMMERCIALCHART_BEGIN_NAMESPACE
29
30 class DeclarativeMargins : public QObject, public QMargins
31 {
32 Q_OBJECT
33 Q_PROPERTY(int top READ top WRITE setTop NOTIFY topChanged)
34 Q_PROPERTY(int bottom READ bottom WRITE setBottom NOTIFY bottomChanged)
35 Q_PROPERTY(int left READ left WRITE setLeft NOTIFY leftChanged)
36 Q_PROPERTY(int right READ right WRITE setRight NOTIFY rightChanged)
37
38 public:
39 explicit DeclarativeMargins(QObject *parent = 0);
40 void setTop(int top);
41 void setBottom(int bottom);
42 void setLeft(int left);
43 void setRight(int right);
44
45 Q_SIGNALS:
46 void topChanged(int top, int bottom, int left, int right);
47 void bottomChanged(int top, int bottom, int left, int right);
48 void leftChanged(int top, int bottom, int left, int right);
49 void rightChanged(int top, int bottom, int left, int right);
50 };
51
52 QTCOMMERCIALCHART_END_NAMESPACE
53
54 #endif // DECLARATIVE_MARGINS_H
@@ -168,13 +168,14 Rectangle {
168 168 }
169 169 }
170 170
171 }
171 172 VPieModelMapper {
172 173 model: customModel
174 series: pieSeries
173 175 labelsColumn: 1
174 176 valuesColumn: 2
175 177 firstRow: 1
176 178 }
177 }
178 179 //![3]
179 180 }
180 181 }
@@ -22,7 +22,8 SOURCES += \
22 22 declarativescatterseries.cpp \
23 23 declarativepieseries.cpp \
24 24 declarativebarseries.cpp \
25 declarativecategoryaxis.cpp
25 declarativecategoryaxis.cpp \
26 declarativemargins.cpp
26 27
27 28 HEADERS += \
28 29 declarativechart.h \
@@ -34,7 +35,8 HEADERS += \
34 35 declarativescatterseries.h \
35 36 declarativepieseries.h \
36 37 declarativebarseries.h \
37 declarativecategoryaxis.h
38 declarativecategoryaxis.h \
39 declarativemargins.h
38 40
39 41 TARGETPATH = QtCommercial/Chart
40 42 target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
@@ -31,6 +31,7
31 31 #include "qvalueaxis.h"
32 32 #include "qcategoryaxis.h"
33 33 #include "qabstractseries_p.h"
34 #include "declarativemargins.h"
34 35
35 36 #ifndef QT_ON_ARM
36 37 #include "qdatetimeaxis.h"
@@ -117,26 +118,27 QTCOMMERCIALCHART_BEGIN_NAMESPACE
117 118
118 119 /*!
119 120 \qmlproperty real ChartView::topMargin
120 The space between the top of chart view and the top of the plot area. The title (if non-empty) is drawn on top margin
121 area of the chart view. Top margin area is also used by legend, if aligned to top.
121 Deprecated. Use minimumMargins and plotArea instead.
122 122 */
123 123
124 124 /*!
125 125 \qmlproperty real ChartView::bottomMargin
126 The space between the bottom of chart view and the bottom of the plot area. The bottom margin area may be used by
127 legend (if aligned to bottom), x-axis, x-axis labels and x-axis tick marks.
126 Deprecated. Use minimumMargins and plotArea instead.
128 127 */
129 128
130 129 /*!
131 130 \qmlproperty real ChartView::leftMargin
132 The space between the left side of chart view and the left side of the plot area. The left margin area may be used by
133 legend (if aligned to left), y-axis, y-axis labels and y-axis tick marks.
131 Deprecated. Use minimumMargins and plotArea instead.
134 132 */
135 133
136 134 /*!
137 135 \qmlproperty real ChartView::rightMargin
138 The space between the right side of chart view and the right side of the plot area. The right margin area may be used
139 by legend (if aligned to right).
136 Deprecated. Use minimumMargins and plotArea instead.
137 */
138
139 /*!
140 \qmlproperty Margins ChartView::minimumMargins
141 The minimum margins allowed between the outer bounds and the plotArea of the ChartView.
140 142 */
141 143
142 144 /*!
@@ -223,24 +225,17 DeclarativeChart::DeclarativeChart(QDeclarativeItem *parent)
223 225 m_chart(new QChart(this))
224 226 {
225 227 setFlag(QGraphicsItem::ItemHasNoContents, false);
226 //TODO: check what should be really here margins or platArea ?!
227 m_chartMargins = m_chart->minimumMargins();
228 connect(m_chart, SIGNAL(marginsChanged(QRectF)), this, SLOT(handleMarginsChanged(QRectF)));
228 m_minMargins = new DeclarativeMargins(this);
229 connect(m_minMargins, SIGNAL(topChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
230 connect(m_minMargins, SIGNAL(bottomChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
231 connect(m_minMargins, SIGNAL(leftChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
232 connect(m_minMargins, SIGNAL(rightChanged(int, int, int, int)), this, SLOT(changeMinimumMargins(int, int, int, int)));
233 // TODO: connect to plotAreaChanged signal from m_chart
229 234 }
230 235
231 void DeclarativeChart::handleMarginsChanged(QRectF newMargins)
236 void DeclarativeChart::changeMinimumMargins(int top, int bottom, int left, int right)
232 237 {
233 //TODO: check what should be really here margins or platArea ?!
234 if (m_chartMargins.top() != newMargins.top())
235 topMarginChanged(m_chart->minimumMargins().top());
236 if (m_chartMargins.bottom() != newMargins.bottom())
237 bottomMarginChanged(m_chart->minimumMargins().bottom());
238 if (m_chartMargins.left() != newMargins.left())
239 leftMarginChanged(m_chart->minimumMargins().left());
240 if (m_chartMargins.right() != newMargins.right())
241 rightMarginChanged(m_chart->minimumMargins().right());
242
243 m_chartMargins = m_chart->minimumMargins();
238 m_chart->setMinimumMargins(QMargins(left, top, right, bottom));
244 239 }
245 240
246 241 DeclarativeChart::~DeclarativeChart()
@@ -482,22 +477,26 bool DeclarativeChart::dropShadowEnabled()
482 477
483 478 qreal DeclarativeChart::topMargin()
484 479 {
485 return m_chart->minimumMargins().top();
480 qWarning() << "ChartView.topMargin is deprecated. Use minimumMargins and plotArea instead.";
481 return m_chart->plotArea().top();
486 482 }
487 483
488 484 qreal DeclarativeChart::bottomMargin()
489 485 {
490 return m_chart->minimumMargins().bottom();
486 qWarning() << "ChartView.bottomMargin is deprecated. Use minimumMargins and plotArea instead.";
487 return m_chart->plotArea().bottom();
491 488 }
492 489
493 490 qreal DeclarativeChart::leftMargin()
494 491 {
495 return m_chart->minimumMargins().left();
492 qWarning() << "ChartView.leftMargin is deprecated. Use minimumMargins and plotArea instead.";
493 return m_chart->plotArea().left();
496 494 }
497 495
498 496 qreal DeclarativeChart::rightMargin()
499 497 {
500 return m_chart->minimumMargins().right();
498 qWarning() << "ChartView.rightMargin is deprecated. Use minimumMargins and plotArea instead.";
499 return m_chart->plotArea().right();
501 500 }
502 501
503 502 void DeclarativeChart::zoom(qreal factor)
@@ -27,6 +27,8
27 27
28 28 QTCOMMERCIALCHART_BEGIN_NAMESPACE
29 29
30 class DeclarativeMargins;
31
30 32 class DeclarativeChart : public QDeclarativeItem
31 33 {
32 34 Q_OBJECT
@@ -43,6 +45,7 class DeclarativeChart : public QDeclarativeItem
43 45 Q_PROPERTY(qreal bottomMargin READ bottomMargin NOTIFY bottomMarginChanged)
44 46 Q_PROPERTY(qreal leftMargin READ leftMargin NOTIFY leftMarginChanged)
45 47 Q_PROPERTY(qreal rightMargin READ rightMargin NOTIFY rightMarginChanged)
48 Q_PROPERTY(DeclarativeMargins *minimumMargins READ minimumMargins REVISION 1)
46 49 Q_ENUMS(Animation)
47 50 Q_ENUMS(Theme)
48 51 Q_ENUMS(SeriesType)
@@ -111,6 +114,7 public:
111 114 qreal leftMargin();
112 115 qreal rightMargin();
113 116 void createDefaultAxes(QAbstractSeries* series);
117 DeclarativeMargins *minimumMargins() { return m_minMargins; }
114 118
115 119 public:
116 120 Q_INVOKABLE QAbstractSeries *series(int index);
@@ -139,7 +143,8 Q_SIGNALS:
139 143 void rightMarginChanged(qreal margin);
140 144
141 145 public Q_SLOTS:
142 void handleMarginsChanged(QRectF newMargins);
146 // void handleMarginsChanged(QRectF newMargins);
147 void changeMinimumMargins(int top, int bottom, int left, int right);
143 148 void handleAxisXSet(QAbstractAxis *axis);
144 149 void handleAxisYSet(QAbstractAxis *axis);
145 150
@@ -147,7 +152,8 private:
147 152 // Extending QChart with DeclarativeChart is not possible because QObject does not support
148 153 // multi inheritance, so we now have a QChart as a member instead
149 154 QChart *m_chart;
150 QMargins m_chartMargins;
155 //QMargins m_chartMargins;
156 DeclarativeMargins *m_minMargins;
151 157 };
152 158
153 159 QTCOMMERCIALCHART_END_NAMESPACE
@@ -40,6 +40,7
40 40 #include "qvpiemodelmapper.h"
41 41 #include "qhbarmodelmapper.h"
42 42 #include "qvbarmodelmapper.h"
43 #include "declarativemargins.h"
43 44 #include <QAbstractItemModel>
44 45
45 46 QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -97,7 +98,7 public:
97 98 QLatin1String("Trying to create uncreatable: QPieSeries. Use PieSeries instead."));
98 99
99 100 // QtCommercial.Chart 1.1
100 qmlRegisterType<DeclarativeChart>(uri, 1, 1, "ChartView");
101 qmlRegisterType<DeclarativeChart, 1>(uri, 1, 1, "ChartView");
101 102 qmlRegisterType<DeclarativeXYPoint>(uri, 1, 1, "XYPoint");
102 103 qmlRegisterType<DeclarativeScatterSeries, 1>(uri, 1, 1, "ScatterSeries");
103 104 qmlRegisterType<DeclarativeLineSeries, 1>(uri, 1, 1, "LineSeries");
@@ -145,6 +146,8 public:
145 146 QLatin1String("Trying to create uncreatable: BarsetBase."));
146 147 qmlRegisterUncreatableType<QPieSeries>(uri, 1, 1, "QPieSeries",
147 148 QLatin1String("Trying to create uncreatable: QPieSeries. Use PieSeries instead."));
149 qmlRegisterUncreatableType<DeclarativeMargins>(uri, 1, 1, "Margins",
150 QLatin1String("Trying to create uncreatable: Margins."));
148 151 }
149 152 };
150 153
@@ -64,7 +64,10 ChartView {
64 64 legend.onColorChanged: console.log("legend.onColorChanged: " + color);
65 65 legend.onBorderColorChanged: console.log("legend.onBorderColorChanged: " + color);
66 66 legend.onLabelColorChanged: console.log("legend.onLabelColorChanged: " + color);
67
67 minimumMargins.onTopChanged: console.log("chart.minimumMargins.onTopChanged: " + top);
68 minimumMargins.onBottomChanged: console.log("chart.minimumMargins.onBottomChanged: " + bottom);
69 minimumMargins.onLeftChanged: console.log("chart.minimumMargins.onLeftChanged: " + left);
70 minimumMargins.onRightChanged: console.log("chart.minimumMargins.onRightChanged: " + right);
68 71
69 72 ValueAxis{
70 73 onColorChanged: console.log("axisX.onColorChanged: " + color);
@@ -84,6 +84,42 Row {
84 84 text: "title color"
85 85 onClicked: chart.titleColor = main.nextColor();
86 86 }
87 Button {
88 text: "zoom -"
89 onClicked: chart.zoom(0.5);
90 }
91 Button {
92 text: "top min margin +"
93 onClicked: chart.minimumMargins.top += 5;
94 }
95 Button {
96 text: "top min margin -"
97 onClicked: chart.minimumMargins.top -= 5;
98 }
99 Button {
100 text: "bottom min margin +"
101 onClicked: chart.minimumMargins.bottom += 5;
102 }
103 Button {
104 text: "bottom min margin -"
105 onClicked: chart.minimumMargins.bottom -= 5;
106 }
107 Button {
108 text: "left min margin +"
109 onClicked: chart.minimumMargins.left += 5;
110 }
111 Button {
112 text: "left min margin -"
113 onClicked: chart.minimumMargins.left -= 5;
114 }
115 Button {
116 text: "right min margin +"
117 onClicked: chart.minimumMargins.right += 5;
118 }
119 Button {
120 text: "right min margin -"
121 onClicked: chart.minimumMargins.right -= 5;
122 }
87 123 }
88 124
89 125 FontEditor {
General Comments 0
You need to be logged in to leave comments. Login now