1/* 2 * Copyright (c) 2022-2023 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 type { FetchOptions } from '../../access/UserFileManagerAccess'; 17import { 18 AlbumFetchOptionBuilder, 19 FileFetchOptionBuilder, 20 UserFileManagerAccess 21} from '../../access/UserFileManagerAccess'; 22import { Log } from '../../utils/Log'; 23 24const TAG: string = 'AlbumDefine'; 25 26export class AlbumDefine { 27 static readonly ALBUM_ID_ALL: string = 'default_all'; 28 static readonly ALBUM_ID_CAMERA: string = 'default_camera'; 29 static readonly ALBUM_ID_VIDEO: string = 'default_video'; 30 static readonly ALBUM_ID_RECYCLE: string = 'default_recycle'; 31 static readonly ALBUM_ID_FAVOR: string = 'default_favor'; 32 static readonly ALBUM_ID_SNAPSHOT: string = 'default_snapshot'; 33 static readonly ALBUM_ID_REMOTE: string = 'default_remote'; 34 35 // 需要过滤的媒体文件类型 36 static readonly FILTER_MEDIA_TYPE_ALL: string = 'FILTER_MEDIA_TYPE_ALL'; 37 static readonly FILTER_MEDIA_TYPE_IMAGE: string = 'FILTER_MEDIA_TYPE_IMAGE'; 38 static readonly FILTER_MEDIA_TYPE_VIDEO: string = 'FILTER_MEDIA_TYPE_VIDEO'; 39 40 static getFileFetchOpt(startIndex?: number, count?: number, filterMediaType?: string): FetchOptions { 41 let builder = new FileFetchOptionBuilder(); 42 builder 43 .order(UserFileManagerAccess.FILE_KEY_DATE_TAKEN.toString(), false) 44 if (filterMediaType) { 45 AlbumDefine.setFilterMediaType(builder, filterMediaType) 46 } 47 if (startIndex != undefined && count != undefined && startIndex >= 0 && count >= 0) { 48 builder.select(startIndex, count); 49 } 50 return builder.build(); 51 } 52 53 static getFavoriteFetchOpt(filterMediaType?: string) { 54 let builder = new FileFetchOptionBuilder(); 55 if (filterMediaType == undefined) { 56 filterMediaType = AlbumDefine.FILTER_MEDIA_TYPE_ALL; 57 } 58 AlbumDefine.setFilterMediaType(builder, filterMediaType) 59 .order(UserFileManagerAccess.FILE_KEY_DATE_TAKEN.toString(), false); 60 61 return builder.build(); 62 } 63 64 static getTimelineGroupFetchOpt() { 65 let builder = new FileFetchOptionBuilder(); 66 builder.groupBy(); 67 return builder.build(); 68 } 69 70 static getFileFetchOptByUri(uri: string) { 71 let builder = new FileFetchOptionBuilder().uri(uri); 72 return builder.build(); 73 } 74 75 static getFileFetchOptByName(displayName: string) { 76 let builder = new FileFetchOptionBuilder().displayName(displayName); 77 return builder.build(); 78 } 79 80 static getAlbumFetchOptByName(name: string) { 81 let builder = new AlbumFetchOptionBuilder() 82 builder.albumName(name); 83 return builder.build(); 84 } 85 86 static getAlbumFetchOptByUri(albumUri: string) { 87 let builder = new AlbumFetchOptionBuilder(); 88 if (albumUri) { 89 builder.albumUri(albumUri); 90 } 91 return builder.build(); 92 } 93 94 static setFilterMediaType(builder: FileFetchOptionBuilder, filterMediaType: string): FileFetchOptionBuilder { 95 if (filterMediaType == AlbumDefine.FILTER_MEDIA_TYPE_IMAGE) { 96 builder.media(UserFileManagerAccess.MEDIA_TYPE_IMAGE.toString()) 97 } else if (filterMediaType == AlbumDefine.FILTER_MEDIA_TYPE_VIDEO) { 98 builder.media(UserFileManagerAccess.MEDIA_TYPE_VIDEO.toString()) 99 } 100 return builder; 101 } 102}