1/** 2 * Copyright (c) 2022-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { BaseCloseAppHandler } from '../base/BaseCloseAppHandler'; 17import { CheckEmptyUtils } from '../utils/CheckEmptyUtils'; 18import { Log } from '../utils/Log'; 19 20const TAG = 'CloseAppManager'; 21 22/** 23 * close app manager 24 */ 25export class CloseAppManager { 26 private mBaseCloseAppHandlerList: Array<BaseCloseAppHandler> = new Array<BaseCloseAppHandler>(); 27 private mPagedesktopCloseItemInfo: any; 28 private mPagedesktopClosePosition: { 29 appIconSize: number, 30 appIconHeight: number, 31 appIconPositionX: number, 32 appIconPositionY: number 33 } = { appIconSize: 0, 34 appIconHeight: 0, 35 appIconPositionX: 0, 36 appIconPositionY: 0 }; 37 private mSmartdockCloseItemInfo: any; 38 private mSmartdockClosePosition: { 39 appIconSize: number, 40 appIconHeight: number, 41 appIconPositionX: number, 42 appIconPositionY: number 43 } = { appIconSize: 0, 44 appIconHeight: 0, 45 appIconPositionX: 0, 46 appIconPositionY: 0 } 47 48 constructor() { 49 } 50 51 static getInstance(): CloseAppManager { 52 if (globalThis.CloseAppManager == null) { 53 globalThis.CloseAppManager = new CloseAppManager(); 54 } 55 return globalThis.CloseAppManager; 56 } 57 58 /** 59 * register baseCloseAppHandler to manager 60 * 61 * @param baseCloseAppHandler the instance of close app handler 62 */ 63 public registerCloseAppHandler(baseCloseAppHandler: BaseCloseAppHandler): void { 64 if (CheckEmptyUtils.isEmpty(baseCloseAppHandler)) { 65 Log.showError(TAG, 'registerCloseAppHandler with invalid baseCloseAppHandler') 66 return; 67 } 68 69 this.mBaseCloseAppHandlerList.push(baseCloseAppHandler); 70 Log.showInfo(TAG, `registerCloseAppHandler mBaseCloseAppHandlerList is ${this.mBaseCloseAppHandlerList.length}} `) 71 } 72 73 /** 74 * unregister baseCloseAppHandler to manager 75 * 76 * @param baseCloseAppHandler the instance of close app handler 77 */ 78 public unregisterCloseAppHandler(baseCloseAppHandler: BaseCloseAppHandler): void { 79 if (CheckEmptyUtils.isEmpty(baseCloseAppHandler)) { 80 Log.showError(TAG, 'unregisterCloseAppHandler with invalid baseCloseAppHandler') 81 return; 82 } 83 84 let index: number = 0; 85 for (var i = 0; i < this.mBaseCloseAppHandlerList.length; i++) { 86 if (this.mBaseCloseAppHandlerList[i] === baseCloseAppHandler) { 87 index = i; 88 break; 89 } 90 } 91 92 this.mBaseCloseAppHandlerList.splice(index, 1); 93 Log.showInfo(TAG, `unregisterCloseAppHandler mBaseCloseAppHandlerList is ${this.mBaseCloseAppHandlerList.length}`) 94 } 95 96 /** 97 * get app icon info 98 * 99 * @param windowTarget windowTarget close window target 100 */ 101 public getAppIconInfo(windowTarget): void { 102 if (CheckEmptyUtils.isEmptyArr(this.mBaseCloseAppHandlerList)) { 103 Log.showError(TAG, 'getAppIconInfo with invalid mBaseCloseAppHandlerList'); 104 return; 105 } 106 107 for (var i = 0; i < this.mBaseCloseAppHandlerList.length; i++) { 108 this.mBaseCloseAppHandlerList[i].getAppIconInfo(windowTarget); 109 } 110 } 111 112 /** 113 * get app icon info 114 * 115 * @param windowTarget windowTarget close window target 116 */ 117 public getAppInfo(windowTarget): any { 118 if (CheckEmptyUtils.isEmptyArr(this.mBaseCloseAppHandlerList)) { 119 Log.showError(TAG, 'getAppIconInfo with invalid mBaseCloseAppHandlerList'); 120 return {}; 121 } 122 123 for (var i = 0; i < this.mBaseCloseAppHandlerList.length; i++) { 124 this.mBaseCloseAppHandlerList[i].getAppIconInfo(windowTarget); 125 } 126 127 return {iconInfo: this.getAppCloseIconInfo(), appItemInfo: this.getAppCloseItemInfo()} 128 } 129 130 public addPagedesktopClosePosition(pagedesktopCloseIconInfo: any, pagedesktopCloseItemInfo?: any) { 131 Log.showDebug(TAG, `addPagedesktopClosePosition pagedesktopCloasIconInfo is ${JSON.stringify(pagedesktopCloseIconInfo)}`) 132 this.mPagedesktopClosePosition = pagedesktopCloseIconInfo; 133 this.mPagedesktopCloseItemInfo = pagedesktopCloseItemInfo; 134 } 135 136 public addSmartDockClosePosition(smartdockCloseIconInfo: any, smartdockCloseItemInfo: any) { 137 Log.showDebug(TAG, `addSmartDockClosePosition smartdockCloasIconInfo is ${JSON.stringify(smartdockCloseIconInfo)}`) 138 this.mSmartdockClosePosition = smartdockCloseIconInfo; 139 this.mSmartdockCloseItemInfo = smartdockCloseItemInfo; 140 } 141 142 public getAppCloseIconInfo(): any { 143 if (CheckEmptyUtils.isEmpty(this.mPagedesktopClosePosition)) { 144 Log.showDebug(TAG, `getAppCloseIconInfo return mSmartdockClosePosition is ${JSON.stringify(this.mSmartdockClosePosition)}`) 145 return this.mSmartdockClosePosition; 146 } else { 147 Log.showDebug(TAG, `getAppCloseIconInfo return mPagedesktopClosePosition is ${JSON.stringify(this.mPagedesktopClosePosition)}`) 148 return this.mPagedesktopClosePosition; 149 } 150 } 151 152 public getAppCloseItemInfo(): any { 153 if (CheckEmptyUtils.isEmpty(this.mPagedesktopClosePosition)) { 154 Log.showDebug(TAG, `getAppCloseIconInfo return mSmartdockClosePosition is ${JSON.stringify(this.mSmartdockClosePosition)}`) 155 return this.mSmartdockCloseItemInfo; 156 } else { 157 Log.showDebug(TAG, `getAppCloseIconInfo return mPagedesktopClosePosition is ${JSON.stringify(this.mPagedesktopClosePosition)}`) 158 return this.mPagedesktopCloseItemInfo; 159 } 160 } 161} 162