diff --git a/permissionmanager/src/main/ets/common/utils/utils.ets b/permissionmanager/src/main/ets/common/utils/utils.ets index 8ef327e9827a61d96204f76c9188a57133f5da4a..5ebbb13b17e9f947a10d6e6140ed511c90511f9c 100644 --- a/permissionmanager/src/main/ets/common/utils/utils.ets +++ b/permissionmanager/src/main/ets/common/utils/utils.ets @@ -268,30 +268,19 @@ export function checkPermissionGroup(appPermissions: Permissions[]): string | nu return groupName; } -export function setAvoidArea(proxy: uiExtensionHost.UIExtensionHostWindowProxy) { +export function setAvoidArea(proxy: uiExtensionHost.UIExtensionHostWindowProxy) { let avoidArea = proxy.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); let btmAvoidHeight: string = avoidArea.bottomRect.height.toString(); Log.info(TAG + 'avoid area height: ' + btmAvoidHeight + 'px'); // assure unit in pixels GlobalContext.store('avoidAreaHeight', btmAvoidHeight + 'px'); } -export function getFontSizeScale(): number { +export function getFontSizeScale(): boolean { const FONT_SIZE_SCALE_PARAM = 'persist.sys.font_scale_for_user0'; let fontSizeScale = Number.parseFloat(systemParameterEnhance.getSync(FONT_SIZE_SCALE_PARAM, '1')); - return fontSizeScale >= Constants.DIALOG_TITLE_MAX_SCALE ? Constants.DIALOG_TITLE_MAX_SCALE : fontSizeScale; + return fontSizeScale > 1; } -export function getLimitFontSize( - fontSizeScale: number, maxScale: number, resMin: Resource, resMax: Resource -): number | string { - if (fontSizeScale <= 1) { - return px2vp(getContext().resourceManager.getNumber(resMin.id)); - } - let fontSize = px2vp(getContext().resourceManager.getNumber(resMax.id)); - return fontSizeScale > maxScale ? `${fontSize * maxScale}vp` : fontSize; -} - - export class Log { public static domain: number = 0x8214; public static tag: string = 'PermissionManager_Log'; diff --git a/permissionmanager/src/main/ets/pages/dialogPlus.ets b/permissionmanager/src/main/ets/pages/dialogPlus.ets index b180c4a621791d0b7aaccbf4d589eb410e177737..0ebbc11b86fa5cd8f613e659d3e9b435d4e682c6 100644 --- a/permissionmanager/src/main/ets/pages/dialogPlus.ets +++ b/permissionmanager/src/main/ets/pages/dialogPlus.ets @@ -26,8 +26,7 @@ import { getPermissionGroup, titleTrim, getPermissionLabel, - getFontSizeScale, - getLimitFontSize + getFontSizeScale } from '../common/utils/utils'; import { Permission, ButtonStatus } from '../common/model/definition'; import { GroupInfo, WantInfo } from '../common/model/typedef'; @@ -43,6 +42,14 @@ import { MeasureText } from '@kit.ArkUI'; .width(Constants.HALF_LENGTH) } +@Extend(Text)function titleText() { + .fontWeight(FontWeight.Bold) + .fontColor($r('sys.color.font_primary')) + .textAlign(TextAlign.Center) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .maxLines(Constants.SECURITY_HEADER_MAX_LINES) +} + const fuzzyMarks = [Constants.LOCATION_FUZZY, Constants.LOCATION_BOTH_FUZZY, Constants.LOCATION_BOTH_PRECISE]; const preciseMarks = [Constants.LOCATION_UPGRADE, Constants.LOCATION_BOTH_PRECISE]; let storage = LocalStorage.getShared(); @@ -78,6 +85,33 @@ struct dialogPlusPage { autoCancel: false }); + @Builder + DialogTitle() { + Row() { + Column() { + if (getFontSizeScale()) { + Text($r(this.showTitle(), this.appName)) + .titleText() + .fontSize($r('sys.float.Title_S')) + } else { + Text($r(this.showTitle(), this.appName)) + .titleText() + .minFontSize(Constants.TEXT_MIDDLE_FONT_SIZE) + .maxFontSize($r('sys.float.Title_S')) + .heightAdaptivePolicy(TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST) + } + } + .constraintSize({ minHeight: Constants.HEADLINE_HEIGHT }) + .justifyContent(FlexAlign.Center) + .padding({ + top: Constants.DEFAULT_PADDING_TOP, + bottom: Constants.DEFAULT_PADDING_BOTTOM, + left: Constants.PADDING_24, + right: Constants.PADDING_24 + }) + } + } + @Builder buildContent(): void { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -97,38 +131,7 @@ struct dialogPlusPage { } Scroll() { Column() { - Row() { - Column() { - Text($r(this.showTitle(), this.appName)) - .textAlign(TextAlign.Center) - .fontSize($r('sys.float.Title_S')) - .fontColor($r('sys.color.font_primary')) - .fontWeight(FontWeight.Bold) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .maxLines(Constants.SECURITY_HEADER_MAX_LINES) - .minFontSize( - getLimitFontSize(getFontSizeScale(), - Constants.DIALOG_TITLE_MAX_SCALE, - $r('sys.float.Subtitle_M'), - $r('sys.float.Title_S')) - ) - .maxFontSize( - getLimitFontSize(getFontSizeScale(), - Constants.DIALOG_TITLE_MAX_SCALE, - $r('sys.float.Title_S'), - $r('sys.float.Title_S')) - ) - .heightAdaptivePolicy(TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST) - } - .constraintSize({ minHeight: Constants.HEADLINE_HEIGHT }) - .justifyContent(FlexAlign.Center) - .padding({ - top: Constants.DEFAULT_PADDING_TOP, - bottom: Constants.DEFAULT_PADDING_BOTTOM, - left: Constants.PADDING_24, - right: Constants.PADDING_24 - }) - } + this.DialogTitle(); Row() { Flex({ justifyContent: FlexAlign.Center }) { diff --git a/permissionmanager/src/main/ets/pages/securityDialog.ets b/permissionmanager/src/main/ets/pages/securityDialog.ets index 31aa81a4803097b760b8bf8af8851f2b68131372..9dfcc53b209241bf07035bbe28b41a1fc973e0f4 100644 --- a/permissionmanager/src/main/ets/pages/securityDialog.ets +++ b/permissionmanager/src/main/ets/pages/securityDialog.ets @@ -19,11 +19,7 @@ import window from '@ohos.window'; import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; import { CustomContentDialog } from '@ohos.arkui.advanced.Dialog'; -import { - Log, - getFontSizeScale, - getLimitFontSize -} from '../common/utils/utils'; +import { Log, getFontSizeScale } from '../common/utils/utils'; import { Param, WantInfo } from '../common/model/typedef'; import { GlobalContext } from '../common/utils/globalContext'; import { preferences } from '@kit.ArkData'; @@ -31,6 +27,14 @@ import bundleResourceManager from '@ohos.bundle.bundleResourceManager'; let storage = LocalStorage.getShared(); +@Extend(Text)function titleText() { + .fontWeight(FontWeight.Bold) + .fontColor($r('sys.color.font_primary')) + .textAlign(TextAlign.Center) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .maxLines(Constants.SECURITY_HEADER_MAX_LINES) +} + @Entry(storage) @Component struct SecurityDialog { @@ -97,6 +101,29 @@ struct SecurityDialog { } }); + @Builder + DialogTitle() { + Column() { + if (getFontSizeScale()) { + Text(this.securityParams[this.index].label) + .titleText() + .fontSize($r('sys.float.Title_S')) + } else { + Text(this.securityParams[this.index].label) + .titleText() + .minFontSize(Constants.TEXT_MIDDLE_FONT_SIZE) + .maxFontSize($r('sys.float.Title_S')) + .heightAdaptivePolicy(TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST) + } + } + .constraintSize({ minHeight: Constants.HEADLINE_HEIGHT }) + .justifyContent(FlexAlign.Center) + .padding({ + top: Constants.DEFAULT_PADDING_TOP, + bottom: Constants.DEFAULT_PADDING_BOTTOM, + }) + } + @Builder buildContent(): void { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -114,6 +141,7 @@ struct SecurityDialog { radius: Constants.SECURITY_ICON_WIDTH * 14 / 54 }) .padding(Constants.PADDING_10) + .pixelRound({ start: PixelRoundCalcPolicy.NO_FORCE_ROUND, end: PixelRoundCalcPolicy.NO_FORCE_ROUND }) if (this.index === 1) { Image(this.securityParams[this.index].icon) .width(Constants.IMAGE_LENGTH_20) @@ -145,34 +173,7 @@ struct SecurityDialog { .backgroundColor($r('app.color.icon_bg')) .borderRadius(Constants.SECURITY_ICON_WIDTH * 14 / 54) Column() { // content - Column() { - Text(this.securityParams[this.index].label) - .textAlign(TextAlign.Center) - .fontColor($r('sys.color.font_primary')) - .fontSize($r('sys.float.Title_S')) - .fontWeight(FontWeight.Bold) - .textOverflow({ overflow: TextOverflow.Ellipsis }) - .maxLines(Constants.SECURITY_HEADER_MAX_LINES) - .minFontSize( - getLimitFontSize(getFontSizeScale(), - Constants.SECURITY_HEADER_MAX_SCALE, - $r('sys.float.Subtitle_M'), - $r('sys.float.Title_S')) - ) - .maxFontSize( - getLimitFontSize(getFontSizeScale(), - Constants.SECURITY_HEADER_MAX_SCALE, - $r('sys.float.Title_S'), - $r('sys.float.Title_S')) - ) - .heightAdaptivePolicy(TextHeightAdaptivePolicy.MIN_FONT_SIZE_FIRST) - } - .constraintSize({ minHeight: Constants.HEADLINE_HEIGHT }) - .justifyContent(FlexAlign.Center) - .padding({ - top: Constants.DEFAULT_PADDING_TOP, - bottom: Constants.DEFAULT_PADDING_BOTTOM, - }) + this.DialogTitle(); Text($r(this.securityParams[this.index].description, this.appName)) .textAlign(TextAlign.Start)