ui/qt/button.cpp

changeset 550
0412c4c1048e
parent 526
f6a6b0b08641
child 551
0e543e1d060e
equal deleted inserted replaced
549:63d53ce4dd67 550:0412c4c1048e
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 }

mercurial