-
Notifications
You must be signed in to change notification settings - Fork 18
/
CDoubleProperty.cpp
116 lines (85 loc) · 2.13 KB
/
CDoubleProperty.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "CDoubleProperty.h"
#include <QDoubleSpinBox>
CDoubleProperty::CDoubleProperty(const QByteArray &id, const QString &name, double value, double defaultValue, double min, double max):
CBaseProperty(id, name),
m_value(value),
m_defaultValue(defaultValue),
m_min(min), m_max(max)
{
setValue(m_value);
}
CDoubleProperty::CDoubleProperty(CBaseProperty *top, const QByteArray &id, const QString &name, double value, double defaultValue, double min, double max):
CBaseProperty(top, id, name),
m_value(value),
m_defaultValue(defaultValue),
m_min(min), m_max(max)
{
setValue(m_value);
}
void CDoubleProperty::setValue(double value)
{
m_value = value;
CBaseProperty::setValue();
}
double CDoubleProperty::getValue() const
{
return m_value;
}
void CDoubleProperty::setRange(double min, double max)
{
m_min = min;
m_max = max;
CBaseProperty::setValue();
}
// reimp
QVariant CDoubleProperty::getVariantValue() const
{
return m_value;
}
void CDoubleProperty::displayValue()
{
setText(1, QString::number(m_value));
}
void CDoubleProperty::validateValue()
{
if (m_value < m_min)
m_value = m_min;
if (m_value > m_max)
m_value = m_max;
}
QWidget *CDoubleProperty::createEditor() const
{
return new QDoubleSpinBox();
}
void CDoubleProperty::valueToEditor()
{
QDoubleSpinBox* spinEditor = dynamic_cast<QDoubleSpinBox*>(getActiveEditor());
if (spinEditor != NULL)
{
spinEditor->setDecimals(3);
spinEditor->setRange(m_min, m_max);
spinEditor->setValue(m_value);
}
}
void CDoubleProperty::valueFromEditor()
{
QDoubleSpinBox* spinEditor = dynamic_cast<QDoubleSpinBox*>(getActiveEditor());
if (spinEditor != NULL)
{
double newValue = spinEditor->value();
if (newValue != m_value)
{
setValue(newValue);
// emit valueChanged...
}
}
}
void CDoubleProperty::startEdit()
{
CBaseProperty::startEdit();
QDoubleSpinBox* spinEditor = dynamic_cast<QDoubleSpinBox*>(getActiveEditor());
if (spinEditor != NULL)
{
spinEditor->selectAll();
}
}