1/* 2 * Copyright (c) 2021-2022 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 Log from '../../../../../../../../common/src/main/ets/default/Log'; 17import { FASlotName } from '../../../../../../../../common/src/main/ets/default/Constants'; 18import { TintContentInfo, getOrCreateTintContentInfo 19} from '../../../../../../../../common/src/main/ets/default/TintStateManager'; 20import createOrGet from '../../../../../../../../common/src/main/ets/default/SingleInstanceHelper'; 21import BluetoothService from '../model/BluetoothService'; 22 23export const BLUETOOTH_OPEN_STATUS_KEY = 'BluetoothOpenStatus'; 24 25const TAG = 'BluetoothVM'; 26 27export class BluetoothVM { 28 mIsStart = false; 29 mBluetoothOpenStatus: SubscribedAbstractProperty<boolean>; 30 mTintContentInfo: TintContentInfo = getOrCreateTintContentInfo(FASlotName.BLUETOOTH); 31 32 constructor() { 33 Log.showDebug(TAG, 'constructor'); 34 } 35 36 initViewModel(): void { 37 if (this.mIsStart) { 38 return; 39 } 40 Log.showDebug(TAG, 'initViewModel '); 41 this.mIsStart = true; 42 this.mBluetoothOpenStatus = AppStorage.SetAndLink(BLUETOOTH_OPEN_STATUS_KEY, false); 43 BluetoothService.startService(); 44 BluetoothService.registerListener(this); 45 } 46 47 updateState(state: boolean): void { 48 Log.showInfo(TAG, `updateState, state: ${state} this.mBluetoothOpenStatus ${this.mBluetoothOpenStatus}`); 49 this.mBluetoothOpenStatus.set(state); 50 } 51 52 enableBluetooth(): boolean{ 53 return BluetoothService.enableBluetooth(); 54 } 55 56 disableBluetooth(): boolean{ 57 return BluetoothService.disableBluetooth(); 58 } 59 60 getTintContentInfo(): TintContentInfo { 61 return this.mTintContentInfo; 62 } 63} 64 65let sBluetoothVM = createOrGet(BluetoothVM, TAG); 66 67export default sBluetoothVM;