ui/winui/window.cpp

changeset 28
1ecc1183f046
parent 27
c254ed644edf
child 29
3fc287f06305
equal deleted inserted replaced
27:c254ed644edf 28:1ecc1183f046
218 if (args.title) { 218 if (args.title) {
219 wchar_t *str = str2wstr(args.title, nullptr); 219 wchar_t *str = str2wstr(args.title, nullptr);
220 dialog.Title(winrt::box_value(str)); 220 dialog.Title(winrt::box_value(str));
221 free(str); 221 free(str);
222 } 222 }
223 if (args.content) { 223
224 wchar_t *str = str2wstr(args.content, nullptr); 224 TextBox textfield{ nullptr };
225 dialog.Content(winrt::box_value(str)); 225 if (args.input) {
226 free(str); 226 StackPanel panel = StackPanel();
227 panel.Orientation(Orientation::Vertical);
228 if (args.content) {
229 wchar_t *str = str2wstr(args.content, nullptr);
230 TextBlock label = TextBlock();
231 label.Text(str);
232 panel.Children().Append(label);
233 free(str);
234 }
235
236 textfield = TextBox();
237 Thickness margin = { 0, 5, 0, 0 };
238 textfield.Margin(margin);
239 panel.Margin(margin);
240
241 panel.Children().Append(textfield);
242
243 dialog.Content(panel);
244
245 } else {
246 if (args.content) {
247 wchar_t *str = str2wstr(args.content, nullptr);
248 dialog.Content(winrt::box_value(str));
249 free(str);
250 }
227 } 251 }
228 252
229 if (args.button1_label) { 253 if (args.button1_label) {
230 wchar_t *str = str2wstr(args.button1_label, nullptr); 254 wchar_t *str = str2wstr(args.button1_label, nullptr);
231 dialog.PrimaryButtonText(winrt::hstring(str)); 255 dialog.PrimaryButtonText(winrt::hstring(str));
232 free(str); 256 free(str);
257 dialog.DefaultButton(ContentDialogButton::Primary);
233 } 258 }
234 if (args.button2_label) { 259 if (args.button2_label) {
235 wchar_t *str = str2wstr(args.button2_label, nullptr); 260 wchar_t *str = str2wstr(args.button2_label, nullptr);
236 dialog.SecondaryButtonText(winrt::hstring(str)); 261 dialog.SecondaryButtonText(winrt::hstring(str));
237 free(str); 262 free(str);
255 evt.intval = 1; 280 evt.intval = 1;
256 } else if (result == ContentDialogResult::Secondary) { 281 } else if (result == ContentDialogResult::Secondary) {
257 evt.intval = 2; 282 evt.intval = 2;
258 } 283 }
259 284
285 if (args.input) {
286 std::wstring wstr(textfield.Text());
287 char *text = wchar2utf8(wstr.c_str(), wstr.length());
288 evt.eventdata = text;
289 }
290
260 args.result(&evt, args.resultdata); 291 args.result(&evt, args.resultdata);
292
293 if (evt.eventdata) {
294 free(evt.eventdata);
295 }
261 } 296 }
262 } 297 }
263 298
264 UIEXPORT void ui_dialog_create(UiObject *obj, UiDialogArgs args) { 299 UIEXPORT void ui_dialog_create(UiObject *obj, UiDialogArgs args) {
265 create_dialog_async(obj, args); 300 create_dialog_async(obj, args);

mercurial