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 CheckEmptyUtils, { PageDirection, PrintQuality, MediaType ,Duplex, MediaSizeHelper} from '@ohos/common' 17import { Log, MediaSize } from '@ohos/common' 18 19const TAG = '[SelectionModel]:' 20export default class SelectionModel { 21 public static selectionMap: Map<string, object> = new Map(); 22 public static readonly Add_Printer: SelectionModel = new SelectionModel('index_add_printer' 23 , $r('app.string.index_add_printer')) 24 public static readonly NO_Printer: SelectionModel = new SelectionModel('index_no_printer_selected' 25 , $r('app.string.index_no_printer_selected')) 26 public static readonly MediaSize_ISO_A3: SelectionModel = new SelectionModel('ISO_A3' 27 , MediaSizeHelper.ISO_A3.label) 28 public static readonly MediaSize_ISO_A4: SelectionModel = new SelectionModel('ISO_A4' 29 , MediaSizeHelper.ISO_A4.label) 30 public static readonly MediaSize_ISO_A5: SelectionModel = new SelectionModel('ISO_A5' 31 , MediaSizeHelper.ISO_A5.label) 32 public static readonly MediaSize_JIS_B5: SelectionModel = new SelectionModel('JIS_B5' 33 , MediaSizeHelper.JIS_B5.label) 34 public static readonly MediaSize_ISO_C5: SelectionModel = new SelectionModel('ISO_C5' 35 , '') 36 public static readonly MediaSize_ISO_DL: SelectionModel = new SelectionModel('ISO_DL' 37 , '') 38 public static readonly MediaSize_LETTER: SelectionModel = new SelectionModel('LETTER' 39 , MediaSizeHelper.LETTER.label) 40 public static readonly MediaSize_LEGAL: SelectionModel = new SelectionModel('LEGAL' 41 , MediaSizeHelper.LEGAL.label) 42 public static readonly MediaSize_PHOTO_4x6: SelectionModel = new SelectionModel('PHOTO_4x6' 43 , '') 44 public static readonly MediaSize_PHOTO_5x7: SelectionModel = new SelectionModel('PHOTO_5x7' 45 , '') 46 public static readonly MediaSize_INT_DL_ENVELOPE: SelectionModel = new SelectionModel('INT_DL_ENVELOPE' 47 , MediaSizeHelper.INT_DL_ENVELOPE.label) 48 public static readonly MediaSize_B_TABLOID: SelectionModel = new SelectionModel('B_TABLOID' 49 , MediaSizeHelper.B_TABLOID.label) 50 public static readonly Direction_AUTO: SelectionModel = new SelectionModel('PageDirection_AUTO' 51 , $r('app.string.PageDirection_AUTO')) 52 public static readonly Direction_LANDSCAPE: SelectionModel = new SelectionModel('PageDirection_LANDSCAPE' 53 , $r('app.string.PageDirection_LANDSCAPE')) 54 public static readonly Direction_VERTICAL: SelectionModel = new SelectionModel('PageDirection_VERTICAL' 55 , $r('app.string.PageDirection_VERTICAL')) 56 public static readonly MediaType_NORMAL: SelectionModel = new SelectionModel('MediaType_NORMAL' 57 , $r('app.string.MediaType_NORMAL')) 58 public static readonly MediaType_PHOTO: SelectionModel = new SelectionModel('MediaType_PHOTO' 59 , $r('app.string.MediaType_PHOTO')) 60 public static readonly PrintQuality_BEST: SelectionModel = new SelectionModel('PrintQuality_BEST' 61 , $r('app.string.PrintQuality_BEST')) 62 public static readonly PrintQuality_STANDARD: SelectionModel = new SelectionModel('PrintQuality_STANDARD' 63 , $r('app.string.PrintQuality_STANDARD')) 64 public static readonly PrintQuality_ECONOMY: SelectionModel = new SelectionModel('PrintQuality_ECONOMY' 65 , $r('app.string.PrintQuality_ECONOMY')) 66 public static readonly DuplexMode_SINGLE: SelectionModel = new SelectionModel('DuplexMode_ONESIDE' 67 , $r('app.string.DuplexMode_ONESIDE')) 68 public static readonly DuplexMode_LONG: SelectionModel = new SelectionModel('DuplexMode_LONG' 69 , $r('app.string.DuplexMode_LONG')) 70 public static readonly DuplexMode_SHORT: SelectionModel = new SelectionModel('DuplexMode_SHORT' 71 , $r('app.string.DuplexMode_SHORT')) 72 public static MediaSizeSelections: Array<SelectionModel> = []; 73 name: string; // 选项名称 74 res: Resource | string; 75 76 constructor(name: string, res: Resource | string) { 77 this.name = name; 78 this.res = res; 79 } 80 81 public static initSelectionMap():void{ 82 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.ISO_A3,'ISO_A3'); 83 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.ISO_A4,'ISO_A4'); 84 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.ISO_A5,'ISO_A5'); 85 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.JIS_B5,'JIS_B5'); 86 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.ISO_C5,'ISO_C5'); 87 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.ISO_DL,'ISO_DL'); 88 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.LETTER,'LETTER'); 89 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.LEGAL,'LEGAL'); 90 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.PHOTO_4x6,'PHOTO_4x6'); 91 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.PHOTO_5x7,'PHOTO_5x7'); 92 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.INT_DL_ENVELOPE,'INT_DL_ENVELOPE'); 93 SelectionModel.createSelectionValue<MediaSize>(MediaSizeHelper.B_TABLOID,'B_TABLOID'); 94 95 SelectionModel.createSelectionValue<number>(PageDirection.AUTO,'PageDirection_AUTO'); 96 SelectionModel.createSelectionValue<number>(PageDirection.LANDSCAPE,'PageDirection_LANDSCAPE'); 97 SelectionModel.createSelectionValue<number>(PageDirection.VERTICAL,'PageDirection_VERTICAL'); 98 SelectionModel.createSelectionValue<number>(MediaType.NORMAL,'MediaType_NORMAL'); 99 SelectionModel.createSelectionValue<number>(MediaType.PHOTO,'MediaType_PHOTO'); 100 SelectionModel.createSelectionValue<number>(PrintQuality.BEST,'PrintQuality_BEST'); 101 SelectionModel.createSelectionValue<number>(PrintQuality.STANDARD,'PrintQuality_STANDARD'); 102 SelectionModel.createSelectionValue<number>(PrintQuality.ECONOMY,'PrintQuality_ECONOMY'); 103 SelectionModel.createSelectionValue<number>(Duplex.SINGLE,'DuplexMode_ONESIDE'); 104 SelectionModel.createSelectionValue<number>(Duplex.LONG,'DuplexMode_LONG'); 105 SelectionModel.createSelectionValue<number>(Duplex.SHORT,'DuplexMode_SHORT'); 106 } 107 108 public static createSelectionValue<T>(value: T, name: string): void { 109 SelectionModel.selectionMap[name] = value; 110 Log.debug(TAG, 'createSelectionValue name = ' + name); 111 } 112 113 public static getSelectionValue<T>(name: string): T | undefined { 114 if (SelectionModel.selectionMap[name] === undefined) { 115 Log.error(TAG, 'getSelectionValue name not exist: ' + name); 116 return undefined; 117 } 118 return (SelectionModel.selectionMap[name] as T); 119 } 120 121 public static getSelectionModelByLabel(label: string): SelectionModel | undefined { 122 if (CheckEmptyUtils.isEmptyArr(SelectionModel.MediaSizeSelections)) { 123 SelectionModel.initMediaSizeSelections(); 124 } 125 let rtnSelect: SelectionModel | undefined = undefined; 126 SelectionModel.MediaSizeSelections.forEach((selection, index, all) => { 127 if (selection.res === label) { 128 rtnSelect = selection; 129 } 130 }) 131 return rtnSelect; 132 } 133 134 public static initMediaSizeSelections(){ 135 SelectionModel.MediaSizeSelections = new Array<SelectionModel>() 136 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_ISO_A3); 137 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_ISO_A4); 138 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_ISO_A5); 139 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_ISO_C5); 140 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_ISO_DL); 141 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_JIS_B5); 142 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_LEGAL); 143 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_LETTER); 144 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_PHOTO_4x6); 145 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_PHOTO_5x7); 146 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_INT_DL_ENVELOPE); 147 SelectionModel.MediaSizeSelections.push(SelectionModel.MediaSize_B_TABLOID); 148 } 149} 150