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