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 { 17c36cf2e9Sopenharmony_ci ErrorMessage, 18c36cf2e9Sopenharmony_ci MediaSizeHelper, 19c36cf2e9Sopenharmony_ci MediaTypeCode, 20c36cf2e9Sopenharmony_ci MediaTypes, 21c36cf2e9Sopenharmony_ci PreviewAttribute, 22c36cf2e9Sopenharmony_ci PrinterCapsOptions, 23c36cf2e9Sopenharmony_ci PrintJob, 24c36cf2e9Sopenharmony_ci PrintJobOptions, 25c36cf2e9Sopenharmony_ci PrintUtil, 26c36cf2e9Sopenharmony_ci startPrintJob 27c36cf2e9Sopenharmony_ci} from '@ohos/common'; 28c36cf2e9Sopenharmony_ciimport WifiP2pHelper from '../Common/Adapter/WifiP2pHelper'; 29c36cf2e9Sopenharmony_ciimport FileModel from '../Model/FileModel'; 30c36cf2e9Sopenharmony_ciimport SelectionModel from '../Model/SelectionModel'; 31c36cf2e9Sopenharmony_ciimport { WLANConfirmDialog, PrintingSelectDialog, alarmDialog, connectConfirmDialog } from './component/CusDialogComp'; 32c36cf2e9Sopenharmony_ciimport { 33c36cf2e9Sopenharmony_ci PrinterSelection, 34c36cf2e9Sopenharmony_ci MediaSizeSelection, 35c36cf2e9Sopenharmony_ci DirectionSelection, 36c36cf2e9Sopenharmony_ci MediaTypeSelection, 37c36cf2e9Sopenharmony_ci QualitySelection, 38c36cf2e9Sopenharmony_ci DuplexSelection 39c36cf2e9Sopenharmony_ci} from './component/SelectComponent'; 40c36cf2e9Sopenharmony_ciimport { MediaSize, MediaSizeUtil } from '@ohos/common'; 41c36cf2e9Sopenharmony_ciimport { StringUtil } from '@ohos/common'; 42c36cf2e9Sopenharmony_ciimport { PreviewComponent } from './component/PreviewComponent'; 43c36cf2e9Sopenharmony_ciimport { ErrorCode, PrintPageSize, PrinterRange, PrintMargin, PrinterCapability, PrinterInfo } from '@ohos/common'; 44c36cf2e9Sopenharmony_ciimport PrintAdapter from '../Common/Adapter/PrintAdapter'; 45c36cf2e9Sopenharmony_ciimport { GlobalThisHelper, GlobalThisStorageKey} from '@ohos/common'; 46c36cf2e9Sopenharmony_ciimport FileUtil from '../Common/Utils/FileUtil'; 47c36cf2e9Sopenharmony_ciimport CheckEmptyUtils from '@ohos/common'; 48c36cf2e9Sopenharmony_ciimport { CopyUtil } from '@ohos/common'; 49c36cf2e9Sopenharmony_ciimport { 50c36cf2e9Sopenharmony_ci Constants, 51c36cf2e9Sopenharmony_ci AppCommonEvent, 52c36cf2e9Sopenharmony_ci AppStorageKeyName, 53c36cf2e9Sopenharmony_ci PrintRangeType, 54c36cf2e9Sopenharmony_ci PrintQuality, 55c36cf2e9Sopenharmony_ci Duplex, 56c36cf2e9Sopenharmony_ci PageDirection, 57c36cf2e9Sopenharmony_ci ColorCode, 58c36cf2e9Sopenharmony_ci MediaType, 59c36cf2e9Sopenharmony_ci MouseState 60c36cf2e9Sopenharmony_ci} from '@ohos/common'; 61c36cf2e9Sopenharmony_ciimport { Log } from '@ohos/common'; 62c36cf2e9Sopenharmony_ciimport { uuidGenerator } from '@ohos/common'; 63c36cf2e9Sopenharmony_ciimport { BISHENG_PRINTER } from '@ohos/common'; 64c36cf2e9Sopenharmony_ciimport emitter from '@ohos.events.emitter'; 65c36cf2e9Sopenharmony_ciimport print from '@ohos.print'; 66c36cf2e9Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 67c36cf2e9Sopenharmony_ciimport common from '@ohos.app.ability.common'; 68c36cf2e9Sopenharmony_ciimport {CancelButton} from './component/BaseComponent'; 69c36cf2e9Sopenharmony_ciimport image from '@ohos.multimedia.image'; 70c36cf2e9Sopenharmony_ciimport { AboutPageComponent } from './component/AboutPageComponent'; 71c36cf2e9Sopenharmony_ciimport router from '@ohos.router'; 72c36cf2e9Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 73c36cf2e9Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 74c36cf2e9Sopenharmony_ciimport UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession'; 75c36cf2e9Sopenharmony_ci 76c36cf2e9Sopenharmony_ciconst TAG = 'PrintPage'; 77c36cf2e9Sopenharmony_ci 78c36cf2e9Sopenharmony_cilet storage = LocalStorage.getShared(); 79c36cf2e9Sopenharmony_ci@Entry(storage) 80c36cf2e9Sopenharmony_ci@Component 81c36cf2e9Sopenharmony_cistruct Index { 82c36cf2e9Sopenharmony_ci @Provide('ImageCount') imageCount: number = Constants.NUMBER_1;//预览显示的页数 83c36cf2e9Sopenharmony_ci @Provide('CurrentIndex') currentIndex: number = Constants.NUMBER_1; 84c36cf2e9Sopenharmony_ci @Provide('Printer') @Watch('onPrinterChange') printer: PrinterInfo | undefined = undefined; //打印机 85c36cf2e9Sopenharmony_ci @Provide('ShowPageNum') showPageNum: number = Constants.NUMBER_1 86c36cf2e9Sopenharmony_ci @Provide('PrinterList') printerList: Array<PrinterInfo> = []; 87c36cf2e9Sopenharmony_ci @Provide('PrintJob') printJob: PrintJob | undefined = undefined; 88c36cf2e9Sopenharmony_ci @Provide('UsedPrinterId') usedPrinterId: string | undefined = undefined; 89c36cf2e9Sopenharmony_ci @Provide('PrintAdapter') adapter: PrintAdapter | undefined = undefined; 90c36cf2e9Sopenharmony_ci @Provide('ConnectCountDown') connectCount: number = Constants.CONNECT_COUNT; 91c36cf2e9Sopenharmony_ci @Provide('ConnectCountDownTimer') ConnectTimer: number | undefined = undefined; 92c36cf2e9Sopenharmony_ci @Provide('CanPrint') canPrint: boolean = false; 93c36cf2e9Sopenharmony_ci @Provide('WLANFlag') wlanFlag: boolean = false; 94c36cf2e9Sopenharmony_ci @Provide('IsNeedListenWlan') isNeedListenWlan: boolean = false; 95c36cf2e9Sopenharmony_ci @Provide('ConnectingPrinterId') connectingPrinterId: string = Constants.DEFAULT_CONNECTING_PRINTER_ID; 96c36cf2e9Sopenharmony_ci @Provide('PrinterSelectArray') printerSelectArray: Array<SelectionModel> = []; 97c36cf2e9Sopenharmony_ci @Provide('CurrentPrinter') currentPrinterSelection: SelectionModel = SelectionModel.NO_Printer; 98c36cf2e9Sopenharmony_ci @Provide('MediaSizeSelectArray') mediaSizeSelectArray: Array<SelectionModel> = []; 99c36cf2e9Sopenharmony_ci @Provide('CurrentMediaSize') @Watch('updateMediaSize') currentMediaSize: SelectionModel = SelectionModel.MediaSize_ISO_A4; 100c36cf2e9Sopenharmony_ci @Provide('DirectionSelectArray') directionSelectArray: Array<SelectionModel> = []; 101c36cf2e9Sopenharmony_ci @Provide('CurrentDirection') @Watch('updateDirection') currentDirection: SelectionModel = SelectionModel.Direction_AUTO; 102c36cf2e9Sopenharmony_ci @Provide('MediaTypeSelectArray') mediaTypeSelectArray: Array<SelectionModel> = []; 103c36cf2e9Sopenharmony_ci @Provide('CurrentMediaType') @Watch('updateMediaType') currentMediaType: SelectionModel = SelectionModel.MediaType_NORMAL; 104c36cf2e9Sopenharmony_ci @Provide('QualitySelectArray') qualitySelectArray: Array<SelectionModel> = []; 105c36cf2e9Sopenharmony_ci @Provide('CurrentQuality') currentQuality: SelectionModel = SelectionModel.PrintQuality_STANDARD; 106c36cf2e9Sopenharmony_ci @Provide('DuplexSelectArray') duplexSelectArray: Array<SelectionModel> = []; 107c36cf2e9Sopenharmony_ci @Provide('CurrentDuplex') currentDuplex: SelectionModel = SelectionModel.DuplexMode_SINGLE; 108c36cf2e9Sopenharmony_ci @Provide('PrintRange') printRange: Array<number> = []; //打印范围 109c36cf2e9Sopenharmony_ci @Provide('NeedDuplex') @Watch('needDuplexChange')needDuplex: boolean = true; 110c36cf2e9Sopenharmony_ci @Provide('IsBorderless') isBorderless: boolean = false //是否无边距 111c36cf2e9Sopenharmony_ci @Provide('IsPreviewFailed') isPreviewFailed: boolean = false //是否需要显示预览失败图示 112c36cf2e9Sopenharmony_ci private abilityContext: common.UIExtensionContext | undefined = undefined; 113c36cf2e9Sopenharmony_ci @State @Watch('updateImageSources')imageSources: Array<FileModel> = new Array(); 114c36cf2e9Sopenharmony_ci @State startPage: number = Constants.NUMBER_1 //打印范围起始页 115c36cf2e9Sopenharmony_ci @State startPageStr: string = Constants.STRING_ONE //打印范围起始页 116c36cf2e9Sopenharmony_ci @State endPage: number = Constants.NUMBER_1 //打印范围终止页 117c36cf2e9Sopenharmony_ci @State endPageStr: string = Constants.STRING_ONE //打印范围终止页 118c36cf2e9Sopenharmony_ci @State printCount: number = Constants.NUMBER_1 //份数 119c36cf2e9Sopenharmony_ci @State printCountStr: string = Constants.STRING_ONE //份数 120c36cf2e9Sopenharmony_ci @State isColored: boolean = false //是否彩印 121c36cf2e9Sopenharmony_ci @State isColorEnabled: boolean = true //是否支持彩印 122c36cf2e9Sopenharmony_ci @State isDuplexEnabled: boolean = true //是否支持双面 123c36cf2e9Sopenharmony_ci @State isPhotoEnabled: boolean = true //是否支持相片纸 124c36cf2e9Sopenharmony_ci @State isPlusPressed: boolean = false //是否按下份数+ 125c36cf2e9Sopenharmony_ci @State plusMouseState: number = MouseState.NONE //份数+ 126c36cf2e9Sopenharmony_ci @State minusMouseState: number = MouseState.NONE //份数- 127c36cf2e9Sopenharmony_ci @State isMinusPressed: boolean = false //是否按下份数- 128c36cf2e9Sopenharmony_ci @State mediaSizeList: Array<MediaSize> = []; //所有纸张尺寸 129c36cf2e9Sopenharmony_ci @State printRangeType: number = PrintRangeType.ALL; //打印范围类型 0:全部页面 1:范围打印 130c36cf2e9Sopenharmony_ci @State colorMode: number = ColorCode.MONOCHROME; 131c36cf2e9Sopenharmony_ci @State mediaSize: MediaSize = MediaSizeHelper.ISO_A4; //纸张尺寸 132c36cf2e9Sopenharmony_ci @State pageDirection: number = Constants.NUMBER_0; //纸张方向 133c36cf2e9Sopenharmony_ci @State printerRange: PrinterRange | undefined = undefined; //打印框架需要的参数,实际不起效 134c36cf2e9Sopenharmony_ci @State printerPageSize: PrintPageSize | undefined = undefined; //纸张尺寸 135c36cf2e9Sopenharmony_ci @State alarmText: string | undefined = undefined; 136c36cf2e9Sopenharmony_ci @State lastPrinterExist: boolean = false; 137c36cf2e9Sopenharmony_ci @State isConnected: boolean = false; 138c36cf2e9Sopenharmony_ci @State printerCap: print.PrinterCapability | undefined = undefined; 139c36cf2e9Sopenharmony_ci @State printButtonFlag: boolean = true; 140c36cf2e9Sopenharmony_ci @State cusRangeBorderColor: Resource = $r('app.color.border_line'); 141c36cf2e9Sopenharmony_ci @State errorMessage: Resource | undefined = undefined; 142c36cf2e9Sopenharmony_ci @State isCusRangeError: boolean = false; 143c36cf2e9Sopenharmony_ci @State isCusRangeMax: boolean = false; 144c36cf2e9Sopenharmony_ci @State cusRangeArr: Array<number> = []; 145c36cf2e9Sopenharmony_ci @State cusRangeText: string | undefined = undefined; 146c36cf2e9Sopenharmony_ci @State isRangeRadioEnable: boolean = false; 147c36cf2e9Sopenharmony_ci @State isCustomRadioEnable: boolean = false; 148c36cf2e9Sopenharmony_ci @State isAbovePageLimit: boolean = false;//是否超过页数限制 149c36cf2e9Sopenharmony_ci @State printParamCompHeight: number = 0;//参数区组件高度 150c36cf2e9Sopenharmony_ci @Provide('PreviewCompHeight') previewCompHeight: number = 0;//预览区组件高度 151c36cf2e9Sopenharmony_ci @Provide('IsGlobalDisable') isGlobalDisable: boolean = false; 152c36cf2e9Sopenharmony_ci @Provide('PrinterSelectFlag') @Watch('openPrinterSelectDialog') printerSelectFlag: boolean = false; 153c36cf2e9Sopenharmony_ci @Provide('OpenWLANFlag') @Watch('openWLANDialog') openWlanFlag: boolean = true; 154c36cf2e9Sopenharmony_ci @Provide('ConnectFlag') @Watch('connectAlarm') connectFlag: boolean = true; 155c36cf2e9Sopenharmony_ci @StorageLink('JobQueue') jobQueue: Array<PrintJob> = new Array(); 156c36cf2e9Sopenharmony_ci private usedPrinterFileName: string = 'lastUsedPrinter' 157c36cf2e9Sopenharmony_ci private firstFileName: string = Constants.STRING_NONE; 158c36cf2e9Sopenharmony_ci private totalPage: number = Constants.NUMBER_1//总页数 159c36cf2e9Sopenharmony_ci private allPages: Array<number> = []; 160c36cf2e9Sopenharmony_ci private jobName: string = Constants.STRING_NONE 161c36cf2e9Sopenharmony_ci private jobNum: number = Constants.NUMBER_1 162c36cf2e9Sopenharmony_ci private jobDes: string = Constants.STRING_NONE 163c36cf2e9Sopenharmony_ci private jobId: string = Constants.STRING_NONE 164c36cf2e9Sopenharmony_ci private jobFileList: Array<string> = [] 165c36cf2e9Sopenharmony_ci private supportedMediaTypes: Array<number> = [] 166c36cf2e9Sopenharmony_ci private scroller: Scroller = new Scroller() 167c36cf2e9Sopenharmony_ci private firstStartPageEdit: boolean = true 168c36cf2e9Sopenharmony_ci private firstEndPageEdit: boolean = true 169c36cf2e9Sopenharmony_ci private editCusRangeFlag: boolean = true//自定义输入框自动置空时为false,不触发编辑 170c36cf2e9Sopenharmony_ci private rangeInputLimit: number = Constants.NUMBER_3 //范围输入框位数限制 171c36cf2e9Sopenharmony_ci private firstPrinterDiscoveredFlag: boolean = false; 172c36cf2e9Sopenharmony_ci private changeRangeTypeFlag: boolean = true;//范围框radio选中是否让startPage输入框获焦 173c36cf2e9Sopenharmony_ci private fileNum: number = Constants.NUMBER_0; 174c36cf2e9Sopenharmony_ci private session?: UIExtensionContentSession = undefined; 175c36cf2e9Sopenharmony_ci WLANConfirmDialogCtl: CustomDialogController = new CustomDialogController({ 176c36cf2e9Sopenharmony_ci builder: WLANConfirmDialog(), 177c36cf2e9Sopenharmony_ci alignment: DialogAlignment.Center, 178c36cf2e9Sopenharmony_ci autoCancel: false, 179c36cf2e9Sopenharmony_ci customStyle: true, 180c36cf2e9Sopenharmony_ci }) 181c36cf2e9Sopenharmony_ci PrintingSelectDialogCtl: CustomDialogController = new CustomDialogController({ 182c36cf2e9Sopenharmony_ci builder: PrintingSelectDialog(), 183c36cf2e9Sopenharmony_ci alignment: DialogAlignment.Center, 184c36cf2e9Sopenharmony_ci autoCancel: false, 185c36cf2e9Sopenharmony_ci customStyle: true, 186c36cf2e9Sopenharmony_ci }) 187c36cf2e9Sopenharmony_ci alarmDialogCtl: CustomDialogController = new CustomDialogController({ 188c36cf2e9Sopenharmony_ci builder: alarmDialog({ alarmText: this.alarmText }), 189c36cf2e9Sopenharmony_ci alignment: DialogAlignment.Center, 190c36cf2e9Sopenharmony_ci autoCancel: false, 191c36cf2e9Sopenharmony_ci customStyle: true, 192c36cf2e9Sopenharmony_ci }) 193c36cf2e9Sopenharmony_ci connectConfirmDialogCtl: CustomDialogController = new CustomDialogController({ 194c36cf2e9Sopenharmony_ci builder: connectConfirmDialog(), 195c36cf2e9Sopenharmony_ci alignment: DialogAlignment.Center, 196c36cf2e9Sopenharmony_ci autoCancel: false, 197c36cf2e9Sopenharmony_ci customStyle: true, 198c36cf2e9Sopenharmony_ci }) 199c36cf2e9Sopenharmony_ci 200c36cf2e9Sopenharmony_ci build() { 201c36cf2e9Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) { 202c36cf2e9Sopenharmony_ci // 预览组件 203c36cf2e9Sopenharmony_ci PreviewComponent({ 204c36cf2e9Sopenharmony_ci pageDirection: $pageDirection, 205c36cf2e9Sopenharmony_ci colorMode: $colorMode, 206c36cf2e9Sopenharmony_ci mediaSize: $mediaSize, 207c36cf2e9Sopenharmony_ci imageSources: $imageSources 208c36cf2e9Sopenharmony_ci }) 209c36cf2e9Sopenharmony_ci .height('40%') 210c36cf2e9Sopenharmony_ci .onAreaChange((oldValue: Area, newValue: Area) => { 211c36cf2e9Sopenharmony_ci Log.info(`Ace: on area change, oldValue is ${JSON.stringify(oldValue)} value is ${JSON.stringify(newValue)}`) 212c36cf2e9Sopenharmony_ci this.previewCompHeight = newValue.height as number; 213c36cf2e9Sopenharmony_ci this.printParamCompHeight = this.previewCompHeight*1.5 214c36cf2e9Sopenharmony_ci }) 215c36cf2e9Sopenharmony_ci Column() { 216c36cf2e9Sopenharmony_ci Scroll(this.scroller) { 217c36cf2e9Sopenharmony_ci Column() { 218c36cf2e9Sopenharmony_ci PrinterSelection() 219c36cf2e9Sopenharmony_ci Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center }) { 220c36cf2e9Sopenharmony_ci Text($r('app.string.index_add_copies')) 221c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 222c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 223c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 224c36cf2e9Sopenharmony_ci .key('Index_Text_copies') 225c36cf2e9Sopenharmony_ci .focusable(true) 226c36cf2e9Sopenharmony_ci .onFocus(()=>{ 227c36cf2e9Sopenharmony_ci if (this.printRangeType === PrintRangeType.CUSTOM) { 228c36cf2e9Sopenharmony_ci this.checkCustomRangeTextInput(false) 229c36cf2e9Sopenharmony_ci } 230c36cf2e9Sopenharmony_ci }) 231c36cf2e9Sopenharmony_ci TextInput({ text: this.printCountStr }) 232c36cf2e9Sopenharmony_ci .type(InputType.Number) 233c36cf2e9Sopenharmony_ci .maxLength(Constants.NUMBER_2) 234c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 235c36cf2e9Sopenharmony_ci .border({ 236c36cf2e9Sopenharmony_ci width: $r('app.float.border_width'), 237c36cf2e9Sopenharmony_ci radius: $r('app.float.radius_s'), 238c36cf2e9Sopenharmony_ci color: $r('app.color.border_line') 239c36cf2e9Sopenharmony_ci }) 240c36cf2e9Sopenharmony_ci .backgroundColor(Color.White) 241c36cf2e9Sopenharmony_ci .width($r('app.float.print_copies_textInput_width')) 242c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 243c36cf2e9Sopenharmony_ci .margin({ 244c36cf2e9Sopenharmony_ci left: $r('app.float.print_copies_textInput_left_margin'), 245c36cf2e9Sopenharmony_ci right: $r('app.float.print_copies_textInput_right_margin') 246c36cf2e9Sopenharmony_ci }) 247c36cf2e9Sopenharmony_ci .key('Index_TextInput_copies') 248c36cf2e9Sopenharmony_ci .onChange((value: string) => { 249c36cf2e9Sopenharmony_ci Log.info(TAG, 'copies onChange value:' + value) 250c36cf2e9Sopenharmony_ci this.printCount = Number.parseInt(value) 251c36cf2e9Sopenharmony_ci this.printCountStr = value//规避前置0输入 252c36cf2e9Sopenharmony_ci this.printCountStr = this.printCount.toString() 253c36cf2e9Sopenharmony_ci Log.info(TAG, 'copies onChange printCount:' + this.printCount) 254c36cf2e9Sopenharmony_ci if (Number.isNaN(this.printCount)) { 255c36cf2e9Sopenharmony_ci this.printCount = Constants.NUMBER_1 256c36cf2e9Sopenharmony_ci this.printCountStr = Constants.STRING_NONE 257c36cf2e9Sopenharmony_ci } 258c36cf2e9Sopenharmony_ci if (this.printCount < Constants.NUMBER_1) { 259c36cf2e9Sopenharmony_ci this.printCount = Constants.NUMBER_1 260c36cf2e9Sopenharmony_ci } 261c36cf2e9Sopenharmony_ci if (this.printCount > Constants.NUMBER_99||this.printCount >= Number.MAX_VALUE) { 262c36cf2e9Sopenharmony_ci this.printCount = Constants.NUMBER_99 263c36cf2e9Sopenharmony_ci } 264c36cf2e9Sopenharmony_ci }) 265c36cf2e9Sopenharmony_ci .onSubmit(() => { 266c36cf2e9Sopenharmony_ci this.printCountStr = Constants.STRING_NONE 267c36cf2e9Sopenharmony_ci this.printCountStr = this.printCount.toString() 268c36cf2e9Sopenharmony_ci }) 269c36cf2e9Sopenharmony_ci .onBlur(() => { 270c36cf2e9Sopenharmony_ci this.printCountStr = '' 271c36cf2e9Sopenharmony_ci this.printCountStr = this.printCount.toString() 272c36cf2e9Sopenharmony_ci Log.info(TAG,'copies onBlur printCountStr: ',this.printCountStr) 273c36cf2e9Sopenharmony_ci }) 274c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 275c36cf2e9Sopenharmony_ci e.stopPropagation() 276c36cf2e9Sopenharmony_ci }) 277c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 278c36cf2e9Sopenharmony_ci e.stopPropagation() 279c36cf2e9Sopenharmony_ci }) 280c36cf2e9Sopenharmony_ci Column() { 281c36cf2e9Sopenharmony_ci Image(this.getPlusImage(this.plusMouseState,this.printCount < Constants.NUMBER_99)) 282c36cf2e9Sopenharmony_ci .width($r('app.float.print_copies_image_width')) 283c36cf2e9Sopenharmony_ci .height($r('app.float.print_copies_image_height')) 284c36cf2e9Sopenharmony_ci .enabled(this.printCount < Constants.NUMBER_99) 285c36cf2e9Sopenharmony_ci .key('Index_Image_plus_copies') 286c36cf2e9Sopenharmony_ci .onClick(() => { 287c36cf2e9Sopenharmony_ci if (this.printCount < Constants.NUMBER_99) { 288c36cf2e9Sopenharmony_ci this.printCount++ 289c36cf2e9Sopenharmony_ci this.printCountStr = this.printCount.toString() 290c36cf2e9Sopenharmony_ci } 291c36cf2e9Sopenharmony_ci }) 292c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 293c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 294c36cf2e9Sopenharmony_ci this.plusMouseState = MouseState.PRESS 295c36cf2e9Sopenharmony_ci } 296c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 297c36cf2e9Sopenharmony_ci this.plusMouseState = MouseState.NONE 298c36cf2e9Sopenharmony_ci } 299c36cf2e9Sopenharmony_ci }) 300c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 301c36cf2e9Sopenharmony_ci if (isHover) { 302c36cf2e9Sopenharmony_ci this.plusMouseState = MouseState.HOVER 303c36cf2e9Sopenharmony_ci } else { 304c36cf2e9Sopenharmony_ci this.plusMouseState = MouseState.NONE 305c36cf2e9Sopenharmony_ci } 306c36cf2e9Sopenharmony_ci }) 307c36cf2e9Sopenharmony_ci Image(this.getMinusImage(this.minusMouseState,this.printCount > Constants.NUMBER_1)) 308c36cf2e9Sopenharmony_ci .width($r('app.float.print_copies_image_width')) 309c36cf2e9Sopenharmony_ci .height($r('app.float.print_copies_image_height')) 310c36cf2e9Sopenharmony_ci .enabled(this.printCount > Constants.NUMBER_1) 311c36cf2e9Sopenharmony_ci .key('Index_Image_minus_copies') 312c36cf2e9Sopenharmony_ci .onClick(() => { 313c36cf2e9Sopenharmony_ci if (this.printCount > Constants.NUMBER_1) { 314c36cf2e9Sopenharmony_ci this.printCount-- 315c36cf2e9Sopenharmony_ci this.printCountStr = this.printCount.toString() 316c36cf2e9Sopenharmony_ci } 317c36cf2e9Sopenharmony_ci }) 318c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 319c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 320c36cf2e9Sopenharmony_ci this.minusMouseState = MouseState.PRESS 321c36cf2e9Sopenharmony_ci } 322c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 323c36cf2e9Sopenharmony_ci this.minusMouseState = MouseState.NONE 324c36cf2e9Sopenharmony_ci } 325c36cf2e9Sopenharmony_ci }) 326c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 327c36cf2e9Sopenharmony_ci if (isHover) { 328c36cf2e9Sopenharmony_ci this.minusMouseState = MouseState.HOVER 329c36cf2e9Sopenharmony_ci } else { 330c36cf2e9Sopenharmony_ci this.minusMouseState = MouseState.NONE 331c36cf2e9Sopenharmony_ci } 332c36cf2e9Sopenharmony_ci }) 333c36cf2e9Sopenharmony_ci } 334c36cf2e9Sopenharmony_ci .width($r('app.float.print_copies_image_width')) 335c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 336c36cf2e9Sopenharmony_ci 337c36cf2e9Sopenharmony_ci Text($r('app.string.ColorMode')) 338c36cf2e9Sopenharmony_ci .key('Index_Text_color') 339c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 340c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 341c36cf2e9Sopenharmony_ci .margin({ 342c36cf2e9Sopenharmony_ci left: $r('app.float.text_colorMode_left_margin'), 343c36cf2e9Sopenharmony_ci right: $r('app.float.text_colorMode_right_margin') 344c36cf2e9Sopenharmony_ci }) 345c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 346c36cf2e9Sopenharmony_ci .visibility(this.isColorEnabled ? Visibility.Visible : Visibility.None) 347c36cf2e9Sopenharmony_ci Toggle({ type: ToggleType.Switch, isOn: !this.isColored }) 348c36cf2e9Sopenharmony_ci .key('Index_Toggle_color') 349c36cf2e9Sopenharmony_ci .width($r('app.float.toggle_colorMode_width')) 350c36cf2e9Sopenharmony_ci .margin({ right: $r('app.float.toggle_colorMode_right_margin') }) 351c36cf2e9Sopenharmony_ci .alignSelf(ItemAlign.Center) 352c36cf2e9Sopenharmony_ci .visibility(this.isColorEnabled ? Visibility.Visible : Visibility.None) 353c36cf2e9Sopenharmony_ci .onChange((isOn: boolean) => { 354c36cf2e9Sopenharmony_ci this.isColored = !isOn 355c36cf2e9Sopenharmony_ci Log.info(TAG, 'ColorMode onChange: ' + this.isColored) 356c36cf2e9Sopenharmony_ci if (this.isColored) { 357c36cf2e9Sopenharmony_ci this.colorMode = ColorCode.COLOR 358c36cf2e9Sopenharmony_ci } else { 359c36cf2e9Sopenharmony_ci this.colorMode = ColorCode.MONOCHROME 360c36cf2e9Sopenharmony_ci } 361c36cf2e9Sopenharmony_ci }) 362c36cf2e9Sopenharmony_ci } 363c36cf2e9Sopenharmony_ci .height($r('app.float.params_row_height')) 364c36cf2e9Sopenharmony_ci .width($r('app.float.params_row_width')) 365c36cf2e9Sopenharmony_ci 366c36cf2e9Sopenharmony_ci Column() { 367c36cf2e9Sopenharmony_ci Row() { 368c36cf2e9Sopenharmony_ci Text($r('app.string.index_page_range')) 369c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 370c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 371c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 372c36cf2e9Sopenharmony_ci .key('Index_Text_pageRange') 373c36cf2e9Sopenharmony_ci Radio({ value: 'Radio1', group: 'radioGroup' }) 374c36cf2e9Sopenharmony_ci .checked(this.printRangeType === PrintRangeType.ALL) 375c36cf2e9Sopenharmony_ci .key('Index_Radio_allPages_pageRange') 376c36cf2e9Sopenharmony_ci .width($r('app.float.image_comp_width')) 377c36cf2e9Sopenharmony_ci .margin({ 378c36cf2e9Sopenharmony_ci left: $r('app.float.Radio_pageRange_left_margin'), 379c36cf2e9Sopenharmony_ci right: $r('app.float.Radio_pageRange_right_margin') 380c36cf2e9Sopenharmony_ci }) 381c36cf2e9Sopenharmony_ci .onChange((value: boolean) => { 382c36cf2e9Sopenharmony_ci Log.info(TAG,'Radio_range_pageRange all') 383c36cf2e9Sopenharmony_ci if (value) { 384c36cf2e9Sopenharmony_ci if (this.printRangeType === PrintRangeType.CUSTOM) { 385c36cf2e9Sopenharmony_ci this.checkCustomRangeTextInput(true); 386c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.ALL 387c36cf2e9Sopenharmony_ci focusControl.requestFocus('Index_Text_copies') 388c36cf2e9Sopenharmony_ci } 389c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.ALL; 390c36cf2e9Sopenharmony_ci this.updatePrintRange() 391c36cf2e9Sopenharmony_ci } 392c36cf2e9Sopenharmony_ci }) 393c36cf2e9Sopenharmony_ci Text($r('app.string.index_all_pages')) 394c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 395c36cf2e9Sopenharmony_ci .key('Index_Text_allPages_pageRange') 396c36cf2e9Sopenharmony_ci } 397c36cf2e9Sopenharmony_ci .height($r('app.float.params_row_height')) 398c36cf2e9Sopenharmony_ci .width($r('app.float.params_row_width')) 399c36cf2e9Sopenharmony_ci 400c36cf2e9Sopenharmony_ci Row() { 401c36cf2e9Sopenharmony_ci Radio({ value: 'Radio2', group: 'radioGroup' }) 402c36cf2e9Sopenharmony_ci .checked(this.printRangeType === PrintRangeType.RANGE) 403c36cf2e9Sopenharmony_ci .key('Index_Radio_range_pageRange') 404c36cf2e9Sopenharmony_ci .width($r('app.float.image_comp_width')) 405c36cf2e9Sopenharmony_ci .margin({ 406c36cf2e9Sopenharmony_ci left: $r('app.float.Radio_pageRange2_left_margin'), 407c36cf2e9Sopenharmony_ci right: $r('app.float.Radio_pageRange2_right_margin') 408c36cf2e9Sopenharmony_ci }) 409c36cf2e9Sopenharmony_ci .onChange((value: boolean) => { 410c36cf2e9Sopenharmony_ci if (value) { 411c36cf2e9Sopenharmony_ci if (this.changeRangeTypeFlag) { 412c36cf2e9Sopenharmony_ci focusControl.requestFocus('Index_TextInput_from_pageRange') 413c36cf2e9Sopenharmony_ci } 414c36cf2e9Sopenharmony_ci this.checkCustomRangeTextInput(true) 415c36cf2e9Sopenharmony_ci Log.info(TAG, 'Radio_range_pageRange onChange: '+ this.endPage) 416c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.RANGE; 417c36cf2e9Sopenharmony_ci this.editCusRangeFlag = false;this.cusRangeText = Constants.NUMBER_1+Constants.HYPHEN+Constants.MAX_PAGES.toString() 418c36cf2e9Sopenharmony_ci this.isRangeRadioEnable = true 419c36cf2e9Sopenharmony_ci this.updatePrintRange() 420c36cf2e9Sopenharmony_ci }else{ 421c36cf2e9Sopenharmony_ci Log.info(TAG,'this.isRangeRadioEnable = false') 422c36cf2e9Sopenharmony_ci this.isRangeRadioEnable = false 423c36cf2e9Sopenharmony_ci this.setStartPageStr() 424c36cf2e9Sopenharmony_ci this.setEndPageStr() 425c36cf2e9Sopenharmony_ci } 426c36cf2e9Sopenharmony_ci }) 427c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 428c36cf2e9Sopenharmony_ci e.stopPropagation() 429c36cf2e9Sopenharmony_ci }) 430c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 431c36cf2e9Sopenharmony_ci e.stopPropagation() 432c36cf2e9Sopenharmony_ci }) 433c36cf2e9Sopenharmony_ci Text($r('app.string.index_from')) 434c36cf2e9Sopenharmony_ci .maxLines(Constants.NUMBER_2) 435c36cf2e9Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis}) 436c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 437c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 438c36cf2e9Sopenharmony_ci .key('Index_Text_from_pageRange') 439c36cf2e9Sopenharmony_ci TextInput({ text: this.startPageStr }) 440c36cf2e9Sopenharmony_ci .key('Index_TextInput_from_pageRange') 441c36cf2e9Sopenharmony_ci .width($r('app.float.textInput_pageRange_width')) 442c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 443c36cf2e9Sopenharmony_ci .type(InputType.Number) 444c36cf2e9Sopenharmony_ci .maxLength(this.rangeInputLimit) 445c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 446c36cf2e9Sopenharmony_ci .fontColor(this.isRangeRadioEnable?Color.Black:Color.Gray) 447c36cf2e9Sopenharmony_ci .border({ 448c36cf2e9Sopenharmony_ci width: $r('app.float.border_width'), 449c36cf2e9Sopenharmony_ci radius: $r('app.float.radius_s'), 450c36cf2e9Sopenharmony_ci color: $r('app.color.border_line') 451c36cf2e9Sopenharmony_ci }) 452c36cf2e9Sopenharmony_ci .margin({ 453c36cf2e9Sopenharmony_ci left: $r('app.float.textInput_pageRange_left_margin'), 454c36cf2e9Sopenharmony_ci right: $r('app.float.textInput_pageRange_right_margin') 455c36cf2e9Sopenharmony_ci }) 456c36cf2e9Sopenharmony_ci .backgroundColor(Color.White) 457c36cf2e9Sopenharmony_ci .onChange((value: string) => { 458c36cf2e9Sopenharmony_ci this.startPage = Number.parseInt(value) 459c36cf2e9Sopenharmony_ci this.startPageStr = value//规避前置0输入 460c36cf2e9Sopenharmony_ci this.startPageStr = this.startPage.toString() 461c36cf2e9Sopenharmony_ci Log.info(TAG, 'from change; value = ' + this.startPage + ' endpage = ' + this.endPage) 462c36cf2e9Sopenharmony_ci if (this.startPage < Constants.NUMBER_1) { 463c36cf2e9Sopenharmony_ci this.startPage = Constants.NUMBER_1 464c36cf2e9Sopenharmony_ci } else if (this.startPage > this.endPage) { 465c36cf2e9Sopenharmony_ci this.startPage = this.endPage 466c36cf2e9Sopenharmony_ci Log.info(TAG, 'from change; startPage = ' + this.startPage) 467c36cf2e9Sopenharmony_ci } 468c36cf2e9Sopenharmony_ci if (Number.isNaN(this.startPage)) { 469c36cf2e9Sopenharmony_ci this.startPage = Constants.NUMBER_1 470c36cf2e9Sopenharmony_ci this.startPageStr = Constants.STRING_NONE 471c36cf2e9Sopenharmony_ci } 472c36cf2e9Sopenharmony_ci if (!this.firstStartPageEdit) { 473c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.RANGE; 474c36cf2e9Sopenharmony_ci this.firstStartPageEdit = false 475c36cf2e9Sopenharmony_ci } 476c36cf2e9Sopenharmony_ci this.updatePrintRange(); 477c36cf2e9Sopenharmony_ci }) 478c36cf2e9Sopenharmony_ci .onSubmit(() => { 479c36cf2e9Sopenharmony_ci Log.info(TAG,'startPageStr onSubmit: ',this.startPage.toString()) 480c36cf2e9Sopenharmony_ci this.setStartPageStr() 481c36cf2e9Sopenharmony_ci }) 482c36cf2e9Sopenharmony_ci .onBlur(() => { 483c36cf2e9Sopenharmony_ci Log.info(TAG,'startPageStr onBlur: ',this.startPage.toString()) 484c36cf2e9Sopenharmony_ci this.setStartPageStr() 485c36cf2e9Sopenharmony_ci }) 486c36cf2e9Sopenharmony_ci .onFocus(()=>{ 487c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.RANGE; 488c36cf2e9Sopenharmony_ci }) 489c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 490c36cf2e9Sopenharmony_ci e.stopPropagation() 491c36cf2e9Sopenharmony_ci }) 492c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 493c36cf2e9Sopenharmony_ci e.stopPropagation() 494c36cf2e9Sopenharmony_ci }) 495c36cf2e9Sopenharmony_ci 496c36cf2e9Sopenharmony_ci Text($r('app.string.index_to')) 497c36cf2e9Sopenharmony_ci .maxLines(Constants.NUMBER_2) 498c36cf2e9Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis}) 499c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 500c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 501c36cf2e9Sopenharmony_ci .key('Index_Text_to_pageRange') 502c36cf2e9Sopenharmony_ci TextInput({ text: this.endPageStr }) 503c36cf2e9Sopenharmony_ci .width($r('app.float.textInput_pageRange_width')) 504c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 505c36cf2e9Sopenharmony_ci .key('Index_TextInput_to_pageRange') 506c36cf2e9Sopenharmony_ci .type(InputType.Number) 507c36cf2e9Sopenharmony_ci .maxLength(this.rangeInputLimit) 508c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 509c36cf2e9Sopenharmony_ci .backgroundColor(Color.White) 510c36cf2e9Sopenharmony_ci .fontColor(this.isRangeRadioEnable?Color.Black:Color.Gray) 511c36cf2e9Sopenharmony_ci .margin({ 512c36cf2e9Sopenharmony_ci left: $r('app.float.textInput_pageRange_left_margin'), 513c36cf2e9Sopenharmony_ci right: $r('app.float.textInput_pageRange_right_margin') 514c36cf2e9Sopenharmony_ci }) 515c36cf2e9Sopenharmony_ci .border({ 516c36cf2e9Sopenharmony_ci width: $r('app.float.border_width'), 517c36cf2e9Sopenharmony_ci radius: $r('app.float.radius_s'), 518c36cf2e9Sopenharmony_ci color: $r('app.color.border_line') 519c36cf2e9Sopenharmony_ci }) 520c36cf2e9Sopenharmony_ci .onChange((value: string) => { 521c36cf2e9Sopenharmony_ci this.endPage = Number.parseInt(value) 522c36cf2e9Sopenharmony_ci this.endPageStr = value//规避前置0输入 523c36cf2e9Sopenharmony_ci this.endPageStr = this.endPage.toString() 524c36cf2e9Sopenharmony_ci if (this.endPage > this.totalPage) { 525c36cf2e9Sopenharmony_ci this.endPage = this.totalPage 526c36cf2e9Sopenharmony_ci } else if (this.endPage < this.startPage) { 527c36cf2e9Sopenharmony_ci this.endPage = this.startPage 528c36cf2e9Sopenharmony_ci } 529c36cf2e9Sopenharmony_ci if (Number.isNaN(this.endPage)) { 530c36cf2e9Sopenharmony_ci this.endPage = this.startPage 531c36cf2e9Sopenharmony_ci this.endPageStr = Constants.STRING_NONE 532c36cf2e9Sopenharmony_ci } 533c36cf2e9Sopenharmony_ci if(!this.firstEndPageEdit){ 534c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.RANGE; 535c36cf2e9Sopenharmony_ci this.firstEndPageEdit = false 536c36cf2e9Sopenharmony_ci } 537c36cf2e9Sopenharmony_ci this.updatePrintRange(); 538c36cf2e9Sopenharmony_ci }) 539c36cf2e9Sopenharmony_ci .onSubmit(() => { 540c36cf2e9Sopenharmony_ci Log.info(TAG,'endPageStr onSubmit: ',this.endPage.toString()) 541c36cf2e9Sopenharmony_ci this.setEndPageStr(); 542c36cf2e9Sopenharmony_ci }) 543c36cf2e9Sopenharmony_ci .onBlur(() => { 544c36cf2e9Sopenharmony_ci this.changeRangeTypeFlag = true; 545c36cf2e9Sopenharmony_ci Log.info(TAG,'endPageStr onBlur: ',this.endPage.toString()) 546c36cf2e9Sopenharmony_ci this.setEndPageStr(); 547c36cf2e9Sopenharmony_ci }) 548c36cf2e9Sopenharmony_ci .onFocus(()=>{ 549c36cf2e9Sopenharmony_ci this.changeRangeTypeFlag = false; 550c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.RANGE; 551c36cf2e9Sopenharmony_ci this.updatePrintRange() 552c36cf2e9Sopenharmony_ci }) 553c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 554c36cf2e9Sopenharmony_ci e.stopPropagation() 555c36cf2e9Sopenharmony_ci }) 556c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 557c36cf2e9Sopenharmony_ci e.stopPropagation() 558c36cf2e9Sopenharmony_ci }) 559c36cf2e9Sopenharmony_ci }.height($r('app.float.params_row_height')).width($r('app.float.params_row_width')) 560c36cf2e9Sopenharmony_ci Row() { 561c36cf2e9Sopenharmony_ci Radio({ value: 'Radio3', group: 'radioGroup' }) 562c36cf2e9Sopenharmony_ci .checked(this.printRangeType === PrintRangeType.CUSTOM) 563c36cf2e9Sopenharmony_ci .key('Index_Radio_custom_pageRange') 564c36cf2e9Sopenharmony_ci .width(24) 565c36cf2e9Sopenharmony_ci .margin({ 566c36cf2e9Sopenharmony_ci left: 98, 567c36cf2e9Sopenharmony_ci right: 8 568c36cf2e9Sopenharmony_ci }) 569c36cf2e9Sopenharmony_ci .onChange((value: boolean) => { 570c36cf2e9Sopenharmony_ci if (value) { 571c36cf2e9Sopenharmony_ci focusControl.requestFocus('Index_TextInput_custom_pageRange') 572c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.CUSTOM; 573c36cf2e9Sopenharmony_ci Log.info(TAG,'isCustomRadioEnable = true') 574c36cf2e9Sopenharmony_ci this.isCustomRadioEnable = true 575c36cf2e9Sopenharmony_ci this.updatePrintRange() 576c36cf2e9Sopenharmony_ci }else{ 577c36cf2e9Sopenharmony_ci Log.info(TAG,'isCustomRadioEnable = false') 578c36cf2e9Sopenharmony_ci this.isCustomRadioEnable = false 579c36cf2e9Sopenharmony_ci } 580c36cf2e9Sopenharmony_ci }) 581c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 582c36cf2e9Sopenharmony_ci e.stopPropagation() 583c36cf2e9Sopenharmony_ci }) 584c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 585c36cf2e9Sopenharmony_ci e.stopPropagation() 586c36cf2e9Sopenharmony_ci }) 587c36cf2e9Sopenharmony_ci Text($r('app.string.index_page_custom')) 588c36cf2e9Sopenharmony_ci .fontSize(14) 589c36cf2e9Sopenharmony_ci .key('Index_Text_custom_pageRange') 590c36cf2e9Sopenharmony_ci }.height(48).width(432) 591c36cf2e9Sopenharmony_ci TextInput({placeholder:$r('app.string.index_page_custom_example'),text: this.cusRangeText }).key('Index_TextInput_custom_pageRange') 592c36cf2e9Sopenharmony_ci .width(326).height(32).border({ width: 1, radius: 8, color: this.cusRangeBorderColor }) 593c36cf2e9Sopenharmony_ci .margin({ 594c36cf2e9Sopenharmony_ci bottom: 8, 595c36cf2e9Sopenharmony_ci left: 98, 596c36cf2e9Sopenharmony_ci right: 8 597c36cf2e9Sopenharmony_ci }) 598c36cf2e9Sopenharmony_ci .backgroundColor(Color.White) 599c36cf2e9Sopenharmony_ci .placeholderFont({size:14}) 600c36cf2e9Sopenharmony_ci .fontColor(this.isCustomRadioEnable?Color.Black:Color.Gray) 601c36cf2e9Sopenharmony_ci .fontSize(14) 602c36cf2e9Sopenharmony_ci .maxLength(50) 603c36cf2e9Sopenharmony_ci .onChange((value:string)=>{ 604c36cf2e9Sopenharmony_ci if (this.editCusRangeFlag) { 605c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.CUSTOM; 606c36cf2e9Sopenharmony_ci }else{ 607c36cf2e9Sopenharmony_ci this.editCusRangeFlag = true 608c36cf2e9Sopenharmony_ci } 609c36cf2e9Sopenharmony_ci this.checkCustomRange(value); 610c36cf2e9Sopenharmony_ci this.updatePrintRange(); 611c36cf2e9Sopenharmony_ci this.cusRangeText = value; 612c36cf2e9Sopenharmony_ci }) 613c36cf2e9Sopenharmony_ci .onBlur(() => { 614c36cf2e9Sopenharmony_ci Log.info(TAG,'cusRangeTextInput onBlur') 615c36cf2e9Sopenharmony_ci }) 616c36cf2e9Sopenharmony_ci .onFocus(()=>{ 617c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.CUSTOM; 618c36cf2e9Sopenharmony_ci }) 619c36cf2e9Sopenharmony_ci .onTouch((e:TouchEvent)=>{ 620c36cf2e9Sopenharmony_ci e.stopPropagation() 621c36cf2e9Sopenharmony_ci }) 622c36cf2e9Sopenharmony_ci .onMouse((e:MouseEvent)=>{ 623c36cf2e9Sopenharmony_ci e.stopPropagation() 624c36cf2e9Sopenharmony_ci }) 625c36cf2e9Sopenharmony_ci Text(this.errorMessage).key('Index_Text_custom_errorMessage') 626c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body3')).fontColor('#E84026').fontWeight(FontWeight.Medium) 627c36cf2e9Sopenharmony_ci .margin({ 628c36cf2e9Sopenharmony_ci top: 8, 629c36cf2e9Sopenharmony_ci left: 98, 630c36cf2e9Sopenharmony_ci right: 20, 631c36cf2e9Sopenharmony_ci bottom: 8 632c36cf2e9Sopenharmony_ci }) 633c36cf2e9Sopenharmony_ci .visibility((this.isCusRangeError || this.isCusRangeMax)?Visibility.Visible:Visibility.None) 634c36cf2e9Sopenharmony_ci } 635c36cf2e9Sopenharmony_ci .alignItems(HorizontalAlign.Start) 636c36cf2e9Sopenharmony_ci 637c36cf2e9Sopenharmony_ci MediaSizeSelection() 638c36cf2e9Sopenharmony_ci DirectionSelection() 639c36cf2e9Sopenharmony_ci MediaTypeSelection().visibility(!this.isPhotoEnabled ? Visibility.None : Visibility.Visible) 640c36cf2e9Sopenharmony_ci Row() { 641c36cf2e9Sopenharmony_ci Blank() 642c36cf2e9Sopenharmony_ci Row(){ 643c36cf2e9Sopenharmony_ci Checkbox() 644c36cf2e9Sopenharmony_ci .select(this.isBorderless) 645c36cf2e9Sopenharmony_ci .width($r('app.float.image_comp_width')) 646c36cf2e9Sopenharmony_ci .height($r('app.float.image_comp_height')) 647c36cf2e9Sopenharmony_ci .enabled(SelectionModel.getSelectionValue<number>(this.currentMediaType.name) === MediaType.PHOTO) 648c36cf2e9Sopenharmony_ci .key('Index_Checkbox_borderless') 649c36cf2e9Sopenharmony_ci .onChange((value: boolean) => { 650c36cf2e9Sopenharmony_ci if (value) { 651c36cf2e9Sopenharmony_ci this.showToast($r('app.string.borderless_enable_toast')) 652c36cf2e9Sopenharmony_ci } 653c36cf2e9Sopenharmony_ci this.isBorderless = value 654c36cf2e9Sopenharmony_ci }) 655c36cf2e9Sopenharmony_ci } 656c36cf2e9Sopenharmony_ci .onClick(() => { 657c36cf2e9Sopenharmony_ci if (SelectionModel.getSelectionValue<number>(this.currentMediaType.name) !== MediaType.PHOTO) { 658c36cf2e9Sopenharmony_ci this.showToast($r('app.string.borderless_type_toast')) 659c36cf2e9Sopenharmony_ci } 660c36cf2e9Sopenharmony_ci }) 661c36cf2e9Sopenharmony_ci Text($r('app.string.index_borderless')) 662c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 663c36cf2e9Sopenharmony_ci .width($r('app.float.text_borderless_width')) 664c36cf2e9Sopenharmony_ci .opacity(SelectionModel.getSelectionValue<number>(this.currentMediaType.name) === MediaType.PHOTO ? Constants.NUMBER_1 : $r('app.float.disable_opacity')) 665c36cf2e9Sopenharmony_ci .key('Index_Text_borderless') 666c36cf2e9Sopenharmony_ci } 667c36cf2e9Sopenharmony_ci .visibility(!this.isPhotoEnabled? Visibility.None : Visibility.Visible) 668c36cf2e9Sopenharmony_ci .height($r('app.float.params_row_height')) 669c36cf2e9Sopenharmony_ci .width($r('app.float.params_row_width')) 670c36cf2e9Sopenharmony_ci 671c36cf2e9Sopenharmony_ci QualitySelection() 672c36cf2e9Sopenharmony_ci DuplexSelection().visibility(this.isDuplexEnabled ? Visibility.Visible : Visibility.None) 673c36cf2e9Sopenharmony_ci } 674c36cf2e9Sopenharmony_ci .alignItems(HorizontalAlign.Start) 675c36cf2e9Sopenharmony_ci .justifyContent(FlexAlign.Start) 676c36cf2e9Sopenharmony_ci .margin({ top: $r('app.float.print_setting_padding_top') 677c36cf2e9Sopenharmony_ci , bottom: $r('app.float.print_setting_padding_bottom') 678c36cf2e9Sopenharmony_ci }) 679c36cf2e9Sopenharmony_ci 680c36cf2e9Sopenharmony_ci } 681c36cf2e9Sopenharmony_ci // .height($r('app.float.print_setting_height')) 682c36cf2e9Sopenharmony_ci .height(this.printParamCompHeight-73) 683c36cf2e9Sopenharmony_ci .width($r('app.float.print_setting_width')) 684c36cf2e9Sopenharmony_ci .margin({left:24,right:24}) 685c36cf2e9Sopenharmony_ci .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 686c36cf2e9Sopenharmony_ci .scrollBar(BarState.Off) 687c36cf2e9Sopenharmony_ci .edgeEffect(EdgeEffect.None) 688c36cf2e9Sopenharmony_ci .align(Alignment.Top) 689c36cf2e9Sopenharmony_ci .enabled(!this.isGlobalDisable) 690c36cf2e9Sopenharmony_ci .opacity(this.isGlobalDisable?0.4:1) 691c36cf2e9Sopenharmony_ci 692c36cf2e9Sopenharmony_ci Column().height(12) 693c36cf2e9Sopenharmony_ci Divider() 694c36cf2e9Sopenharmony_ci .width($r('app.float.print_setting_width')) 695c36cf2e9Sopenharmony_ci .strokeWidth(Constants.NUMBER_1) 696c36cf2e9Sopenharmony_ci .color($r('app.color.black')) 697c36cf2e9Sopenharmony_ci .opacity($r('app.float.divider_opacity')) 698c36cf2e9Sopenharmony_ci .key('Index_Divider') 699c36cf2e9Sopenharmony_ci Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.End, alignItems: ItemAlign.Center }) { 700c36cf2e9Sopenharmony_ci AboutPageComponent().margin({left:24,right:152}) 701c36cf2e9Sopenharmony_ci CancelButton({ 702c36cf2e9Sopenharmony_ci cancelLabel: $r('app.string.Cancel'), 703c36cf2e9Sopenharmony_ci cancelWidth: $r('app.float.button_index_width'), 704c36cf2e9Sopenharmony_ci cancelHeight: $r('app.float.button_index_height'), 705c36cf2e9Sopenharmony_ci cancelClick: () => { 706c36cf2e9Sopenharmony_ci this.session?.terminateSelf().then(() => { 707c36cf2e9Sopenharmony_ci console.info('===>terminateSelfCallBack===>: '); 708c36cf2e9Sopenharmony_ci }); 709c36cf2e9Sopenharmony_ci } 710c36cf2e9Sopenharmony_ci }) 711c36cf2e9Sopenharmony_ci .key('Index_Button_cancel') 712c36cf2e9Sopenharmony_ci .margin({ right: $r('app.float.button_index_cancel_margin_right') }) 713c36cf2e9Sopenharmony_ci 714c36cf2e9Sopenharmony_ci Button($r('app.string.Index_doPrint')) 715c36cf2e9Sopenharmony_ci .key('Index_Button_doPrint') 716c36cf2e9Sopenharmony_ci .width($r('app.float.button_index_width')) 717c36cf2e9Sopenharmony_ci .height($r('app.float.button_index_height')) 718c36cf2e9Sopenharmony_ci .margin({ right: $r('app.float.button_index_doPrint_margin_right') }) 719c36cf2e9Sopenharmony_ci .enabled(this.canPrint && this.printButtonFlag && !this.isCusRangeError && !this.isGlobalDisable) 720c36cf2e9Sopenharmony_ci .fontColor($r('app.color.white')) 721c36cf2e9Sopenharmony_ci .onClick(() => { 722c36cf2e9Sopenharmony_ci this.getJobDescription() 723c36cf2e9Sopenharmony_ci this.startPrint() 724c36cf2e9Sopenharmony_ci }) 725c36cf2e9Sopenharmony_ci } 726c36cf2e9Sopenharmony_ci .margin({ 727c36cf2e9Sopenharmony_ci top: $r('app.float.print_setting_margin_top'), 728c36cf2e9Sopenharmony_ci bottom: $r('app.float.print_setting_margin_bottom') 729c36cf2e9Sopenharmony_ci }) 730c36cf2e9Sopenharmony_ci }.width($r('app.float.print_setting_width')) 731c36cf2e9Sopenharmony_ci } 732c36cf2e9Sopenharmony_ci .padding({ top: 32, bottom: 32 }) 733c36cf2e9Sopenharmony_ci .backgroundColor($r('sys.color.ohos_id_color_panel_bg')) 734c36cf2e9Sopenharmony_ci .onTouch((event:TouchEvent)=>{ 735c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 736c36cf2e9Sopenharmony_ci Log.info(TAG,'requestFocus') 737c36cf2e9Sopenharmony_ci focusControl.requestFocus('Index_Text_copies') 738c36cf2e9Sopenharmony_ci } 739c36cf2e9Sopenharmony_ci }) 740c36cf2e9Sopenharmony_ci } 741c36cf2e9Sopenharmony_ci 742c36cf2e9Sopenharmony_ci public getPlusImage(mouseState: number,isEnabled :boolean): Resource { 743c36cf2e9Sopenharmony_ci if (!isEnabled){ 744c36cf2e9Sopenharmony_ci return $r('app.media.ic_plus_disabled'); 745c36cf2e9Sopenharmony_ci } 746c36cf2e9Sopenharmony_ci switch (mouseState) { 747c36cf2e9Sopenharmony_ci case MouseState.PRESS: 748c36cf2e9Sopenharmony_ci return $r('app.media.ic_plusPress'); 749c36cf2e9Sopenharmony_ci case MouseState.HOVER: 750c36cf2e9Sopenharmony_ci return $r('app.media.ic_plusHover'); 751c36cf2e9Sopenharmony_ci default: 752c36cf2e9Sopenharmony_ci return $r('app.media.ic_plus'); 753c36cf2e9Sopenharmony_ci } 754c36cf2e9Sopenharmony_ci } 755c36cf2e9Sopenharmony_ci 756c36cf2e9Sopenharmony_ci public getMinusImage(mouseState: number,isEnabled :boolean): Resource { 757c36cf2e9Sopenharmony_ci if (!isEnabled){ 758c36cf2e9Sopenharmony_ci return $r('app.media.ic_minus_disabled'); 759c36cf2e9Sopenharmony_ci } 760c36cf2e9Sopenharmony_ci switch (mouseState) { 761c36cf2e9Sopenharmony_ci case MouseState.PRESS: 762c36cf2e9Sopenharmony_ci return $r('app.media.ic_minusPress'); 763c36cf2e9Sopenharmony_ci case MouseState.HOVER: 764c36cf2e9Sopenharmony_ci return $r('app.media.ic_minusHover'); 765c36cf2e9Sopenharmony_ci default: 766c36cf2e9Sopenharmony_ci return $r('app.media.ic_minus'); 767c36cf2e9Sopenharmony_ci } 768c36cf2e9Sopenharmony_ci } 769c36cf2e9Sopenharmony_ci 770c36cf2e9Sopenharmony_ci aboutToAppear() { 771c36cf2e9Sopenharmony_ci Log.info(TAG, 'aboutToAppear') 772c36cf2e9Sopenharmony_ci this.getWant() 773c36cf2e9Sopenharmony_ci this.loadImageSources(); 774c36cf2e9Sopenharmony_ci this.setSelect(); 775c36cf2e9Sopenharmony_ci this.initParams(); 776c36cf2e9Sopenharmony_ci this.bindService(); 777c36cf2e9Sopenharmony_ci this.recordLastUsedPrinter(); 778c36cf2e9Sopenharmony_ci this.preDiscovery(); 779c36cf2e9Sopenharmony_ci this.checkWlan(); 780c36cf2e9Sopenharmony_ci this.subscribe(); 781c36cf2e9Sopenharmony_ci } 782c36cf2e9Sopenharmony_ci 783c36cf2e9Sopenharmony_ci aboutToDisappear() { 784c36cf2e9Sopenharmony_ci this.unsubscribe() 785c36cf2e9Sopenharmony_ci this.abilityContext = undefined 786c36cf2e9Sopenharmony_ci clearInterval(this.ConnectTimer) 787c36cf2e9Sopenharmony_ci this.releaseResource(); 788c36cf2e9Sopenharmony_ci } 789c36cf2e9Sopenharmony_ci 790c36cf2e9Sopenharmony_ci releaseResource() { 791c36cf2e9Sopenharmony_ci Log.info(TAG, 'start release resource'); 792c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmptyArr<FileModel>(this.imageSources)) { 793c36cf2e9Sopenharmony_ci return; 794c36cf2e9Sopenharmony_ci } 795c36cf2e9Sopenharmony_ci for (let imageModel of this.imageSources) { 796c36cf2e9Sopenharmony_ci imageModel.imageSource.release(); 797c36cf2e9Sopenharmony_ci } 798c36cf2e9Sopenharmony_ci } 799c36cf2e9Sopenharmony_ci 800c36cf2e9Sopenharmony_ci showToast(message: Resource) { 801c36cf2e9Sopenharmony_ci try { 802c36cf2e9Sopenharmony_ci promptAction.showToast({ 803c36cf2e9Sopenharmony_ci message: message, 804c36cf2e9Sopenharmony_ci duration: Constants.TOAST_INTERVAL, 805c36cf2e9Sopenharmony_ci bottom: Constants.TOAST_BOTTOM 806c36cf2e9Sopenharmony_ci }); 807c36cf2e9Sopenharmony_ci } catch (error) { 808c36cf2e9Sopenharmony_ci Log.error(TAG, `showToast args error code is ${error.code}, message is ${error.message}`); 809c36cf2e9Sopenharmony_ci } 810c36cf2e9Sopenharmony_ci ; 811c36cf2e9Sopenharmony_ci } 812c36cf2e9Sopenharmony_ci 813c36cf2e9Sopenharmony_ci private getWant() { 814c36cf2e9Sopenharmony_ci this.abilityContext = GlobalThisHelper.getValue<common.UIExtensionContext>(GlobalThisStorageKey.KEY_MAIN_ABILITY_CONTEXT) 815c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty<LocalStorage>(storage)) { 816c36cf2e9Sopenharmony_ci storage = router.getParams() as LocalStorage; 817c36cf2e9Sopenharmony_ci } 818c36cf2e9Sopenharmony_ci this.jobId = storage.get<string>(Constants.WANT_JOB_ID_KEY)!; 819c36cf2e9Sopenharmony_ci this.jobFileList = storage.get<Array<string>>(Constants.WANT_FILE_LIST_KEY)!; 820c36cf2e9Sopenharmony_ci this.session = storage.get<UIExtensionContentSession>(Constants.SESSION); 821c36cf2e9Sopenharmony_ci Log.debug(TAG, 'aboutToAppear jobId: ' + JSON.stringify(this.jobId) + ', fileList: ' + JSON.stringify(this.jobFileList)); 822c36cf2e9Sopenharmony_ci } 823c36cf2e9Sopenharmony_ci 824c36cf2e9Sopenharmony_ci private subscribe() { 825c36cf2e9Sopenharmony_ci 826c36cf2e9Sopenharmony_ci let innerEventState: emitter.InnerEvent = { eventId: AppCommonEvent.PRINTER_STATE_CHANGE_EVENT } 827c36cf2e9Sopenharmony_ci emitter.on(innerEventState, (eventData) => { 828c36cf2e9Sopenharmony_ci let printers = AppStorage.get<Array<PrinterInfo>>(AppStorageKeyName.PRINTER_QUEUE_NAME) 829c36cf2e9Sopenharmony_ci 830c36cf2e9Sopenharmony_ci if (this.printer === undefined || printers === undefined) { 831c36cf2e9Sopenharmony_ci Log.error(TAG, 'emitter callback this printer is null or printers is null, return'); 832c36cf2e9Sopenharmony_ci return 833c36cf2e9Sopenharmony_ci } 834c36cf2e9Sopenharmony_ci Log.info(TAG, 'emitter PRINTER_STATE_CHANGE_EVENT callback this.printer: ' 835c36cf2e9Sopenharmony_ci + StringUtil.encodeCommonString(this.printer.printerName)); 836c36cf2e9Sopenharmony_ci for (let index = 0; index < printers.length; index++) { 837c36cf2e9Sopenharmony_ci if (printers[index].printerId === this.printer.printerId) { 838c36cf2e9Sopenharmony_ci this.checkPrinterConnection(printers[index].printerState) 839c36cf2e9Sopenharmony_ci } 840c36cf2e9Sopenharmony_ci } 841c36cf2e9Sopenharmony_ci }) 842c36cf2e9Sopenharmony_ci 843c36cf2e9Sopenharmony_ci let innerEventCap: emitter.InnerEvent = { eventId: AppCommonEvent.PRINTER_UPDATE_CAPABILITY_EVENT } 844c36cf2e9Sopenharmony_ci emitter.on(innerEventCap, (eventData) => { 845c36cf2e9Sopenharmony_ci let printers = AppStorage.get<Array<PrinterInfo>>(AppStorageKeyName.PRINTER_QUEUE_NAME); 846c36cf2e9Sopenharmony_ci if (this.printer === undefined || this.printer === null) { 847c36cf2e9Sopenharmony_ci Log.error(TAG, 'printer is undefined'); 848c36cf2e9Sopenharmony_ci return; 849c36cf2e9Sopenharmony_ci } 850c36cf2e9Sopenharmony_ci Log.error(TAG, 'emitter PRINTER_UPDATE_CAPABILITY_EVENT callback this.printer: ' + StringUtil.encodeCommonString(this.printer.printerName)); 851c36cf2e9Sopenharmony_ci if (printers === undefined) { 852c36cf2e9Sopenharmony_ci Log.error(TAG, 'emitter callback printers is null, return'); 853c36cf2e9Sopenharmony_ci return 854c36cf2e9Sopenharmony_ci } 855c36cf2e9Sopenharmony_ci for (let index = 0; index < printers.length; index++) { 856c36cf2e9Sopenharmony_ci if (printers[index].printerId === this.printer.printerId) { 857c36cf2e9Sopenharmony_ci clearInterval(this.ConnectTimer) 858c36cf2e9Sopenharmony_ci this.connectConfirmDialogCtl.close() 859c36cf2e9Sopenharmony_ci this.printer.capability = printers[index].capability 860c36cf2e9Sopenharmony_ci this.printer.options = printers[index].options 861c36cf2e9Sopenharmony_ci this.printer.description = printers[index].description 862c36cf2e9Sopenharmony_ci Log.info(TAG, 'this.printer.capability update: ', JSON.stringify(this.printer.capability)) 863c36cf2e9Sopenharmony_ci this.updateSupportParam(printers[index]) 864c36cf2e9Sopenharmony_ci } 865c36cf2e9Sopenharmony_ci } 866c36cf2e9Sopenharmony_ci }) 867c36cf2e9Sopenharmony_ci 868c36cf2e9Sopenharmony_ci let inactiveWlanEvent: emitter.InnerEvent = { eventId: AppCommonEvent.WLAN_INACTIVE_EVENT } 869c36cf2e9Sopenharmony_ci emitter.on(inactiveWlanEvent, (eventData) => { 870c36cf2e9Sopenharmony_ci Log.info(TAG, 'WLAN_INACTIVE_EVENT') 871c36cf2e9Sopenharmony_ci this.isNeedListenWlan = true 872c36cf2e9Sopenharmony_ci let isPrinterSelectDialogOpen = GlobalThisHelper.getValue<boolean>(GlobalThisStorageKey.KEY_PRINTER_SELECT_DIALOG_OPEN); 873c36cf2e9Sopenharmony_ci Log.info(TAG, 'isPrinterSelectDialogOpen: ' + isPrinterSelectDialogOpen) 874c36cf2e9Sopenharmony_ci if (isPrinterSelectDialogOpen) { 875c36cf2e9Sopenharmony_ci this.PrintingSelectDialogCtl.close() 876c36cf2e9Sopenharmony_ci GlobalThisHelper.createValue<boolean>(false, GlobalThisStorageKey.KEY_PRINTER_SELECT_DIALOG_OPEN, true); 877c36cf2e9Sopenharmony_ci this.WLANConfirmDialogCtl.open() 878c36cf2e9Sopenharmony_ci } 879c36cf2e9Sopenharmony_ci }) 880c36cf2e9Sopenharmony_ci 881c36cf2e9Sopenharmony_ci let activeWlanEvent: emitter.InnerEvent = { eventId: AppCommonEvent.WLAN_ACTIVE_EVENT } 882c36cf2e9Sopenharmony_ci emitter.on(activeWlanEvent, (eventData) => { 883c36cf2e9Sopenharmony_ci Log.info(TAG, 'WLAN_ACTIVE_EVENT') 884c36cf2e9Sopenharmony_ci if (this.isNeedListenWlan) { 885c36cf2e9Sopenharmony_ci this.isNeedListenWlan = false 886c36cf2e9Sopenharmony_ci this.adapter?.getPrinterDiscCtl()?.startDiscovery(Constants.STRING_NONE, []) 887c36cf2e9Sopenharmony_ci } 888c36cf2e9Sopenharmony_ci 889c36cf2e9Sopenharmony_ci }) 890c36cf2e9Sopenharmony_ci 891c36cf2e9Sopenharmony_ci let innerEventPrinter: emitter.InnerEvent = { eventId: AppCommonEvent.ADD_PRINTER_EVENT } 892c36cf2e9Sopenharmony_ci emitter.on(innerEventPrinter, (eventData) => { 893c36cf2e9Sopenharmony_ci if (!this.firstPrinterDiscoveredFlag){ 894c36cf2e9Sopenharmony_ci this.firstPrinterDiscoveredFlag = true; 895c36cf2e9Sopenharmony_ci } 896c36cf2e9Sopenharmony_ci if(this.isGlobalDisable){ 897c36cf2e9Sopenharmony_ci Log.info(TAG, 'last printer no need connecting'); 898c36cf2e9Sopenharmony_ci emitter.off(AppCommonEvent.ADD_PRINTER_EVENT); 899c36cf2e9Sopenharmony_ci return; 900c36cf2e9Sopenharmony_ci } 901c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(eventData) || CheckEmptyUtils.isEmpty(eventData.data)) { 902c36cf2e9Sopenharmony_ci Log.error(TAG, 'add_printer info is empty.'); 903c36cf2e9Sopenharmony_ci return; 904c36cf2e9Sopenharmony_ci } 905c36cf2e9Sopenharmony_ci let printerJSON: string = eventData!.data!.printer 906c36cf2e9Sopenharmony_ci let printer: PrinterInfo = JSON.parse(printerJSON) 907c36cf2e9Sopenharmony_ci Log.info(TAG, 'ADD_PRINTER_EVENT') 908c36cf2e9Sopenharmony_ci if (printer.printerId === this.usedPrinterId) { 909c36cf2e9Sopenharmony_ci Log.info(TAG, 'last printer is connecting'); 910c36cf2e9Sopenharmony_ci this.printer = printer; 911c36cf2e9Sopenharmony_ci this.adapter?.getPrinterDiscCtl()?.connectPrinter(printer) 912c36cf2e9Sopenharmony_ci emitter.off(AppCommonEvent.ADD_PRINTER_EVENT) 913c36cf2e9Sopenharmony_ci } 914c36cf2e9Sopenharmony_ci 915c36cf2e9Sopenharmony_ci }) 916c36cf2e9Sopenharmony_ci 917c36cf2e9Sopenharmony_ci 918c36cf2e9Sopenharmony_ci print.on('extInfoChange', (extensionId: string, info: string) => { 919c36cf2e9Sopenharmony_ci let extInfo: ErrorMessage = JSON.parse(info) 920c36cf2e9Sopenharmony_ci Log.info(TAG, 'extInfoChange: ', info) 921c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.printer)){ 922c36cf2e9Sopenharmony_ci Log.info(TAG, 'invalid printer!') 923c36cf2e9Sopenharmony_ci return; 924c36cf2e9Sopenharmony_ci } 925c36cf2e9Sopenharmony_ci switch (extInfo.code){ 926c36cf2e9Sopenharmony_ci case ErrorCode.IPP_CONNECT_ERROR: 927c36cf2e9Sopenharmony_ci this.connectionFailed(); 928c36cf2e9Sopenharmony_ci break; 929c36cf2e9Sopenharmony_ci case ErrorCode.GET_CAPS_ERROR: 930c36cf2e9Sopenharmony_ci this.adapter?.getPrinterDiscCtl()?.queryPrinterCapability(this.printer!.printerId); 931c36cf2e9Sopenharmony_ci break; 932c36cf2e9Sopenharmony_ci case ErrorCode.CONNECTION_POP: 933c36cf2e9Sopenharmony_ci if (this.printer!.printerId !== this.usedPrinterId){ 934c36cf2e9Sopenharmony_ci this.connectFlag = !this.connectFlag 935c36cf2e9Sopenharmony_ci } 936c36cf2e9Sopenharmony_ci default: 937c36cf2e9Sopenharmony_ci break; 938c36cf2e9Sopenharmony_ci } 939c36cf2e9Sopenharmony_ci }) 940c36cf2e9Sopenharmony_ci } 941c36cf2e9Sopenharmony_ci 942c36cf2e9Sopenharmony_ci private unsubscribe() { 943c36cf2e9Sopenharmony_ci emitter.off(AppCommonEvent.PRINTER_STATE_CHANGE_EVENT) 944c36cf2e9Sopenharmony_ci emitter.off(AppCommonEvent.PRINTER_UPDATE_CAPABILITY_EVENT) 945c36cf2e9Sopenharmony_ci emitter.off(AppCommonEvent.WLAN_INACTIVE_EVENT) 946c36cf2e9Sopenharmony_ci 947c36cf2e9Sopenharmony_ci print.off('extInfoChange') 948c36cf2e9Sopenharmony_ci } 949c36cf2e9Sopenharmony_ci 950c36cf2e9Sopenharmony_ci preDiscovery() { 951c36cf2e9Sopenharmony_ci this.adapter?.getPrinterDiscCtl()?.startDiscovery(Constants.STRING_NONE, []) 952c36cf2e9Sopenharmony_ci } 953c36cf2e9Sopenharmony_ci 954c36cf2e9Sopenharmony_ci checkWlan(){ 955c36cf2e9Sopenharmony_ci if (!WifiP2pHelper.checkWifiActive()) { 956c36cf2e9Sopenharmony_ci Log.info(TAG,'checkWlan: inactive') 957c36cf2e9Sopenharmony_ci this.isNeedListenWlan = true; 958c36cf2e9Sopenharmony_ci } 959c36cf2e9Sopenharmony_ci } 960c36cf2e9Sopenharmony_ci 961c36cf2e9Sopenharmony_ci bindService() { 962c36cf2e9Sopenharmony_ci this.adapter = PrintAdapter.getInstance(); 963c36cf2e9Sopenharmony_ci } 964c36cf2e9Sopenharmony_ci 965c36cf2e9Sopenharmony_ci setSelectDefault(disconnectFlag: boolean) { 966c36cf2e9Sopenharmony_ci if (this.printer === undefined || disconnectFlag) { 967c36cf2e9Sopenharmony_ci Log.info(TAG, 'setSelectDefault') 968c36cf2e9Sopenharmony_ci this.currentPrinterSelection = SelectionModel.NO_Printer 969c36cf2e9Sopenharmony_ci this.printerSelectArray = [] 970c36cf2e9Sopenharmony_ci this.printerSelectArray.push(SelectionModel.Add_Printer) 971c36cf2e9Sopenharmony_ci } 972c36cf2e9Sopenharmony_ci } 973c36cf2e9Sopenharmony_ci 974c36cf2e9Sopenharmony_ci initParams() { 975c36cf2e9Sopenharmony_ci this.printButtonFlag = true 976c36cf2e9Sopenharmony_ci this.printerPageSize = MediaSizeUtil.mediaSizeToPageSize(SelectionModel.getSelectionValue<MediaSize>(SelectionModel.MediaSize_ISO_A4.name)) 977c36cf2e9Sopenharmony_ci } 978c36cf2e9Sopenharmony_ci 979c36cf2e9Sopenharmony_ci setSelect() { 980c36cf2e9Sopenharmony_ci SelectionModel.initSelectionMap(); 981c36cf2e9Sopenharmony_ci this.setSelectDefault(false); 982c36cf2e9Sopenharmony_ci this.setMediaSizesSelect(); 983c36cf2e9Sopenharmony_ci this.setDirectionSelect(); 984c36cf2e9Sopenharmony_ci this.setMediaTypeSelect(); 985c36cf2e9Sopenharmony_ci this.setPrintQualitySelect(); 986c36cf2e9Sopenharmony_ci this.setDuplexSelect(); 987c36cf2e9Sopenharmony_ci } 988c36cf2e9Sopenharmony_ci 989c36cf2e9Sopenharmony_ci updatePrintRange() { 990c36cf2e9Sopenharmony_ci Log.info(TAG, 'updatePrintRange'+ this.startPage+' '+this.endPage) 991c36cf2e9Sopenharmony_ci this.printRange = [] 992c36cf2e9Sopenharmony_ci switch (this.printRangeType) { 993c36cf2e9Sopenharmony_ci case PrintRangeType.ALL: 994c36cf2e9Sopenharmony_ci for (let num = 1; num <= this.totalPage; ) { 995c36cf2e9Sopenharmony_ci this.printRange.push(num) 996c36cf2e9Sopenharmony_ci num++ 997c36cf2e9Sopenharmony_ci } 998c36cf2e9Sopenharmony_ci break; 999c36cf2e9Sopenharmony_ci case PrintRangeType.RANGE: 1000c36cf2e9Sopenharmony_ci for (let num = this.startPage; num <= this.endPage; ) { 1001c36cf2e9Sopenharmony_ci this.printRange.push(num) 1002c36cf2e9Sopenharmony_ci num++ 1003c36cf2e9Sopenharmony_ci } 1004c36cf2e9Sopenharmony_ci break; 1005c36cf2e9Sopenharmony_ci case PrintRangeType.CUSTOM: 1006c36cf2e9Sopenharmony_ci this.printRange = CopyUtil.deepClone(this.cusRangeArr) 1007c36cf2e9Sopenharmony_ci Log.info(TAG,'updatePrintRange CUSTOM this.printRange ',JSON.stringify(this.printRange)) 1008c36cf2e9Sopenharmony_ci break; 1009c36cf2e9Sopenharmony_ci default: 1010c36cf2e9Sopenharmony_ci break; 1011c36cf2e9Sopenharmony_ci } 1012c36cf2e9Sopenharmony_ci 1013c36cf2e9Sopenharmony_ci if (this.printRange.length === 0){ 1014c36cf2e9Sopenharmony_ci if (this.allPages != undefined) { 1015c36cf2e9Sopenharmony_ci this.printRange = CopyUtil.deepClone(this.allPages) 1016c36cf2e9Sopenharmony_ci }else{ 1017c36cf2e9Sopenharmony_ci for (let num = 1; num <= this.totalPage; ) { 1018c36cf2e9Sopenharmony_ci this.printRange.push(num) 1019c36cf2e9Sopenharmony_ci num++ 1020c36cf2e9Sopenharmony_ci } 1021c36cf2e9Sopenharmony_ci } 1022c36cf2e9Sopenharmony_ci } 1023c36cf2e9Sopenharmony_ci this.imageCount = this.printRange.length 1024c36cf2e9Sopenharmony_ci this.needDuplex = this.imageCount>1?true:false 1025c36cf2e9Sopenharmony_ci } 1026c36cf2e9Sopenharmony_ci 1027c36cf2e9Sopenharmony_ci updateMediaSize() { 1028c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.currentMediaSize)) { 1029c36cf2e9Sopenharmony_ci return 1030c36cf2e9Sopenharmony_ci } 1031c36cf2e9Sopenharmony_ci if (!CheckEmptyUtils.isEmpty(SelectionModel.getSelectionValue<MediaSize>(this.currentMediaSize.name))) { 1032c36cf2e9Sopenharmony_ci this.mediaSize = SelectionModel.getSelectionValue<MediaSize>(this.currentMediaSize.name)!; 1033c36cf2e9Sopenharmony_ci Log.info(TAG, 'updateMediaSize:MediaSize = ' + JSON.stringify(this.mediaSize)) 1034c36cf2e9Sopenharmony_ci this.printerPageSize = MediaSizeUtil.mediaSizeToPageSize(this.mediaSize) 1035c36cf2e9Sopenharmony_ci } 1036c36cf2e9Sopenharmony_ci Log.info(TAG, 'afterUpdateMediaSize: ' + this.printerPageSize?.name) 1037c36cf2e9Sopenharmony_ci } 1038c36cf2e9Sopenharmony_ci 1039c36cf2e9Sopenharmony_ci updateMediaType() { 1040c36cf2e9Sopenharmony_ci if (this.printer !== undefined) { 1041c36cf2e9Sopenharmony_ci let isBSH = this.isBiSheng(this.printer.printerName) 1042c36cf2e9Sopenharmony_ci if (isBSH) { 1043c36cf2e9Sopenharmony_ci this.mediaSizeList = MediaSizeUtil.getDefaultMediaSizeByMediaType(SelectionModel.getSelectionValue<number>(this.currentMediaType.name)!); 1044c36cf2e9Sopenharmony_ci } 1045c36cf2e9Sopenharmony_ci this.setMediaSizesSelect() 1046c36cf2e9Sopenharmony_ci } 1047c36cf2e9Sopenharmony_ci this.setPrintQualitySelect() 1048c36cf2e9Sopenharmony_ci if (this.currentMediaType.name === SelectionModel.MediaType_NORMAL.name) { 1049c36cf2e9Sopenharmony_ci Log.info(TAG,'this.isBorderless = false') 1050c36cf2e9Sopenharmony_ci this.isBorderless = false 1051c36cf2e9Sopenharmony_ci } 1052c36cf2e9Sopenharmony_ci } 1053c36cf2e9Sopenharmony_ci 1054c36cf2e9Sopenharmony_ci updateDirection() { 1055c36cf2e9Sopenharmony_ci this.pageDirection = SelectionModel.getSelectionValue<number>(this.currentMediaType.name)!; 1056c36cf2e9Sopenharmony_ci } 1057c36cf2e9Sopenharmony_ci 1058c36cf2e9Sopenharmony_ci /** 1059c36cf2e9Sopenharmony_ci * 更新打印机能力支持的参数 1060c36cf2e9Sopenharmony_ci * 1061c36cf2e9Sopenharmony_ci * @param cap 1062c36cf2e9Sopenharmony_ci */ 1063c36cf2e9Sopenharmony_ci updateSupportParam(printer: PrinterInfo) { 1064c36cf2e9Sopenharmony_ci Log.info(TAG, 'updateSupportParam printer: ' + StringUtil.encodeCommonString(this.printer?.printerName)); 1065c36cf2e9Sopenharmony_ci let cap = printer.capability 1066c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(cap)) { 1067c36cf2e9Sopenharmony_ci return 1068c36cf2e9Sopenharmony_ci } 1069c36cf2e9Sopenharmony_ci 1070c36cf2e9Sopenharmony_ci if (cap!.colorMode === ColorCode.MONOCHROME) { 1071c36cf2e9Sopenharmony_ci this.colorMode = ColorCode.MONOCHROME 1072c36cf2e9Sopenharmony_ci this.isColored = false 1073c36cf2e9Sopenharmony_ci this.isColorEnabled = false 1074c36cf2e9Sopenharmony_ci }else{ 1075c36cf2e9Sopenharmony_ci this.isColorEnabled = true 1076c36cf2e9Sopenharmony_ci } 1077c36cf2e9Sopenharmony_ci 1078c36cf2e9Sopenharmony_ci if (cap!.duplexMode === Duplex.SINGLE) { 1079c36cf2e9Sopenharmony_ci this.isDuplexEnabled = false; 1080c36cf2e9Sopenharmony_ci this.currentDuplex = SelectionModel.DuplexMode_SINGLE; 1081c36cf2e9Sopenharmony_ci } else { 1082c36cf2e9Sopenharmony_ci this.isDuplexEnabled = true; 1083c36cf2e9Sopenharmony_ci } 1084c36cf2e9Sopenharmony_ci let isBSH = this.isBiSheng(printer.printerName) 1085c36cf2e9Sopenharmony_ci if (isBSH) { 1086c36cf2e9Sopenharmony_ci this.mediaSizeList = MediaSizeUtil.getDefaultMediaSizeByMediaType(SelectionModel.getSelectionValue<number>(this.currentMediaType.name)!); 1087c36cf2e9Sopenharmony_ci } else { 1088c36cf2e9Sopenharmony_ci this.mediaSizeList = new Array<MediaSize>() 1089c36cf2e9Sopenharmony_ci for (let index = 0; index < cap!.pageSize.length; index++) { 1090c36cf2e9Sopenharmony_ci this.mediaSizeList.push(MediaSizeUtil.pageSizeToMediaSize(cap!.pageSize[index])) 1091c36cf2e9Sopenharmony_ci } 1092c36cf2e9Sopenharmony_ci } 1093c36cf2e9Sopenharmony_ci Log.debug(TAG,'printer.options:',printer.options) 1094c36cf2e9Sopenharmony_ci let options: PrinterCapsOptions = JSON.parse(printer.options!); 1095c36cf2e9Sopenharmony_ci if(!CheckEmptyUtils.isEmpty(options?.supportedMediaTypes)){ 1096c36cf2e9Sopenharmony_ci this.supportedMediaTypes = options?.supportedMediaTypes 1097c36cf2e9Sopenharmony_ci } 1098c36cf2e9Sopenharmony_ci Log.debug(TAG,'supportedMediaTypes:',JSON.stringify(this.supportedMediaTypes)) 1099c36cf2e9Sopenharmony_ci this.setMediaTypeSelect() 1100c36cf2e9Sopenharmony_ci this.setMediaSizesSelect() 1101c36cf2e9Sopenharmony_ci this.canPrint = true 1102c36cf2e9Sopenharmony_ci } 1103c36cf2e9Sopenharmony_ci 1104c36cf2e9Sopenharmony_ci updateImageSources(){ 1105c36cf2e9Sopenharmony_ci Log.info(TAG,'updateImageSources length = '+this.imageSources.length) 1106c36cf2e9Sopenharmony_ci this.allPages = [] 1107c36cf2e9Sopenharmony_ci for (let num = 1; num <= this.imageSources.length; ) { 1108c36cf2e9Sopenharmony_ci this.allPages.push(num) 1109c36cf2e9Sopenharmony_ci num++ 1110c36cf2e9Sopenharmony_ci } 1111c36cf2e9Sopenharmony_ci } 1112c36cf2e9Sopenharmony_ci 1113c36cf2e9Sopenharmony_ci isBiSheng(printerName: string): boolean { 1114c36cf2e9Sopenharmony_ci Log.info(TAG, 'isBiSheng:', StringUtil.encodeCommonString(printerName)); 1115c36cf2e9Sopenharmony_ci return printerName.includes(BISHENG_PRINTER); 1116c36cf2e9Sopenharmony_ci } 1117c36cf2e9Sopenharmony_ci 1118c36cf2e9Sopenharmony_ci setMediaSizesSelect() { 1119c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmptyArr(this.mediaSizeList)) { 1120c36cf2e9Sopenharmony_ci MediaSizeUtil.initMediaSizeArray(this.mediaSizeList); 1121c36cf2e9Sopenharmony_ci } 1122c36cf2e9Sopenharmony_ci Log.info(TAG, 'setMediaSizesSelect mediaSizeList.length:' + this.mediaSizeList.length); 1123c36cf2e9Sopenharmony_ci this.mediaSizeSelectArray = new Array<SelectionModel>() 1124c36cf2e9Sopenharmony_ci let isNeedResetMediaSize = true 1125c36cf2e9Sopenharmony_ci this.mediaSizeList.forEach(mediaSize => { 1126c36cf2e9Sopenharmony_ci if (this.currentMediaSize.res === mediaSize.label) { 1127c36cf2e9Sopenharmony_ci isNeedResetMediaSize = false 1128c36cf2e9Sopenharmony_ci } 1129c36cf2e9Sopenharmony_ci let mediaSizeSelection = SelectionModel.getSelectionModelByLabel(mediaSize.label)! 1130c36cf2e9Sopenharmony_ci if(!CheckEmptyUtils.isEmpty(mediaSizeSelection)){ 1131c36cf2e9Sopenharmony_ci this.mediaSizeSelectArray.push(mediaSizeSelection) 1132c36cf2e9Sopenharmony_ci } 1133c36cf2e9Sopenharmony_ci }); 1134c36cf2e9Sopenharmony_ci Log.info(TAG, 'this.mediaSizeSelectArray.length: ' + this.mediaSizeSelectArray.length) 1135c36cf2e9Sopenharmony_ci if(isNeedResetMediaSize){ 1136c36cf2e9Sopenharmony_ci this.currentMediaSize = SelectionModel.MediaSize_ISO_A4; 1137c36cf2e9Sopenharmony_ci } 1138c36cf2e9Sopenharmony_ci } 1139c36cf2e9Sopenharmony_ci 1140c36cf2e9Sopenharmony_ci setDirectionSelect() { 1141c36cf2e9Sopenharmony_ci this.directionSelectArray = new Array<SelectionModel>() 1142c36cf2e9Sopenharmony_ci this.directionSelectArray.push(SelectionModel.Direction_AUTO, SelectionModel.Direction_LANDSCAPE, SelectionModel.Direction_VERTICAL) 1143c36cf2e9Sopenharmony_ci } 1144c36cf2e9Sopenharmony_ci 1145c36cf2e9Sopenharmony_ci setMediaTypeSelect() { 1146c36cf2e9Sopenharmony_ci this.mediaTypeSelectArray = new Array<SelectionModel>() 1147c36cf2e9Sopenharmony_ci if(this.supportedMediaTypes.length === Constants.NUMBER_1){ 1148c36cf2e9Sopenharmony_ci this.isPhotoEnabled = false 1149c36cf2e9Sopenharmony_ci this.mediaTypeSelectArray.push(SelectionModel.MediaType_NORMAL) 1150c36cf2e9Sopenharmony_ci if (this.currentMediaType.name == SelectionModel.MediaType_PHOTO.name) { 1151c36cf2e9Sopenharmony_ci this.currentMediaType = SelectionModel.MediaType_NORMAL 1152c36cf2e9Sopenharmony_ci } 1153c36cf2e9Sopenharmony_ci } else { 1154c36cf2e9Sopenharmony_ci this.isPhotoEnabled = true 1155c36cf2e9Sopenharmony_ci this.mediaTypeSelectArray.push(SelectionModel.MediaType_NORMAL, SelectionModel.MediaType_PHOTO) 1156c36cf2e9Sopenharmony_ci } 1157c36cf2e9Sopenharmony_ci } 1158c36cf2e9Sopenharmony_ci 1159c36cf2e9Sopenharmony_ci setPrintQualitySelect() { 1160c36cf2e9Sopenharmony_ci this.qualitySelectArray = new Array<SelectionModel>() 1161c36cf2e9Sopenharmony_ci if (SelectionModel.getSelectionValue<number>(this.currentMediaType.name) === MediaType.NORMAL) { 1162c36cf2e9Sopenharmony_ci this.qualitySelectArray.push(SelectionModel.PrintQuality_BEST, SelectionModel.PrintQuality_STANDARD, SelectionModel.PrintQuality_ECONOMY); 1163c36cf2e9Sopenharmony_ci } else { 1164c36cf2e9Sopenharmony_ci this.qualitySelectArray.push(SelectionModel.PrintQuality_BEST, SelectionModel.PrintQuality_STANDARD); 1165c36cf2e9Sopenharmony_ci if (this.currentQuality = SelectionModel.PrintQuality_ECONOMY) { 1166c36cf2e9Sopenharmony_ci this.currentQuality = SelectionModel.PrintQuality_STANDARD 1167c36cf2e9Sopenharmony_ci } 1168c36cf2e9Sopenharmony_ci } 1169c36cf2e9Sopenharmony_ci } 1170c36cf2e9Sopenharmony_ci 1171c36cf2e9Sopenharmony_ci setDuplexSelect() { 1172c36cf2e9Sopenharmony_ci this.duplexSelectArray = new Array<SelectionModel>() 1173c36cf2e9Sopenharmony_ci this.duplexSelectArray.push(SelectionModel.DuplexMode_SINGLE, SelectionModel.DuplexMode_LONG, SelectionModel.DuplexMode_SHORT) 1174c36cf2e9Sopenharmony_ci } 1175c36cf2e9Sopenharmony_ci 1176c36cf2e9Sopenharmony_ci isPrintRangeAll(): boolean { 1177c36cf2e9Sopenharmony_ci Log.info(TAG,'startPage,endPage,totalPage'+this.startPage+' '+this.endPage+' '+this.totalPage ) 1178c36cf2e9Sopenharmony_ci if (this.startPage === 1 && (this.endPage === this.totalPage || this.totalPage === Constants.NUMBER_0)) { 1179c36cf2e9Sopenharmony_ci return true; 1180c36cf2e9Sopenharmony_ci } else { 1181c36cf2e9Sopenharmony_ci return false; 1182c36cf2e9Sopenharmony_ci } 1183c36cf2e9Sopenharmony_ci } 1184c36cf2e9Sopenharmony_ci 1185c36cf2e9Sopenharmony_ci /** 1186c36cf2e9Sopenharmony_ci * 加载第三方应用传过来的图片信息 1187c36cf2e9Sopenharmony_ci * 1188c36cf2e9Sopenharmony_ci * @param name 1189c36cf2e9Sopenharmony_ci */ 1190c36cf2e9Sopenharmony_ci async loadImageSources() { 1191c36cf2e9Sopenharmony_ci Log.info(TAG, 'loadImageSources start') 1192c36cf2e9Sopenharmony_ci if (this.jobFileList && this.jobFileList.length !== 0) { 1193c36cf2e9Sopenharmony_ci this.fileNum = this.jobFileList.length; 1194c36cf2e9Sopenharmony_ci this.imageSources = await FileUtil.initImageData(this.checkMaxPages(this.jobFileList)); 1195c36cf2e9Sopenharmony_ci } else { 1196c36cf2e9Sopenharmony_ci await print.queryPrintJobById(this.jobId).then(async (printJob) => { 1197c36cf2e9Sopenharmony_ci if (!CheckEmptyUtils.isEmpty(printJob) && !CheckEmptyUtils.isEmptyArr(printJob.fdList)) { 1198c36cf2e9Sopenharmony_ci this.fileNum = printJob.fdList.length; 1199c36cf2e9Sopenharmony_ci Log.debug(TAG, 'queryPrintJobById printJob: ', JSON.stringify(printJob)); 1200c36cf2e9Sopenharmony_ci this.imageSources = await FileUtil.initFdImageData(printJob.fdList); 1201c36cf2e9Sopenharmony_ci } 1202c36cf2e9Sopenharmony_ci }) 1203c36cf2e9Sopenharmony_ci } 1204c36cf2e9Sopenharmony_ci Log.debug(TAG, "loadImageSources imageSources: ", JSON.stringify(this.imageSources)) 1205c36cf2e9Sopenharmony_ci this.totalPage = this.imageSources.length === 0 ? 1 : this.imageSources.length 1206c36cf2e9Sopenharmony_ci this.imageCount = this.totalPage 1207c36cf2e9Sopenharmony_ci this.rangeInputLimit = this.totalPage.toString().length 1208c36cf2e9Sopenharmony_ci let errorCount: number = GlobalThisHelper.getValue<number>(GlobalThisStorageKey.KEY_IMAGE_ERROR_COUNT) 1209c36cf2e9Sopenharmony_ci let errorName: string = GlobalThisHelper.getValue<string>(GlobalThisStorageKey.KEY_IMAGE_ERROR_NAME) 1210c36cf2e9Sopenharmony_ci if (this.imageSources.length !== 0){ 1211c36cf2e9Sopenharmony_ci if (errorCount === 1) { 1212c36cf2e9Sopenharmony_ci Log.info(TAG, "loadImageSources this.showToast ") 1213c36cf2e9Sopenharmony_ci setTimeout(() => {//延迟弹窗,否则会概率弹窗失败 1214c36cf2e9Sopenharmony_ci this.showToast($r('app.string.toast_preview_failed',errorName)) 1215c36cf2e9Sopenharmony_ci }, Constants.SHOW_TOAST_TIMEOUT); 1216c36cf2e9Sopenharmony_ci } else if (errorCount > 1) { 1217c36cf2e9Sopenharmony_ci setTimeout(() => {//延迟弹窗,否则会概率弹窗失败 1218c36cf2e9Sopenharmony_ci this.showToast($r('app.string.toast_preview_failed_plurals',errorName,errorCount)) 1219c36cf2e9Sopenharmony_ci }, Constants.SHOW_TOAST_TIMEOUT); 1220c36cf2e9Sopenharmony_ci } 1221c36cf2e9Sopenharmony_ci }else{ 1222c36cf2e9Sopenharmony_ci this.isPreviewFailed = true; 1223c36cf2e9Sopenharmony_ci } 1224c36cf2e9Sopenharmony_ci this.endPage = this.totalPage 1225c36cf2e9Sopenharmony_ci if (this.imageSources.length > Constants.MAX_PAGES) {//需要弹预览失败toast时不用弹100张限制的toast 1226c36cf2e9Sopenharmony_ci this.isAbovePageLimit = true; 1227c36cf2e9Sopenharmony_ci this.endPage = Constants.MAX_PAGES; 1228c36cf2e9Sopenharmony_ci } 1229c36cf2e9Sopenharmony_ci this.isGlobalDisable = this.imageSources.length === 0 ? true : false 1230c36cf2e9Sopenharmony_ci this.endPageStr = this.endPage.toString() 1231c36cf2e9Sopenharmony_ci this.updatePrintRange() 1232c36cf2e9Sopenharmony_ci 1233c36cf2e9Sopenharmony_ci 1234c36cf2e9Sopenharmony_ci } 1235c36cf2e9Sopenharmony_ci 1236c36cf2e9Sopenharmony_ci /** 1237c36cf2e9Sopenharmony_ci * 记录上一次使用过的打印机 1238c36cf2e9Sopenharmony_ci */ 1239c36cf2e9Sopenharmony_ci async recordLastUsedPrinter() { 1240c36cf2e9Sopenharmony_ci let printerString = FileUtil.readStringFromFile(this.usedPrinterFileName, this.abilityContext) 1241c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(printerString)) { 1242c36cf2e9Sopenharmony_ci Log.error(TAG, 'lasted used printer is null'); 1243c36cf2e9Sopenharmony_ci return; 1244c36cf2e9Sopenharmony_ci } 1245c36cf2e9Sopenharmony_ci let printer: PrinterInfo = JSON.parse(printerString); 1246c36cf2e9Sopenharmony_ci this.usedPrinterId = printer.printerId 1247c36cf2e9Sopenharmony_ci Log.info(TAG, 'load last printer: ' + StringUtil.encodeCommonString(printer.printerName)); 1248c36cf2e9Sopenharmony_ci } 1249c36cf2e9Sopenharmony_ci 1250c36cf2e9Sopenharmony_ci /** 1251c36cf2e9Sopenharmony_ci * 保存成功连接并执行过打印的打印机 1252c36cf2e9Sopenharmony_ci * 1253c36cf2e9Sopenharmony_ci * @param printer 打印机信息 1254c36cf2e9Sopenharmony_ci */ 1255c36cf2e9Sopenharmony_ci saveLastedUsedPrinter(printer: PrinterInfo | undefined) { 1256c36cf2e9Sopenharmony_ci Log.info(TAG, 'saveLastedUsedPrinter printer: ' + StringUtil.encodeCommonString(printer?.printerName)); 1257c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(printer)) { 1258c36cf2e9Sopenharmony_ci Log.error(TAG, 'printer is null') 1259c36cf2e9Sopenharmony_ci return; 1260c36cf2e9Sopenharmony_ci } 1261c36cf2e9Sopenharmony_ci let printerString = JSON.stringify(printer!) 1262c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(printerString)) { 1263c36cf2e9Sopenharmony_ci Log.error(TAG, 'printer string is null') 1264c36cf2e9Sopenharmony_ci return; 1265c36cf2e9Sopenharmony_ci } 1266c36cf2e9Sopenharmony_ci FileUtil.writeStringToFile(printerString, this.usedPrinterFileName, this.abilityContext); 1267c36cf2e9Sopenharmony_ci Log.info(TAG, 'printer save success') 1268c36cf2e9Sopenharmony_ci } 1269c36cf2e9Sopenharmony_ci 1270c36cf2e9Sopenharmony_ci openPrinterSelectDialog() { 1271c36cf2e9Sopenharmony_ci Log.info(TAG,'openPrinterSelectDialog printerSelectFlag : '+this.printerSelectFlag) 1272c36cf2e9Sopenharmony_ci if (this.printerSelectFlag) { 1273c36cf2e9Sopenharmony_ci this.printerSelectFlag = false 1274c36cf2e9Sopenharmony_ci this.PrintingSelectDialogCtl.close(); 1275c36cf2e9Sopenharmony_ci this.PrintingSelectDialogCtl.open(); 1276c36cf2e9Sopenharmony_ci } 1277c36cf2e9Sopenharmony_ci } 1278c36cf2e9Sopenharmony_ci 1279c36cf2e9Sopenharmony_ci openWLANDialog() { 1280c36cf2e9Sopenharmony_ci this.WLANConfirmDialogCtl.open() 1281c36cf2e9Sopenharmony_ci } 1282c36cf2e9Sopenharmony_ci 1283c36cf2e9Sopenharmony_ci connectAlarm() { 1284c36cf2e9Sopenharmony_ci clearInterval(this.ConnectTimer) 1285c36cf2e9Sopenharmony_ci this.connectConfirmDialogCtl.open() 1286c36cf2e9Sopenharmony_ci this.connectCount = Constants.CONNECT_COUNT 1287c36cf2e9Sopenharmony_ci this.ConnectTimer = setInterval(() => { 1288c36cf2e9Sopenharmony_ci this.connectCountDown() 1289c36cf2e9Sopenharmony_ci }, Constants.COUNTDOWN_INTERVAL); 1290c36cf2e9Sopenharmony_ci } 1291c36cf2e9Sopenharmony_ci 1292c36cf2e9Sopenharmony_ci connectCountDown() { 1293c36cf2e9Sopenharmony_ci this.connectCount-- 1294c36cf2e9Sopenharmony_ci if (this.connectCount === Constants.COUNTDOWN_ALARM_TO_FAIL) { 1295c36cf2e9Sopenharmony_ci this.connectConfirmDialogCtl.close() 1296c36cf2e9Sopenharmony_ci } else if (this.connectCount === Constants.NUMBER_0 && !this.isConnected) { 1297c36cf2e9Sopenharmony_ci this.connectionFailed() 1298c36cf2e9Sopenharmony_ci } 1299c36cf2e9Sopenharmony_ci } 1300c36cf2e9Sopenharmony_ci 1301c36cf2e9Sopenharmony_ci onPrinterChange() { 1302c36cf2e9Sopenharmony_ci if (this.printer !== undefined) { 1303c36cf2e9Sopenharmony_ci this.currentPrinterSelection = new SelectionModel(this.printer.printerName, this.printer.printerName); 1304c36cf2e9Sopenharmony_ci SelectionModel.createSelectionValue<PrinterInfo>(this.printer,this.printer.printerName); 1305c36cf2e9Sopenharmony_ci Log.info(TAG, 'onPrinterChange printerName: ' + StringUtil.encodeCommonString(this.currentPrinterSelection.name)); 1306c36cf2e9Sopenharmony_ci } 1307c36cf2e9Sopenharmony_ci } 1308c36cf2e9Sopenharmony_ci 1309c36cf2e9Sopenharmony_ci 1310c36cf2e9Sopenharmony_ci /** 1311c36cf2e9Sopenharmony_ci * 打印机状态发生变化时进行处理 1312c36cf2e9Sopenharmony_ci * 1313c36cf2e9Sopenharmony_ci * @param printerState 打印机状态 1314c36cf2e9Sopenharmony_ci */ 1315c36cf2e9Sopenharmony_ci checkPrinterConnection(printerState: print.PrinterState) { 1316c36cf2e9Sopenharmony_ci Log.error(TAG, 'checkPrinterConnection printerState: ' + JSON.stringify(printerState)); 1317c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.printer)) { 1318c36cf2e9Sopenharmony_ci Log.error(TAG, 'checkPrinterConnection, invalid printer.'); 1319c36cf2e9Sopenharmony_ci return; 1320c36cf2e9Sopenharmony_ci } 1321c36cf2e9Sopenharmony_ci switch (printerState) { 1322c36cf2e9Sopenharmony_ci case print.PrinterState.PRINTER_CONNECTED: 1323c36cf2e9Sopenharmony_ci this.isConnected = true 1324c36cf2e9Sopenharmony_ci this.connectingPrinterId = this.printer!.printerId; 1325c36cf2e9Sopenharmony_ci clearInterval(this.ConnectTimer) 1326c36cf2e9Sopenharmony_ci this.connectConfirmDialogCtl.close(); 1327c36cf2e9Sopenharmony_ci break; 1328c36cf2e9Sopenharmony_ci case print.PrinterState.PRINTER_DISCONNECTED: 1329c36cf2e9Sopenharmony_ci this.connectionFailed() 1330c36cf2e9Sopenharmony_ci break; 1331c36cf2e9Sopenharmony_ci default: 1332c36cf2e9Sopenharmony_ci break; 1333c36cf2e9Sopenharmony_ci } 1334c36cf2e9Sopenharmony_ci 1335c36cf2e9Sopenharmony_ci } 1336c36cf2e9Sopenharmony_ci /** 1337c36cf2e9Sopenharmony_ci * 将渲染的图片保存 1338c36cf2e9Sopenharmony_ci */ 1339c36cf2e9Sopenharmony_ci async saveImage(jobFiles: string[]): Promise<number[]> { 1340c36cf2e9Sopenharmony_ci Log.info(TAG, 'enter saveImage') 1341c36cf2e9Sopenharmony_ci let fileList = new Array<number>(); 1342c36cf2e9Sopenharmony_ci if (this.mediaSize === undefined) { 1343c36cf2e9Sopenharmony_ci Log.error(TAG, 'this.mediaSize is undefined') 1344c36cf2e9Sopenharmony_ci return fileList; 1345c36cf2e9Sopenharmony_ci } 1346c36cf2e9Sopenharmony_ci let size = this.mediaSize.get300PixelMediaSize(); 1347c36cf2e9Sopenharmony_ci let imageSourceIndexList = new Array<number>(); 1348c36cf2e9Sopenharmony_ci let finalPrintRange = this.checkPrintRange(); 1349c36cf2e9Sopenharmony_ci for (let index = 0; index < finalPrintRange.length; index++) { 1350c36cf2e9Sopenharmony_ci imageSourceIndexList.push(finalPrintRange[index] - 1); 1351c36cf2e9Sopenharmony_ci } 1352c36cf2e9Sopenharmony_ci Log.info(TAG, 'imageSourceIndexList: ', JSON.stringify(imageSourceIndexList)) 1353c36cf2e9Sopenharmony_ci let len = imageSourceIndexList.length; 1354c36cf2e9Sopenharmony_ci for (let index = 0; index < len; index++) { 1355c36cf2e9Sopenharmony_ci Log.info(TAG,'imageModel START ,this.imageSources '+JSON.stringify(this.imageSources)) 1356c36cf2e9Sopenharmony_ci let imageModel = this.imageSources[imageSourceIndexList[index]]; 1357c36cf2e9Sopenharmony_ci Log.info(TAG,'imageModel: '+JSON.stringify(imageModel)) 1358c36cf2e9Sopenharmony_ci let offCanvas: OffscreenCanvasRenderingContext2D | undefined = undefined; 1359c36cf2e9Sopenharmony_ci let scale: number; 1360c36cf2e9Sopenharmony_ci let offCanvasWidth: number; 1361c36cf2e9Sopenharmony_ci let offCanvasHeight: number; 1362c36cf2e9Sopenharmony_ci let orientation: PageDirection = PageDirection.AUTO; 1363c36cf2e9Sopenharmony_ci if (this.pageDirection === PageDirection.VERTICAL || (this.pageDirection === PageDirection.AUTO && imageModel.height >= imageModel.width)) { 1364c36cf2e9Sopenharmony_ci //竖向 或者 自适应且图片竖向 1365c36cf2e9Sopenharmony_ci Log.debug('VERTICAL'); 1366c36cf2e9Sopenharmony_ci offCanvasWidth = px2fp(size.width); 1367c36cf2e9Sopenharmony_ci offCanvasHeight = px2fp(size.height); 1368c36cf2e9Sopenharmony_ci orientation = PageDirection.VERTICAL 1369c36cf2e9Sopenharmony_ci } else if (this.pageDirection === PageDirection.LANDSCAPE || (this.pageDirection === PageDirection.AUTO && imageModel.height <= imageModel.width)) { 1370c36cf2e9Sopenharmony_ci //横向 自适应且图片横向 1371c36cf2e9Sopenharmony_ci Log.debug('LANDSCAPE'); 1372c36cf2e9Sopenharmony_ci offCanvasWidth = px2fp(size.height); 1373c36cf2e9Sopenharmony_ci offCanvasHeight = px2fp(size.width); 1374c36cf2e9Sopenharmony_ci orientation = PageDirection.LANDSCAPE 1375c36cf2e9Sopenharmony_ci } else { 1376c36cf2e9Sopenharmony_ci offCanvasWidth = px2fp(size.width); 1377c36cf2e9Sopenharmony_ci offCanvasHeight = px2fp(size.height); 1378c36cf2e9Sopenharmony_ci Log.error('set offCanvas size error'); 1379c36cf2e9Sopenharmony_ci } 1380c36cf2e9Sopenharmony_ci offCanvas = new OffscreenCanvasRenderingContext2D(offCanvasWidth, offCanvasHeight, new RenderingContextSettings(true)); 1381c36cf2e9Sopenharmony_ci if (offCanvas === undefined) { 1382c36cf2e9Sopenharmony_ci Log.error(TAG, 'offCanvas is undefined'); 1383c36cf2e9Sopenharmony_ci continue; 1384c36cf2e9Sopenharmony_ci } 1385c36cf2e9Sopenharmony_ci offCanvas.imageSmoothingEnabled = false; 1386c36cf2e9Sopenharmony_ci offCanvas.fillStyle = '#fff' 1387c36cf2e9Sopenharmony_ci offCanvas.fillRect(Constants.NUMBER_0, Constants.NUMBER_0, offCanvasWidth, offCanvasHeight); 1388c36cf2e9Sopenharmony_ci scale = this.isBorderless ? Math.max(offCanvasWidth / px2fp(imageModel.width), offCanvasHeight / px2fp(imageModel.height)) : 1389c36cf2e9Sopenharmony_ci Math.min(offCanvasWidth / px2fp(imageModel.width), offCanvasHeight / px2fp(imageModel.height)); 1390c36cf2e9Sopenharmony_ci let xPosition = (offCanvasWidth - px2fp(imageModel.width * scale)) / Constants.NUMBER_2; 1391c36cf2e9Sopenharmony_ci let yPosition = (offCanvasHeight - px2fp(imageModel.height * scale)) / Constants.NUMBER_2; 1392c36cf2e9Sopenharmony_ci 1393c36cf2e9Sopenharmony_ci //将处理好的offCanvas图片写到本地文件 1394c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(imageModel.imageSource)) { 1395c36cf2e9Sopenharmony_ci Log.error(TAG, 'imageSource is error'); 1396c36cf2e9Sopenharmony_ci continue; 1397c36cf2e9Sopenharmony_ci } 1398c36cf2e9Sopenharmony_ci Log.info(TAG, 'begin createPixelMap'); 1399c36cf2e9Sopenharmony_ci let imageSource: image.ImageSource | undefined = undefined; 1400c36cf2e9Sopenharmony_ci let pixelMap: image.PixelMap | undefined = undefined; 1401c36cf2e9Sopenharmony_ci let canvasPixelMap: image.PixelMap | undefined = undefined; 1402c36cf2e9Sopenharmony_ci try { 1403c36cf2e9Sopenharmony_ci imageSource = image.createImageSource(imageModel.fd); 1404c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(imageSource)) { 1405c36cf2e9Sopenharmony_ci Log.error(TAG, 'imageSource is error') 1406c36cf2e9Sopenharmony_ci continue; 1407c36cf2e9Sopenharmony_ci }; 1408c36cf2e9Sopenharmony_ci const editResult: boolean = orientation === PageDirection.LANDSCAPE ? true : false; 1409c36cf2e9Sopenharmony_ci pixelMap = await imageSource!.createPixelMap({editable: editResult}); 1410c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(pixelMap)) { 1411c36cf2e9Sopenharmony_ci Log.error(TAG, 'pixelMap is error') 1412c36cf2e9Sopenharmony_ci continue; 1413c36cf2e9Sopenharmony_ci }; 1414c36cf2e9Sopenharmony_ci imageModel.imageSource!.release(); 1415c36cf2e9Sopenharmony_ci Log.info(TAG, 'end createPixelMap'); 1416c36cf2e9Sopenharmony_ci offCanvas.drawImage(pixelMap, xPosition, yPosition, px2fp(imageModel.width * scale), px2fp(imageModel.height * scale)) //5184 3456 //1200 2133 1417c36cf2e9Sopenharmony_ci canvasPixelMap = offCanvas.getPixelMap(Constants.NUMBER_0, Constants.NUMBER_0, offCanvasWidth, offCanvasHeight); 1418c36cf2e9Sopenharmony_ci 1419c36cf2e9Sopenharmony_ci //保存图片 1420c36cf2e9Sopenharmony_ci Log.info(TAG, 'begin createDataShareUri'); 1421c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(this.firstFileName)) { 1422c36cf2e9Sopenharmony_ci this.firstFileName = imageModel.name; 1423c36cf2e9Sopenharmony_ci Log.info(TAG, 'init firstFileName:' + this.firstFileName) 1424c36cf2e9Sopenharmony_ci } 1425c36cf2e9Sopenharmony_ci let fileName = uuidGenerator() + Constants.JPEG_SUFFIX; 1426c36cf2e9Sopenharmony_ci FileUtil.createJobsDir(this.abilityContext?.filesDir) 1427c36cf2e9Sopenharmony_ci let uri = this.abilityContext?.filesDir + Constants.FILE_SEPARATOR + Constants.TEMP_JOB_FOLDER + Constants.FILE_SEPARATOR + fileName 1428c36cf2e9Sopenharmony_ci await FileUtil.saveImageToJpeg(canvasPixelMap, uri, orientation); 1429c36cf2e9Sopenharmony_ci Log.debug(TAG, 'end saveImageToJpeg'); 1430c36cf2e9Sopenharmony_ci jobFiles.push(uri); 1431c36cf2e9Sopenharmony_ci } catch (error) { 1432c36cf2e9Sopenharmony_ci Log.error(TAG, 'error happened: ' + JSON.stringify(error)) 1433c36cf2e9Sopenharmony_ci } finally { 1434c36cf2e9Sopenharmony_ci //释放资源 1435c36cf2e9Sopenharmony_ci if (pixelMap !== undefined) { 1436c36cf2e9Sopenharmony_ci pixelMap.release(); 1437c36cf2e9Sopenharmony_ci } 1438c36cf2e9Sopenharmony_ci if (canvasPixelMap !== undefined) { 1439c36cf2e9Sopenharmony_ci canvasPixelMap.release(); 1440c36cf2e9Sopenharmony_ci } 1441c36cf2e9Sopenharmony_ci if (imageSource !== undefined) { 1442c36cf2e9Sopenharmony_ci imageSource.release(); 1443c36cf2e9Sopenharmony_ci } 1444c36cf2e9Sopenharmony_ci } 1445c36cf2e9Sopenharmony_ci } 1446c36cf2e9Sopenharmony_ci Log.info(TAG, 'exit saveImage'); 1447c36cf2e9Sopenharmony_ci fileList = FileUtil.getFdList(jobFiles); 1448c36cf2e9Sopenharmony_ci this.jobNum = fileList.length 1449c36cf2e9Sopenharmony_ci this.jobName = this.getJobName(this.jobNum) 1450c36cf2e9Sopenharmony_ci 1451c36cf2e9Sopenharmony_ci return fileList; 1452c36cf2e9Sopenharmony_ci } 1453c36cf2e9Sopenharmony_ci 1454c36cf2e9Sopenharmony_ci /** 1455c36cf2e9Sopenharmony_ci * 开始打印 1456c36cf2e9Sopenharmony_ci * 1457c36cf2e9Sopenharmony_ci */ 1458c36cf2e9Sopenharmony_ci startPrint() { 1459c36cf2e9Sopenharmony_ci Log.info(TAG, 'startPrint') 1460c36cf2e9Sopenharmony_ci this.isGlobalDisable = true 1461c36cf2e9Sopenharmony_ci this.saveLastedUsedPrinter(this.printer) 1462c36cf2e9Sopenharmony_ci if (this.printRangeType === PrintRangeType.CUSTOM) { 1463c36cf2e9Sopenharmony_ci this.checkCustomRangeTextInput(false) 1464c36cf2e9Sopenharmony_ci } 1465c36cf2e9Sopenharmony_ci 1466c36cf2e9Sopenharmony_ci let jobFiles = new Array<string>() 1467c36cf2e9Sopenharmony_ci this.saveImage(jobFiles).then((fileList) => { 1468c36cf2e9Sopenharmony_ci let ops: PrintJobOptions = { 1469c36cf2e9Sopenharmony_ci jobName: this.jobName, 1470c36cf2e9Sopenharmony_ci jobNum: this.jobNum * this.printCount, 1471c36cf2e9Sopenharmony_ci jobDescription: this.jobDes, 1472c36cf2e9Sopenharmony_ci mediaType: this.getMediaType(SelectionModel.getSelectionValue<number>(this.currentMediaType.name)!), 1473c36cf2e9Sopenharmony_ci documentCategory: SelectionModel.getSelectionValue<number>(this.currentMediaType.name) === MediaType.PHOTO ? Constants.NUMBER_1 : Constants.NUMBER_0, 1474c36cf2e9Sopenharmony_ci printQuality: SelectionModel.getSelectionValue<number>(this.currentQuality.name)!.toString(), 1475c36cf2e9Sopenharmony_ci printerName: this.removeSpaces(this.printer?.printerName), 1476c36cf2e9Sopenharmony_ci printerUri: this.getPrinterUri(), 1477c36cf2e9Sopenharmony_ci documentFormat: 'image/jpeg', 1478c36cf2e9Sopenharmony_ci files: jobFiles 1479c36cf2e9Sopenharmony_ci } 1480c36cf2e9Sopenharmony_ci let options = JSON.stringify(ops); 1481c36cf2e9Sopenharmony_ci this.printJob = new PrintJob(jobFiles,fileList,this.jobId, this.printer!.printerId, print.PrintJobState.PRINT_JOB_PREPARE, print.PrintJobSubState.PRINT_JOB_COMPLETED_SUCCESS, 1482c36cf2e9Sopenharmony_ci this.printCount,this.printerRange!,true,this.printerPageSize!,true,this.colorMode,SelectionModel.getSelectionValue<number>(this.currentDuplex.name)!,new PrintMargin(Constants.NUMBER_0, Constants.NUMBER_0, Constants.NUMBER_0, Constants.NUMBER_0), 1483c36cf2e9Sopenharmony_ci new PreviewAttribute(this.printerRange!, Constants.NUMBER_1), options); 1484c36cf2e9Sopenharmony_ci 1485c36cf2e9Sopenharmony_ci startPrintJob(this.printJob).then((result) => { 1486c36cf2e9Sopenharmony_ci if (result) { 1487c36cf2e9Sopenharmony_ci this.startJobAbility(); 1488c36cf2e9Sopenharmony_ci } else { // 任务下发失败 1489c36cf2e9Sopenharmony_ci this.showToast($r('app.string.error_task_send_msg')); 1490c36cf2e9Sopenharmony_ci } 1491c36cf2e9Sopenharmony_ci }); 1492c36cf2e9Sopenharmony_ci }); 1493c36cf2e9Sopenharmony_ci } 1494c36cf2e9Sopenharmony_ci 1495c36cf2e9Sopenharmony_ci startJobAbility(){ 1496c36cf2e9Sopenharmony_ci let jobAbilityWant: Want = { 1497c36cf2e9Sopenharmony_ci bundleName: Constants.BUNDLE_NAME, 1498c36cf2e9Sopenharmony_ci abilityName: Constants.JOB_MANAGER_ABILITY_NAME, 1499c36cf2e9Sopenharmony_ci parameters: { 1500c36cf2e9Sopenharmony_ci jobId: this.jobId 1501c36cf2e9Sopenharmony_ci }, 1502c36cf2e9Sopenharmony_ci } 1503c36cf2e9Sopenharmony_ci 1504c36cf2e9Sopenharmony_ci this.abilityContext?.startAbility(jobAbilityWant).then(() => { 1505c36cf2e9Sopenharmony_ci Log.info(TAG,'startJobManagerAbility') 1506c36cf2e9Sopenharmony_ci this.canPrint = false; 1507c36cf2e9Sopenharmony_ci this.session?.terminateSelf().then(() => { 1508c36cf2e9Sopenharmony_ci console.info('===>terminateSelfCallBack===>: '); 1509c36cf2e9Sopenharmony_ci }); 1510c36cf2e9Sopenharmony_ci }).catch((err: BusinessError) => { 1511c36cf2e9Sopenharmony_ci Log.error(TAG, 'fail to startAbility, err =' + JSON.stringify(err)); 1512c36cf2e9Sopenharmony_ci }) 1513c36cf2e9Sopenharmony_ci } 1514c36cf2e9Sopenharmony_ci 1515c36cf2e9Sopenharmony_ci removeSpaces(name: string | undefined) { 1516c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(name)) { 1517c36cf2e9Sopenharmony_ci return ""; 1518c36cf2e9Sopenharmony_ci } 1519c36cf2e9Sopenharmony_ci let regex: RegExp = new RegExp('\\s+', 'g'); 1520c36cf2e9Sopenharmony_ci return name!.replace(regex, '_'); 1521c36cf2e9Sopenharmony_ci } 1522c36cf2e9Sopenharmony_ci 1523c36cf2e9Sopenharmony_ci getMediaType(selectType: number): string { 1524c36cf2e9Sopenharmony_ci if (MediaTypes.sCodeToStringMap.has(selectType)) { 1525c36cf2e9Sopenharmony_ci return MediaTypes.sCodeToStringMap.get(selectType)!; 1526c36cf2e9Sopenharmony_ci } 1527c36cf2e9Sopenharmony_ci return MediaTypes.sCodeToStringMap.get(MediaTypeCode.MEDIA_PLAIN)!; 1528c36cf2e9Sopenharmony_ci } 1529c36cf2e9Sopenharmony_ci 1530c36cf2e9Sopenharmony_ci getPrinterUri(): string { 1531c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.printer)) { 1532c36cf2e9Sopenharmony_ci return ''; 1533c36cf2e9Sopenharmony_ci } 1534c36cf2e9Sopenharmony_ci let options = this.printer!.options; 1535c36cf2e9Sopenharmony_ci let optionObject: PrinterCapsOptions = JSON.parse(options!); 1536c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.checkStrIsEmpty(optionObject.printerUri)) { 1537c36cf2e9Sopenharmony_ci return ''; 1538c36cf2e9Sopenharmony_ci } 1539c36cf2e9Sopenharmony_ci return optionObject.printerUri; 1540c36cf2e9Sopenharmony_ci } 1541c36cf2e9Sopenharmony_ci 1542c36cf2e9Sopenharmony_ci connectionFailed() { 1543c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.printer)) { 1544c36cf2e9Sopenharmony_ci Log.error(TAG, 'connectionFailed, invalid printer!'); 1545c36cf2e9Sopenharmony_ci return; 1546c36cf2e9Sopenharmony_ci } 1547c36cf2e9Sopenharmony_ci clearInterval(this.ConnectTimer) 1548c36cf2e9Sopenharmony_ci this.alarmText = StringUtil.getString('alarm_dialog_connect_failed') 1549c36cf2e9Sopenharmony_ci this.alarmDialogCtl.open() 1550c36cf2e9Sopenharmony_ci this.printer!.printerId = Constants.STRING_NEGATIVE_ONE 1551c36cf2e9Sopenharmony_ci this.connectingPrinterId = Constants.DEFAULT_CONNECTING_PRINTER_ID 1552c36cf2e9Sopenharmony_ci Log.info(TAG, 'connectCountDown setPrinterId:' + this.printer!.printerId) 1553c36cf2e9Sopenharmony_ci this.setSelectDefault(true) 1554c36cf2e9Sopenharmony_ci } 1555c36cf2e9Sopenharmony_ci 1556c36cf2e9Sopenharmony_ci getJobName(fileCount: number): string { 1557c36cf2e9Sopenharmony_ci Log.info(TAG, 'getJobName: COUNT' + fileCount) 1558c36cf2e9Sopenharmony_ci let jobName: string = this.firstFileName 1559c36cf2e9Sopenharmony_ci if (fileCount > 1) { 1560c36cf2e9Sopenharmony_ci let nameExt = StringUtil.getString('print_job_name_plurals',fileCount) 1561c36cf2e9Sopenharmony_ci jobName = jobName + nameExt 1562c36cf2e9Sopenharmony_ci } 1563c36cf2e9Sopenharmony_ci Log.debug(TAG,'jobName: ',jobName) 1564c36cf2e9Sopenharmony_ci return jobName 1565c36cf2e9Sopenharmony_ci } 1566c36cf2e9Sopenharmony_ci 1567c36cf2e9Sopenharmony_ci getJobDescription() { 1568c36cf2e9Sopenharmony_ci 1569c36cf2e9Sopenharmony_ci let color = Constants.STRING_NONE 1570c36cf2e9Sopenharmony_ci switch (this.colorMode) { 1571c36cf2e9Sopenharmony_ci case ColorCode.COLOR: 1572c36cf2e9Sopenharmony_ci color = StringUtil.getString('ColorMode_COLOR') + StringUtil.getString('pauseMark') 1573c36cf2e9Sopenharmony_ci break; 1574c36cf2e9Sopenharmony_ci case ColorCode.MONOCHROME: 1575c36cf2e9Sopenharmony_ci color = StringUtil.getString('ColorMode_MONOCHROME') + StringUtil.getString('pauseMark') 1576c36cf2e9Sopenharmony_ci break; 1577c36cf2e9Sopenharmony_ci } 1578c36cf2e9Sopenharmony_ci let mediaType = Constants.STRING_NONE 1579c36cf2e9Sopenharmony_ci switch (SelectionModel.getSelectionValue<number>(this.currentMediaType.name)) { 1580c36cf2e9Sopenharmony_ci case MediaType.NORMAL: 1581c36cf2e9Sopenharmony_ci mediaType = StringUtil.getString('MediaType_NORMAL') + StringUtil.getString('pauseMark') 1582c36cf2e9Sopenharmony_ci break; 1583c36cf2e9Sopenharmony_ci case MediaType.PHOTO: 1584c36cf2e9Sopenharmony_ci mediaType = StringUtil.getString('MediaType_PHOTO') + StringUtil.getString('pauseMark') 1585c36cf2e9Sopenharmony_ci break; 1586c36cf2e9Sopenharmony_ci } 1587c36cf2e9Sopenharmony_ci let borderless = Constants.STRING_NONE 1588c36cf2e9Sopenharmony_ci if (this.isBorderless) { 1589c36cf2e9Sopenharmony_ci borderless = StringUtil.getString('pauseMark') + StringUtil.getString('JobDes_BorderLess') 1590c36cf2e9Sopenharmony_ci } 1591c36cf2e9Sopenharmony_ci let quality = Constants.STRING_NONE 1592c36cf2e9Sopenharmony_ci switch (SelectionModel.getSelectionValue<number>(this.currentQuality.name)) { 1593c36cf2e9Sopenharmony_ci case PrintQuality.ECONOMY: 1594c36cf2e9Sopenharmony_ci quality = StringUtil.getString('PrintQuality_ECONOMY') + StringUtil.getString('pauseMark') 1595c36cf2e9Sopenharmony_ci break; 1596c36cf2e9Sopenharmony_ci case PrintQuality.STANDARD: 1597c36cf2e9Sopenharmony_ci quality = StringUtil.getString('PrintQuality_STANDARD') + StringUtil.getString('pauseMark') 1598c36cf2e9Sopenharmony_ci break; 1599c36cf2e9Sopenharmony_ci case PrintQuality.BEST: 1600c36cf2e9Sopenharmony_ci quality = StringUtil.getString('PrintQuality_BEST') + StringUtil.getString('pauseMark') 1601c36cf2e9Sopenharmony_ci break; 1602c36cf2e9Sopenharmony_ci } 1603c36cf2e9Sopenharmony_ci let direction = Constants.STRING_NONE 1604c36cf2e9Sopenharmony_ci switch (SelectionModel.getSelectionValue<number>(this.currentDirection.name)) { 1605c36cf2e9Sopenharmony_ci case PageDirection.AUTO: 1606c36cf2e9Sopenharmony_ci direction = StringUtil.getString('PageDirection_AUTO') + StringUtil.getString('pauseMark') 1607c36cf2e9Sopenharmony_ci break; 1608c36cf2e9Sopenharmony_ci case PageDirection.LANDSCAPE: 1609c36cf2e9Sopenharmony_ci direction = StringUtil.getString('PageDirection_LANDSCAPE') + StringUtil.getString('pauseMark') 1610c36cf2e9Sopenharmony_ci break; 1611c36cf2e9Sopenharmony_ci case PageDirection.VERTICAL: 1612c36cf2e9Sopenharmony_ci direction = StringUtil.getString('PageDirection_VERTICAL') + StringUtil.getString('pauseMark') 1613c36cf2e9Sopenharmony_ci break; 1614c36cf2e9Sopenharmony_ci } 1615c36cf2e9Sopenharmony_ci let duplex = Constants.STRING_NONE 1616c36cf2e9Sopenharmony_ci 1617c36cf2e9Sopenharmony_ci let size = this.currentMediaSize.res 1618c36cf2e9Sopenharmony_ci let sizeStr =size.toString().split(' ')[0] 1619c36cf2e9Sopenharmony_ci this.jobDes = `${color}${quality}${direction}${mediaType}${sizeStr}${borderless}` 1620c36cf2e9Sopenharmony_ci } 1621c36cf2e9Sopenharmony_ci 1622c36cf2e9Sopenharmony_ci checkCustomRange(value:string){ 1623c36cf2e9Sopenharmony_ci this.cusRangeArr = [] 1624c36cf2e9Sopenharmony_ci this.isCusRangeError = false 1625c36cf2e9Sopenharmony_ci this.isCusRangeMax = false 1626c36cf2e9Sopenharmony_ci this.cusRangeBorderColor = $r('app.color.border_line') 1627c36cf2e9Sopenharmony_ci 1628c36cf2e9Sopenharmony_ci if (value === Constants.STRING_NONE) { 1629c36cf2e9Sopenharmony_ci return 1630c36cf2e9Sopenharmony_ci } 1631c36cf2e9Sopenharmony_ci 1632c36cf2e9Sopenharmony_ci let prePageArray = new Array<string>(); 1633c36cf2e9Sopenharmony_ci let pageArray = new Array<string>(); 1634c36cf2e9Sopenharmony_ci prePageArray = value.split(Constants.EU_COMMA) 1635c36cf2e9Sopenharmony_ci prePageArray.forEach((prePage:string)=>{ 1636c36cf2e9Sopenharmony_ci pageArray.push(...prePage.split(Constants.CN_COMMA)); 1637c36cf2e9Sopenharmony_ci }) 1638c36cf2e9Sopenharmony_ci 1639c36cf2e9Sopenharmony_ci for (let index = 0; index < pageArray.length; index++){ 1640c36cf2e9Sopenharmony_ci let range =pageArray[index].split(Constants.HYPHEN) 1641c36cf2e9Sopenharmony_ci if (range.length === Constants.NUMBER_2) { 1642c36cf2e9Sopenharmony_ci let startNum = this.checkNum(range[0]) 1643c36cf2e9Sopenharmony_ci let endNum = this.checkNum(range[1]) 1644c36cf2e9Sopenharmony_ci if (!(startNum && endNum)){ 1645c36cf2e9Sopenharmony_ci this.cusRangeArr = [] 1646c36cf2e9Sopenharmony_ci return 1647c36cf2e9Sopenharmony_ci } 1648c36cf2e9Sopenharmony_ci if (startNum>endNum) { 1649c36cf2e9Sopenharmony_ci this.setInvalidRange() 1650c36cf2e9Sopenharmony_ci this.cusRangeArr = [] 1651c36cf2e9Sopenharmony_ci return 1652c36cf2e9Sopenharmony_ci }else{ 1653c36cf2e9Sopenharmony_ci for (let index:number = startNum; index <= endNum; index++) { 1654c36cf2e9Sopenharmony_ci this.cusRangeArr.push(index); 1655c36cf2e9Sopenharmony_ci } 1656c36cf2e9Sopenharmony_ci } 1657c36cf2e9Sopenharmony_ci continue; 1658c36cf2e9Sopenharmony_ci } 1659c36cf2e9Sopenharmony_ci 1660c36cf2e9Sopenharmony_ci let num = this.checkNum(pageArray[index]) 1661c36cf2e9Sopenharmony_ci 1662c36cf2e9Sopenharmony_ci if (num){ 1663c36cf2e9Sopenharmony_ci this.cusRangeArr.push(num); 1664c36cf2e9Sopenharmony_ci }else{ 1665c36cf2e9Sopenharmony_ci this.cusRangeArr = [] 1666c36cf2e9Sopenharmony_ci return 1667c36cf2e9Sopenharmony_ci } 1668c36cf2e9Sopenharmony_ci 1669c36cf2e9Sopenharmony_ci } 1670c36cf2e9Sopenharmony_ci const set = new Set(this.cusRangeArr) 1671c36cf2e9Sopenharmony_ci this.cusRangeArr = Array.from(set) 1672c36cf2e9Sopenharmony_ci let length = value.length 1673c36cf2e9Sopenharmony_ci if (length >= Constants.MAX_CUSTOM_PRINT_RANGE_LENGTH) { 1674c36cf2e9Sopenharmony_ci this.errorMessage = $r('app.string.cus_range_error_words_limit') 1675c36cf2e9Sopenharmony_ci this.cusRangeBorderColor = $r('app.color.border_line_error') 1676c36cf2e9Sopenharmony_ci this.isCusRangeMax = true 1677c36cf2e9Sopenharmony_ci return 1678c36cf2e9Sopenharmony_ci } 1679c36cf2e9Sopenharmony_ci Log.info(TAG,'checkCustomRange this.cusRangeArr = ',JSON.stringify(this.cusRangeArr)) 1680c36cf2e9Sopenharmony_ci } 1681c36cf2e9Sopenharmony_ci 1682c36cf2e9Sopenharmony_ci checkNum(numStr:string):number | undefined{ 1683c36cf2e9Sopenharmony_ci if (numStr.includes('.')||numStr.startsWith('0')){ 1684c36cf2e9Sopenharmony_ci this.setInvalidRange() 1685c36cf2e9Sopenharmony_ci return 1686c36cf2e9Sopenharmony_ci } 1687c36cf2e9Sopenharmony_ci let num = Number(numStr) 1688c36cf2e9Sopenharmony_ci if (Number.isNaN(num)||num < 1){ 1689c36cf2e9Sopenharmony_ci this.setInvalidRange() 1690c36cf2e9Sopenharmony_ci return undefined 1691c36cf2e9Sopenharmony_ci }else if (num > this.totalPage) { 1692c36cf2e9Sopenharmony_ci this.errorMessage = $r('app.string.cus_range_error_max_image_count',this.totalPage.toString()) 1693c36cf2e9Sopenharmony_ci this.cusRangeBorderColor = $r('app.color.border_line_error') 1694c36cf2e9Sopenharmony_ci this.isCusRangeError = true 1695c36cf2e9Sopenharmony_ci return undefined 1696c36cf2e9Sopenharmony_ci } 1697c36cf2e9Sopenharmony_ci return num 1698c36cf2e9Sopenharmony_ci } 1699c36cf2e9Sopenharmony_ci 1700c36cf2e9Sopenharmony_ci setInvalidRange(){ 1701c36cf2e9Sopenharmony_ci this.errorMessage = $r('app.string.cus_range_error_invalid_range') 1702c36cf2e9Sopenharmony_ci this.cusRangeBorderColor = $r('app.color.border_line_error') 1703c36cf2e9Sopenharmony_ci this.isCusRangeError = true 1704c36cf2e9Sopenharmony_ci } 1705c36cf2e9Sopenharmony_ci 1706c36cf2e9Sopenharmony_ci needDuplexChange(){ 1707c36cf2e9Sopenharmony_ci Log.info(TAG,'needDuplexChange ') 1708c36cf2e9Sopenharmony_ci if(!this.needDuplex && !(this.currentDuplex === SelectionModel.DuplexMode_SINGLE)){ 1709c36cf2e9Sopenharmony_ci this.currentDuplex = SelectionModel.DuplexMode_SINGLE 1710c36cf2e9Sopenharmony_ci } 1711c36cf2e9Sopenharmony_ci } 1712c36cf2e9Sopenharmony_ci 1713c36cf2e9Sopenharmony_ci setStartPageStr(){ 1714c36cf2e9Sopenharmony_ci this.startPageStr = '' 1715c36cf2e9Sopenharmony_ci this.startPageStr = this.startPage.toString(); 1716c36cf2e9Sopenharmony_ci } 1717c36cf2e9Sopenharmony_ci setEndPageStr(){ 1718c36cf2e9Sopenharmony_ci this.endPageStr = '' 1719c36cf2e9Sopenharmony_ci this.endPageStr = this.endPage.toString(); 1720c36cf2e9Sopenharmony_ci } 1721c36cf2e9Sopenharmony_ci /** 1722c36cf2e9Sopenharmony_ci * 检查传入图片数量,大于100时不与加载 1723c36cf2e9Sopenharmony_ci * 1724c36cf2e9Sopenharmony_ci */ 1725c36cf2e9Sopenharmony_ci checkMaxPages(fileList: Array<string>): Array<string>{ 1726c36cf2e9Sopenharmony_ci let returnList: Array<string>; 1727c36cf2e9Sopenharmony_ci if (fileList.length > Constants.MAX_PAGES) { 1728c36cf2e9Sopenharmony_ci returnList = fileList.slice(0,Constants.MAX_PAGES); 1729c36cf2e9Sopenharmony_ci setTimeout(() => {//延迟弹窗,否则会概率弹窗失败 1730c36cf2e9Sopenharmony_ci this.showToast($r('app.string.toast_max_copies')); 1731c36cf2e9Sopenharmony_ci }, Constants.SHOW_TOAST_TIMEOUT); 1732c36cf2e9Sopenharmony_ci } else { 1733c36cf2e9Sopenharmony_ci returnList = fileList 1734c36cf2e9Sopenharmony_ci } 1735c36cf2e9Sopenharmony_ci return returnList 1736c36cf2e9Sopenharmony_ci } 1737c36cf2e9Sopenharmony_ci 1738c36cf2e9Sopenharmony_ci checkCustomRangeTextInput(isChangeRangeType: boolean){ 1739c36cf2e9Sopenharmony_ci if (!isChangeRangeType && this.printRangeType === PrintRangeType.ALL){ 1740c36cf2e9Sopenharmony_ci return; 1741c36cf2e9Sopenharmony_ci } 1742c36cf2e9Sopenharmony_ci if (isChangeRangeType) { 1743c36cf2e9Sopenharmony_ci this.editCusRangeFlag = false 1744c36cf2e9Sopenharmony_ci this.cusRangeText = '' 1745c36cf2e9Sopenharmony_ci this.cusRangeArr = [] 1746c36cf2e9Sopenharmony_ci this.isCusRangeError = false 1747c36cf2e9Sopenharmony_ci this.isCusRangeMax = false 1748c36cf2e9Sopenharmony_ci this.cusRangeBorderColor = $r('app.color.border_line') 1749c36cf2e9Sopenharmony_ci } else { 1750c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.cusRangeText)) { 1751c36cf2e9Sopenharmony_ci if (this.totalPage > Constants.NUMBER_1) { 1752c36cf2e9Sopenharmony_ci if (this.isAbovePageLimit) { 1753c36cf2e9Sopenharmony_ci this.cusRangeText = Constants.NUMBER_1+Constants.HYPHEN+Constants.MAX_PAGES.toString() 1754c36cf2e9Sopenharmony_ci }else{ 1755c36cf2e9Sopenharmony_ci this.cusRangeText = Constants.NUMBER_1+Constants.HYPHEN+this.totalPage.toString() 1756c36cf2e9Sopenharmony_ci } 1757c36cf2e9Sopenharmony_ci }else{ 1758c36cf2e9Sopenharmony_ci this.cusRangeText = Constants.STRING_ONE 1759c36cf2e9Sopenharmony_ci } 1760c36cf2e9Sopenharmony_ci } 1761c36cf2e9Sopenharmony_ci } 1762c36cf2e9Sopenharmony_ci 1763c36cf2e9Sopenharmony_ci if (this.cusRangeArr.length === 0 ) { 1764c36cf2e9Sopenharmony_ci this.printRangeType = PrintRangeType.ALL; 1765c36cf2e9Sopenharmony_ci this.updatePrintRange() 1766c36cf2e9Sopenharmony_ci } 1767c36cf2e9Sopenharmony_ci } 1768c36cf2e9Sopenharmony_ci 1769c36cf2e9Sopenharmony_ci checkPrintRange(): Array<number>{ 1770c36cf2e9Sopenharmony_ci let returnList = new Array<number>(); 1771c36cf2e9Sopenharmony_ci if (this.printRange.length>100) { 1772c36cf2e9Sopenharmony_ci returnList = PrintUtil.getDefaultArray(100); 1773c36cf2e9Sopenharmony_ci }else{ 1774c36cf2e9Sopenharmony_ci returnList = CopyUtil.deepClone(this.printRange); 1775c36cf2e9Sopenharmony_ci } 1776c36cf2e9Sopenharmony_ci if (this.printerRange === undefined) {//下发打印参数需要 1777c36cf2e9Sopenharmony_ci this.printerRange = { 1778c36cf2e9Sopenharmony_ci startPage: this.startPage, 1779c36cf2e9Sopenharmony_ci endPage: this.endPage, 1780c36cf2e9Sopenharmony_ci pages: returnList.slice() 1781c36cf2e9Sopenharmony_ci }; 1782c36cf2e9Sopenharmony_ci }else{ 1783c36cf2e9Sopenharmony_ci this.printerRange.startPage = this.startPage; 1784c36cf2e9Sopenharmony_ci this.printerRange.endPage = this.endPage; 1785c36cf2e9Sopenharmony_ci this.printerRange.pages = returnList.slice(); 1786c36cf2e9Sopenharmony_ci } 1787c36cf2e9Sopenharmony_ci return returnList; 1788c36cf2e9Sopenharmony_ci } 1789c36cf2e9Sopenharmony_ci} 1790c36cf2e9Sopenharmony_ci 1791