diff --git a/build-profile.json5 b/build-profile.json5 index 16b292c5f260998564de2632affee564eed38fcf..af7a4bf39f1b64fd0be8b0e8356653f5164c10c0 100644 --- a/build-profile.json5 +++ b/build-profile.json5 @@ -4,8 +4,8 @@ { "name": "default", "signingConfig": "default", - "compileSdkVersion": 10, - "compatibleSdkVersion": 10 + "compileSdkVersion": 12, + "compatibleSdkVersion": 12 } ], "signingConfigs": [ diff --git a/common/src/main/ets/default/base/BaseViewModel.ts b/common/src/main/ets/default/base/BaseViewModel.ts index 7850eb345d2b27ae0b8c26ec43f58f31ec154dde..1491f7258113a399d2d146616a9e1243eeb0582d 100644 --- a/common/src/main/ets/default/base/BaseViewModel.ts +++ b/common/src/main/ets/default/base/BaseViewModel.ts @@ -22,7 +22,6 @@ import { launcherAbilityManager } from '../manager/LauncherAbilityManager'; const TAG = 'BaseViewModel'; -const KEY_NAME = 'name'; /** * Base class for view models. @@ -31,6 +30,7 @@ export class BaseViewModel { protected mAppModel: AppModel; protected mResourceManager: ResourceManager; private readonly listener; + private KEY_NAME = 'name'; protected constructor() { this.mAppModel = AppModel.getInstance(); @@ -118,6 +118,6 @@ export class BaseViewModel { } getAppName(cacheKey: string): string { - return this.mResourceManager.getAppResourceCache(cacheKey, KEY_NAME); + return this.mResourceManager.getAppResourceCache(cacheKey, this.KEY_NAME); } } diff --git a/common/src/main/ets/default/bean/MenuInfo.ts b/common/src/main/ets/default/bean/MenuInfo.ts index 5809a17499cf5da391e272081bae4607ff3e4107..70196373d4407ac926347a994e9038efe20fe896 100644 --- a/common/src/main/ets/default/bean/MenuInfo.ts +++ b/common/src/main/ets/default/bean/MenuInfo.ts @@ -47,12 +47,12 @@ export class MenuInfo { /** * shortcut icon Id */ - shortcutIconId = CommonConstants.INVALID_VALUE; + shortcutIconId: number | undefined = CommonConstants.INVALID_VALUE; /** * shortcut label Id */ - shortcutLabelId = CommonConstants.INVALID_VALUE; + shortcutLabelId: number | undefined = CommonConstants.INVALID_VALUE; /** * bundleName diff --git a/common/src/main/ets/default/layoutconfig/LayoutConfigManager.ts b/common/src/main/ets/default/layoutconfig/LayoutConfigManager.ts index 98d0b6a2ce4c82b37645eb011c277e988b420c90..3fe5fcc6056c5753ebca837c0be02c4a6e9216db 100644 --- a/common/src/main/ets/default/layoutconfig/LayoutConfigManager.ts +++ b/common/src/main/ets/default/layoutconfig/LayoutConfigManager.ts @@ -138,9 +138,11 @@ class LayoutConfigManager { private getTargetTypeConfigs(configType: number) { let configArr = new Array(); - configArr = configArr.concat(this.mProductConfig[configType]); - configArr = configArr.concat(this.mFeatureConfig[configType]); - configArr = configArr.concat(this.mCommonConfig[configType]); + if (this.mProductConfig[configType] && this.mFeatureConfig[configType] && this.mCommonConfig[configType]) { + configArr = configArr.concat(this.mProductConfig[configType]); + configArr = configArr.concat(this.mFeatureConfig[configType]); + configArr = configArr.concat(this.mCommonConfig[configType]); + } return configArr; } } diff --git a/common/src/main/ets/default/manager/AmsMissionManager.ts b/common/src/main/ets/default/manager/AmsMissionManager.ts index 5a7120d9e0c4ba138079ca920463602903d46aa1..58253dbddc644e0431ecb5577f1d0456f4575cf5 100644 --- a/common/src/main/ets/default/manager/AmsMissionManager.ts +++ b/common/src/main/ets/default/manager/AmsMissionManager.ts @@ -50,18 +50,17 @@ class AmsMissionManager { * @return {Array} missions */ async getOriginRecentMissionsList(): Promise> { - let missionInfos = new Array(); - await missionManager.getMissionInfos('', AmsMissionManager.RECENT_MISSIONS_LIMIT_NUM) - .then((res) => { - if (!CheckEmptyUtils.isEmptyArr(res)) { - Log.showDebug(TAG, `getOriginRecentMissionsList res.length: ${res.length}`); - missionInfos = res; - } - }) - .catch((err) => { - Log.showError(TAG, `getOriginRecentMissionsList error: ${JSON.stringify(err)}`); - }); - return missionInfos; + try { + let arrayMissionInfo = new Array(); + let res = await missionManager.getMissionInfos('', AmsMissionManager.RECENT_MISSIONS_LIMIT_NUM); + if (!CheckEmptyUtils.isEmptyArr(res)) { + Log.showDebug(TAG, `getOriginRecentMissionsList res.length: ${res.length}`); + arrayMissionInfo = res; + return arrayMissionInfo; + } + } catch (err) { + Log.showError(TAG, `getOriginRecentMissionsList fail, err: ${JSON.stringify(err)}`); + } } /** @@ -149,13 +148,12 @@ class AmsMissionManager { */ async clearMission(missionId: number): Promise { Log.showInfo(TAG, `clearMission Id:${missionId}`); - await missionManager.clearMission(missionId) - .then((data) => { - Log.showDebug(TAG, `clearMission data:${JSON.stringify(data)}`); - }) - .catch((err) => { - Log.showError(TAG, `clearMission err:${JSON.stringify(err)}`); - }); + try { + await missionManager.clearMission(missionId); + Log.showDebug(TAG, 'clearMission success'); + } catch (err) { + Log.showError(TAG, `clearMission fail, err:${JSON.stringify(err)}`); + } } /** @@ -165,13 +163,12 @@ class AmsMissionManager { * @return nothing. */ async clearAllMissions(): Promise { - await missionManager.clearAllMissions() - .then((data) => { - Log.showDebug(TAG, `clearAllMissions data: ${JSON.stringify(data)}`); - }) - .catch((err) => { - Log.showError(TAG, `clearAllMissions err: ${JSON.stringify(err)}`); - }); + try { + await missionManager.clearAllMissions(); + Log.showDebug(TAG, 'clearAllMissions success'); + } catch (err) { + Log.showError(TAG, `clearAllMissions fail, err: ${JSON.stringify(err)}`); + } } /** @@ -227,22 +224,16 @@ class AmsMissionManager { Log.showInfo(TAG, `getMissionSnapShot start! missionId: ${missionId}`); try { let missionSnapshot: missionManager.MissionSnapshot = null; - await missionManager.getMissionSnapShot('', missionId) - .then((res) => { - Log.showDebug(TAG, `getMissionSnapShot ${missionId} success ${JSON.stringify(res)}`); - missionSnapshot = res; - }) - .catch((err) => { - Log.showError(TAG, `getMissionSnapShot error: ${JSON.stringify(err)}`); - }); + missionSnapshot = await missionManager.getMissionSnapShot('', missionId); + Log.showInfo(TAG, 'getMissionSnapShot end'); const imageInfo = await missionSnapshot.snapshot.getImageInfo(); - Log.showDebug(TAG, `getMissionSnapShot success ${JSON.stringify(imageInfo)}`); + Log.showDebug(TAG, `getMissionSnapShot ${missionId} success ${JSON.stringify(imageInfo)}`); snapShotInfo.missionId = missionId; snapShotInfo.snapShotImage = missionSnapshot.snapshot; snapShotInfo.snapShotImageWidth = imageInfo.size.width; snapShotInfo.snapShotImageHeight = imageInfo.size.height; } catch (err) { - Log.showError(TAG, `missionManager.getMissionSnapShot err: ${err}`); + Log.showError(TAG, `missionManager.getMissionSnapShot fail, missionId:${missionId} err: ${JSON.stringify(err)}`); } return snapShotInfo; } @@ -254,13 +245,13 @@ class AmsMissionManager { */ async moveMissionToFront(missionId: number, winMode?: number) { Log.showInfo(TAG, `moveMissionToFront missionId: ${missionId}`); - let promise = winMode ? missionManager.moveMissionToFront(missionId, { windowMode: winMode }) : - missionManager.moveMissionToFront(missionId); - const res = await promise.catch(err => { - Log.showError(TAG, `moveMissionToFront err: ${JSON.stringify(err)}`); - }); - Log.showDebug(TAG, `moveMissionToFront missionId end: ${JSON.stringify(res)}`); - return res; + try { + winMode ? await missionManager.moveMissionToFront(missionId, { windowMode: winMode }): + await missionManager.moveMissionToFront(missionId); + Log.showDebug(TAG, 'moveMissionToFront missionId end success'); + } catch (err) { + Log.showError(TAG, `moveMissionToFront fail, err: ${JSON.stringify(err)}`); + } } } diff --git a/common/src/main/ets/default/manager/FormManager.ts b/common/src/main/ets/default/manager/FormManager.ts index 01bc2493454fa77cc11f6c7b590fbaa704bf022b..474791d65d343948ab93ce6430b38acdcb06b08f 100644 --- a/common/src/main/ets/default/manager/FormManager.ts +++ b/common/src/main/ets/default/manager/FormManager.ts @@ -19,6 +19,7 @@ import { Log } from '../utils/Log'; import { CardItemInfo } from '../bean/CardItemInfo'; import { CommonConstants } from '../constants/CommonConstants'; import { launcherAbilityManager } from './LauncherAbilityManager'; +import { ResourceManager } from './ResourceManager'; const TAG = 'FormManager'; @@ -31,6 +32,7 @@ export class FormManager { private readonly CARD_SIZE_2x4: number[] = [4, 2]; private readonly CARD_SIZE_4x4: number[] = [4, 4]; private readonly CARD_SIZE_6x4: number[] = [6, 4]; + private resourceManager: ResourceManager = ResourceManager.getInstance(); private constructor() { } @@ -56,13 +58,15 @@ export class FormManager { const cardItemInfoList = new Array(); for (const formItem of formList) { const cardItemInfo = new CardItemInfo(); + let description = await this.resourceManager.getAppNameSync(formItem.descriptionId, formItem.bundleName, + formItem.moduleName, formItem.name); cardItemInfo.bundleName = formItem.bundleName; cardItemInfo.abilityName = formItem.abilityName; cardItemInfo.moduleName = formItem.moduleName; cardItemInfo.cardName = formItem.name; cardItemInfo.cardDimension = formItem.defaultDimension; cardItemInfo.area = this.getCardSize(cardItemInfo.cardDimension); - cardItemInfo.description = formItem.description; + cardItemInfo.description = description; cardItemInfo.formConfigAbility = formItem.formConfigAbility; cardItemInfo.supportDimensions = formItem.supportDimensions; cardItemInfoList.push(cardItemInfo); @@ -94,6 +98,8 @@ export class FormManager { const formList = await formManagerAbility.getFormsInfo(bundle); const cardItemInfoList = new Array(); for (const formItem of formList) { + let description = await this.resourceManager.getAppNameSync(formItem.descriptionId, formItem.bundleName, + formItem.moduleName, formItem.name); const cardItemInfo = new CardItemInfo(); cardItemInfo.bundleName = formItem.bundleName; cardItemInfo.abilityName = formItem.abilityName; @@ -101,7 +107,7 @@ export class FormManager { cardItemInfo.cardName = formItem.name; cardItemInfo.cardDimension = formItem.defaultDimension; cardItemInfo.area = this.getCardSize(cardItemInfo.cardDimension); - cardItemInfo.description = formItem.description; + cardItemInfo.description = description; cardItemInfo.formConfigAbility = formItem.formConfigAbility; cardItemInfo.supportDimensions = formItem.supportDimensions; cardItemInfoList.push(cardItemInfo); @@ -163,6 +169,8 @@ export class FormManager { const formList = await formManagerAbility.getFormsInfo(bundle, moduleName); const cardItemInfoList = new Array(); for (const formItem of formList) { + let description = await this.resourceManager.getAppNameSync(formItem.descriptionId, formItem.bundleName, + formItem.moduleName, formItem.name); const cardItemInfo = new CardItemInfo(); cardItemInfo.bundleName = formItem.bundleName; cardItemInfo.abilityName = formItem.abilityName; @@ -170,7 +178,7 @@ export class FormManager { cardItemInfo.cardName = formItem.name; cardItemInfo.cardDimension = formItem.defaultDimension; cardItemInfo.area = this.getCardSize(cardItemInfo.cardDimension); - cardItemInfo.description = formItem.description; + cardItemInfo.description = description; cardItemInfo.formConfigAbility = formItem.formConfigAbility; cardItemInfo.supportDimensions = formItem.supportDimensions; cardItemInfoList.push(cardItemInfo); @@ -187,6 +195,5 @@ export class FormManager { Log.showInfo(TAG, `delete form info by formId:${formId}`); return await formManagerAbility.deleteForm(formId); } - } diff --git a/common/src/main/ets/default/manager/ResourceManager.ts b/common/src/main/ets/default/manager/ResourceManager.ts index bbbb1d32a27c8676bb22e21d74d6ecc4a42d5ce0..c75affbc76bd834e6e7bba3b22860dcb8d5d76c9 100644 --- a/common/src/main/ets/default/manager/ResourceManager.ts +++ b/common/src/main/ets/default/manager/ResourceManager.ts @@ -17,6 +17,8 @@ import resourceManager from '@ohos.resourceManager'; import { Log } from '../utils/Log'; import { CheckEmptyUtils } from '../utils/CheckEmptyUtils'; import AppResourceCacheManager from '../cache/AppResourceCacheManager'; +import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'; +import image from '@ohos.multimedia.image'; const KEY_ICON = 'icon'; const KEY_NAME = 'name'; @@ -66,27 +68,36 @@ export class ResourceManager { } async updateIconCache(iconId, bundleName: string, moduleName: string): Promise { + let cacheKey = `${iconId}${bundleName}${moduleName}`; + const iconBase64 = this.getAppResourceCache(cacheKey, KEY_ICON); + if (!CheckEmptyUtils.isEmpty(iconBase64)) { + return; + } + Log.showDebug(TAG, `updateIconCache bundleName:${bundleName}, moduleName:${moduleName}, iconId: ${iconId}`); try { - let cacheKey = `${iconId}${bundleName}${moduleName}`; - const iconBase64 = this.getAppResourceCache(cacheKey, KEY_ICON); - if (!CheckEmptyUtils.isEmpty(iconBase64)) { - return; - } - Log.showDebug(TAG, `updateIconCache bundleName:${bundleName}, moduleName:${moduleName}, iconId: ${iconId}`); - let moduleContext = globalThis.desktopContext.createModuleContext(bundleName, moduleName); - if (moduleContext == null) { - return; + // 先拿分层图标,拿不到再取普通图标 + let resMgr: resourceManager.ResourceManager = globalThis.desktopContext.createModuleResourceManager(bundleName, moduleName); + let imageDescriptor: DrawableDescriptor = (resMgr.getDrawableDescriptor(Number(iconId), undefined)); + let value: image.PixelMap = imageDescriptor.getPixelMap(); + if (imageDescriptor instanceof LayeredDrawableDescriptor) { + Log.showDebug(TAG, 'updateIconCache layered icon'); + this.setAppResourceCache(cacheKey, KEY_ICON, value); + } else { + let moduleContext = globalThis.desktopContext.createModuleContext(bundleName, moduleName); + if (moduleContext == null) { + return; + } + await moduleContext.resourceManager + .getMediaBase64(iconId) + .then((value) => { + Log.showDebug(TAG, 'updateIconCache normal icon'); + if (value != null) { + this.setAppResourceCache(cacheKey, KEY_ICON, value); + } + }).finally(() => { + moduleContext = null; + }); } - await moduleContext.resourceManager - .getMediaBase64(iconId) - .then((value)=> { - if (value != null) { - this.setAppResourceCache(cacheKey, KEY_ICON, value); - } - }) - .finally(() => { - moduleContext = null; - }); } catch (error) { Log.showError(TAG, `updateIconCache error ${error}`); } diff --git a/common/src/main/ets/default/manager/SettingsDataManager.ts b/common/src/main/ets/default/manager/SettingsDataManager.ts index 2a7512a629036c0a13a3a3ed3c2600ad4e9cef99..877e83b12d267a1667f149d7a98d1ff769af796a 100644 --- a/common/src/main/ets/default/manager/SettingsDataManager.ts +++ b/common/src/main/ets/default/manager/SettingsDataManager.ts @@ -74,11 +74,11 @@ class SettingsDataManager { * Update settingData by settingDataKey. */ setValue(helper: dataShare.DataShareHelper | null, settingDataKey: string, value: string): void { - Log.showInfo(TAG, 'setValue:' + value) - if (typeof globalThis.desktopContext === 'undefined') { - settings.setValueSync(globalThis.settingsContext as Context, settingDataKey, value); - } else { + Log.showInfo(TAG, 'setValue:' + value); + try { settings.setValueSync(globalThis.desktopContext as Context, settingDataKey, value); + } catch (err) { + Log.showError(TAG, `Update settingData by settingDataKey err: ${err.message || err?.code}`); } } @@ -89,10 +89,10 @@ class SettingsDataManager { */ getValue(helper: dataShare.DataShareHelper | null, settingDataKey: string, defaultValue: string): string { let value: string = '1'; - if (typeof globalThis.desktopContext === 'undefined') { - value = settings.getValueSync(globalThis.settingsContext as Context, settingDataKey, defaultValue); - } else { + try { value = settings.getValueSync(globalThis.desktopContext as Context, settingDataKey, defaultValue); + } catch (err) { + Log.showError(TAG, `get settingDataValue by settingDataKey err: ${err.message || err?.code}`); } Log.showInfo(TAG, 'getValue:' + value); return value; diff --git a/common/src/main/ets/default/model/FormModel.ts b/common/src/main/ets/default/model/FormModel.ts index 77b0ea9ed1778cdd316f0e302e33cf6915ce0dbc..4a86db0af10c664ef521c3f4dd3803722c448cd5 100644 --- a/common/src/main/ets/default/model/FormModel.ts +++ b/common/src/main/ets/default/model/FormModel.ts @@ -83,19 +83,17 @@ export class FormModel { */ async getFormsInfoByBundleName(bundleName: string, callback?) { Log.showDebug(TAG, `getFormsInfoByBundleName bundleName: ${bundleName}`); - let currentBundleFormsInfo: any; - await this.mFormManager.getFormsInfoByApp(bundleName) - .then(bundleFormsInfo => { - currentBundleFormsInfo = bundleFormsInfo; - if (callback != undefined) { - callback(bundleName, bundleFormsInfo); - } - }) - .catch(err => { - Log.showError(TAG, `getFormsInfoByBundleName err: ${JSON.stringify(err)}`); - }); - AppStorage.setOrCreate('formMgrItem', currentBundleFormsInfo); - return currentBundleFormsInfo; + let currentBundleFormsInfo: CardItemInfo[]; + try { + currentBundleFormsInfo = await this.mFormManager.getFormsInfoByApp(bundleName); + if (callback != undefined) { + callback(bundleName, currentBundleFormsInfo); + } + AppStorage.setOrCreate('formMgrItem', currentBundleFormsInfo); + return currentBundleFormsInfo; + } catch (err) { + Log.showError(TAG, `getFormsInfoByBundleName bundleName:${bundleName} err: ${JSON.stringify(err)}`); + } } /** @@ -198,7 +196,7 @@ export class FormModel { this.mAppItemFormInfoMap.delete(bundleName); return; } - const formsInfoList = this.getFormsInfoByBundleName(bundleName, this.setAppItemFormInfo.bind(this)); + this.getFormsInfoByBundleName(bundleName, this.setAppItemFormInfo.bind(this)); } /** diff --git a/common/src/main/ets/default/uicomponents/FolderComponent.ets b/common/src/main/ets/default/uicomponents/FolderComponent.ets index cd8b0137377345fa62282fab67dcad0e5ee660ce..6f01eb59c4bcd6e8d63655bd982b97652b03b8bf 100644 --- a/common/src/main/ets/default/uicomponents/FolderComponent.ets +++ b/common/src/main/ets/default/uicomponents/FolderComponent.ets @@ -335,10 +335,10 @@ export struct FolderComponent { Log.showInfo(TAG, `onHover isHover:${isHover}`); this.isHover = isHover; }) - .bindContextMenu(this.MenuBuilder, ResponseType.LongPress) .onDragStart((event: DragEvent) => { return this.dragStart(event); }) + .bindContextMenu(this.MenuBuilder, ResponseType.LongPress) .onDragEnd((event: DragEvent, extraParams: string) => { Log.showInfo(TAG, `onDragEnd event: [${event.getWindowX()}, ${event.getWindowY()}]` + event.getResult()); AppStorage.setOrCreate('dragItemInfo', new LauncherDragItemInfo()); diff --git a/common/src/main/ets/default/uicomponents/FormItemComponent.ets b/common/src/main/ets/default/uicomponents/FormItemComponent.ets index 00a3b8a8646c004306ba837dd291a4ddb9d51273..f9ef0f0435784076a2e9750728ef8b9bec1da8d8 100644 --- a/common/src/main/ets/default/uicomponents/FormItemComponent.ets +++ b/common/src/main/ets/default/uicomponents/FormItemComponent.ets @@ -103,10 +103,10 @@ export struct FormItemComponent { this.clickForm(event, this.formItem); } }) - .bindContextMenu(this.MenuBuilder, ResponseType.LongPress) .onDragStart((event: DragEvent, extraParams: string) => { return this.dragStart(event); }) + .bindContextMenu(this.MenuBuilder, ResponseType.LongPress) .onDragEnd((event: DragEvent, extraParams: string) => { Log.showInfo(TAG, `onDragEnd event: [${event.getWindowX()}, ${event.getWindowY()}]` + event.getResult()); AppStorage.setOrCreate('dragItemInfo', new LauncherDragItemInfo()); diff --git a/common/src/main/ets/default/utils/Trace.ts b/common/src/main/ets/default/utils/Trace.ts index 9ec8d0485a9266ed3689987bc1f87bfd0b89d206..b4299e531b05c320c6c35133b75d03a0cda5be52 100644 --- a/common/src/main/ets/default/utils/Trace.ts +++ b/common/src/main/ets/default/utils/Trace.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import byTrace from '@ohos.bytrace'; +import hiTraceMeter from '@ohos.hiTraceMeter'; import { Log } from './Log'; /** @@ -52,7 +52,7 @@ export class Trace { globalThis.taskIdMap.set(methodName, taskId); } Log.showDebug(this.TRACE_TAG, `start trace taskId: ${taskId}`); - byTrace.startTrace(this.TRACE_TAG + methodName, taskId, Trace.TRACE_LIMIT); + hiTraceMeter.startTrace(this.TRACE_TAG + methodName, taskId); } private static init() { @@ -77,6 +77,6 @@ export class Trace { return; } Log.showDebug(this.TRACE_TAG, `end trace taskId: ${taskId}`); - byTrace.finishTrace(this.TRACE_TAG + methodName, taskId); + hiTraceMeter.finishTrace(this.TRACE_TAG + methodName, taskId); } } \ No newline at end of file diff --git a/feature/appcenter/src/main/ets/default/layout/AppGridLayout.ets b/feature/appcenter/src/main/ets/default/layout/AppGridLayout.ets index 13eefe77aba1d3c453c0c0b24ce68b2e14593fb0..33dbc979ead7dac7631b3e2cef0d4f7630190ee0 100644 --- a/feature/appcenter/src/main/ets/default/layout/AppGridLayout.ets +++ b/feature/appcenter/src/main/ets/default/layout/AppGridLayout.ets @@ -106,9 +106,13 @@ export struct AppGridLayout { menu.bundleName = value.bundleName; menu.moduleName = value.moduleName; menu.onMenuClick = () => { - this.mAppGridViewModel.jumpTo( - value.wants[0].targetAbility, value.wants[0].targetBundle, value.wants[0].targetModule - ); + if (value.wants) { + this.mAppGridViewModel.jumpTo( + value.wants[0].targetAbility, value.wants[0].targetBundle, value.wants[0].targetModule + ); + } else { + Log.showError(TAG, 'value.wants is undefined or empty'); + } }; value.bundleName == appInfo.bundleName && value.moduleName == appInfo.moduleName && menuInfoList.push(menu); }); diff --git a/feature/bigfolder/src/main/ets/default/common/uicomponents/FolderAppListDialog.ets b/feature/bigfolder/src/main/ets/default/common/uicomponents/FolderAppListDialog.ets index ae5079c7b1385ccfc331f466bdd9b9d7a98aaf13..1b4329621220b9abb820a2dfddc24821c79c09af 100644 --- a/feature/bigfolder/src/main/ets/default/common/uicomponents/FolderAppListDialog.ets +++ b/feature/bigfolder/src/main/ets/default/common/uicomponents/FolderAppListDialog.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import { AppItemInfo, FolderData, Log } from '@ohos/common'; +import { AppItemInfo, CheckEmptyUtils, FolderData, LauncherDragItemInfo, Log } from '@ohos/common'; import { AppIcon } from '@ohos/common/component'; import { AppName } from '@ohos/common/component'; import { CommonConstants } from '@ohos/common'; @@ -46,6 +46,7 @@ export default struct FolderAppListDialog { private mFolderStyleConfig: BigFolderStyleConfig = this.mBigFolderViewModel.getFolderStyleConfig(); private mDialogHeight: number = 0; private mGridHeight: number = 0; + private addCheckedList: Array = []; controller?: CustomDialogController; cancel = () => {}; confirm = (isDestory: boolean) => {}; @@ -140,13 +141,16 @@ export default struct FolderAppListDialog { appItem = item; appItem.area = [1, 1]; appItem.typeId = CommonConstants.TYPE_APP; + this.addCheckedList.push(appItem); this.appListChecked.push(appItem); } else { item.checked = false; + this.addCheckedList = this.addCheckedList.filter(value => value.bundleName !== item.bundleName); let index = this.appListChecked.indexOf(item); this.appListChecked.splice(index, 1); } AppStorage.setOrCreate('appListChecked', this.appListChecked); + AppStorage.setOrCreate('selectAppItemList', this.addCheckedList); }) } } diff --git a/feature/bigfolder/src/main/ets/default/viewmodel/BigFolderViewModel.ts b/feature/bigfolder/src/main/ets/default/viewmodel/BigFolderViewModel.ts index b4f727062ea6530a0ca68df5a448faf87e59a46a..1867d6755542bc7c759e9f2c328aaadde9d873f0 100644 --- a/feature/bigfolder/src/main/ets/default/viewmodel/BigFolderViewModel.ts +++ b/feature/bigfolder/src/main/ets/default/viewmodel/BigFolderViewModel.ts @@ -38,6 +38,10 @@ import { BigFolderStyleConstants } from '../common/constants/BigFolderStyleConst const TAG = 'BigFolderViewModel'; +interface AppListInfo { + appGridInfo: LauncherDragItemInfo[][] +} + export class BigFolderViewModel extends BaseViewModel { private readonly mSettingsModel: SettingsModel; private readonly mBigFolderModel: BigFolderModel; @@ -415,19 +419,46 @@ export class BigFolderViewModel extends BaseViewModel { for (let i = 0; i < layoutInfo.layoutDescription.pageCount; i++) { pageItemMap.set(i.toString(), 0); } - for (let i = 0; i < layoutInfo.layoutInfo.length; i++) { - const tmpPage = layoutInfo.layoutInfo[i].page.toString(); + const tmpPage = layoutInfo.layoutInfo[i].page.toString(); pageItemMap.set(tmpPage, pageItemMap.get(tmpPage) + 1); } + let appListInfo: AppListInfo | undefined = AppStorage.get('appListInfo'); + let addCheckedList: LauncherDragItemInfo[] = AppStorage.get('selectAppItemList'); const blankPages = []; - for (let [page, count] of pageItemMap) { - if (count === 0) { - layoutInfo.layoutDescription.pageCount--; - blankPages.push(page); + appListInfo?.appGridInfo.forEach((item: LauncherDragItemInfo[], index) => { + if (CheckEmptyUtils.isEmptyArr(item)) { + return; } - } + // Each page of apps can be found in the list of apps added + let isEvery = item.every((itemEvery) => { + return addCheckedList.find((itemFind) => { + return itemEvery.bundleName === itemFind.bundleName; + }); + }) + if (!isEvery) { + return; + } + layoutInfo.layoutDescription.pageCount--; + let page = pageItemMap.get(index.toString()); + blankPages.push(page); + }) + + // Dissolve Delete separate large folders + appListInfo?.appGridInfo.forEach((item: LauncherDragItemInfo[], index)=> { + if (item.length == 1 && item[0].folderId) { + let isFolder = layoutInfo.layoutInfo.find((value)=> { + return value.folderId === item[0].folderId; + }) + if (!isFolder) { + let page = pageItemMap.get(index.toString()); + blankPages.push(page); + layoutInfo.layoutDescription.pageCount = layoutInfo.layoutDescription.pageCount - 1; + } + } + }) + for (let m = 0; m < layoutInfo.layoutInfo.length; m++) { let pageMinus = 0; for (let n = 0; n < blankPages.length; n++) { @@ -435,10 +466,15 @@ export class BigFolderViewModel extends BaseViewModel { pageMinus++; } } - if (pageMinus != 0) { + let isSome: LauncherDragItemInfo = addCheckedList.find((itemFind) => { + return itemFind.bundleName !== layoutInfo.layoutInfo[m].bundleName; + }) + let isSomePage: boolean = layoutInfo.layoutInfo[m].page > isSome.page; + if (isSome && pageMinus !=0 && isSomePage) { layoutInfo.layoutInfo[m].page = layoutInfo.layoutInfo[m].page - pageMinus; } } + AppStorage.setOrCreate('selectAppItemList', []); this.mSettingsModel.setLayoutInfo(layoutInfo); localEventManager.sendLocalEventSticky(EventConstants.EVENT_REQUEST_PAGEDESK_ITEM_UPDATE, null); } diff --git a/feature/form/src/main/ets/default/view/FormManagerComponent.ets b/feature/form/src/main/ets/default/view/FormManagerComponent.ets index e2ba2c041570b69bc8cd32feb5d7b7be19c30b2a..b395b4257fcb70d75a50faae78f52aeaf56749b1 100644 --- a/feature/form/src/main/ets/default/view/FormManagerComponent.ets +++ b/feature/form/src/main/ets/default/view/FormManagerComponent.ets @@ -37,8 +37,8 @@ export struct FormManagerComponent { private mFormModel: FormModel = FormModel.getInstance(); private mSwiperIndex: number = 0; @State enabledDomEventResponse: boolean = true; - @State chooseCardId: number = -1; - private mFormIdList: number[] = []; + @State chooseCardId: number | undefined = -1; + private mFormIdMap: Map = new Map(); private mFormComponentWidth: number[] = [ StyleConstants.FORM_MGR_FORM_SIZE * StyleConstants.DPI_RATIO * 2, StyleConstants.FORM_MGR_FORM_SIZE * StyleConstants.DPI_RATIO * 2, @@ -86,9 +86,9 @@ export struct FormManagerComponent { * @return {any} formCardItem */ private getChooseCard() { - this.chooseCardId = this.mFormIdList[this.mSwiperIndex]; + this.chooseCardId = this.mFormIdMap.get(this.mSwiperIndex); let formCardItem: CardItemInfo = new CardItemInfo(); - formCardItem.cardId = this.mFormIdList[this.mSwiperIndex]; + formCardItem.cardId = this.mFormIdMap.get(this.mSwiperIndex); let count = 0; let isStop = false; for (let i = 0; i < this.formItem.length; i++) { @@ -117,10 +117,9 @@ export struct FormManagerComponent { * Keep the form which be added to the desktop, and delete the remaining forms. */ private clearNoUseFormById(): void { - let id = this.mFormIdList[this.mSwiperIndex]; - for (let i = 0; i < this.mFormIdList.length; i++) { + for (let i = 0; i < this.mFormIdMap.size; i++) { if (i != this.mSwiperIndex) { - this.mFormModel.deleteFormByFormID(this.mFormIdList[i]); + this.mFormModel.deleteFormByFormID(this.mFormIdMap.get(i)); } } } @@ -129,8 +128,8 @@ export struct FormManagerComponent { * Delete all form by id. */ private clearAllFormById(): void { - for (let i = 0; i < this.mFormIdList.length; i++) { - this.mFormModel.deleteFormByFormID(this.mFormIdList[i]); + for (let i = 0; i < this.mFormIdMap.size; i++) { + this.mFormModel.deleteFormByFormID(this.mFormIdMap.get(i)); } } @@ -192,8 +191,11 @@ export struct FormManagerComponent { .allowUpdate(this.allowUpdate) .visibility(Visibility.Visible) .onAcquired((form) => { - Log.showDebug(TAG, `FormComponent card id is: ${form.id}`); - this.mFormIdList.push(form.id); + let currentIndex = this.calculateIndex(formItem, dimensionItem); + Log.showInfo(TAG, `FormComponent card id is: ${form.id}, currentIndex: ${currentIndex}`); + if (currentIndex >= 0) { + this.mFormIdMap.set(currentIndex, form.id); + } }) .onError((error) => { Log.showDebug(TAG, `FormComponent error msg: ${error.msg}`); @@ -255,4 +257,25 @@ export struct FormManagerComponent { .height(StyleConstants.DEFAULT_LAYOUT_PERCENTAGE) .backgroundImage(StyleConstants.DEFAULT_FORM_MGR_BACKGROUND_IMAGE) } + + private calculateIndex(formInfo: CardItemInfo, dimension: number): number { + let count = 0; + for (let i = 0; i < this.formItem.length; i++) { + let tempItem = this.formItem[i]; + if (formInfo.cardName !== tempItem.cardName || + formInfo.bundleName !== tempItem.bundleName || + formInfo.abilityName !== tempItem.abilityName || + formInfo.moduleName !== tempItem.moduleName) { + count += tempItem.supportDimensions.length; + continue; + } + for (let j = 0; j < formInfo.supportDimensions.length; j++) { + if (dimension === formInfo.supportDimensions[j]) { + return count; + } + count++; + } + } + return -1; + } } diff --git a/feature/gesturenavigation/src/main/ets/default/common/GestureNavigationManager.ts b/feature/gesturenavigation/src/main/ets/default/common/GestureNavigationManager.ts index 983644372a3777745f2119578bb90e52079c7212..fa1390960dade6807fe363a27832d390950196f9 100644 --- a/feature/gesturenavigation/src/main/ets/default/common/GestureNavigationManager.ts +++ b/feature/gesturenavigation/src/main/ets/default/common/GestureNavigationManager.ts @@ -55,7 +55,11 @@ export class GestureNavigationManager { private registerListenForDataChanges(callback: AsyncCallback) { this.helper = settingsDataManager.getHelper(globalThis.desktopContext, this.uri); Log.showInfo(TAG, 'helper:' + this.helper + 'registerListenForDataChanges uri:' + this.uri); - this.helper.on('dataChange', this.uri, callback); + try { + this.helper.on('dataChange', this.uri, callback); + } catch (err) { + Log.showError(TAG, `Monitor data changes by dataShare err: ${err.message || err?.code}`); + } } initWindowSize(display: display.Display) { diff --git a/feature/pagedesktop/src/main/ets/default/common/components/GridSwiper.ets b/feature/pagedesktop/src/main/ets/default/common/components/GridSwiper.ets index c60a8b20ac8a90d01e03f52533437d5a1da381f1..a6754939ae4904d8f0b49015980c74bba1425812 100644 --- a/feature/pagedesktop/src/main/ets/default/common/components/GridSwiper.ets +++ b/feature/pagedesktop/src/main/ets/default/common/components/GridSwiper.ets @@ -85,6 +85,7 @@ export default struct GridSwiper { } private buildLog(): boolean { + AppStorage.setOrCreate('dockAddedPage', this.pageList); let isDesktopLoadFinished = AppStorage.get('isDesktopLoadFinished') as boolean; Log.showDebug(TAG, `build start ${isDesktopLoadFinished} page ${this.pageIndex}`); return isDesktopLoadFinished == true; diff --git a/feature/pagedesktop/src/main/ets/default/viewmodel/PageDesktopViewModel.ts b/feature/pagedesktop/src/main/ets/default/viewmodel/PageDesktopViewModel.ts index 2e62f206edc9517c2833dfa7c2cb4b519d2042e6..2d4ab7d4cd533ac1c194a4887fc35fccb5efe631 100644 --- a/feature/pagedesktop/src/main/ets/default/viewmodel/PageDesktopViewModel.ts +++ b/feature/pagedesktop/src/main/ets/default/viewmodel/PageDesktopViewModel.ts @@ -998,8 +998,8 @@ export class PageDesktopViewModel extends BaseViewModel { /** * Delete the chosen blank page. */ - private deleteBlankPage(): void { - const curPageIndex = this.mPageDesktopModel.getPageIndex(); + deleteBlankPage(pageIndex?:number): void { + const curPageIndex = pageIndex !== undefined ? pageIndex : this.mPageDesktopModel.getPageIndex(); this.deleteGridPage(curPageIndex); if (curPageIndex === 0) { this.mPageDesktopModel.setPageIndex(curPageIndex); diff --git a/feature/recents/src/main/ets/default/view/RecentMissionsSingleLayout.ets b/feature/recents/src/main/ets/default/view/RecentMissionsSingleLayout.ets index 30eedf103ec15eb2d442c9145b637ed9f5aefcf7..68fcc3f26ef6de94a3cd5c5419307befbde16d4d 100644 --- a/feature/recents/src/main/ets/default/view/RecentMissionsSingleLayout.ets +++ b/feature/recents/src/main/ets/default/view/RecentMissionsSingleLayout.ets @@ -24,10 +24,15 @@ const TAG = 'RecentMissionsSingleLayout'; */ @Component export struct RecentMissionsSingleLayout { - @Link recentMissionsSingleList: RecentMissionInfo[]; + @Link @Watch('refreshList') recentMissionsSingleList: RecentMissionInfo[]; @Link isClickSubComponent: boolean; @StorageLink('recentIdx') recentIdx: number = 0; private mRecentMissionsViewModel?: RecentMissionsViewModel; + scroller: Scroller = new Scroller() + + refreshList() { + this.scroller.scrollEdge(Edge.Start) + } aboutToAppear(): void { this.mRecentMissionsViewModel = RecentMissionsViewModel.getInstance(); @@ -37,7 +42,11 @@ export struct RecentMissionsSingleLayout { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) { // middle area, mission list Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { - List({ space: RecentsStyleConstants.SINGLE_LIST_MIDDLE_AREA_SPACE, initialIndex: this.recentIdx}) { + List({ + space: RecentsStyleConstants.SINGLE_LIST_MIDDLE_AREA_SPACE, + initialIndex: this.recentIdx, + scroller: this.scroller + }) { ForEach(this.recentMissionsSingleList, (item: RecentMissionInfo) => { ListItem() { RecentMissionCard({ diff --git a/feature/recents/src/main/ets/default/viewmodel/RecentMissionsViewModel.ts b/feature/recents/src/main/ets/default/viewmodel/RecentMissionsViewModel.ts index b67256ce67a52635b26223c7a9cc248105a7963c..155cad83252a6fdf324b3a71673bc1a66574069c 100644 --- a/feature/recents/src/main/ets/default/viewmodel/RecentMissionsViewModel.ts +++ b/feature/recents/src/main/ets/default/viewmodel/RecentMissionsViewModel.ts @@ -114,6 +114,7 @@ export class RecentMissionsViewModel { if (this.mRecentMissionsList && this.mRecentMissionsList.length) { windowManager.minimizeAllApps(); } + AppStorage.setOrCreate('recentMissionsList', this.mRecentMissionsList); return; } animateTo({ diff --git a/feature/smartdock/src/main/ets/default/layout/ResidentLayout.ets b/feature/smartdock/src/main/ets/default/layout/ResidentLayout.ets index 14a8bf175d8e193a9180c1d2cce784d8be8a911e..77795634889aba7ba43d90a73ef1b1edb0a799cc 100644 --- a/feature/smartdock/src/main/ets/default/layout/ResidentLayout.ets +++ b/feature/smartdock/src/main/ets/default/layout/ResidentLayout.ets @@ -29,6 +29,9 @@ import { } from '@ohos/common'; import { SmartDockStyleConfig } from '../config/SmartDockStyleConfig'; import SmartDockDragHandler from '../common/SmartDockDragHandler'; +import { + PageDesktopViewModel +} from '../../../../../../pagedesktop/src/main/ets/default/viewmodel/PageDesktopViewModel'; let mSmartDockStyleConfig: SmartDockStyleConfig | null = null; const TAG = 'ResidentLayout'; @@ -48,6 +51,7 @@ export default struct ResidentLayout { onItemClick: (event: ClickEvent, item: DockItemInfo) => void = (event: ClickEvent, item: DockItemInfo) => {}; buildMenu: (item: DockItemInfo) => MenuInfo[] = (item: DockItemInfo): MenuInfo[] => []; onDockListChangeFunc: () => void = () => {}; + oldPageList:number[] = [0]; aboutToAppear(): void { mSmartDockStyleConfig = this.mSmartDockStyleConfig; @@ -120,9 +124,17 @@ export default struct ResidentLayout { }) .onDragLeave((event: DragEvent, extraParams: string) => { Log.showDebug(TAG, `onDragLeave event: [${event.getWindowX()}, ${event.getWindowY()}]`); + let oldPageList: number[] | undefined = AppStorage.get('dockAddedPage'); + if (oldPageList) { + this.oldPageList = [...oldPageList]; + } }) .onDrop((event: DragEvent, extraParams: string) => { Log.showInfo(TAG, `onDrop event: [${event.getWindowX()}, ${event.getWindowY()}]`); + let newPageList: number[] | undefined = AppStorage.get('dockAddedPage'); + if (newPageList && newPageList?.length !== this.oldPageList?.length) { + PageDesktopViewModel.getInstance().deleteBlankPage(newPageList[newPageList.length - 1]); + } const dragResult = SmartDockDragHandler.getInstance().onDragDrop(event.getWindowX(), event.getWindowY()); AppStorage.setOrCreate('selectAppIndex', null); const dragItemInfo: LauncherDragItemInfo = AppStorage.get('dragItemInfo') as LauncherDragItemInfo; diff --git a/oh-package.json5 b/oh-package.json5 index 9ab36ac23f8b14df7c7ffe74d571607a50a676ec..cbed796d4b1b8c781dee0c4030a101906b17a322 100644 --- a/oh-package.json5 +++ b/oh-package.json5 @@ -1,9 +1,10 @@ { + "modelVersion": "5.0.1", "devDependencies": { "@ohos/hypium": "1.0.6" }, "name": "launcher", "description": "", "version": "1.0.0", - "dependencies": {} -} + "dependencies": {}, +} \ No newline at end of file diff --git a/product/pad/src/main/ets/MainAbility/MainAbility.ts b/product/pad/src/main/ets/MainAbility/MainAbility.ts index 5a3f8134fa296229dcd6e3d805ee05d77e1666db..6583f2508579ad2486fe015cc1a6fcb9f8ecd171 100644 --- a/product/pad/src/main/ets/MainAbility/MainAbility.ts +++ b/product/pad/src/main/ets/MainAbility/MainAbility.ts @@ -87,13 +87,14 @@ export default class MainAbility extends ServiceExtension { } private registerInputConsumer(): void { - // register/unregister HOME inputConsumer - inputConsumer.on('key', { + let onKeyCodeHome = { preKeys: [], finalKey: KeyCode.KEYCODE_HOME, finalKeyDownDuration: 0, isFinalKeyDown: true - }, () => { + } + // register/unregister HOME inputConsumer + inputConsumer.on('key', onKeyCodeHome, () => { Log.showInfo(TAG, 'HOME inputConsumer homeEvent start'); globalThis.desktopContext.startAbility({ bundleName: CommonConstants.LAUNCHER_BUNDLE, @@ -106,33 +107,36 @@ export default class MainAbility extends ServiceExtension { Log.showDebug(TAG, 'HOME inputConsumer startAbility Promise in service failed.'); }); }); - // register/unregister RECENT inputConsumer - inputConsumer.on('key', { + let onKeyCodeFunction = { preKeys: [], finalKey: KeyCode.KEYCODE_FUNCTION, finalKeyDownDuration: 0, isFinalKeyDown: true - }, () => { + } + // register/unregister RECENT inputConsumer + inputConsumer.on('key', onKeyCodeFunction, () => { Log.showInfo(TAG, 'RECENT inputConsumer recentEvent start'); windowManager.createWindowWithName(windowManager.RECENT_WINDOW_NAME, windowManager.RECENT_RANK); }); } private unregisterInputConsumer(): void { - // unregister HOME inputConsumer - inputConsumer.off('key', { + let offKeyCodeHome = { preKeys: [], finalKey: KeyCode.KEYCODE_HOME, finalKeyDownDuration: 0, isFinalKeyDown: true - }); - // unregister RECENT inputConsumer - inputConsumer.off('key', { + } + // unregister HOME inputConsumer + inputConsumer.off('key', offKeyCodeHome); + let offKeyCodeFunction = { preKeys: [], finalKey: KeyCode.KEYCODE_FUNCTION, finalKeyDownDuration: 0, isFinalKeyDown: true - }); + } + // unregister RECENT inputConsumer + inputConsumer.off('key', offKeyCodeFunction); } private initGlobalConst(): void { diff --git a/product/phone/src/main/ets/MainAbility/MainAbility.ts b/product/phone/src/main/ets/MainAbility/MainAbility.ts index 26d629c296b7b8f2085b380f606d8781e2564b8d..3a5095a1f57a714689afe3325e61850ef1065482 100644 --- a/product/phone/src/main/ets/MainAbility/MainAbility.ts +++ b/product/phone/src/main/ets/MainAbility/MainAbility.ts @@ -89,13 +89,14 @@ export default class MainAbility extends ServiceExtension { } private registerInputConsumer(): void { - // register/unregister HOME inputConsumer - inputConsumer.on('key', { + let onKeyCodeHome = { preKeys: [], finalKey: KeyCode.KEYCODE_HOME, finalKeyDownDuration: 0, isFinalKeyDown: true - }, () => { + } + // register/unregister HOME inputConsumer + inputConsumer.on('key', onKeyCodeHome, () => { Log.showInfo(TAG, 'HOME inputConsumer homeEvent start'); globalThis.desktopContext.startAbility({ bundleName: CommonConstants.LAUNCHER_BUNDLE, @@ -108,33 +109,36 @@ export default class MainAbility extends ServiceExtension { Log.showDebug(TAG, 'HOME inputConsumer startAbility Promise in service failed.'); }); }); - // register/unregister RECENT inputConsumer - inputConsumer.on('key', { + let onKeyCodeFunction = { preKeys: [], finalKey: KeyCode.KEYCODE_FUNCTION, finalKeyDownDuration: 0, isFinalKeyDown: true - }, () => { + } + // register/unregister RECENT inputConsumer + inputConsumer.on('key', onKeyCodeFunction, () => { Log.showInfo(TAG, 'RECENT inputConsumer recentEvent start'); windowManager.createWindowWithName(windowManager.RECENT_WINDOW_NAME, windowManager.RECENT_RANK); }); } private unregisterInputConsumer(): void { - // unregister HOME inputConsumer - inputConsumer.off('key', { + let offKeyCodeHome = { preKeys: [], finalKey: KeyCode.KEYCODE_HOME, finalKeyDownDuration: 0, isFinalKeyDown: true - }); - // unregister RECENT inputConsumer - inputConsumer.off('key', { + } + // unregister HOME inputConsumer + inputConsumer.off('key', offKeyCodeHome); + let offKeyCodeFunction = { preKeys: [], finalKey: KeyCode.KEYCODE_FUNCTION, finalKeyDownDuration: 0, isFinalKeyDown: true - }); + } + // unregister RECENT inputConsumer + inputConsumer.off('key', offKeyCodeFunction); } private initGlobalConst(): void { @@ -181,7 +185,7 @@ export default class MainAbility extends ServiceExtension { onConfigurationUpdate(config): void { Log.showInfo(TAG, 'onConfigurationUpdated, config:' + JSON.stringify(config)); const systemLanguage = AppStorage.get('systemLanguage'); - if(systemLanguage !== config.language) { + if(systemLanguage && systemLanguage !== config.language) { this.clearCacheWhenLanguageChange(); } AppStorage.setOrCreate('systemLanguage', config.language); diff --git a/product/phone/src/main/ets/pages/EntryView.ets b/product/phone/src/main/ets/pages/EntryView.ets index e4f581ea65b9e7decd61c2c2402aaada36d4e1eb..7159e57b0c50d4dac95069d8fa710fa0ea2d0819 100644 --- a/product/phone/src/main/ets/pages/EntryView.ets +++ b/product/phone/src/main/ets/pages/EntryView.ets @@ -82,7 +82,7 @@ struct EntryView { try { AppStorage.setOrCreate('firstActivate', false); AppStorage.setOrCreate('loaded', true); - systemParameter.set('bootevent.launcher.ready', 'true'); + systemParameter.setSync('bootevent.launcher.ready', 'true'); } catch (err) { Log.showError(TAG, `set voteBootEvent err, ${JSON.stringify(err)}`); }