1c36cf2e9Sopenharmony_ci/*
2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License.
5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at
6c36cf2e9Sopenharmony_ci *
7c36cf2e9Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c36cf2e9Sopenharmony_ci *
9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and
13c36cf2e9Sopenharmony_ci * limitations under the License.
14c36cf2e9Sopenharmony_ci */
15c36cf2e9Sopenharmony_ci
16c36cf2e9Sopenharmony_ciimport { PrinterDiscController } from '../../Controller/PrinterDiscController';
17c36cf2e9Sopenharmony_ciimport { PrintExtensionController } from '../../Controller/PrintExtensionController';
18c36cf2e9Sopenharmony_ciimport { Log } from '@ohos/common';
19c36cf2e9Sopenharmony_ciimport { GlobalThisHelper, GlobalThisStorageKey} from '@ohos/common';
20c36cf2e9Sopenharmony_ci
21c36cf2e9Sopenharmony_ciconst TAG: string = '[PrintAdapter]:';
22c36cf2e9Sopenharmony_ci
23c36cf2e9Sopenharmony_ciexport default class PrintAdapter {
24c36cf2e9Sopenharmony_ci  private mPrinterDiscController?: PrinterDiscController;
25c36cf2e9Sopenharmony_ci  private mPrintExtensionController?: PrintExtensionController;
26c36cf2e9Sopenharmony_ci
27c36cf2e9Sopenharmony_ci  constructor() {
28c36cf2e9Sopenharmony_ci    this.init();
29c36cf2e9Sopenharmony_ci  }
30c36cf2e9Sopenharmony_ci
31c36cf2e9Sopenharmony_ci  public static getInstance(): PrintAdapter {
32c36cf2e9Sopenharmony_ci    if (GlobalThisHelper.getValue<PrintAdapter>(GlobalThisStorageKey.KEY_PRINT_ADAPTER) !== undefined) {
33c36cf2e9Sopenharmony_ci      return GlobalThisHelper.getValue<PrintAdapter>(GlobalThisStorageKey.KEY_PRINT_ADAPTER);
34c36cf2e9Sopenharmony_ci    }
35c36cf2e9Sopenharmony_ci    return GlobalThisHelper.createValue<PrintAdapter>(new PrintAdapter(), GlobalThisStorageKey.KEY_PRINT_ADAPTER);
36c36cf2e9Sopenharmony_ci  }
37c36cf2e9Sopenharmony_ci
38c36cf2e9Sopenharmony_ci  init(): void {
39c36cf2e9Sopenharmony_ci    Log.info(TAG, 'PrintAdapter init');
40c36cf2e9Sopenharmony_ci    this.mPrinterDiscController = new PrinterDiscController();
41c36cf2e9Sopenharmony_ci    this.mPrinterDiscController.init();
42c36cf2e9Sopenharmony_ci    this.mPrintExtensionController = new PrintExtensionController();
43c36cf2e9Sopenharmony_ci    this.mPrintExtensionController.init();
44c36cf2e9Sopenharmony_ci  }
45c36cf2e9Sopenharmony_ci
46c36cf2e9Sopenharmony_ci  public destroy(): void {
47c36cf2e9Sopenharmony_ci    Log.info(TAG, 'onDestroy');
48c36cf2e9Sopenharmony_ci    if (this.mPrinterDiscController !== undefined) {
49c36cf2e9Sopenharmony_ci      this.mPrinterDiscController.destroy();
50c36cf2e9Sopenharmony_ci    }
51c36cf2e9Sopenharmony_ci  }
52c36cf2e9Sopenharmony_ci
53c36cf2e9Sopenharmony_ci  /**
54c36cf2e9Sopenharmony_ci   * get device discovery controller
55c36cf2e9Sopenharmony_ci   *
56c36cf2e9Sopenharmony_ci   * @return DeviceDiscController
57c36cf2e9Sopenharmony_ci   */
58c36cf2e9Sopenharmony_ci  public getPrinterDiscCtl(): PrinterDiscController | undefined {
59c36cf2e9Sopenharmony_ci    return this.mPrinterDiscController;
60c36cf2e9Sopenharmony_ci  }
61c36cf2e9Sopenharmony_ci
62c36cf2e9Sopenharmony_ci  /**
63c36cf2e9Sopenharmony_ci   * get PrintExtension controller
64c36cf2e9Sopenharmony_ci   *
65c36cf2e9Sopenharmony_ci   * @return PrintExtensionController
66c36cf2e9Sopenharmony_ci   */
67c36cf2e9Sopenharmony_ci  public getPrintExtensionCtl(): PrintExtensionController | undefined {
68c36cf2e9Sopenharmony_ci    return this.mPrintExtensionController;
69c36cf2e9Sopenharmony_ci  }
70c36cf2e9Sopenharmony_ci}