CVB++ 15.0
detail_boolean_property.hpp
1#pragma once
2
3#pragma warning(push)
4#pragma warning(disable : 4800)
5#pragma warning(disable : 4251)
6#pragma warning(disable : 4244)
7#include <QCheckBox>
8#pragma warning(pop)
9
10#include "../../global.hpp"
11#include "../../genapi/value_node.hpp"
12#include "../../genapi/boolean_node.hpp"
13#include "detail_property.hpp"
14
15namespace Cvb
16{
17
18 CVB_BEGIN_INLINE_NS
19
20 namespace UI
21 {
22 namespace Private
23 {
24
25 class BooleanProperty : public Private::Property
26 {
27
28 Q_OBJECT
29
30 public:
31 BooleanProperty(const ValueNodePtr &node, Property *parent)
32 : Property(node, PT_Boolean, parent)
33 {
34 }
35
36 QWidget *CreateEditor(QWidget *) override
37 {
38 return EmptyEditor();
39 }
40
41 bool SetEditorData(QWidget *editor, const QVariant &data) override
42 {
43 if (auto cb = qobject_cast<QCheckBox *>(editor))
44 {
45 bool value = data.toBool();
46 cb->setChecked(value);
47 return true;
48 }
49 return false;
50 }
51
52 QVariant EditorData(QWidget *editor) override
53 {
54 if (auto cb = qobject_cast<QCheckBox *>(editor))
55 {
56 return QVariant(cb->isChecked());
57 }
58 else
59 {
60 return QVariant();
61 }
62 }
63
64 QVariant Value(int column, int role = Qt::UserRole) override
65 {
66 switch (role)
67 {
68 case Qt::CheckStateRole:
69 {
70 auto boolNode = std::dynamic_pointer_cast<BooleanNode>(Node());
71 if (boolNode && boolNode->IsAvailable())
72 {
73 if (boolNode->Value())
74 return Qt::Checked;
75 return Qt::Unchecked;
76 }
77 return QVariant();
78 }
79 case Qt::DisplayRole:
80 {
81 if (column == 0)
82 return Data(column, role);
83
84 auto boolNode = std::dynamic_pointer_cast<BooleanNode>(Node());
85 if (boolNode && boolNode->IsAvailable())
86 {
87 try
88 {
89 return QVariant::fromValue(boolNode->Value());
90 }
91 catch (const CvbException &e)
92 {
93 if (e.ErrorCode() == ErrorCodes::CVB_TIMEOUT)
94 TimeoutOccurred(); // send signal
95 }
96 }
97 return QVariant("-");
98 }
99 }
100 return QVariant();
101 }
102
103 void SetValue(const QVariant &value) override
104 {
105 auto boolNode = std::dynamic_pointer_cast<BooleanNode>(Node());
106 if (boolNode)
107 {
108 try
109 {
110 boolNode->SetValue(value.toBool());
111 }
112 catch (const CvbException &)
113 {
114 // ignore the exception
115 }
116 }
117 }
118
119 QString HtmlDescription() override
120 {
121 return QString();
122 }
123
124 }; /* class BooleanProperty */
125
126 } /* namespace Private */
127 } /* namespace UI */
128
129 CVB_END_INLINE_NS
130
131} /* namespace Cvb */
const int CVB_TIMEOUT
Timeout in function.
Definition exception.hpp:29
std::shared_ptr< ValueNode > ValueNodePtr
Convenience shared pointer for ValueNode.
Definition genapi.hpp:91
Namespace for user interface components.
Definition decl_image_scene.hpp:39
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17