1/* 2 * Copyright (c) 2023-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 { PrinterDiscController } from '../../Controller/PrinterDiscController'; 17import { PrintJobController } from '../../Controller/PrintJobController'; 18import { PrintPreviewController } from '../../Controller/PrintPreviewController'; 19import { PrintExtensionController } from '../../Controller/PrintExtensionController'; 20import { Log } from '@ohos/common'; 21import { GlobalThisHelper, GlobalThisStorageKey} from '@ohos/common'; 22 23const TAG: string = '[PrintAdapter]:'; 24 25export default class PrintAdapter { 26 private mPrinterDiscController: PrinterDiscController; 27 private mPrintJobController: PrintJobController; 28 private mPrintExtensionController: PrintExtensionController; 29 private mPrintPreviewController: PrintPreviewController; 30 31 constructor() { 32 this.init(); 33 } 34 35 public static getInstance(): PrintAdapter { 36 if (GlobalThisHelper.getValue<PrintAdapter>(GlobalThisStorageKey.KEY_PRINT_ADAPTER) !== undefined) { 37 return GlobalThisHelper.getValue<PrintAdapter>(GlobalThisStorageKey.KEY_PRINT_ADAPTER); 38 } 39 return GlobalThisHelper.createValue<PrintAdapter>(new PrintAdapter(), GlobalThisStorageKey.KEY_PRINT_ADAPTER); 40 } 41 42 init(): void { 43 Log.info(TAG, 'PrintAdapter init'); 44 this.mPrintPreviewController = new PrintPreviewController(); 45 this.mPrintJobController = new PrintJobController(); 46 this.mPrintJobController.init(); 47 this.mPrinterDiscController = new PrinterDiscController(); 48 this.mPrinterDiscController.init(); 49 this.mPrintExtensionController = new PrintExtensionController(); 50 this.mPrintExtensionController.init(); 51 } 52 53 public destroy(): void { 54 Log.info(TAG, 'onDestroy'); 55 if (this.mPrintJobController !== undefined) { 56 this.mPrintJobController.destroy(); 57 } 58 if (this.mPrinterDiscController !== undefined) { 59 this.mPrinterDiscController.destroy(); 60 } 61 } 62 63 /** 64 * get device discovery controller 65 * 66 * @return DeviceDiscController 67 */ 68 public getPrinterDiscCtl(): PrinterDiscController { 69 return this.mPrinterDiscController; 70 } 71 72 /** 73 * get print preview controller 74 * 75 * @return PrintPreviewController 76 */ 77 public getPrintPreviewCtl(): PrintPreviewController { 78 return this.mPrintPreviewController; 79 } 80 81 /** 82 * get printJob controller 83 * 84 * @return PrintJobController 85 */ 86 public getPrintJobCtl(): PrintJobController { 87 return this.mPrintJobController; 88 } 89 90 /** 91 * get PrintExtension controller 92 * 93 * @return PrintExtensionController 94 */ 95 public getPrintExtensionCtl(): PrintExtensionController { 96 return this.mPrintExtensionController; 97 } 98}