• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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