16e80583aSopenharmony_ci/** 26e80583aSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 36e80583aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 46e80583aSopenharmony_ci * you may not use this file except in compliance with the License. 56e80583aSopenharmony_ci * You may obtain a copy of the License at 66e80583aSopenharmony_ci * 76e80583aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 86e80583aSopenharmony_ci * 96e80583aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 106e80583aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 116e80583aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 126e80583aSopenharmony_ci * See the License for the specific language governing permissions and 136e80583aSopenharmony_ci * limitations under the License. 146e80583aSopenharmony_ci */ 156e80583aSopenharmony_ci 166e80583aSopenharmony_ciimport { Log } from '../utils/Log'; 176e80583aSopenharmony_ciimport { AppBubble } from './AppBubble'; 186e80583aSopenharmony_ciimport { AppItemInfo } from '../bean/AppItemInfo'; 196e80583aSopenharmony_ciimport { AppGridStyleConfig } from '../layoutconfig/AppGridStyleConfig'; 206e80583aSopenharmony_ciimport { MenuInfo } from '../bean'; 216e80583aSopenharmony_ci 226e80583aSopenharmony_ciconst TAG = 'AppGrid'; 236e80583aSopenharmony_ci 246e80583aSopenharmony_ci@Component 256e80583aSopenharmony_ciexport struct AppGrid { 266e80583aSopenharmony_ci @Link appGridList: Array<AppItemInfo>; 276e80583aSopenharmony_ci @Link appGridStyleConfig: AppGridStyleConfig; 286e80583aSopenharmony_ci onItemClick: Function = (event: ClickEvent, item: AppItemInfo) => {}; 296e80583aSopenharmony_ci buildMenu: Function = (item: AppItemInfo): MenuInfo[] => []; 306e80583aSopenharmony_ci @State isScroll: boolean = false; 316e80583aSopenharmony_ci 326e80583aSopenharmony_ci aboutToDisappear(): void { 336e80583aSopenharmony_ci } 346e80583aSopenharmony_ci 356e80583aSopenharmony_ci private getColumnsTemplate() { 366e80583aSopenharmony_ci let columnsTemplate = ''; 376e80583aSopenharmony_ci for (let i = 0; i < this.appGridStyleConfig.mColumns; i++) { 386e80583aSopenharmony_ci columnsTemplate += ' 1fr'; 396e80583aSopenharmony_ci } 406e80583aSopenharmony_ci return columnsTemplate; 416e80583aSopenharmony_ci } 426e80583aSopenharmony_ci 436e80583aSopenharmony_ci private getRowsTemplate() { 446e80583aSopenharmony_ci let rowsTemplate = ''; 456e80583aSopenharmony_ci if (this.isScroll) { 466e80583aSopenharmony_ci return rowsTemplate; 476e80583aSopenharmony_ci } 486e80583aSopenharmony_ci for (let i = 0; i < this.appGridStyleConfig.mRows; i++) { 496e80583aSopenharmony_ci rowsTemplate += ' 1fr'; 506e80583aSopenharmony_ci } 516e80583aSopenharmony_ci return rowsTemplate; 526e80583aSopenharmony_ci } 536e80583aSopenharmony_ci 546e80583aSopenharmony_ci build() { 556e80583aSopenharmony_ci Grid() { 566e80583aSopenharmony_ci ForEach(this.appGridList, (item: AppItemInfo) => { 576e80583aSopenharmony_ci GridItem() { 586e80583aSopenharmony_ci Column() { 596e80583aSopenharmony_ci AppBubble({ 606e80583aSopenharmony_ci iconSize: this.appGridStyleConfig.mIconSize, 616e80583aSopenharmony_ci nameSize: this.appGridStyleConfig.mNameSize, 626e80583aSopenharmony_ci nameFontColor: this.appGridStyleConfig.mNameFontColor, 636e80583aSopenharmony_ci nameHeight: this.appGridStyleConfig.mNameHeight, 646e80583aSopenharmony_ci appName: item.appName, 656e80583aSopenharmony_ci bundleName: item.bundleName, 666e80583aSopenharmony_ci moduleName: item.moduleName, 676e80583aSopenharmony_ci abilityName: item.abilityName, 686e80583aSopenharmony_ci appIconId: item.appIconId, 696e80583aSopenharmony_ci appLabelId: item.appLabelId, 706e80583aSopenharmony_ci badgeNumber: item.badgeNumber, 716e80583aSopenharmony_ci menuInfo: this.buildMenu(item), 726e80583aSopenharmony_ci nameLines: this.appGridStyleConfig.mNameLines, 736e80583aSopenharmony_ci mPaddingTop: this.appGridStyleConfig.mIconMarginVertical, 746e80583aSopenharmony_ci dragStart: () => {} 756e80583aSopenharmony_ci }) 766e80583aSopenharmony_ci } 776e80583aSopenharmony_ci .onClick((event: ClickEvent) => { 786e80583aSopenharmony_ci this.onItemClick(event, item); 796e80583aSopenharmony_ci }) 806e80583aSopenharmony_ci .onMouse((event: MouseEvent) => { 816e80583aSopenharmony_ci Log.showInfo(TAG, `onMouse MouseType: ${event.button}`); 826e80583aSopenharmony_ci if (event.button == MouseButton.Right) { 836e80583aSopenharmony_ci event.stopPropagation(); 846e80583aSopenharmony_ci } 856e80583aSopenharmony_ci }) 866e80583aSopenharmony_ci } 876e80583aSopenharmony_ci .width(this.appGridStyleConfig.mAppItemSize) 886e80583aSopenharmony_ci .height(this.appGridStyleConfig.mAppItemSize) 896e80583aSopenharmony_ci .transition({ scale: { x: 0.5, y: 0.5 } }) 906e80583aSopenharmony_ci }, (item: AppItemInfo) => JSON.stringify(item)) 916e80583aSopenharmony_ci } 926e80583aSopenharmony_ci .columnsTemplate(this.getColumnsTemplate()) 936e80583aSopenharmony_ci .rowsTemplate(this.getRowsTemplate()) 946e80583aSopenharmony_ci .columnsGap(this.appGridStyleConfig.mColumnsGap) 956e80583aSopenharmony_ci .rowsGap(this.appGridStyleConfig.mRowsGap) 966e80583aSopenharmony_ci } 976e80583aSopenharmony_ci}