@@ -66,6 +66,8 @@ class CameraControl : public QObject {
6666 ControlWidget *control_widget;
6767 QCheckBox *auto_value_widget;
6868 QLabel *control_changed_led;
69+ private slots:
70+ void auto_changed (bool isAuto);
6971signals:
7072 void changed ();
7173};
@@ -98,18 +100,23 @@ CameraControl::CameraControl(const Imager::Control& control, Imager* imager, QWi
98100 new_value.value = v;
99101 emit changed ();
100102 });
101- connect (auto_value_widget, &QCheckBox::toggled, this , [this ](bool checked) {
102- new_value.value_auto = checked;
103- if (! checked)
104- new_value.value = control_widget->value ();
105- control_widget->setEnabled (!checked);
106- emit changed ();
107- });
103+ connect (auto_value_widget, &QCheckBox::toggled, this , &CameraControl::auto_changed);
108104
109105 control_widget->setEnabled (!control.readonly && ! control.value_auto );
110106 connect (imager, &Imager::changed, this , &CameraControl::control_updated, Qt::QueuedConnection);
111107}
112108
109+ void CameraControl::auto_changed (bool isAuto)
110+ {
111+ new_value.value_auto = isAuto;
112+ if (! isAuto)
113+ new_value.value = control_widget->value ();
114+ control_widget->setEnabled (!isAuto);
115+ auto_value_widget->setChecked (isAuto);
116+ emit changed ();
117+ }
118+
119+
113120void CameraControl::importing (const QVariantList& controls)
114121{
115122 auto found = find_if (controls.begin (), controls.end (), [this ](const QVariant &v){ return v.toMap ()[" id" ].toLongLong () == control.id ; });
@@ -134,6 +141,9 @@ void CameraControl::control_updated(const Imager::Control& changed_control)
134141 control = changed_control;
135142 new_value = control;
136143 control_widget->update (changed_control);
144+ if (changed_control.supports_auto ) {
145+ auto_changed (changed_control.value_auto );
146+ }
137147 control_changed_led->setPixmap (is_expected_value ? green_dot : red_dot);
138148 control_changed_led->show ();
139149 QTimer::singleShot (5000 , this , [this ]{ control_changed_led->hide (); });
0 commit comments