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 { Logger } from '@ohos/feature-file-manager'; 17import userFileManager from '@ohos.filemanagement.userFileManager'; 18 19export default class FileDataSource implements IDataSource { 20 private listener: DataChangeListener | undefined = undefined; 21 private fileList: Array<userFileManager.FileAsset> = new Array<userFileManager.FileAsset>(); 22 23 totalCount(): number { 24 let count = this.fileList.length; 25 Logger.debug(`totalCount: ${count}`); 26 return count; 27 } 28 29 getData(index: number): userFileManager.FileAsset { 30 let file = this.fileList[index]; 31 Logger.debug(`getData index: ${index}, name: ${file.displayName}`); 32 return file; 33 } 34 35 pushData(fileAsset: userFileManager.FileAsset): void { 36 this.fileList.push(fileAsset); 37 this.listener?.onDataAdd(this.totalCount() - 1); 38 } 39 40 pushDataList(fileAssets: Array<userFileManager.FileAsset>): void { 41 fileAssets.forEach(element => { 42 this.fileList.push(element); 43 }) 44 this.listener?.onDataReloaded(); 45 } 46 47 deleteData(uri: string): void { 48 this.fileList.forEach((item: userFileManager.FileAsset, index: number) => { 49 if (item.uri === uri) { 50 this.fileList.splice(index, 1); 51 this.listener?.onDataDelete(index); 52 } 53 }) 54 } 55 56 registerDataChangeListener(listener: DataChangeListener): void { 57 this.listener = listener; 58 } 59 60 unregisterDataChangeListener(listener: DataChangeListener): void { 61 this.listener = listener; 62 } 63}