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