• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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