1048147e0Sopenharmony_ci/** 2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License. 5048147e0Sopenharmony_ci * You may obtain a copy of the License at 6048147e0Sopenharmony_ci * 7048147e0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8048147e0Sopenharmony_ci * 9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and 13048147e0Sopenharmony_ci * limitations under the License. 14048147e0Sopenharmony_ci */ 15048147e0Sopenharmony_ciimport HiLog from '../utils/HiLog'; 16048147e0Sopenharmony_ci 17048147e0Sopenharmony_ciconst TAG = 'BasicDataSource' 18048147e0Sopenharmony_ci 19048147e0Sopenharmony_ciexport default class BasicDataSource implements IDataSource { 20048147e0Sopenharmony_ci private listeners: DataChangeListener[] = [] 21048147e0Sopenharmony_ci 22048147e0Sopenharmony_ci public totalCount(): number { 23048147e0Sopenharmony_ci return 0 24048147e0Sopenharmony_ci } 25048147e0Sopenharmony_ci 26048147e0Sopenharmony_ci public getData(index: number): any { 27048147e0Sopenharmony_ci return undefined 28048147e0Sopenharmony_ci } 29048147e0Sopenharmony_ci 30048147e0Sopenharmony_ci registerDataChangeListener(listener: DataChangeListener): void { 31048147e0Sopenharmony_ci if (this.listeners.indexOf(listener) < 0) { 32048147e0Sopenharmony_ci HiLog.i(TAG, 'add listener') 33048147e0Sopenharmony_ci this.listeners.push(listener) 34048147e0Sopenharmony_ci } 35048147e0Sopenharmony_ci } 36048147e0Sopenharmony_ci 37048147e0Sopenharmony_ci unregisterDataChangeListener(listener: DataChangeListener): void { 38048147e0Sopenharmony_ci const pos = this.listeners.indexOf(listener); 39048147e0Sopenharmony_ci if (pos >= 0) { 40048147e0Sopenharmony_ci HiLog.i(TAG, 'remove listener') 41048147e0Sopenharmony_ci this.listeners.splice(pos, 1) 42048147e0Sopenharmony_ci } 43048147e0Sopenharmony_ci } 44048147e0Sopenharmony_ci 45048147e0Sopenharmony_ci notifyDataReload(): void { 46048147e0Sopenharmony_ci this.listeners.forEach(listener => { 47048147e0Sopenharmony_ci listener.onDataReloaded() 48048147e0Sopenharmony_ci }) 49048147e0Sopenharmony_ci } 50048147e0Sopenharmony_ci 51048147e0Sopenharmony_ci notifyDataAdd(index: number): void { 52048147e0Sopenharmony_ci this.listeners.forEach(listener => { 53048147e0Sopenharmony_ci listener.onDataAdd(index) 54048147e0Sopenharmony_ci }) 55048147e0Sopenharmony_ci } 56048147e0Sopenharmony_ci 57048147e0Sopenharmony_ci notifyDataChange(index: number): void { 58048147e0Sopenharmony_ci this.listeners.forEach(listener => { 59048147e0Sopenharmony_ci listener.onDataChange(index) 60048147e0Sopenharmony_ci }) 61048147e0Sopenharmony_ci } 62048147e0Sopenharmony_ci 63048147e0Sopenharmony_ci notifyDataDelete(index: number): void { 64048147e0Sopenharmony_ci this.listeners.forEach(listener => { 65048147e0Sopenharmony_ci listener.onDataDelete(index) 66048147e0Sopenharmony_ci }) 67048147e0Sopenharmony_ci } 68048147e0Sopenharmony_ci 69048147e0Sopenharmony_ci notifyDataMove(from: number, to: number): void { 70048147e0Sopenharmony_ci this.listeners.forEach(listener => { 71048147e0Sopenharmony_ci listener.onDataMove(from, to) 72048147e0Sopenharmony_ci }) 73048147e0Sopenharmony_ci } 74048147e0Sopenharmony_ci}