diff --git a/frameworks/core/interfaces/native/implementation/date_picker_dialog_accessor.cpp b/frameworks/core/interfaces/native/implementation/date_picker_dialog_accessor.cpp index 121a4b49f9f08dd3600d62ad3571bc64e52dfe3a..4611c72a49145a08b698a7eba23d7f44dddd20cd 100644 --- a/frameworks/core/interfaces/native/implementation/date_picker_dialog_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/date_picker_dialog_accessor.cpp @@ -26,17 +26,43 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace DatePickerDialogAccessor { -PickerDialogInfo BuildDatePickerDialogInfo(const Ark_DatePickerDialogOptions options) +PickerDialogInfo BuildDatePickerDialogInfo(const Ark_DatePickerDialogOptions& options) { PickerDialogInfo dialogInfo; auto pipeline = PipelineBase::GetCurrentContextSafelyWithCheck(); CHECK_NULL_RETURN(pipeline, dialogInfo); - auto dialogTheme = pipeline->GetTheme(); - CHECK_NULL_RETURN(dialogTheme, dialogInfo); - - dialogInfo.alignment = dialogTheme->GetAlignment(); - if (dialogInfo.alignment == DialogAlignment::BOTTOM) { - dialogInfo.offset = DimensionOffset(Offset(0, -dialogTheme->GetMarginBottom().ConvertToPx())); + auto pickerTheme = pipeline->GetTheme(); + CHECK_NULL_RETURN(pickerTheme, dialogInfo); + // parse start and end date + auto parseStartDate = pickerTheme->GetDefaultStartDate(); + auto parseEndDate = pickerTheme->GetDefaultEndDate(); + auto start = Converter::OptConvert(options.start); + if (start) { + parseStartDate = start.value(); + } + auto end = Converter::OptConvert(options.end); + if (end) { + parseEndDate = end.value(); + } + if (parseStartDate.ToDays() > parseEndDate.ToDays()) { + parseStartDate = pickerTheme->GetDefaultStartDate(); + parseEndDate = pickerTheme->GetDefaultEndDate(); + } + dialogInfo.parseStartDate = parseStartDate; + dialogInfo.parseEndDate = parseEndDate; + // parse selected date + auto selectedDate = Converter::OptConvert(options.selected); + if (selectedDate) { + dialogInfo.isSelectedDate = true; + dialogInfo.parseSelectedDate = selectedDate.value(); + } + auto alignment = Converter::OptConvert(options.alignment); + if (alignment) { + dialogInfo.alignment = alignment.value(); + } + auto offset = Converter::OptConvert(options.offset); + if (offset) { + dialogInfo.offset = offset.value(); } dialogInfo.backgroundBlurStyle = static_cast(Converter::OptConvert( options.backgroundBlurStyle).value_or(BlurStyle::COMPONENT_REGULAR)); @@ -51,15 +77,8 @@ PickerDialogInfo BuildDatePickerDialogInfo(const Ark_DatePickerDialogOptions opt return dialogInfo; } -DatePickerSettingData BuildSettingData(const Ark_DatePickerDialogOptions options) +void ParseDateInfo(const Ark_DatePickerDialogOptions& options, DatePickerSettingData& settingData) { - DatePickerSettingData settingData; - settingData.isLunar = Converter::OptConvert(options.lunar).value_or(settingData.isLunar); - settingData.lunarswitch = Converter::OptConvert(options.lunarSwitch).value_or(settingData.lunarswitch); - auto checkboxSettingData = Converter::OptConvert(options.lunarSwitchStyle); - if (checkboxSettingData) { - settingData.checkboxSettingData = *checkboxSettingData; - } auto start = Converter::OptConvert(options.start); if (start) { settingData.datePickerProperty["start"] = *start; @@ -76,6 +95,18 @@ DatePickerSettingData BuildSettingData(const Ark_DatePickerDialogOptions options settingData.timePickerProperty["selected"] = *selectedTime; } } +} + +DatePickerSettingData BuildSettingData(const Ark_DatePickerDialogOptions& options) +{ + DatePickerSettingData settingData; + settingData.isLunar = Converter::OptConvert(options.lunar).value_or(settingData.isLunar); + settingData.lunarswitch = Converter::OptConvert(options.lunarSwitch).value_or(settingData.lunarswitch); + auto checkboxSettingData = Converter::OptConvert(options.lunarSwitchStyle); + if (checkboxSettingData) { + settingData.checkboxSettingData = *checkboxSettingData; + } + ParseDateInfo(options, settingData); settingData.showTime = Converter::OptConvert(options.showTime).value_or(settingData.showTime); settingData.useMilitary = Converter::OptConvert(options.useMilitaryTime).value_or(settingData.useMilitary); auto dateTimeOptions = Converter::OptConvert(options.dateTimeOptions); @@ -94,10 +125,18 @@ DatePickerSettingData BuildSettingData(const Ark_DatePickerDialogOptions options if (selectedTextStyle) { settingData.properties.selectedTextStyle_ = *selectedTextStyle; } + auto pickerMode = Converter::OptConvert(options.mode); + if (pickerMode) { + settingData.mode = *pickerMode; + } + auto enableHapticFeedback = Converter::OptConvert(options.enableHapticFeedback); + if (enableHapticFeedback) { + settingData.isEnableHapticFeedback = enableHapticFeedback.value(); + } return settingData; } -PickerDialogEvent BuildPickerDialogEvents(const Ark_DatePickerDialogOptions options) +PickerDialogEvent BuildPickerDialogEvents(const Ark_DatePickerDialogOptions& options) { PickerDialogEvent dialogEvent; auto didAppearCallbackOpt = Converter::OptConvert(options.onDidAppear); @@ -131,7 +170,7 @@ PickerDialogEvent BuildPickerDialogEvents(const Ark_DatePickerDialogOptions opti return dialogEvent; } -PickerDialogInteractiveEvent BuildSelectInteractiveEvents(const Ark_DatePickerDialogOptions arkOptions) +PickerDialogInteractiveEvent BuildSelectInteractiveEvents(const Ark_DatePickerDialogOptions& arkOptions) { PickerDialogInteractiveEvent events; // onCancel @@ -178,7 +217,7 @@ PickerDialogInteractiveEvent BuildSelectInteractiveEvents(const Ark_DatePickerDi return events; } -std::vector BuildButtonInfos(const Ark_DatePickerDialogOptions options) +std::vector BuildButtonInfos(const Ark_DatePickerDialogOptions& options) { std::vector buttonInfos; auto acceptButtonInfo = Converter::OptConvert(options.acceptButtonStyle); diff --git a/frameworks/core/interfaces/native/implementation/text_picker_dialog_accessor.cpp b/frameworks/core/interfaces/native/implementation/text_picker_dialog_accessor.cpp index d454a4c6bb7941a816834b529d805e906f6ffe64..abafa4eaf2df64a273a36ef0b9701e0570063012 100644 --- a/frameworks/core/interfaces/native/implementation/text_picker_dialog_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/text_picker_dialog_accessor.cpp @@ -92,21 +92,28 @@ void ParseTextPickerOptions(const Ark_TextPickerDialogOptions& arkOptions, TextP settingData.attr.isHasSelectAttr = hasSelected; } -TextPickerSettingData BuildTextPickerSettingData(const Ark_TextPickerDialogOptions options) +void BuildTextPickerSettingData(const Ark_TextPickerDialogOptions& options, + TextPickerSettingData& settingData, TextPickerDialog& pickerDialog) { - TextPickerSettingData settingData; + // parse frontend input parameter type TextPickerOptions ParseTextPickerOptions(options, settingData); + pickerDialog.isDefaultHeight = false; auto height = Converter::OptConvert(options.defaultPickerItemHeight); if (height) { settingData.height = height.value(); + pickerDialog.height = settingData.height; + pickerDialog.isDefaultHeight = true; } + settingData.canLoop = true; auto canLoop = Converter::OptConvert(options.canLoop); if (canLoop) { settingData.canLoop = canLoop.value(); } - // crownSensitivity - // text style + // pickerBgStyle, temporarily set as default value + settingData.pickerBgStyle.color = Color::TRANSPARENT; + settingData.pickerBgStyle.borderRadius = NG::BorderRadiusProperty(8.0_vp); + // property for text style auto disappearTextStyle = Converter::OptConvert(options.disappearTextStyle); if (disappearTextStyle) { settingData.properties.disappearTextStyle_ = disappearTextStyle.value(); @@ -125,16 +132,16 @@ TextPickerSettingData BuildTextPickerSettingData(const Ark_TextPickerDialogOptio } // disableTextStyleAnimation + settingData.isDisableTextStyleAnimation = false; auto disableTextStyleAnimation = Converter::OptConvert(options.disableTextStyleAnimation); if (disableTextStyleAnimation) { settingData.isDisableTextStyleAnimation = disableTextStyleAnimation.value(); } + settingData.isEnableHapticFeedback = true; auto enableHapticFeedback = Converter::OptConvert(options.enableHapticFeedback); if (enableHapticFeedback) { settingData.isEnableHapticFeedback = enableHapticFeedback.value(); } - - return settingData; } DialogTextEvent BuildTextEvent(Callback_TextPickerResult_Void callback) @@ -185,12 +192,8 @@ DialogTextEvent BuildTextEvent(Callback_TextPickerResult_Void callback) }; } -TextPickerDialog BuildTextPickerDialog(const Ark_TextPickerDialogOptions options, const TextPickerSettingData setting) +void BuildTextPickerDialog(const Ark_TextPickerDialogOptions& options, TextPickerDialog& pickerDialog) { - TextPickerDialog pickerDialog; - - // height & isDefaultHeight - pickerDialog.height = setting.height; // selectedValue getRangeVector auto enableHoverMode = Converter::OptConvert(options.enableHoverMode); if (enableHoverMode) { @@ -208,16 +211,16 @@ TextPickerDialog BuildTextPickerDialog(const Ark_TextPickerDialogOptions options pickerDialog.backgroundColor = Converter::OptConvert(options.backgroundColor); pickerDialog.backgroundBlurStyle = static_cast(Converter::OptConvert( options.backgroundBlurStyle).value_or(BlurStyle::COMPONENT_REGULAR)); - // blurStyleOption, effectOption... + pickerDialog.blurStyleOption = Converter::OptConvert(options.backgroundBlurStyleOptions); + pickerDialog.effectOption = Converter::OptConvert(options.backgroundEffect); pickerDialog.shadow = Converter::OptConvert(options.shadow); auto hoverModeArea = Converter::OptConvert(options.hoverModeArea); if (hoverModeArea) { pickerDialog.hoverModeArea = hoverModeArea.value(); } - return pickerDialog; } -TextPickerDialogEvent BuildTextPickerDialogEvents(const Ark_TextPickerDialogOptions options) +TextPickerDialogEvent BuildTextPickerDialogEvents(const Ark_TextPickerDialogOptions& options) { TextPickerDialogEvent dialogEvent; auto didAppearCallbackOpt = Converter::OptConvert(options.onDidAppear); @@ -251,7 +254,7 @@ TextPickerDialogEvent BuildTextPickerDialogEvents(const Ark_TextPickerDialogOpti return dialogEvent; } -TextPickerInteractiveEvent BuildSelectInteractiveEvents(const Ark_TextPickerDialogOptions arkOptions) +TextPickerInteractiveEvent BuildSelectInteractiveEvents(const Ark_TextPickerDialogOptions& arkOptions) { TextPickerInteractiveEvent events; // onCancel @@ -285,7 +288,7 @@ TextPickerInteractiveEvent BuildSelectInteractiveEvents(const Ark_TextPickerDial return events; } -std::vector BuildButtonInfos(const Ark_TextPickerDialogOptions options) +std::vector BuildButtonInfos(const Ark_TextPickerDialogOptions& options) { std::vector buttonInfos; auto acceptButtonInfo = Converter::OptConvert(options.acceptButtonStyle); @@ -307,9 +310,11 @@ void ShowImpl(const Opt_TextPickerDialogOptions* options) Ark_TextPickerDialogOptions arkOptions = arkOptionsOpt.value(); - TextPickerSettingData settingData = BuildTextPickerSettingData(arkOptions); + TextPickerSettingData settingData; + TextPickerDialog textPickerDialog; + BuildTextPickerSettingData(arkOptions, settingData, textPickerDialog); + BuildTextPickerDialog(arkOptions, textPickerDialog); auto interEvents = BuildSelectInteractiveEvents(arkOptions); - auto textPickerDialog = BuildTextPickerDialog(arkOptions, settingData); auto dialogEvents = BuildTextPickerDialogEvents(arkOptions); std::vector buttonInfos = BuildButtonInfos(arkOptions); // WARING: don't use, only adapter backend function interface. 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 3c5d94427eba4a21a8044f358082760197e72186..46a693786c2769df2b7c373d302eb23d082b79ce 100644 --- a/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/time_picker_dialog_accessor.cpp @@ -28,67 +28,7 @@ namespace OHOS::Ace::NG::GeneratedModifier { namespace TimePickerDialogAccessor { -void BuildDialogPropertiesCallbacks(const Ark_TimePickerDialogOptions options, DialogProperties& dialogProps) -{ - auto didAppearCallbackOpt = Converter::OptConvert(options.onDidAppear); - if (didAppearCallbackOpt) { - auto onDidAppear = [arkCallback = CallbackHelper(*didAppearCallbackOpt)]() -> void { - arkCallback.Invoke(); - }; - dialogProps.onDidAppear = onDidAppear; - } - auto didDisappearCallbackOpt = Converter::OptConvert(options.onDidDisappear); - if (didDisappearCallbackOpt) { - auto onDidDisappear = [arkCallback = CallbackHelper(*didDisappearCallbackOpt)]() -> void { - arkCallback.Invoke(); - }; - dialogProps.onDidDisappear = onDidDisappear; - } - auto willAppearCallbackOpt = Converter::OptConvert(options.onWillAppear); - if (willAppearCallbackOpt) { - auto onWillAppear = [arkCallback = CallbackHelper(*willAppearCallbackOpt)]() -> void { - arkCallback.Invoke(); - }; - dialogProps.onWillAppear = onWillAppear; - } - auto willDisappearCallbackOpt = Converter::OptConvert(options.onWillDisappear); - if (willDisappearCallbackOpt) { - auto onWillDisappear = [arkCallback = CallbackHelper(*willDisappearCallbackOpt)]() -> void { - arkCallback.Invoke(); - }; - dialogProps.onWillDisappear = onWillDisappear; - } -} - -DialogProperties BuildDialogProperties(const Ark_TimePickerDialogOptions options) -{ - DialogProperties dialogProps; - auto alignment = Converter::OptConvert(options.alignment); - if (alignment) { - dialogProps.alignment = alignment.value(); - } - auto offset = Converter::OptConvert(options.offset); - if (offset) { - dialogProps.offset = offset.value(); - } - dialogProps.backgroundBlurStyle = static_cast(Converter::OptConvert( - options.backgroundBlurStyle).value_or(BlurStyle::COMPONENT_REGULAR)); - dialogProps.backgroundColor = Converter::OptConvert(options.backgroundColor); - dialogProps.shadow = Converter::OptConvert(options.shadow); - auto enableHoverMode = Converter::OptConvert(options.enableHoverMode); - if (enableHoverMode) { - dialogProps.enableHoverMode = enableHoverMode.value(); - } - auto hoverModeArea = Converter::OptConvert(options.hoverModeArea); - if (hoverModeArea) { - dialogProps.hoverModeArea = hoverModeArea.value(); - } - dialogProps.maskRect = Converter::OptConvert(options.maskRect); - BuildDialogPropertiesCallbacks(options, dialogProps); - return dialogProps; -} - -PickerDialogInfo BuildTimePickerDialogInfo(const Ark_TimePickerDialogOptions options) +PickerDialogInfo BuildTimePickerDialogInfo(const Ark_TimePickerDialogOptions& options) { PickerDialogInfo dialogInfo; @@ -139,7 +79,7 @@ PickerDialogInfo BuildTimePickerDialogInfo(const Ark_TimePickerDialogOptions opt return dialogInfo; } -TimePickerSettingData BuildPickerSettingData(const Ark_TimePickerDialogOptions options) +TimePickerSettingData BuildPickerSettingData(const Ark_TimePickerDialogOptions& options) { TimePickerSettingData settingData; auto format = Converter::OptConvert(options.format); @@ -179,7 +119,7 @@ TimePickerSettingData BuildPickerSettingData(const Ark_TimePickerDialogOptions o return settingData; } -TimePickerDialogEvent BuildTimePickerDialogEvents(const Ark_TimePickerDialogOptions options) +TimePickerDialogEvent BuildTimePickerDialogEvents(const Ark_TimePickerDialogOptions& options) { TimePickerDialogEvent dialogEvent; auto didAppearCallbackOpt = Converter::OptConvert(options.onDidAppear); @@ -213,7 +153,7 @@ TimePickerDialogEvent BuildTimePickerDialogEvents(const Ark_TimePickerDialogOpti return dialogEvent; } -std::vector BuildButtonInfos(const Ark_TimePickerDialogOptions options) +std::vector BuildButtonInfos(const Ark_TimePickerDialogOptions& options) { std::vector buttonInfos; auto acceptButtonInfo = Converter::OptConvert(options.acceptButtonStyle);