From 0136bb54f99678c5303ad59689faca61c4599666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Fri, 11 Apr 2025 11:10:48 +0800 Subject: [PATCH] =?UTF-8?q?refactor(basic):=20=E9=87=8D=E6=9E=84=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=AF=B9=E8=AF=9D=E6=A1=86=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重新设计了确认对话框的布局和样式,增加了关闭按钮和标题 - 优化了对话框的显示和关闭逻辑 - 调整了文本样式和间距 -增加了线性渐变背景 --- src/main/ets/utils/ToolsHelper.ets | 131 ++++++++++++++---- .../mdpi/media/dialog_confirm_close.png | Bin 0 -> 592 bytes .../xldpi/media/dialog_confirm_close.png | Bin 0 -> 1388 bytes .../xxldpi/media/dialog_confirm_close.png | Bin 0 -> 2516 bytes .../xxxldpi/media/dialog_confirm_close.png | Bin 0 -> 2812 bytes 5 files changed, 104 insertions(+), 27 deletions(-) create mode 100644 src/main/resources/mdpi/media/dialog_confirm_close.png create mode 100644 src/main/resources/xldpi/media/dialog_confirm_close.png create mode 100644 src/main/resources/xxldpi/media/dialog_confirm_close.png create mode 100644 src/main/resources/xxxldpi/media/dialog_confirm_close.png diff --git a/src/main/ets/utils/ToolsHelper.ets b/src/main/ets/utils/ToolsHelper.ets index d7b4bd3..271f51b 100644 --- a/src/main/ets/utils/ToolsHelper.ets +++ b/src/main/ets/utils/ToolsHelper.ets @@ -8,10 +8,10 @@ import { GlobalContext, LogHelper } from '../../../../Index'; import { ComponentContent } from '@kit.ArkUI'; class AlertBean { - options: AlertOptions + options: ConfirmOptions dialogTag: string - constructor(options: AlertOptions, dialogTag: string) { + constructor(options: ConfirmOptions, dialogTag: string) { this.options = options this.dialogTag = dialogTag } @@ -20,6 +20,7 @@ class AlertBean { export interface Btn { text?: string | Resource; color?: string | Resource; + bgColor?: string | Resource; onClick?: () => void } @@ -143,24 +144,87 @@ function customDialogBuilder(option: ListOptions, dialogTag: string) { function alertDialogBuilder(options: AlertBean) { Column() { - Text('---------') - .fontSize(16) - .fontColor('#00BE87') + Row() { + Image($r('app.media.dialog_confirm_close')) + .width(17) + .height(17) + .visibility(options.options.cancel ? Visibility.Hidden : Visibility.None) + Text(options.options.title ?? '提示') + .fontSize(16) + .fontColor($r('sys.color.black')) + .textAlign(TextAlign.Center) + .layoutWeight(1) + .height('100%') + .fontWeight(FontWeight.Bold) + .maxLines(1) + .padding({ + left: 20, + right: 20 + }) + .ellipsisMode(EllipsisMode.CENTER) + .textOverflow({ + overflow: TextOverflow.Ellipsis + }) + Image($r('app.media.dialog_confirm_close')) + .width(17) + .height(17) + .visibility(options.options.cancel ? Visibility.Visible : Visibility.None) + .onClick(() => { + options.options.cancel?.onClick && options.options.cancel.onClick() + ToolsHelper.closeAlertDialog(options.dialogTag) + }) + + } + .width('100%') + .height(60) + .justifyContent(FlexAlign.SpaceBetween) + .alignItems(VerticalAlign.Top) + .padding(9) + + Text(options.options.msg) + .fontSize(14) + .fontWeight(FontWeight.Medium) + .fontColor($r('sys.color.black')) .textAlign(TextAlign.Center) + .lineHeight(20) + .padding({ + left: 19, + right: 19 + }) .width('100%') - .height(60) - .backgroundColor('#F0FFFA') - .borderRadius({ - topLeft: 10, - topRight: 10 + Text(options.options.confirm?.text ?? '确定') + .fontSize(14) + .fontWeight(FontWeight.Medium) + .fontColor(options.options.confirm?.color ?? $r('sys.color.white')) + .textAlign(TextAlign.Center) + .margin({ + top: 40, + bottom: 40, + left: 18, + right: 18 }) + .width(215) + .backgroundColor(options.options.confirm?.bgColor ?? '#0E84FA') + .borderRadius(5) + .height(34) .onClick(() => { - if (ToolsHelper.mapAlertDialog.get(options.dialogTag)) { - ToolsHelper.closeAlertDialog(ToolsHelper.mapAlertDialog.get(options.dialogTag)) - ToolsHelper.mapAlertDialog.remove(options.dialogTag) - } + options.options.confirm?.onClick && options.options.confirm.onClick() + ToolsHelper.closeAlertDialog(options.dialogTag) }) - }.justifyContent(FlexAlign.Start) + } + .width('66%') + .borderRadius(5) + .justifyContent(FlexAlign.Start) + .constraintSize({ + minHeight: 194 + }) + .linearGradient({ + // 0点方向顺时针旋转为正向角度,线性渐变起始角度的默认值为180° + colors: [ + [0xE6F6FA, 0], // 颜色断点1的颜色和比重,对应组件在180°方向上的起始位置 + [0xffffff, 1.0],// 颜色断点2的颜色和比重,对应组件在180°方向上的终点位置 + ] + }) } interface ThrottleInterface { @@ -222,10 +286,13 @@ export class ToolsHelper { return true } - static closeAlertDialog(content: ComponentContent) { - try { - GlobalContext.getUiContext().getPromptAction().closeCustomDialog(content) - } catch (err) { + static closeAlertDialog(dialogTag: string) { + if (ToolsHelper.mapAlertDialog.get(dialogTag)) { + try { + GlobalContext.getUiContext().getPromptAction().closeCustomDialog(ToolsHelper.mapAlertDialog.get(dialogTag)) + } catch (err) { + } + ToolsHelper.mapAlertDialog.remove(dialogTag) } } @@ -236,8 +303,9 @@ export class ToolsHelper { static showAlertDialog(options: AlertOptions) { const dialogTag = ToolsHelper.getUuid() const ui = GlobalContext.getUiContext() - const c = new ComponentContent(ui, wrapBuilder(alertDialogBuilder), new AlertBean(options, dialogTag)) - ui.getPromptAction().openCustomDialog(c,{ + const c = new ComponentContent(ui, wrapBuilder(alertDialogBuilder), + new AlertBean({ title: options.title, msg: options.msg, confirm: options.action }, dialogTag)) + ui.getPromptAction().openCustomDialog(c, { autoCancel: false }).then(() => { ToolsHelper.mapAlertDialog.set(dialogTag, c) @@ -269,8 +337,17 @@ export class ToolsHelper { * 弹出Confirm弹窗 * @param options */ - static showConfirmDialog(options: ConfirmOptions): Promise { - return new Promise((reject) => { + static showConfirmDialog(options: ConfirmOptions) { + + const dialogTag = ToolsHelper.getUuid() + const ui = GlobalContext.getUiContext() + const c = new ComponentContent(ui, wrapBuilder(alertDialogBuilder), + new AlertBean(options, dialogTag)) + ui.getPromptAction().openCustomDialog(c, { + autoCancel: false + }).then(() => { + ToolsHelper.mapAlertDialog.set(dialogTag, c) + }).catch(() => { try { promptAction.showDialog({ alignment: 1, @@ -292,14 +369,14 @@ export class ToolsHelper { } }) .catch((err: Error) => { - // ToolsHelper.showMessage(err.message) + ToolsHelper.showMessage(err.message) }) } catch (error) { - reject() - // let message = (error as BusinessError).message - // ToolsHelper.showMessage(message) + let message = (error as BusinessError).message + ToolsHelper.showMessage(message) } }) + } public static mapDialog = new HashMap() diff --git a/src/main/resources/mdpi/media/dialog_confirm_close.png b/src/main/resources/mdpi/media/dialog_confirm_close.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbeeddf203a54cef6efb7a7db577254b69c0ed4 GIT binary patch literal 592 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