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); |