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 SelectionModel from '../../Model/SelectionModel' 17c36cf2e9Sopenharmony_ciimport { Log } from '@ohos/common'; 18c36cf2e9Sopenharmony_ciimport CheckEmptyUtils from '@ohos/common'; 19c36cf2e9Sopenharmony_ciimport WifiP2pHelper from '../../Common/Adapter/WifiP2pHelper'; 20c36cf2e9Sopenharmony_ciimport { Constants, Duplex, PrinterInfo } from '@ohos/common'; 21c36cf2e9Sopenharmony_ci 22c36cf2e9Sopenharmony_ciconst TAG = 'SelectComponent' 23c36cf2e9Sopenharmony_ci 24c36cf2e9Sopenharmony_ci@Extend(Row) function selectStyle() { 25c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 26c36cf2e9Sopenharmony_ci .height($r('app.float.params_comp_height')) 27c36cf2e9Sopenharmony_ci .margin({ top: $r('app.float.select_comp_margin_top'), bottom: $r('app.float.select_comp_margin_bottom') 28c36cf2e9Sopenharmony_ci , left: $r('app.float.select_comp_margin_left'), right: $r('app.float.select_comp_margin_right') }) 29c36cf2e9Sopenharmony_ci .border({ width: $r('app.float.border_width'), radius: $r('app.float.radius_s'), color: $r('app.color.border_line') }) 30c36cf2e9Sopenharmony_ci} 31c36cf2e9Sopenharmony_ci 32c36cf2e9Sopenharmony_ci@Extend(Row) function selectItemStyle() { 33c36cf2e9Sopenharmony_ci .width($r('app.float.select_item_width')) 34c36cf2e9Sopenharmony_ci .height($r('app.float.select_item_height')) 35c36cf2e9Sopenharmony_ci .justifyContent(FlexAlign.Start) 36c36cf2e9Sopenharmony_ci .margin({ top: $r('app.float.select_item_margin_top'), bottom: $r('app.float.select_item_margin_bottom') }) 37c36cf2e9Sopenharmony_ci .borderRadius($r('app.float.radius_m')) 38c36cf2e9Sopenharmony_ci} 39c36cf2e9Sopenharmony_ci 40c36cf2e9Sopenharmony_ci@Component 41c36cf2e9Sopenharmony_ciexport struct PrinterSelection { 42c36cf2e9Sopenharmony_ci @Consume('PrinterSelectArray') selectArray: Array<SelectionModel>; 43c36cf2e9Sopenharmony_ci @Consume('CurrentPrinter') currentPrinterSelection: SelectionModel; 44c36cf2e9Sopenharmony_ci @Consume('CanPrint') canPrint: boolean; 45c36cf2e9Sopenharmony_ci @Provide('PrinterPopup') customPopup: boolean = false 46c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 47c36cf2e9Sopenharmony_ci 48c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 49c36cf2e9Sopenharmony_ci if (this.customPopup){ 50c36cf2e9Sopenharmony_ci List() { 51c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 52c36cf2e9Sopenharmony_ci ListItem() { 53c36cf2e9Sopenharmony_ci PrinterSelectionComponent({ selection: select }) 54c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 55c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => select.name) 56c36cf2e9Sopenharmony_ci } 57c36cf2e9Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) 58c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 59c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 60c36cf2e9Sopenharmony_ci } 61c36cf2e9Sopenharmony_ci } 62c36cf2e9Sopenharmony_ci 63c36cf2e9Sopenharmony_ci build() { 64c36cf2e9Sopenharmony_ci Row() { 65c36cf2e9Sopenharmony_ci Text($r('app.string.index_printer')) 66c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 67c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 68c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 69c36cf2e9Sopenharmony_ci .key('Index_Text_printer') 70c36cf2e9Sopenharmony_ci Row() { 71c36cf2e9Sopenharmony_ci LoadingProgress() 72c36cf2e9Sopenharmony_ci .width($r('app.float.select_loadingProgress_size')) 73c36cf2e9Sopenharmony_ci .height($r('app.float.select_loadingProgress_size')) 74c36cf2e9Sopenharmony_ci .margin({ 75c36cf2e9Sopenharmony_ci left: $r('app.float.select_loadingProgress_margin_left'), 76c36cf2e9Sopenharmony_ci right: $r('app.float.select_loadingProgress_margin_right') 77c36cf2e9Sopenharmony_ci }) 78c36cf2e9Sopenharmony_ci .key('Index_LoadingProgress_printer') 79c36cf2e9Sopenharmony_ci .visibility(this.checkLoading() ? Visibility.Visible : Visibility.None) 80c36cf2e9Sopenharmony_ci Text(this.currentPrinterSelection.res) 81c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 82c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 83c36cf2e9Sopenharmony_ci .textOverflow({ overflow: TextOverflow.Ellipsis }) 84c36cf2e9Sopenharmony_ci .maxLines(Constants.NUMBER_1) 85c36cf2e9Sopenharmony_ci .width(this.checkLoading() ? $r('app.float.select_checkLoading_true_width') : $r('app.float.select_checkLoading_false_width')) 86c36cf2e9Sopenharmony_ci .margin({ 87c36cf2e9Sopenharmony_ci left: this.checkLoading() ? $r('app.float.select_checkLoading_true_margin_left') : $r('app.float.select_checkLoading_false_margin_left') 88c36cf2e9Sopenharmony_ci }) 89c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 90c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 91c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 92c36cf2e9Sopenharmony_ci .margin({ 93c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 94c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 95c36cf2e9Sopenharmony_ci }) 96c36cf2e9Sopenharmony_ci } 97c36cf2e9Sopenharmony_ci .key('Selection_Printer') 98c36cf2e9Sopenharmony_ci .selectStyle() 99c36cf2e9Sopenharmony_ci .onClick(() => { 100c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 101c36cf2e9Sopenharmony_ci }) 102c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 103c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 104c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 105c36cf2e9Sopenharmony_ci popupColor: Color.White, 106c36cf2e9Sopenharmony_ci enableArrow: false, 107c36cf2e9Sopenharmony_ci onStateChange: (e) => { 108c36cf2e9Sopenharmony_ci if (!e.isVisible) { 109c36cf2e9Sopenharmony_ci this.customPopup = false 110c36cf2e9Sopenharmony_ci } 111c36cf2e9Sopenharmony_ci } 112c36cf2e9Sopenharmony_ci }) 113c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 114c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 115c36cf2e9Sopenharmony_ci if (isHover) { 116c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 117c36cf2e9Sopenharmony_ci } else { 118c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 119c36cf2e9Sopenharmony_ci } 120c36cf2e9Sopenharmony_ci }) 121c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 122c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 123c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 124c36cf2e9Sopenharmony_ci } 125c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 126c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 127c36cf2e9Sopenharmony_ci } 128c36cf2e9Sopenharmony_ci }) 129c36cf2e9Sopenharmony_ci }.height($r('app.float.params_row_height')).width($r('app.float.params_row_width')) 130c36cf2e9Sopenharmony_ci 131c36cf2e9Sopenharmony_ci } 132c36cf2e9Sopenharmony_ci 133c36cf2e9Sopenharmony_ci aboutToAppear() { 134c36cf2e9Sopenharmony_ci } 135c36cf2e9Sopenharmony_ci 136c36cf2e9Sopenharmony_ci checkLoading() { 137c36cf2e9Sopenharmony_ci let printer: PrinterInfo | undefined = SelectionModel.getSelectionValue<PrinterInfo>(this.currentPrinterSelection.name); 138c36cf2e9Sopenharmony_ci if ((!CheckEmptyUtils.isEmpty(printer) 139c36cf2e9Sopenharmony_ci && printer!.printerId !== '-1' 140c36cf2e9Sopenharmony_ci && !this.canPrint)) { 141c36cf2e9Sopenharmony_ci return true; 142c36cf2e9Sopenharmony_ci } 143c36cf2e9Sopenharmony_ci return false; 144c36cf2e9Sopenharmony_ci } 145c36cf2e9Sopenharmony_ci} 146c36cf2e9Sopenharmony_ci 147c36cf2e9Sopenharmony_ci@Component 148c36cf2e9Sopenharmony_cistruct PrinterSelectionComponent { 149c36cf2e9Sopenharmony_ci @Consume('CurrentPrinter') currentPrinterSelection: SelectionModel; 150c36cf2e9Sopenharmony_ci @Consume('PrinterPopup') customPopup: boolean 151c36cf2e9Sopenharmony_ci @Consume('PrinterSelectFlag') printerSelectFlag: boolean 152c36cf2e9Sopenharmony_ci @Consume('OpenWLANFlag') openWlanFlag: boolean 153c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 154c36cf2e9Sopenharmony_ci private selection?: SelectionModel; 155c36cf2e9Sopenharmony_ci 156c36cf2e9Sopenharmony_ci build() { 157c36cf2e9Sopenharmony_ci Row() { 158c36cf2e9Sopenharmony_ci Text(this.selection!.res) 159c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 160c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 161c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left'), right: $r('app.float.select_text_margin_right') }) 162c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 163c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 164c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 165c36cf2e9Sopenharmony_ci } 166c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 167c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 168c36cf2e9Sopenharmony_ci } 169c36cf2e9Sopenharmony_ci }) 170c36cf2e9Sopenharmony_ci } 171c36cf2e9Sopenharmony_ci .selectItemStyle() 172c36cf2e9Sopenharmony_ci .onClick(() => { 173c36cf2e9Sopenharmony_ci if (WifiP2pHelper.checkWifiActive()) { 174c36cf2e9Sopenharmony_ci this.printerSelectFlag = true 175c36cf2e9Sopenharmony_ci } else { 176c36cf2e9Sopenharmony_ci this.openWlanFlag = !this.openWlanFlag 177c36cf2e9Sopenharmony_ci } 178c36cf2e9Sopenharmony_ci this.customPopup = false 179c36cf2e9Sopenharmony_ci }) 180c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 181c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 182c36cf2e9Sopenharmony_ci if (isHover) { 183c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 184c36cf2e9Sopenharmony_ci } else { 185c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 186c36cf2e9Sopenharmony_ci } 187c36cf2e9Sopenharmony_ci }) 188c36cf2e9Sopenharmony_ci 189c36cf2e9Sopenharmony_ci } 190c36cf2e9Sopenharmony_ci} 191c36cf2e9Sopenharmony_ci 192c36cf2e9Sopenharmony_ci 193c36cf2e9Sopenharmony_ci@Component 194c36cf2e9Sopenharmony_ciexport struct MediaSizeSelection { 195c36cf2e9Sopenharmony_ci @Consume('MediaSizeSelectArray') selectArray: Array<SelectionModel>; 196c36cf2e9Sopenharmony_ci @Consume('CurrentMediaSize') currentMediaSize: SelectionModel; 197c36cf2e9Sopenharmony_ci @Provide('MediaSizePopup') customPopup: boolean = false; 198c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 199c36cf2e9Sopenharmony_ci 200c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 201c36cf2e9Sopenharmony_ci if (this.customPopup){ 202c36cf2e9Sopenharmony_ci List() { 203c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 204c36cf2e9Sopenharmony_ci ListItem() { 205c36cf2e9Sopenharmony_ci MediaSizeSelectionComponent({ selection: select }) 206c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 207c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => JSON.stringify(select)) 208c36cf2e9Sopenharmony_ci } 209c36cf2e9Sopenharmony_ci .edgeEffect(EdgeEffect.Spring) 210c36cf2e9Sopenharmony_ci .scrollBar(this.selectArray.length > Constants.NUMBER_5 ? BarState.Auto : BarState.Off) 211c36cf2e9Sopenharmony_ci .height(this.selectArray.length > Constants.NUMBER_5 ? 212c36cf2e9Sopenharmony_ci $r('app.float.select_max_height') : this.selectArray.length * Constants.NUMBER_48) 213c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 214c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 215c36cf2e9Sopenharmony_ci } 216c36cf2e9Sopenharmony_ci } 217c36cf2e9Sopenharmony_ci 218c36cf2e9Sopenharmony_ci build() { 219c36cf2e9Sopenharmony_ci Row() { 220c36cf2e9Sopenharmony_ci Text($r('app.string.index_media_size')) 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_mediaSize') 225c36cf2e9Sopenharmony_ci Row() { 226c36cf2e9Sopenharmony_ci Text(this.currentMediaSize.res).fontSize($r('app.float.font_size_body2')).textAlign(TextAlign.Start) 227c36cf2e9Sopenharmony_ci .width($r('app.float.select_text_width')) 228c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left') }) 229c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 230c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 231c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 232c36cf2e9Sopenharmony_ci .margin({ 233c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 234c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 235c36cf2e9Sopenharmony_ci }) 236c36cf2e9Sopenharmony_ci } 237c36cf2e9Sopenharmony_ci .key('Selection_MediaSize') 238c36cf2e9Sopenharmony_ci .selectStyle() 239c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 240c36cf2e9Sopenharmony_ci .onClick(() => { 241c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 242c36cf2e9Sopenharmony_ci }) 243c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 244c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 245c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 246c36cf2e9Sopenharmony_ci popupColor: Color.White, 247c36cf2e9Sopenharmony_ci enableArrow: false, 248c36cf2e9Sopenharmony_ci onStateChange: (e) => { 249c36cf2e9Sopenharmony_ci if (!e.isVisible) { 250c36cf2e9Sopenharmony_ci this.customPopup = false 251c36cf2e9Sopenharmony_ci } 252c36cf2e9Sopenharmony_ci } 253c36cf2e9Sopenharmony_ci }) 254c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 255c36cf2e9Sopenharmony_ci if (isHover) { 256c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 257c36cf2e9Sopenharmony_ci } else { 258c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 259c36cf2e9Sopenharmony_ci } 260c36cf2e9Sopenharmony_ci }) 261c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 262c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 263c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 264c36cf2e9Sopenharmony_ci } 265c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 266c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 267c36cf2e9Sopenharmony_ci } 268c36cf2e9Sopenharmony_ci }) 269c36cf2e9Sopenharmony_ci } 270c36cf2e9Sopenharmony_ci } 271c36cf2e9Sopenharmony_ci 272c36cf2e9Sopenharmony_ci aboutToAppear() { 273c36cf2e9Sopenharmony_ci Log.info(TAG, 'aboutToAppear this.selectArray length = ' + this.selectArray.length) 274c36cf2e9Sopenharmony_ci 275c36cf2e9Sopenharmony_ci } 276c36cf2e9Sopenharmony_ci} 277c36cf2e9Sopenharmony_ci 278c36cf2e9Sopenharmony_ci@Component 279c36cf2e9Sopenharmony_cistruct MediaSizeSelectionComponent { 280c36cf2e9Sopenharmony_ci @Consume('CurrentMediaSize') currentMediaSize: SelectionModel; 281c36cf2e9Sopenharmony_ci @Consume('MediaSizePopup') customPopup: boolean 282c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 283c36cf2e9Sopenharmony_ci private selection?: SelectionModel; 284c36cf2e9Sopenharmony_ci 285c36cf2e9Sopenharmony_ci build() { 286c36cf2e9Sopenharmony_ci Row() { 287c36cf2e9Sopenharmony_ci Text(this.selection!.res) 288c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 289c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 290c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left'), right: $r('app.float.select_text_margin_right') }) 291c36cf2e9Sopenharmony_ci } 292c36cf2e9Sopenharmony_ci .selectItemStyle() 293c36cf2e9Sopenharmony_ci .onClick(() => { 294c36cf2e9Sopenharmony_ci this.currentMediaSize = this.selection! 295c36cf2e9Sopenharmony_ci this.customPopup = false 296c36cf2e9Sopenharmony_ci }) 297c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 298c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 299c36cf2e9Sopenharmony_ci if (isHover) { 300c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 301c36cf2e9Sopenharmony_ci } else { 302c36cf2e9Sopenharmony_ci this.checkSelectedColor() 303c36cf2e9Sopenharmony_ci } 304c36cf2e9Sopenharmony_ci }) 305c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 306c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 307c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 308c36cf2e9Sopenharmony_ci } 309c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 310c36cf2e9Sopenharmony_ci this.checkSelectedColor() 311c36cf2e9Sopenharmony_ci } 312c36cf2e9Sopenharmony_ci }) 313c36cf2e9Sopenharmony_ci } 314c36cf2e9Sopenharmony_ci 315c36cf2e9Sopenharmony_ci aboutToAppear() { 316c36cf2e9Sopenharmony_ci this.checkSelectedColor() 317c36cf2e9Sopenharmony_ci } 318c36cf2e9Sopenharmony_ci 319c36cf2e9Sopenharmony_ci checkSelectedColor() { 320c36cf2e9Sopenharmony_ci if (this.selection!.name === this.currentMediaSize.name) { 321c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.selected_color') 322c36cf2e9Sopenharmony_ci } else { 323c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 324c36cf2e9Sopenharmony_ci } 325c36cf2e9Sopenharmony_ci } 326c36cf2e9Sopenharmony_ci} 327c36cf2e9Sopenharmony_ci 328c36cf2e9Sopenharmony_ci@Component 329c36cf2e9Sopenharmony_ciexport struct DirectionSelection { 330c36cf2e9Sopenharmony_ci @Consume('DirectionSelectArray') selectArray: Array<SelectionModel>; 331c36cf2e9Sopenharmony_ci @Consume('CurrentDirection') currentDirection: SelectionModel; 332c36cf2e9Sopenharmony_ci @Provide('DirectionPopup') customPopup: boolean = false 333c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 334c36cf2e9Sopenharmony_ci 335c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 336c36cf2e9Sopenharmony_ci if (this.customPopup){ 337c36cf2e9Sopenharmony_ci List() { 338c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 339c36cf2e9Sopenharmony_ci ListItem() { 340c36cf2e9Sopenharmony_ci DirectionSelectionComponent({ selection: select }) 341c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 342c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => select.name) 343c36cf2e9Sopenharmony_ci } 344c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 345c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 346c36cf2e9Sopenharmony_ci } 347c36cf2e9Sopenharmony_ci } 348c36cf2e9Sopenharmony_ci 349c36cf2e9Sopenharmony_ci build() { 350c36cf2e9Sopenharmony_ci Row() { 351c36cf2e9Sopenharmony_ci Text($r('app.string.index_direction')) 352c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 353c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 354c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 355c36cf2e9Sopenharmony_ci .key('Index_Text_direction') 356c36cf2e9Sopenharmony_ci Row() { 357c36cf2e9Sopenharmony_ci Text(this.currentDirection.res).fontSize($r('app.float.font_size_body2')).textAlign(TextAlign.Start) 358c36cf2e9Sopenharmony_ci .width($r('app.float.select_text_width')) 359c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left') }) 360c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 361c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 362c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 363c36cf2e9Sopenharmony_ci .margin({ 364c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 365c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 366c36cf2e9Sopenharmony_ci }) 367c36cf2e9Sopenharmony_ci } 368c36cf2e9Sopenharmony_ci .key('Selection_Direction') 369c36cf2e9Sopenharmony_ci .selectStyle() 370c36cf2e9Sopenharmony_ci .onClick(() => { 371c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 372c36cf2e9Sopenharmony_ci }) 373c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 374c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 375c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 376c36cf2e9Sopenharmony_ci popupColor: Color.White, 377c36cf2e9Sopenharmony_ci enableArrow: false, 378c36cf2e9Sopenharmony_ci onStateChange: (e) => { 379c36cf2e9Sopenharmony_ci if (!e.isVisible) { 380c36cf2e9Sopenharmony_ci this.customPopup = false 381c36cf2e9Sopenharmony_ci } 382c36cf2e9Sopenharmony_ci } 383c36cf2e9Sopenharmony_ci }) 384c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 385c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 386c36cf2e9Sopenharmony_ci if (isHover) { 387c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 388c36cf2e9Sopenharmony_ci } else { 389c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 390c36cf2e9Sopenharmony_ci } 391c36cf2e9Sopenharmony_ci }) 392c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 393c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 394c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 395c36cf2e9Sopenharmony_ci } 396c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 397c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 398c36cf2e9Sopenharmony_ci } 399c36cf2e9Sopenharmony_ci }) 400c36cf2e9Sopenharmony_ci } 401c36cf2e9Sopenharmony_ci } 402c36cf2e9Sopenharmony_ci 403c36cf2e9Sopenharmony_ci aboutToAppear() { 404c36cf2e9Sopenharmony_ci } 405c36cf2e9Sopenharmony_ci} 406c36cf2e9Sopenharmony_ci 407c36cf2e9Sopenharmony_ci@Component 408c36cf2e9Sopenharmony_cistruct DirectionSelectionComponent { 409c36cf2e9Sopenharmony_ci @Consume('CurrentDirection') currentDirection: SelectionModel; 410c36cf2e9Sopenharmony_ci @Consume('DirectionPopup') customPopup: boolean 411c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 412c36cf2e9Sopenharmony_ci private selection?: SelectionModel 413c36cf2e9Sopenharmony_ci 414c36cf2e9Sopenharmony_ci build() { 415c36cf2e9Sopenharmony_ci Row() { 416c36cf2e9Sopenharmony_ci Text(this.selection!.res) 417c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 418c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 419c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left'), right: $r('app.float.select_text_margin_right') }) 420c36cf2e9Sopenharmony_ci } 421c36cf2e9Sopenharmony_ci .backgroundColor(this.selection!.name === this.currentDirection.name ? $r('app.color.selected_color') : Color.White) 422c36cf2e9Sopenharmony_ci .selectItemStyle() 423c36cf2e9Sopenharmony_ci .onClick(() => { 424c36cf2e9Sopenharmony_ci this.currentDirection = this.selection! 425c36cf2e9Sopenharmony_ci this.customPopup = false 426c36cf2e9Sopenharmony_ci }) 427c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 428c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 429c36cf2e9Sopenharmony_ci if (isHover) { 430c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 431c36cf2e9Sopenharmony_ci } else { 432c36cf2e9Sopenharmony_ci this.checkSelectedColor() 433c36cf2e9Sopenharmony_ci } 434c36cf2e9Sopenharmony_ci }) 435c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 436c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 437c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 438c36cf2e9Sopenharmony_ci } 439c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 440c36cf2e9Sopenharmony_ci this.checkSelectedColor() 441c36cf2e9Sopenharmony_ci } 442c36cf2e9Sopenharmony_ci }) 443c36cf2e9Sopenharmony_ci } 444c36cf2e9Sopenharmony_ci 445c36cf2e9Sopenharmony_ci aboutToAppear() { 446c36cf2e9Sopenharmony_ci this.checkSelectedColor() 447c36cf2e9Sopenharmony_ci } 448c36cf2e9Sopenharmony_ci 449c36cf2e9Sopenharmony_ci checkSelectedColor() { 450c36cf2e9Sopenharmony_ci if (this.selection!.name === this.currentDirection.name) { 451c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.selected_color') 452c36cf2e9Sopenharmony_ci } else { 453c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 454c36cf2e9Sopenharmony_ci } 455c36cf2e9Sopenharmony_ci } 456c36cf2e9Sopenharmony_ci} 457c36cf2e9Sopenharmony_ci 458c36cf2e9Sopenharmony_ci@Component 459c36cf2e9Sopenharmony_ciexport struct MediaTypeSelection { 460c36cf2e9Sopenharmony_ci @Consume('MediaTypeSelectArray') selectArray: Array<SelectionModel>; 461c36cf2e9Sopenharmony_ci @Consume('CurrentMediaType') currentMediaType: SelectionModel; 462c36cf2e9Sopenharmony_ci @Provide('MediaTypePopup') customPopup: boolean = false 463c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 464c36cf2e9Sopenharmony_ci 465c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 466c36cf2e9Sopenharmony_ci if (this.customPopup){ 467c36cf2e9Sopenharmony_ci List() { 468c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 469c36cf2e9Sopenharmony_ci ListItem() { 470c36cf2e9Sopenharmony_ci MediaTypeSelectionComponent({ selection: select }) 471c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 472c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => select.name) 473c36cf2e9Sopenharmony_ci } 474c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 475c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 476c36cf2e9Sopenharmony_ci } 477c36cf2e9Sopenharmony_ci } 478c36cf2e9Sopenharmony_ci 479c36cf2e9Sopenharmony_ci build() { 480c36cf2e9Sopenharmony_ci Row() { 481c36cf2e9Sopenharmony_ci Text($r('app.string.index_media_type')) 482c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 483c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 484c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 485c36cf2e9Sopenharmony_ci .key('Index_Text_mediaType') 486c36cf2e9Sopenharmony_ci Row() { 487c36cf2e9Sopenharmony_ci Text(this.currentMediaType.res).fontSize($r('app.float.font_size_body2')).textAlign(TextAlign.Start) 488c36cf2e9Sopenharmony_ci .width($r('app.float.select_text_width')) 489c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left') }) 490c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 491c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 492c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 493c36cf2e9Sopenharmony_ci .margin({ 494c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 495c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 496c36cf2e9Sopenharmony_ci }) 497c36cf2e9Sopenharmony_ci } 498c36cf2e9Sopenharmony_ci .key('Selection_MediaType') 499c36cf2e9Sopenharmony_ci .selectStyle() 500c36cf2e9Sopenharmony_ci .onClick(() => { 501c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 502c36cf2e9Sopenharmony_ci }) 503c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 504c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 505c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 506c36cf2e9Sopenharmony_ci popupColor: Color.White, 507c36cf2e9Sopenharmony_ci enableArrow: false, 508c36cf2e9Sopenharmony_ci onStateChange: (e) => { 509c36cf2e9Sopenharmony_ci if (!e.isVisible) { 510c36cf2e9Sopenharmony_ci this.customPopup = false 511c36cf2e9Sopenharmony_ci } 512c36cf2e9Sopenharmony_ci } 513c36cf2e9Sopenharmony_ci }) 514c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 515c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 516c36cf2e9Sopenharmony_ci if (isHover) { 517c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 518c36cf2e9Sopenharmony_ci } else { 519c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 520c36cf2e9Sopenharmony_ci } 521c36cf2e9Sopenharmony_ci }) 522c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 523c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 524c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 525c36cf2e9Sopenharmony_ci } 526c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 527c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 528c36cf2e9Sopenharmony_ci } 529c36cf2e9Sopenharmony_ci }) 530c36cf2e9Sopenharmony_ci } 531c36cf2e9Sopenharmony_ci } 532c36cf2e9Sopenharmony_ci 533c36cf2e9Sopenharmony_ci aboutToAppear() { 534c36cf2e9Sopenharmony_ci } 535c36cf2e9Sopenharmony_ci} 536c36cf2e9Sopenharmony_ci 537c36cf2e9Sopenharmony_ci@Component 538c36cf2e9Sopenharmony_cistruct MediaTypeSelectionComponent { 539c36cf2e9Sopenharmony_ci @Consume('CurrentMediaType') currentMediaType: SelectionModel; 540c36cf2e9Sopenharmony_ci @Consume('MediaTypePopup') customPopup: boolean 541c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white') 542c36cf2e9Sopenharmony_ci private selection?: SelectionModel; 543c36cf2e9Sopenharmony_ci 544c36cf2e9Sopenharmony_ci build() { 545c36cf2e9Sopenharmony_ci Row() { 546c36cf2e9Sopenharmony_ci Text(this.selection!.res) 547c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 548c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 549c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left'), right: $r('app.float.select_text_margin_right') }) 550c36cf2e9Sopenharmony_ci } 551c36cf2e9Sopenharmony_ci .backgroundColor(this.selection!.name === this.currentMediaType.name ? $r('app.color.selected_color') : Color.White) 552c36cf2e9Sopenharmony_ci .selectItemStyle() 553c36cf2e9Sopenharmony_ci .onClick(() => { 554c36cf2e9Sopenharmony_ci this.currentMediaType = this.selection! 555c36cf2e9Sopenharmony_ci this.customPopup = false 556c36cf2e9Sopenharmony_ci }) 557c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 558c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 559c36cf2e9Sopenharmony_ci if (isHover) { 560c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 561c36cf2e9Sopenharmony_ci } else { 562c36cf2e9Sopenharmony_ci this.checkSelectedColor() 563c36cf2e9Sopenharmony_ci } 564c36cf2e9Sopenharmony_ci }) 565c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 566c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 567c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 568c36cf2e9Sopenharmony_ci } 569c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 570c36cf2e9Sopenharmony_ci this.checkSelectedColor() 571c36cf2e9Sopenharmony_ci } 572c36cf2e9Sopenharmony_ci }) 573c36cf2e9Sopenharmony_ci } 574c36cf2e9Sopenharmony_ci 575c36cf2e9Sopenharmony_ci aboutToAppear() { 576c36cf2e9Sopenharmony_ci this.checkSelectedColor() 577c36cf2e9Sopenharmony_ci } 578c36cf2e9Sopenharmony_ci 579c36cf2e9Sopenharmony_ci checkSelectedColor() { 580c36cf2e9Sopenharmony_ci if (this.selection!.name === this.currentMediaType.name) { 581c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.selected_color') 582c36cf2e9Sopenharmony_ci } else { 583c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 584c36cf2e9Sopenharmony_ci } 585c36cf2e9Sopenharmony_ci } 586c36cf2e9Sopenharmony_ci} 587c36cf2e9Sopenharmony_ci 588c36cf2e9Sopenharmony_ci@Component 589c36cf2e9Sopenharmony_ciexport struct QualitySelection { 590c36cf2e9Sopenharmony_ci @Consume('QualitySelectArray') selectArray: Array<SelectionModel>; 591c36cf2e9Sopenharmony_ci @Consume('CurrentQuality') currentQuality: SelectionModel; 592c36cf2e9Sopenharmony_ci @Provide('QualityPopup') customPopup: boolean = false 593c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 594c36cf2e9Sopenharmony_ci 595c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 596c36cf2e9Sopenharmony_ci if (this.customPopup){ 597c36cf2e9Sopenharmony_ci List() { 598c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 599c36cf2e9Sopenharmony_ci ListItem() { 600c36cf2e9Sopenharmony_ci QualitySelectionComponent({ selection: select }) 601c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 602c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => select.name) 603c36cf2e9Sopenharmony_ci } 604c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 605c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 606c36cf2e9Sopenharmony_ci } 607c36cf2e9Sopenharmony_ci } 608c36cf2e9Sopenharmony_ci 609c36cf2e9Sopenharmony_ci build() { 610c36cf2e9Sopenharmony_ci Row() { 611c36cf2e9Sopenharmony_ci Text($r('app.string.index_print_quality')) 612c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 613c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 614c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 615c36cf2e9Sopenharmony_ci .key('Index_Text_printQuality') 616c36cf2e9Sopenharmony_ci Row() { 617c36cf2e9Sopenharmony_ci Text(this.currentQuality.res).fontSize($r('app.float.font_size_body2')).textAlign(TextAlign.Start) 618c36cf2e9Sopenharmony_ci .width($r('app.float.select_text_width')) 619c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left') }) 620c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 621c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 622c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 623c36cf2e9Sopenharmony_ci .margin({ 624c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 625c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 626c36cf2e9Sopenharmony_ci }) 627c36cf2e9Sopenharmony_ci } 628c36cf2e9Sopenharmony_ci .key('Selection_Quality') 629c36cf2e9Sopenharmony_ci .selectStyle() 630c36cf2e9Sopenharmony_ci .onClick(() => { 631c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 632c36cf2e9Sopenharmony_ci }) 633c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 634c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 635c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 636c36cf2e9Sopenharmony_ci popupColor: Color.White, 637c36cf2e9Sopenharmony_ci enableArrow: false, 638c36cf2e9Sopenharmony_ci onStateChange: (e) => { 639c36cf2e9Sopenharmony_ci if (!e.isVisible) { 640c36cf2e9Sopenharmony_ci this.customPopup = false 641c36cf2e9Sopenharmony_ci } 642c36cf2e9Sopenharmony_ci } 643c36cf2e9Sopenharmony_ci }) 644c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 645c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 646c36cf2e9Sopenharmony_ci if (isHover) { 647c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 648c36cf2e9Sopenharmony_ci } else { 649c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 650c36cf2e9Sopenharmony_ci } 651c36cf2e9Sopenharmony_ci }) 652c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 653c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 654c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 655c36cf2e9Sopenharmony_ci } 656c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 657c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 658c36cf2e9Sopenharmony_ci } 659c36cf2e9Sopenharmony_ci }) 660c36cf2e9Sopenharmony_ci } 661c36cf2e9Sopenharmony_ci } 662c36cf2e9Sopenharmony_ci 663c36cf2e9Sopenharmony_ci aboutToAppear() { 664c36cf2e9Sopenharmony_ci } 665c36cf2e9Sopenharmony_ci} 666c36cf2e9Sopenharmony_ci 667c36cf2e9Sopenharmony_ci@Component 668c36cf2e9Sopenharmony_cistruct QualitySelectionComponent { 669c36cf2e9Sopenharmony_ci @Consume('CurrentQuality') currentQuality: SelectionModel; 670c36cf2e9Sopenharmony_ci @Consume('QualityPopup') customPopup: boolean 671c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 672c36cf2e9Sopenharmony_ci private selection?: SelectionModel; 673c36cf2e9Sopenharmony_ci 674c36cf2e9Sopenharmony_ci build() { 675c36cf2e9Sopenharmony_ci Row() { 676c36cf2e9Sopenharmony_ci Text(this.selection!.res) 677c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 678c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 679c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left'), right: $r('app.float.select_text_margin_right') }) 680c36cf2e9Sopenharmony_ci } 681c36cf2e9Sopenharmony_ci .backgroundColor(this.selection!.name === this.currentQuality.name ? $r('app.color.selected_color') : Color.White) 682c36cf2e9Sopenharmony_ci .selectItemStyle() 683c36cf2e9Sopenharmony_ci .onClick(() => { 684c36cf2e9Sopenharmony_ci this.currentQuality = this.selection! 685c36cf2e9Sopenharmony_ci this.customPopup = false 686c36cf2e9Sopenharmony_ci }) 687c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 688c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 689c36cf2e9Sopenharmony_ci if (isHover) { 690c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 691c36cf2e9Sopenharmony_ci } else { 692c36cf2e9Sopenharmony_ci this.checkSelectedColor() 693c36cf2e9Sopenharmony_ci } 694c36cf2e9Sopenharmony_ci }) 695c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 696c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 697c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 698c36cf2e9Sopenharmony_ci } 699c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 700c36cf2e9Sopenharmony_ci this.checkSelectedColor() 701c36cf2e9Sopenharmony_ci } 702c36cf2e9Sopenharmony_ci }) 703c36cf2e9Sopenharmony_ci } 704c36cf2e9Sopenharmony_ci 705c36cf2e9Sopenharmony_ci aboutToAppear() { 706c36cf2e9Sopenharmony_ci this.checkSelectedColor() 707c36cf2e9Sopenharmony_ci } 708c36cf2e9Sopenharmony_ci 709c36cf2e9Sopenharmony_ci checkSelectedColor() { 710c36cf2e9Sopenharmony_ci if (this.selection!.name === this.currentQuality.name) { 711c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.selected_color') 712c36cf2e9Sopenharmony_ci } else { 713c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 714c36cf2e9Sopenharmony_ci } 715c36cf2e9Sopenharmony_ci } 716c36cf2e9Sopenharmony_ci} 717c36cf2e9Sopenharmony_ci 718c36cf2e9Sopenharmony_ci@Component 719c36cf2e9Sopenharmony_ciexport struct DuplexSelection { 720c36cf2e9Sopenharmony_ci @Consume('DuplexSelectArray') selectArray: Array<SelectionModel>; 721c36cf2e9Sopenharmony_ci @Consume('CurrentDuplex') currentDuplex: SelectionModel; 722c36cf2e9Sopenharmony_ci @Provide('DuplexPopup') customPopup: boolean = false 723c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 724c36cf2e9Sopenharmony_ci 725c36cf2e9Sopenharmony_ci @Builder popupBuilder() { 726c36cf2e9Sopenharmony_ci if (this.customPopup){ 727c36cf2e9Sopenharmony_ci List() { 728c36cf2e9Sopenharmony_ci ForEach(this.selectArray, (select: SelectionModel) => { 729c36cf2e9Sopenharmony_ci ListItem() { 730c36cf2e9Sopenharmony_ci DuplexSelectionComponent({ selection: select }) 731c36cf2e9Sopenharmony_ci }.key(`Selection_ListItem_${select.name}`) 732c36cf2e9Sopenharmony_ci }, (select: SelectionModel) => select.name) 733c36cf2e9Sopenharmony_ci } 734c36cf2e9Sopenharmony_ci .width($r('app.float.select_comp_width')) 735c36cf2e9Sopenharmony_ci .padding($r('app.float.select_comp_padding')) 736c36cf2e9Sopenharmony_ci } 737c36cf2e9Sopenharmony_ci } 738c36cf2e9Sopenharmony_ci 739c36cf2e9Sopenharmony_ci build() { 740c36cf2e9Sopenharmony_ci Row() { 741c36cf2e9Sopenharmony_ci Text($r('app.string.index_duplex_mode')) 742c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 743c36cf2e9Sopenharmony_ci .width($r('app.float.text_label_width')) 744c36cf2e9Sopenharmony_ci .textAlign(TextAlign.End) 745c36cf2e9Sopenharmony_ci .key('Index_Text_printDuplex') 746c36cf2e9Sopenharmony_ci Row() { 747c36cf2e9Sopenharmony_ci Text(this.getText()).fontSize($r('app.float.font_size_body2')).textAlign(TextAlign.Start) 748c36cf2e9Sopenharmony_ci .width($r('app.float.select_text_width')) 749c36cf2e9Sopenharmony_ci .margin({ left: $r('app.float.select_text_margin_left') }) 750c36cf2e9Sopenharmony_ci Image($r('app.media.ic_select_button')) 751c36cf2e9Sopenharmony_ci .height($r('app.float.select_image_button_size')) 752c36cf2e9Sopenharmony_ci .width($r('app.float.select_image_button_size')) 753c36cf2e9Sopenharmony_ci .margin({ 754c36cf2e9Sopenharmony_ci left: $r('app.float.select_image_button_margin_left'), 755c36cf2e9Sopenharmony_ci right: $r('app.float.select_image_button_margin_right') 756c36cf2e9Sopenharmony_ci }) 757c36cf2e9Sopenharmony_ci } 758c36cf2e9Sopenharmony_ci .key('Selection_Duplex') 759c36cf2e9Sopenharmony_ci .selectStyle() 760c36cf2e9Sopenharmony_ci .onClick(() => { 761c36cf2e9Sopenharmony_ci this.customPopup = !this.customPopup 762c36cf2e9Sopenharmony_ci }) 763c36cf2e9Sopenharmony_ci .bindPopup(this.customPopup, { 764c36cf2e9Sopenharmony_ci builder: this.popupBuilder, 765c36cf2e9Sopenharmony_ci placement: Placement.Bottom, 766c36cf2e9Sopenharmony_ci popupColor: Color.White, 767c36cf2e9Sopenharmony_ci enableArrow: false, 768c36cf2e9Sopenharmony_ci onStateChange: (e) => { 769c36cf2e9Sopenharmony_ci if (!e.isVisible) { 770c36cf2e9Sopenharmony_ci this.customPopup = false 771c36cf2e9Sopenharmony_ci } 772c36cf2e9Sopenharmony_ci } 773c36cf2e9Sopenharmony_ci }) 774c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 775c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 776c36cf2e9Sopenharmony_ci if (isHover) { 777c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 778c36cf2e9Sopenharmony_ci } else { 779c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 780c36cf2e9Sopenharmony_ci } 781c36cf2e9Sopenharmony_ci }) 782c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 783c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 784c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 785c36cf2e9Sopenharmony_ci } 786c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 787c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 788c36cf2e9Sopenharmony_ci } 789c36cf2e9Sopenharmony_ci }) 790c36cf2e9Sopenharmony_ci } 791c36cf2e9Sopenharmony_ci } 792c36cf2e9Sopenharmony_ci 793c36cf2e9Sopenharmony_ci getText(){ 794c36cf2e9Sopenharmony_ci if(SelectionModel.getSelectionValue<number>(this.currentDuplex.name) === Duplex.SINGLE){ 795c36cf2e9Sopenharmony_ci return $r('app.string.DuplexMode_SINGLE') 796c36cf2e9Sopenharmony_ci } else { 797c36cf2e9Sopenharmony_ci return this.currentDuplex.res 798c36cf2e9Sopenharmony_ci } 799c36cf2e9Sopenharmony_ci } 800c36cf2e9Sopenharmony_ci 801c36cf2e9Sopenharmony_ci aboutToAppear() { 802c36cf2e9Sopenharmony_ci } 803c36cf2e9Sopenharmony_ci} 804c36cf2e9Sopenharmony_ci 805c36cf2e9Sopenharmony_ci@Component 806c36cf2e9Sopenharmony_cistruct DuplexSelectionComponent { 807c36cf2e9Sopenharmony_ci @Consume('CurrentDuplex') currentDuplex: SelectionModel; 808c36cf2e9Sopenharmony_ci @Consume('DuplexPopup') customPopup: boolean; 809c36cf2e9Sopenharmony_ci @Consume('NeedDuplex') needDuplex: boolean; 810c36cf2e9Sopenharmony_ci @State bgColor: Resource = $r('app.color.effect_color_white'); 811c36cf2e9Sopenharmony_ci @State isSingle: boolean = true; 812c36cf2e9Sopenharmony_ci private selection?: SelectionModel; 813c36cf2e9Sopenharmony_ci 814c36cf2e9Sopenharmony_ci build() { 815c36cf2e9Sopenharmony_ci Row() { 816c36cf2e9Sopenharmony_ci Image(this.getImage()).width(48).height(48).margin({right:16}).objectFit(ImageFit.Contain) 817c36cf2e9Sopenharmony_ci Column(){ 818c36cf2e9Sopenharmony_ci Text(SelectionModel.getSelectionValue<number>(this.selection!.name)! === Duplex.SINGLE?$r('app.string.DuplexMode_SINGLE'):$r('app.string.DuplexMode_DOUBLE')) 819c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 820c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body1')) 821c36cf2e9Sopenharmony_ci .fontColor('#E5000000') 822c36cf2e9Sopenharmony_ci Text(this.selection!.res) 823c36cf2e9Sopenharmony_ci .textAlign(TextAlign.Start) 824c36cf2e9Sopenharmony_ci .fontSize($r('app.float.font_size_body2')) 825c36cf2e9Sopenharmony_ci .fontColor('#99000000') 826c36cf2e9Sopenharmony_ci }.alignItems(HorizontalAlign.Start) 827c36cf2e9Sopenharmony_ci } 828c36cf2e9Sopenharmony_ci .backgroundColor(this.selection!.name === this.currentDuplex.name ? $r('app.color.selected_color') : Color.White) 829c36cf2e9Sopenharmony_ci .width($r('app.float.select_item_width')) 830c36cf2e9Sopenharmony_ci .height($r('app.float.duplex_select_item_height')) 831c36cf2e9Sopenharmony_ci .justifyContent(FlexAlign.Start) 832c36cf2e9Sopenharmony_ci .alignItems(VerticalAlign.Center) 833c36cf2e9Sopenharmony_ci .margin({ top: $r('app.float.select_item_margin_top'), bottom: $r('app.float.select_item_margin_bottom')}) 834c36cf2e9Sopenharmony_ci .padding({left:16,right:16}) 835c36cf2e9Sopenharmony_ci .borderRadius($r('app.float.radius_m')) 836c36cf2e9Sopenharmony_ci .enabled(this.isSingle||this.needDuplex) 837c36cf2e9Sopenharmony_ci .opacity(this.isSingle||this.needDuplex?1:0.4) 838c36cf2e9Sopenharmony_ci .onClick(() => { 839c36cf2e9Sopenharmony_ci this.currentDuplex = this.selection! 840c36cf2e9Sopenharmony_ci this.customPopup = false 841c36cf2e9Sopenharmony_ci }) 842c36cf2e9Sopenharmony_ci .backgroundColor(this.bgColor) 843c36cf2e9Sopenharmony_ci .onHover((isHover: boolean) => { 844c36cf2e9Sopenharmony_ci if (isHover) { 845c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_hover') 846c36cf2e9Sopenharmony_ci } else { 847c36cf2e9Sopenharmony_ci this.checkSelectedColor() 848c36cf2e9Sopenharmony_ci } 849c36cf2e9Sopenharmony_ci }) 850c36cf2e9Sopenharmony_ci .onTouch((event: TouchEvent) => { 851c36cf2e9Sopenharmony_ci if (event.type === TouchType.Down) { 852c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_press') 853c36cf2e9Sopenharmony_ci } 854c36cf2e9Sopenharmony_ci if (event.type === TouchType.Up) { 855c36cf2e9Sopenharmony_ci this.checkSelectedColor() 856c36cf2e9Sopenharmony_ci } 857c36cf2e9Sopenharmony_ci }) 858c36cf2e9Sopenharmony_ci } 859c36cf2e9Sopenharmony_ci 860c36cf2e9Sopenharmony_ci aboutToAppear() { 861c36cf2e9Sopenharmony_ci Log.info(TAG,'DuplexSelectionComponent: ',JSON.stringify(this.currentDuplex)) 862c36cf2e9Sopenharmony_ci this.isSingle = (SelectionModel.getSelectionValue<number>(this.selection!.name) === Duplex.SINGLE); 863c36cf2e9Sopenharmony_ci this.checkSelectedColor() 864c36cf2e9Sopenharmony_ci } 865c36cf2e9Sopenharmony_ci 866c36cf2e9Sopenharmony_ci checkSelectedColor() { 867c36cf2e9Sopenharmony_ci if (this.selection!.name === this.currentDuplex.name) { 868c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.selected_color') 869c36cf2e9Sopenharmony_ci } else { 870c36cf2e9Sopenharmony_ci this.bgColor = $r('app.color.effect_color_white') 871c36cf2e9Sopenharmony_ci } 872c36cf2e9Sopenharmony_ci } 873c36cf2e9Sopenharmony_ci 874c36cf2e9Sopenharmony_ci getImage(){ 875c36cf2e9Sopenharmony_ci Log.info(TAG,'getImage: ',this.selection!.name) 876c36cf2e9Sopenharmony_ci let res = $r('app.media.ic_single'); 877c36cf2e9Sopenharmony_ci if (SelectionModel.getSelectionValue<number>(this.selection!.name) === Duplex.LONG) { 878c36cf2e9Sopenharmony_ci Log.info(TAG,'getImage: app.media.ic_long',this.selection!.name) 879c36cf2e9Sopenharmony_ci res = $r('app.media.ic_long') 880c36cf2e9Sopenharmony_ci } else if(SelectionModel.getSelectionValue<number>(this.selection!.name) === Duplex.SHORT) { 881c36cf2e9Sopenharmony_ci Log.info(TAG,'getImage: app.media.ic_short',this.selection!.name) 882c36cf2e9Sopenharmony_ci res = $r('app.media.ic_short') 883c36cf2e9Sopenharmony_ci } 884c36cf2e9Sopenharmony_ci return res 885c36cf2e9Sopenharmony_ci } 886c36cf2e9Sopenharmony_ci} 887