* Copyright (c) 2021-2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { DragGridItem } from '@ohos/componentdrag';
import { AppItemInfo } from './AppItemInfo';
import { ExtraInfo } from './ExtraInfo';
import { GameCardInfo } from './GameCardInfo';
import GridLayoutItemBuilder from './GridLayoutItemBuilder';
import type { ShortcutInfo } from '../bean/ReceiveEventInfo';
* Item info of GridLayoutInfo item.
*/
export default class GridLayoutItemInfo extends ExtraInfo implements DragGridItem {
* componentId
*/
public componentId?: string;
* GridLayoutItemInfo: id
*/
public id?: number;
* GridLayoutItemInfo: infoId
*/
public infoId?: string;
* GridLayoutItemInfo: infoName
*/
public infoName?: string;
* GridLayoutItemInfo: cardId
*/
public cardId?: string;
* GridLayoutItemInfo: ID of the bigfolder.
*/
public folderId?: string;
* GridLayoutItemInfo: ID of the formstack.
*/
public formStackId?: string;
* GridLayoutItemInfo: bigfolder id
* Not in bigfolder: - 100
* In a bigfolder: ID of the bigfolder.
*/
public container?: number;
* GridLayoutItemInfo: bigfolder Name
*/
public folderName?: string;
* GridLayoutItemInfo: badgeNumber
*/
public badgeNumber?: number;
* GridLayoutItemInfo: type 0:app 1:card 3:bigfolder
*/
public typeId?: number;
* GridLayoutItemInfo: appCatagory
*/
public appCatagory?: number;
* GridLayoutItemInfo: file/folder uri
*/
public uri?: string;
* GridLayoutItemInfo: file/folder name
*/
public fileFolderName?: string;
* GridLayoutItemInfo: file type. 0: folder, 1: file, etc.
*/
public fileType?: number;
* GridLayoutItemInfo: file/folder Unique Identifier
*/
public ino?: string;
* GridLayoutItemInfo: area
*/
public area?: number[];
* GridLayoutItemInfo: page
*/
public page?: number;
* GridLayoutItemInfo: column of positions
*/
public column?: number;
* GridLayoutItemInfo: row of positions
*/
public row?: number;
* Indicates bundleName.
*/
public bundleName: string = '';
* Indicates bundleName.
*/
public oldBundleNames?: string[] = [];
* Indicates keyName.
*/
public keyName?: string;
* Indicates abilityName.
*/
public abilityName: string = '';
* Indicates moduleName.
*/
public moduleName?: string;
* GridLayoutItemInfo[]: bigFolder apps info
*/
public layoutInfo?: Array<GridLayoutItemInfo[]>;
* Indicates appIconId.
*/
public appIconId: number = 0;
* Indicates appIconId.
*/
public appLabelId?: number;
* Indicates form refresh date.
*/
public formRefreshDate?: string;
* GridLayoutItemInfo: extend1
*/
public extend1?: string;
* GridLayoutItemInfo: extend2
*/
public extend2?: string;
* GridLayoutItemInfo: extend3
*/
public extend3?: number;
public negativeId: number = 0;
public isSelect: boolean = false;
差分操作类型
*/
public operation?: string;
应用插入目标文件夹ID
*/
public targetFolderId?: string;
应用插入文件夹部位
*/
public addPosition?: string;
被替换元素包名或文件夹ID
*/
public replacement?: string;
被替换元素类型
*/
public replacementTypeId?: number;
指定落位元素包名或文件夹ID
*/
public settlement?: string;
指定落位元素类型
*/
public settlementTypeId?: number;
指定插入部位
*/
public settlementPosition?: string;
* Is form transparent
*/
public isTransparent?: boolean = false;
public declare enterEditing: boolean;
public downloadProgress: number = 0;
public appStatus: number | undefined = 0;
public iconResource: string | undefined;
public callerName: string | undefined;
* container backplane
*/
public hasContainerBackplane?: boolean;
* id of desktop shortcut
*/
public shortcutId?: string = '';
* 应用分身标识
*/
public appIndex?: number = 0;
* 特殊应用标识
*/
public intent?: string = '';
* 文件/文件夹大小
*/
public size?: number = 0;
* 创建时间
*/
public ctime?: number = 0;
* 修改时间
*/
public mtime?: number = 0;
public gameCardInfo?: GameCardInfo;
* 是否支持应用多实例
*/
public enableNewAppInstance?: boolean;
* for lazy rotate
*/
public landscapeRow?: number;
* for lazy rotate
*/
public landscapeColumn?: number;
* for lazy rotate
*/
public landscapePage?: number;
* GridLayoutItemInfo: area in landscape
*/
public landscapeArea?: number[];
* for lazy rotate
*/
public portraitRow?: number;
* for lazy rotate
*/
public portraitColumn?: number;
* for lazy rotate
*/
public portraitPage?: number;
* GridLayoutItemInfo: area in portrait
*/
public portraitArea?: number[];
* 是否是备份恢复的
*/
public isNeedRestoreFromBackup?: boolean;
public isAppLocked?: boolean = false;
* 孵化卡片信息
*/
public targetFormData?: string = '';
public isEmpty?: boolean = false;
public screenId?: number = 0;
shortcutInfo?: ShortcutInfo;
constructor() {
super();
}
public setInfo(gridLayoutItemBuilder: GridLayoutItemBuilder): void {
this.id = gridLayoutItemBuilder.id;
this.infoId = gridLayoutItemBuilder.infoId;
this.cardId = gridLayoutItemBuilder.cardId;
this.folderId = gridLayoutItemBuilder.folderId;
this.formStackId = gridLayoutItemBuilder.formStackId;
this.container = gridLayoutItemBuilder.container;
this.folderName = gridLayoutItemBuilder.folderName;
this.fileFolderName = gridLayoutItemBuilder.fileFolderName;
this.ino = gridLayoutItemBuilder.ino;
this.fileType = gridLayoutItemBuilder.fileType;
this.uri = gridLayoutItemBuilder.uri;
this.badgeNumber = gridLayoutItemBuilder.badgeNumber;
this.typeId = gridLayoutItemBuilder.typeId;
this.area = gridLayoutItemBuilder.area;
this.areaType = gridLayoutItemBuilder.areaType;
this.page = gridLayoutItemBuilder.page;
this.column = gridLayoutItemBuilder.column;
this.row = gridLayoutItemBuilder.row;
this.portraitPage = gridLayoutItemBuilder.portraitPageIndex;
this.portraitColumn = gridLayoutItemBuilder.portraitColumn;
this.portraitRow = gridLayoutItemBuilder.portraitRow;
this.portraitArea = gridLayoutItemBuilder.portraitArea;
this.landscapePage = gridLayoutItemBuilder.landscapePageIndex;
this.landscapeColumn = gridLayoutItemBuilder.landscapeColumn;
this.landscapeRow = gridLayoutItemBuilder.landscapeRow;
this.landscapeArea = gridLayoutItemBuilder.landscapeArea;
this.kindId = gridLayoutItemBuilder.kindId;
this.bundleName = gridLayoutItemBuilder.bundleName ?? '';
this.abilityName = gridLayoutItemBuilder.abilityName ?? '';
this.moduleName = gridLayoutItemBuilder.moduleName;
this.keyName = gridLayoutItemBuilder.keyName;
this.appIconId = gridLayoutItemBuilder.appIconId;
this.extend1 = gridLayoutItemBuilder.extend1;
this.extend2 = gridLayoutItemBuilder.extend2;
this.extend3 = gridLayoutItemBuilder.extend3;
this.appLabelId = gridLayoutItemBuilder.appLabelId;
this.appName = gridLayoutItemBuilder.appName;
this.cardName = gridLayoutItemBuilder.cardName;
this.formConfigAbility = gridLayoutItemBuilder.formConfigAbility;
this.downloadProgress = gridLayoutItemBuilder.downloadProgress ?? 0;
this.appStatus = gridLayoutItemBuilder.appStatus;
this.iconResource = gridLayoutItemBuilder.iconResource;
this.callerName = gridLayoutItemBuilder.callerName;
this.isTransparent = gridLayoutItemBuilder.isTransparent;
this.shortcutId = gridLayoutItemBuilder.shortcutId;
this.appIndex = gridLayoutItemBuilder.appIndex;
this.intent = gridLayoutItemBuilder.intent;
this.size = gridLayoutItemBuilder.size;
this.ctime = gridLayoutItemBuilder.ctime;
this.mtime = gridLayoutItemBuilder.mtime;
this.targetFormData = gridLayoutItemBuilder.targetFormData;
this.gameCardInfo = gridLayoutItemBuilder.gameCardInfo;
this.screenId = gridLayoutItemBuilder.screenId;
}
public fillInfoWithAppItem(appItem : AppItemInfo) : GridLayoutItemInfo {
this.appName = appItem.appName;
this.appIconId = appItem.appIconId;
this.appLabelId = appItem.appLabelId;
this.bundleName = appItem.bundleName;
this.abilityName = appItem.abilityName;
this.moduleName = appItem.moduleName;
this.typeId = appItem.typeId;
this.area = appItem.area;
this.page = appItem.page;
this.column = appItem.column;
this.kindId = appItem.kindId;
this.bundleType = appItem.bundleType;
this.applicationName = appItem.applicationName;
this.downloadProgress = appItem.downloadProgress ?? 0;
this.appStatus = appItem.appStatus;
this.iconResource = appItem.iconResource;
this.callerName = appItem.callerName;
this.appIndex = appItem.appIndex;
this.intent = appItem.intent;
return this;
}
public toAppItemInfo(): AppItemInfo {
const appItem = new AppItemInfo();
appItem.appName = this.appName ?? '';
appItem.appIconId = this.appIconId;
appItem.appLabelId = this.appLabelId;
appItem.bundleName = this.bundleName;
appItem.abilityName = this.abilityName;
appItem.moduleName = this.moduleName;
appItem.typeId = this.typeId;
appItem.area = this.area;
appItem.page = this.page;
appItem.column = this.column;
appItem.row = this.row;
appItem.kindId = this.kindId;
appItem.shortcutId = this.shortcutId;
appItem.bundleType = this.bundleType;
appItem.applicationName = this.applicationName;
appItem.downloadProgress = this.downloadProgress;
appItem.appStatus = this.appStatus;
appItem.iconResource = this.iconResource;
appItem.callerName = this.callerName;
appItem.appIndex = this.appIndex;
appItem.intent = this.intent;
return appItem;
}
* 从FolderData中迁移
* @returns
*/
public static getEmptyItem(): GridLayoutItemInfo {
let emptyItem: GridLayoutItemInfo = new GridLayoutItemInfo();
emptyItem.bundleName = '';
emptyItem.abilityName = '';
emptyItem.folderId = '-1';
emptyItem.appIconId = -1;
emptyItem.negativeId = -1;
emptyItem.isSelect = false;
emptyItem.enterEditing = false;
emptyItem.downloadProgress = 0;
emptyItem.appStatus = 0;
emptyItem.iconResource = undefined;
emptyItem.callerName = undefined;
emptyItem.isEmpty = true;
return emptyItem;
}
}