##// END OF EJS Templates
refactoring axises
sauimone -
r1566:6a772a66a522
parent child
Show More
@@ -561,15 +561,15 void QAbstractAxis::hide()
561 }
561 }
562
562
563
563
564 void QAbstractAxis::setMin(const QVariant& min)
564 void QAbstractAxis::setMin(const qreal min)
565 {
565 {
566 d_ptr->setMin(min);
566 d_ptr->setMin(min);
567 }
567 }
568 void QAbstractAxis::setMax(const QVariant& max)
568 void QAbstractAxis::setMax(const qreal max)
569 {
569 {
570 d_ptr->setMax(max);
570 d_ptr->setMax(max);
571 }
571 }
572 void QAbstractAxis::setRange(const QVariant& min, const QVariant& max)
572 void QAbstractAxis::setRange(const qreal min, const qreal max)
573 {
573 {
574 d_ptr->setRange(min,max);
574 d_ptr->setRange(min,max);
575 }
575 }
@@ -585,7 +585,10 QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis* q):
585 m_shadesVisible(false),
585 m_shadesVisible(false),
586 m_shadesBrush(Qt::SolidPattern),
586 m_shadesBrush(Qt::SolidPattern),
587 m_shadesOpacity(1.0),
587 m_shadesOpacity(1.0),
588 m_orientation(Qt::Orientation(0))
588 m_orientation(Qt::Orientation(0)),
589 m_min(0),
590 m_max(0),
591 m_ticksCount(5)
589 {
592 {
590
593
591 }
594 }
@@ -101,9 +101,9 public:
101 QColor shadesBorderColor() const;
101 QColor shadesBorderColor() const;
102
102
103 //range handling
103 //range handling
104 void setMin(const QVariant& min);
104 void setMin(const qreal min);
105 void setMax(const QVariant& max);
105 void setMax(const qreal max);
106 void setRange(const QVariant& min, const QVariant& max);
106 void setRange(const qreal min, const qreal max);
107
107
108 void show();
108 void show();
109 void hide();
109 void hide();
@@ -51,9 +51,9 public:
51 virtual ChartAxis* createGraphics(ChartPresenter* presenter) = 0;
51 virtual ChartAxis* createGraphics(ChartPresenter* presenter) = 0;
52
52
53 protected:
53 protected:
54 virtual void setMin(const QVariant& min) = 0;
54 virtual void setMin(const qreal min) = 0;
55 virtual void setMax(const QVariant& max) = 0;
55 virtual void setMax(const qreal max) = 0;
56 virtual void setRange(const QVariant& min, const QVariant& max) = 0;
56 virtual void setRange(const qreal min, const qreal max) = 0;
57 virtual int ticksCount() const = 0;
57 virtual int ticksCount() const = 0;
58
58
59 public:
59 public:
@@ -79,6 +79,11 public:
79
79
80 Qt::Orientation m_orientation;
80 Qt::Orientation m_orientation;
81
81
82 // range
83 qreal m_min;
84 qreal m_max;
85 int m_ticksCount;
86
82 friend class QAbstractAxis;
87 friend class QAbstractAxis;
83 };
88 };
84
89
@@ -130,11 +130,7 QString QCategoriesAxis::at(int index) const
130 void QCategoriesAxis::setMin(const QString& minCategory)
130 void QCategoriesAxis::setMin(const QString& minCategory)
131 {
131 {
132 Q_D(QCategoriesAxis);
132 Q_D(QCategoriesAxis);
133 int minIndex = d->m_categories.indexOf(minCategory);
133 d->setMinCategory(minCategory);
134 if (minIndex == -1)
135 return;
136 // else
137 // QAbstractAxis::setMin(minIndex);
138 }
134 }
139
135
140 /*!
136 /*!
@@ -143,11 +139,7 void QCategoriesAxis::setMin(const QString& minCategory)
143 void QCategoriesAxis::setMax(const QString& maxCategory)
139 void QCategoriesAxis::setMax(const QString& maxCategory)
144 {
140 {
145 Q_D(QCategoriesAxis);
141 Q_D(QCategoriesAxis);
146 int maxIndex = d->m_categories.indexOf(maxCategory);
142 d->setMaxCategory(maxCategory);
147 if (maxIndex == -1)
148 return;
149 // else
150 // QAbstractAxis::setMax(maxIndex);
151 }
143 }
152
144
153 /*!
145 /*!
@@ -155,9 +147,8 void QCategoriesAxis::setMax(const QString& maxCategory)
155 */
147 */
156 void QCategoriesAxis::setRange(const QString& minCategory, const QString& maxCategory)
148 void QCategoriesAxis::setRange(const QString& minCategory, const QString& maxCategory)
157 {
149 {
158 // TODO: what if maxCategory < minCategory?
150 Q_D(QCategoriesAxis);
159 setMin(minCategory);
151 d->setRangeCategory(minCategory,maxCategory);
160 setMax(maxCategory);
161 }
152 }
162
153
163 /*!
154 /*!
@@ -181,23 +172,68 QCategoriesAxisPrivate::~QCategoriesAxisPrivate()
181
172
182 }
173 }
183
174
175 void QCategoriesAxisPrivate::setMinCategory(const QString& minCategory)
176 {
177 // Convert the category to value
178 int minIndex = m_categories.indexOf(minCategory);
179 if (minIndex == -1) {
180 return;
181 }
182 setRange(minIndex,m_max);
183 }
184
184
185 void QCategoriesAxisPrivate::setMin(const QVariant& min)
185 void QCategoriesAxisPrivate::setMaxCategory(const QString& maxCategory)
186 {
186 {
187 Q_Q(QCategoriesAxis);
187 // Convert the category to value
188 q->setMin(min.toString());
188 int maxIndex = m_categories.indexOf(maxCategory);
189 if (maxIndex == -1) {
190 return;
191 }
192 setRange(m_min,maxIndex);
189 }
193 }
190
194
191 void QCategoriesAxisPrivate::setMax(const QVariant& max)
195 void QCategoriesAxisPrivate::setRangeCategory(const QString& minCategory, const QString& maxCategory)
192 {
196 {
193 Q_Q(QCategoriesAxis);
197 // TODO:
194 q->setMax(max.toString());
198 int minIndex = m_categories.indexOf(minCategory);
199 if (minIndex == -1) {
200 return;
201 }
202 int maxIndex = m_categories.indexOf(maxCategory);
203 if (maxIndex == -1) {
204 return;
205 }
206 setRange(minIndex,maxIndex);
195 }
207 }
196
208
197 void QCategoriesAxisPrivate::setRange(const QVariant& min, const QVariant& max)
209 void QCategoriesAxisPrivate::setMin(const qreal min)
198 {
210 {
199 Q_Q(QCategoriesAxis);
211 setRange(min,m_max);
200 q->setRange(min.toString(),max.toString());
212 }
213
214 void QCategoriesAxisPrivate::setMax(const qreal max)
215 {
216 setRange(m_min,max);
217 }
218
219 void QCategoriesAxisPrivate::setRange(const qreal min, const qreal max)
220 {
221 Q_Q(QCategoriesAxis);
222 bool changed = false;
223 if (!qFuzzyIsNull(m_min - min)) {
224 m_min = min;
225 changed = true;
226 }
227
228 if (!qFuzzyIsNull(m_max - max)) {
229 m_max = max;
230 changed = true;
231 }
232
233 if (changed) {
234 emit this->changed(m_min, m_max, m_ticksCount, false);
235 emit q->categoriesChanged();
236 }
201 }
237 }
202
238
203 int QCategoriesAxisPrivate::ticksCount() const
239 int QCategoriesAxisPrivate::ticksCount() const
@@ -205,6 +241,19 int QCategoriesAxisPrivate::ticksCount() const
205 return m_categories.count()+1;
241 return m_categories.count()+1;
206 }
242 }
207
243
244 void QCategoriesAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count)
245 {
246 // Q_Q(QCategoriesAxis);
247 // q->setRange(min,max);
248 // q->setTicksCount(count);
249 m_min = min;
250 m_max = max;
251 m_ticksCount = count;
252
253 // TODO?:
254 //emit updated();
255 }
256
208 ChartAxis* QCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
257 ChartAxis* QCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
209 {
258 {
210 Q_Q( QCategoriesAxis);
259 Q_Q( QCategoriesAxis);
@@ -213,7 +262,6 ChartAxis* QCategoriesAxisPrivate::createGraphics(ChartPresenter* presenter)
213 }else{
262 }else{
214 return new ChartCategoriesAxisX(q,presenter);
263 return new ChartCategoriesAxisX(q,presenter);
215 }
264 }
216
217 }
265 }
218
266
219 #include "moc_qcategoriesaxis.cpp"
267 #include "moc_qcategoriesaxis.cpp"
@@ -47,19 +47,29 public:
47 ChartAxis* createGraphics(ChartPresenter* presenter);
47 ChartAxis* createGraphics(ChartPresenter* presenter);
48
48
49 private:
49 private:
50 void setMinCategory(const QString& minCategory);
51 void setMaxCategory(const QString& maxCategory);
52 void setRangeCategory(const QString& minCategory, const QString& maxCategory);
53
50 //range handling
54 //range handling
51 void setMin(const QVariant& min);
55 void setMin(const qreal min);
52 void setMax(const QVariant& max);
56 void setMax(const qreal max);
53 void setRange(const QVariant& min, const QVariant& max);
57 void setRange(const qreal min, const qreal max);
54 int ticksCount() const;
58 int ticksCount() const;
55
59
60 Q_SIGNALS:
61 void changed(qreal min, qreal max, int tickCount,bool niceNumbers);
62
63 public Q_SLOTS:
64 void handleAxisRangeChanged(qreal min, qreal max,int count);
65
56 private:
66 private:
57 QStringList m_categories;
67 QStringList m_categories;
58 QString m_minCategory;
68 QString m_minCategory;
59 QString m_maxCategory;
69 QString m_maxCategory;
60
70
61 Q_SIGNALS:
71 // qreal m_rangeMin;
62 void updated();
72 // qreal m_rangeMax;
63
73
64 private:
74 private:
65 Q_DECLARE_PUBLIC(QCategoriesAxis)
75 Q_DECLARE_PUBLIC(QCategoriesAxis)
@@ -131,23 +131,7 qreal QValuesAxis::max() const
131 void QValuesAxis::setRange(qreal min, qreal max)
131 void QValuesAxis::setRange(qreal min, qreal max)
132 {
132 {
133 Q_D(QValuesAxis);
133 Q_D(QValuesAxis);
134 bool changed = false;
134 d->setRange(min,max);
135 if (!qFuzzyIsNull(d->m_min - min)) {
136 d->m_min = min;
137 changed = true;
138 emit minChanged(min);
139 }
140
141 if (!qFuzzyIsNull(d->m_max - max)) {
142 d->m_max = max;
143 changed = true;
144 emit maxChanged(max);
145 }
146
147 if (changed) {
148 emit rangeChanged(d->m_min,d->m_max);
149 emit d->changed(d->m_min, d->m_max, d->m_ticksCount, d->m_niceNumbers);
150 }
151 }
135 }
152
136
153 /*!
137 /*!
@@ -196,10 +180,7 QAbstractAxis::AxisType QValuesAxis::type() const
196
180
197 QValuesAxisPrivate::QValuesAxisPrivate(QValuesAxis* q):
181 QValuesAxisPrivate::QValuesAxisPrivate(QValuesAxis* q):
198 QAbstractAxisPrivate(q),
182 QAbstractAxisPrivate(q),
199 m_min(0),
183 m_niceNumbers(false)
200 m_max(0),
201 m_niceNumbers(false),
202 m_ticksCount(5)
203 {
184 {
204
185
205 }
186 }
@@ -217,30 +198,36 void QValuesAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count)
217 }
198 }
218
199
219
200
220 void QValuesAxisPrivate::setMin(const QVariant& min)
201 void QValuesAxisPrivate::setMin(const qreal min)
221 {
202 {
222 Q_Q(QValuesAxis);
203 setRange(min,m_max);
223 bool ok;
224 qreal value = min.toReal(&ok);
225 if(ok) q->setMin(value);
226 }
204 }
227
205
228 void QValuesAxisPrivate::setMax(const QVariant& max)
206 void QValuesAxisPrivate::setMax(const qreal max)
229 {
207 {
230 Q_Q(QValuesAxis);
208 setRange(m_min,max);
231 bool ok;
232 qreal value = max.toReal(&ok);
233 if(ok) q->setMax(value);
234 }
209 }
235
210
236 void QValuesAxisPrivate::setRange(const QVariant& min, const QVariant& max)
211 void QValuesAxisPrivate::setRange(const qreal min, const qreal max)
237 {
212 {
238 Q_Q(QValuesAxis);
213 Q_Q(QValuesAxis);
239 bool ok1;
214 bool changed = false;
240 bool ok2;
215 if (!qFuzzyIsNull(m_min - min)) {
241 qreal value1 = min.toReal(&ok1);
216 m_min = min;
242 qreal value2 = max.toReal(&ok2);
217 changed = true;
243 if(ok1&&ok2) q->setRange(value1,value2);
218 emit q->minChanged(min);
219 }
220
221 if (!qFuzzyIsNull(m_max - max)) {
222 m_max = max;
223 changed = true;
224 emit q->maxChanged(max);
225 }
226
227 if (changed) {
228 emit q->rangeChanged(m_min,m_max);
229 emit this->changed(m_min, m_max, m_ticksCount, m_niceNumbers);
230 }
244 }
231 }
245
232
246 int QValuesAxisPrivate::ticksCount() const
233 int QValuesAxisPrivate::ticksCount() const
@@ -52,16 +52,13 public:
52 ChartAxis* createGraphics(ChartPresenter* presenter);
52 ChartAxis* createGraphics(ChartPresenter* presenter);
53
53
54 protected:
54 protected:
55 void setMin(const QVariant& min);
55 void setMin(const qreal min);
56 void setMax(const QVariant& max);
56 void setMax(const qreal max);
57 void setRange(const QVariant& min, const QVariant& max);
57 void setRange(const qreal min, const qreal max);
58 int ticksCount() const;
58 int ticksCount() const;
59
59
60 private:
60 private:
61 qreal m_min;
62 qreal m_max;
63 bool m_niceNumbers;
61 bool m_niceNumbers;
64 int m_ticksCount;
65 Q_DECLARE_PUBLIC(QValuesAxis)
62 Q_DECLARE_PUBLIC(QValuesAxis)
66 };
63 };
67
64
@@ -28,6 +28,7
28 #include "charttheme_p.h"
28 #include "charttheme_p.h"
29 #include "chartanimator_p.h"
29 #include "chartanimator_p.h"
30 #include "qvaluesaxis.h"
30 #include "qvaluesaxis.h"
31 #include "qcategoriesaxis.h"
31
32
32 QTCOMMERCIALCHART_BEGIN_NAMESPACE
33 QTCOMMERCIALCHART_BEGIN_NAMESPACE
33
34
@@ -610,7 +611,7 QList<LegendMarker*> QBarSeriesPrivate::createLegendMarker(QLegend* legend)
610
611
611 QAbstractAxis* QBarSeriesPrivate::createAxisX(QObject* parent)
612 QAbstractAxis* QBarSeriesPrivate::createAxisX(QObject* parent)
612 {
613 {
613 return new QValuesAxis(parent);
614 return new QCategoriesAxis(parent);
614 }
615 }
615
616
616 QAbstractAxis* QBarSeriesPrivate::createAxisY(QObject* parent)
617 QAbstractAxis* QBarSeriesPrivate::createAxisY(QObject* parent)
General Comments 0
You need to be logged in to leave comments. Login now