161 value->value = i; |
161 value->value = i; |
162 if(i != 0) { |
162 if(i != 0) { |
163 button->setChecked(true); |
163 button->setChecked(true); |
164 } |
164 } |
165 } |
165 } |
|
166 |
|
167 |
|
168 UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs args) { |
|
169 UiContainerPrivate *ctn = ui_obj_container(obj); |
|
170 UI_APPLY_LAYOUT(ctn->layout, args); |
|
171 |
|
172 QString str = QString::fromUtf8(args.label); |
|
173 QRadioButton *button = new QRadioButton(str); |
|
174 button->setAutoExclusive(false); |
|
175 |
|
176 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args.value, args.varname, UI_VAR_INTEGER); |
|
177 if(var) { |
|
178 UiInteger *value = (UiInteger*)var->value; |
|
179 QButtonGroup *buttonGroup = (QButtonGroup*)value->obj; |
|
180 if(!buttonGroup) { |
|
181 buttonGroup = new QButtonGroup(); |
|
182 value->obj = buttonGroup; |
|
183 } |
|
184 int id = buttonGroup->buttons().size()+1; |
|
185 buttonGroup->addButton(button, id); |
|
186 if(value->value == id) { |
|
187 button->setChecked(true); |
|
188 } |
|
189 value->get = ui_radiobutton_get; |
|
190 value->set = ui_radiobutton_set; |
|
191 } |
|
192 |
|
193 // TODO: unbind var/remove button from buttongroup when the button is destroyed |
|
194 // TODO: implement callback |
|
195 // TODO: implement value observer |
|
196 |
|
197 ctn->add(button, false); |
|
198 |
|
199 return button; |
|
200 } |
|
201 |
|
202 int64_t ui_radiobutton_get(UiInteger *value) { |
|
203 QButtonGroup *buttonGroup = (QButtonGroup*)value->obj; |
|
204 value->value = buttonGroup->checkedId(); |
|
205 return value->value; |
|
206 } |
|
207 |
|
208 void ui_radiobutton_set(UiInteger *value, int64_t i) { |
|
209 QButtonGroup *buttonGroup = (QButtonGroup*)value->obj; |
|
210 QAbstractButton *button = buttonGroup->button(i); |
|
211 if(button) { |
|
212 button->setChecked(true); |
|
213 value->value = i; |
|
214 } |
|
215 } |