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