1/* 2 * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development 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 { Action } from './Action' 17import { ActionBarProp } from '../common/ActionBarProp' 18import { ActionBarMode, ActionBarSelectionMode } from './ActionBarMode' 19import { screenManager } from '../common/ScreenManager' 20 21export class AlbumBarModel { 22 createActionBar(isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, 23 isDisableRename: boolean, isDisableDelete: boolean): ActionBarProp { 24 let actionBarProp: ActionBarProp = new ActionBarProp(); 25 let isHorizontal = screenManager.isHorizontal(); 26 if (isHorizontal) { 27 this.updateHorizontalActionBar(actionBarProp, isAlbumSetSelectedMode, 28 selectedAlbumsCount, isDisableRename, isDisableDelete); 29 } else { 30 this.updateVerticalActionBar(actionBarProp, isAlbumSetSelectedMode); 31 } 32 return actionBarProp; 33 } 34 35 updateActionBar(actionBarProp: ActionBarProp, isAlbumSetSelectedMode: boolean, 36 selectedAlbumsCount: number, isDisableRename: boolean, isDisableDelete: boolean): void { 37 let isHorizontal = screenManager.isHorizontal(); 38 if (isHorizontal) { 39 this.updateHorizontalActionBar(actionBarProp, isAlbumSetSelectedMode, 40 selectedAlbumsCount, isDisableRename, isDisableDelete); 41 } else { 42 this.updateVerticalActionBar(actionBarProp, isAlbumSetSelectedMode); 43 } 44 } 45 46 private updateHorizontalActionBar(actionBarProp: ActionBarProp, isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, 47 isDisableRename: boolean, isDisableDelete: boolean): ActionBarProp { 48 let isSidebar: boolean = screenManager.isSidebar(); 49 actionBarProp 50 .setHasTabBar(isSidebar) 51 .setTitle($r('app.string.tab_albums')) 52 .setIsHeadTitle(true); 53 let menuList: Action[] = this.getMenuList(isAlbumSetSelectedMode, selectedAlbumsCount, isDisableRename, isDisableDelete); 54 if (isAlbumSetSelectedMode) { 55 actionBarProp 56 .setLeftAction(Action.CANCEL) 57 .setMenuList(menuList) 58 .setMode(ActionBarMode.SELECTION_MODE) 59 .setSelectionMode(ActionBarSelectionMode.MULTI); 60 } else { 61 menuList.push(Action.NEW) 62 actionBarProp 63 .setMenuList(menuList) 64 .setMode(ActionBarMode.STANDARD_MODE); 65 } 66 return actionBarProp; 67 } 68 69 private updateVerticalActionBar(actionBarProp: ActionBarProp, isAlbumSetSelectedMode: boolean): ActionBarProp { 70 let menuList: Action[] = []; 71 menuList.push(Action.NEW); 72 let isSidebar: boolean = screenManager.isSidebar(); 73 actionBarProp 74 .setHasTabBar(isSidebar) 75 .setTitle($r('app.string.tab_albums')) 76 .setIsHeadTitle(true); 77 78 if (isAlbumSetSelectedMode) { 79 actionBarProp 80 .setLeftAction(Action.CANCEL) 81 .setMode(ActionBarMode.SELECTION_MODE) 82 .setSelectionMode(ActionBarSelectionMode.MULTI); 83 } else { 84 actionBarProp 85 .setMenuList(menuList) 86 .setMode(ActionBarMode.STANDARD_MODE); 87 } 88 89 return actionBarProp; 90 } 91 92 getMenuList(isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, isDisableRename: boolean, isDisableDelete: boolean): Action[] { 93 let menuList: Action[] = []; 94 if (isAlbumSetSelectedMode) { 95 menuList.push((!isDisableRename && selectedAlbumsCount === 1) ? Action.RENAME : Action.RENAME_INVALID); 96 menuList.push((!isDisableDelete && selectedAlbumsCount > 0) ? Action.DELETE : Action.DELETE_INVALID); 97 } 98 return menuList; 99 } 100} 101