|
9 | 9 | #include <QLineEdit> |
10 | 10 | #include "StringWidget.h" |
11 | 11 |
|
12 | | -//#include <iostream> |
13 | | -//using std::cout; |
14 | | -//using std::endl; |
| 12 | +// #include <iostream> |
| 13 | +// using std::cout; |
| 14 | +// using std::endl; |
15 | 15 |
|
16 | 16 | namespace PokemonAutomation{ |
17 | 17 |
|
@@ -59,9 +59,22 @@ void StringCellWidget::on_config_value_changed(void* object){ |
59 | 59 | }, Qt::QueuedConnection); |
60 | 60 | } |
61 | 61 | void StringCellWidget::on_config_visibility_changed(){ |
| 62 | + // Overwrite ConfigWidget::on_config_visibility_changed() because ConfigWidget cannot handle |
| 63 | + // READ_ONLY state. |
| 64 | + this->setEnabled(true); |
62 | 65 | QMetaObject::invokeMethod(this, [this]{ |
63 | | - update_visibility(); |
64 | | - setReadOnly(m_value.lock_mode() == LockMode::READ_ONLY || m_value.is_locked()); |
| 66 | + const ConfigOptionState visibility = m_value.visibility(); |
| 67 | + this->setReadOnly(visibility != ConfigOptionState::ENABLED || |
| 68 | + m_value.lock_mode() == LockMode::READ_ONLY || m_value.is_locked()); |
| 69 | + switch (visibility){ |
| 70 | + case ConfigOptionState::ENABLED: |
| 71 | + case ConfigOptionState::DISABLED: |
| 72 | + this->setVisible(true); |
| 73 | + break; |
| 74 | + case ConfigOptionState::HIDDEN: |
| 75 | + this->setVisible(false); |
| 76 | + break; |
| 77 | + } |
65 | 78 | }, Qt::QueuedConnection); |
66 | 79 | } |
67 | 80 |
|
@@ -109,9 +122,22 @@ void StringOptionWidget::on_config_value_changed(void* object){ |
109 | 122 | }, Qt::QueuedConnection); |
110 | 123 | } |
111 | 124 | void StringOptionWidget::on_config_visibility_changed(){ |
112 | | - QMetaObject::invokeMethod(m_box, [this]{ |
113 | | - update_visibility(); |
114 | | - m_box->setReadOnly(m_value.is_locked()); |
| 125 | + // Overwrite ConfigWidget::on_config_visibility_changed() because ConfigWidget cannot handle |
| 126 | + // READ_ONLY state. |
| 127 | + this->setEnabled(true); |
| 128 | + QMetaObject::invokeMethod(this, [this]{ |
| 129 | + const ConfigOptionState visibility = m_value.visibility(); |
| 130 | + m_box->setReadOnly(visibility != ConfigOptionState::ENABLED || |
| 131 | + m_value.lock_mode() == LockMode::READ_ONLY || m_value.is_locked()); |
| 132 | + switch (visibility){ |
| 133 | + case ConfigOptionState::ENABLED: |
| 134 | + case ConfigOptionState::DISABLED: |
| 135 | + this->setVisible(true); |
| 136 | + break; |
| 137 | + case ConfigOptionState::HIDDEN: |
| 138 | + this->setVisible(false); |
| 139 | + break; |
| 140 | + } |
115 | 141 | }, Qt::QueuedConnection); |
116 | 142 | } |
117 | 143 |
|
|
0 commit comments