From 545e2a0558c17cc1d8464f2d9e20698573078290 Mon Sep 17 00:00:00 2001 From: lexiaoyao2 Date: Mon, 4 Aug 2025 15:26:03 +0800 Subject: [PATCH] time picker dialog Signed-off-by: lexiaoyao2 Change-Id: I6d8b6f19e6426a593db746b59b0414fab206ec69 --- .../time_picker_dialog_accessor.cpp | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp b/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp index ab681a694ff..3c5d94427eb 100644 --- a/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp @@ -91,6 +91,30 @@ DialogProperties BuildDialogProperties(const Ark_TimePickerDialogOptions options PickerDialogInfo BuildTimePickerDialogInfo(const Ark_TimePickerDialogOptions options) { PickerDialogInfo dialogInfo; + + auto pipeline = PipelineBase::GetCurrentContextSafelyWithCheck(); + CHECK_NULL_RETURN(pipeline, dialogInfo); + + auto pickerTheme = pipeline->GetTheme(); + auto parseStartTime = pickerTheme->GetDefaultStartTime(); + auto parseEndTime = pickerTheme->GetDefaultEndTime(); + // start & end time + auto start = Converter::OptConvert(options.start); + if (start) { + parseStartTime = start.value(); + } + auto end = Converter::OptConvert(options.end); + if (end) { + parseEndTime = end.value(); + } + dialogInfo.parseStartTime = parseStartTime; + dialogInfo.parseEndTime = parseEndTime; + // select time + auto selectedTime = Converter::OptConvert(options.selected); + if (selectedTime) { + dialogInfo.isSelectedTime = true; + dialogInfo.pickerTime = selectedTime.value(); + } auto alignment = Converter::OptConvert(options.alignment); if (alignment) { dialogInfo.alignment = alignment.value(); @@ -146,6 +170,12 @@ TimePickerSettingData BuildPickerSettingData(const Ark_TimePickerDialogOptions o if (selectedTextStyle) { settingData.properties.selectedTextStyle_ = selectedTextStyle.value(); } + auto dateTimeOptions = Converter::OptConvert(options.dateTimeOptions); + if (dateTimeOptions) { + settingData.dateTimeOptions.hourType = dateTimeOptions->hourType; + settingData.dateTimeOptions.minuteType = dateTimeOptions->minuteType; + settingData.dateTimeOptions.secondType = dateTimeOptions->secondType; + } return settingData; } @@ -204,7 +234,6 @@ void ShowImpl(const Opt_TimePickerDialogOptions* options) if (!arkOptionsOpt.has_value()) { return; } Ark_TimePickerDialogOptions arkOptions = arkOptionsOpt.value(); - // PickerDialogInfo & TimePickerSettingData PickerDialogInfo dialogInfo = BuildTimePickerDialogInfo(arkOptions); TimePickerSettingData settingData = BuildPickerSettingData(arkOptions); dialogInfo.isUseMilitaryTime = settingData.isUseMilitaryTime; -- Gitee