* Copyright (c) Huawei Device Co., Ltd. 2024-2025. All rights reserved.
* 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 lazy { CameraAppCapability } from '../camera/CameraAppCapability';
import lazy { HiLog } from '../utils/HiLog';
import lazy { ModeType } from './ModeType';
const TAG: string = 'MoreModeConfigData';
export enum MorePageFrameStage {
FIRST_STAGE = 0,
SECOND_STAGE = 1,
THIRD_STAGE = 2,
}
export interface GlobalModeListAndName {
modeList: ModeType[],
modeName: Object[],
}
export interface MorePageData {
gridModeData: MoreModeType[],
barModeData: MoreModeType[],
}
export type MoreModeType = {
name: Resource,
img?: Resource,
isDelete: boolean,
isDisDrag: boolean,
modeType: ModeType,
};
export interface MorePageType {
gridModeType: ModeType[],
barModeType: ModeType[]
}
export interface ModeData {
name: Resource,
modeType: ModeType
}
export interface NewAddMode {
mode: ModeType,
prevMode?: ModeType,
isBarMode: boolean,
}
export const EditedMoreModeData: Map<ModeType, MoreModeType> = new Map([
[ModeType.PHOTO, {
name: $r('app.string.photo_mode'),
isDelete: false,
isDisDrag: true,
modeType: ModeType.PHOTO,
}],
[ModeType.VIDEO, {
name: $r('app.string.video_mode'),
isDelete: false,
isDisDrag: true,
modeType: ModeType.VIDEO,
}]
]);
const isContainProjectMode = (mode: ModeType): boolean => {
return EditedMoreModeData.has(mode);
};
export const isDisDragEditedMode = (mode: ModeType): boolean => {
return EditedMoreModeData.get(mode)?.isDisDrag;
};
const defaultGridMode: ModeType[] = [];
const defaultBarMode: ModeType[] = [
ModeType.PHOTO,
ModeType.VIDEO,
];
const defaultFilteredMode: ModeType[] = [];
const getGridMode = (): ModeType[] => {
let gridMode: ModeType[] = defaultGridMode;
try {
gridMode = (CameraAppCapability.getInstance().getMoreModeList() ||
defaultGridMode).filter(item => (isContainProjectMode(item)));
} catch (e) {
HiLog.e(TAG, 'getGridMode err.');
}
return gridMode;
};
const getBarMode = (): ModeType[] => {
let barMode: ModeType[] = defaultBarMode;
try {
barMode = (CameraAppCapability.getInstance().getModeBarList() ||
defaultBarMode).filter(item => (isContainProjectMode(item)));
} catch (e) {
HiLog.e(TAG, 'getBarMode err.');
}
return barMode;
};
const getBackAsFrontFilterMode = (): ModeType[] => {
let backAsFrontMode: ModeType[] = defaultFilteredMode;
try {
backAsFrontMode = (CameraAppCapability.getInstance().getFilteredModeList() ||
defaultFilteredMode).filter(item => (isContainProjectMode(item)));
} catch (e) {
HiLog.e(TAG, ' getBackAsFrontFilterMode err.');
}
return backAsFrontMode;
};
export const MorePageDefaultData: MorePageType = { gridModeType: getGridMode(), barModeType: getBarMode() };
export const BackAsFrontFilterModeData: ModeType[] = getBackAsFrontFilterMode();