• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import DetailData from '../modle/DetailData'
17import router from '@ohos.router'
18import Logger from '../modle/Logger'
19
20const TAG: string = 'Detail'
21
22@Entry
23@Component
24export struct Detail {
25  @State detailData?: DetailData = new DetailData()
26
27  aboutToAppear() {
28    this.detailData = <DetailData> router.getParams()['detailData']
29    Logger.info(TAG, `this.detailData = ${JSON.stringify(this.detailData)}`)
30  }
31
32  regState(regStateValue: number) {
33    switch (regStateValue) {
34      case 0:
35        return $r('app.string.REG_STATE_NO_SERVICE')
36        break
37      case 1:
38        return $r('app.string.REG_STATE_IN_SERVICE')
39        break
40      case 2:
41        return $r('app.string.REG_STATE_EMERGENCY_CALL_ONLY')
42        break
43      case 3:
44        return $r('app.string.REG_STATE_POWER_OFF')
45        break
46      default:
47        return 'NA'
48        break
49    }
50  }
51
52  radioTechnology(radioTechnologyValue: number) {
53    switch (radioTechnologyValue) {
54      case 0:
55        return $r('app.string.RADIO_TECHNOLOGY_UNKNOWN')
56        break
57      case 1:
58        return $r('app.string.RADIO_TECHNOLOGY_GSM')
59        break
60      case 2:
61        return $r('app.string.RADIO_TECHNOLOGY_1XRTT')
62        break
63      case 3:
64        return $r('app.string.RADIO_TECHNOLOGY_WCDMA')
65        break
66      case 4:
67        return $r('app.string.RADIO_TECHNOLOGY_HSPA')
68        break
69      case 5:
70        return $r('app.string.RADIO_TECHNOLOGY_HSPAP')
71        break
72      case 6:
73        return $r('app.string.RADIO_TECHNOLOGY_TD_SCDMA')
74        break
75      case 7:
76        return $r('app.string.RADIO_TECHNOLOGY_EVDO')
77        break
78      case 8:
79        return $r('app.string.RADIO_TECHNOLOGY_EHRPD')
80        break
81      case 9:
82        return $r('app.string.RADIO_TECHNOLOGY_LTE')
83        break
84      case 10:
85        return $r('app.string.RADIO_TECHNOLOGY_LTE_CA')
86        break
87      case 11:
88        return $r('app.string.RADIO_TECHNOLOGY_IWLAN')
89        break
90      case 12:
91        return $r('app.string.RADIO_TECHNOLOGY_NR')
92        break
93      default:
94        return 'NA'
95        break
96    }
97  }
98
99  nsaState(nsaStateValue: number) {
100    switch (nsaStateValue) {
101      case 1:
102        return $r('app.string.NSA_STATE_NOT_SUPPORT')
103        break
104      case 2:
105        return $r('app.string.NSA_STATE_NO_DETECT')
106        break
107      case 3:
108        return $r('app.string.NSA_STATE_CONNECTED_DETECT')
109        break
110      case 4:
111        return $r('app.string.NSA_STATE_IDLE_DETECT')
112        break
113      case 5:
114        return $r('app.string.NSA_STATE_DUAL_CONNECTED')
115        break
116      case 6:
117        return $r('app.string.NSA_STATE_SA_ATTACHED')
118        break
119      default:
120        return 'NA'
121        break
122    }
123  }
124
125  networkType(networkTypeValue: number) {
126    switch (networkTypeValue) {
127      case 0:
128        return $r('app.string.NETWORK_TYPE_UNKNOWN')
129        break
130      case 1:
131        return $r('app.string.NETWORK_TYPE_GSM')
132        break
133      case 2:
134        return $r('app.string.NETWORK_TYPE_CDMA')
135        break
136      case 3:
137        return $r('app.string.NETWORK_TYPE_WCDMA')
138        break
139      case 4:
140        return $r('app.string.NETWORK_TYPE_TDSCDMA')
141        break
142      case 5:
143        return $r('app.string.NETWORK_TYPE_LTE')
144        break
145      case 6:
146        return $r('app.string.NETWORK_TYPE_NR')
147        break
148      default:
149        return 'NA'
150        break
151    }
152  }
153
154  callState(callStateValue: number) {
155    switch (callStateValue) {
156      case -1:
157        return $r('app.string.CALL_STATE_UNKNOWN')
158        break
159      case 0:
160        return $r('app.string.CALL_STATE_IDLE')
161        break
162      case 1:
163        return $r('app.string.CALL_STATE_RINGING')
164        break
165      case 2:
166        return $r('app.string.CALL_STATE_OFFHOOK')
167        break
168      default:
169        return 'NA'
170        break
171    }
172  }
173
174  dataConnectState(dataConnectStateValue: number) {
175    switch (dataConnectStateValue) {
176      case -1:
177        return $r('app.string.DATA_STATE_UNKNOWN')
178        break
179      case 0:
180        return $r('app.string.DATA_STATE_DISCONNECTED')
181        break
182      case 1:
183        return $r('app.string.DATA_STATE_CONNECTING')
184        break
185      case 2:
186        return $r('app.string.DATA_STATE_CONNECTED')
187        break
188      case 3:
189        return $r('app.string.DATA_STATE_SUSPENDED')
190        break
191      default:
192        return 'NA'
193        break
194    }
195  }
196
197  dataFlowType(dataFlowTypeValue: number) {
198    switch (dataFlowTypeValue) {
199      case 0:
200        return $r('app.string.DATA_FLOW_TYPE_NONE')
201        break
202      case 1:
203        return $r('app.string.DATA_FLOW_TYPE_DOWN')
204        break
205      case 2:
206        return $r('app.string.DATA_FLOW_TYPE_UP')
207        break
208      case 3:
209        return $r('app.string.DATA_FLOW_TYPE_UP_DOWN')
210        break
211      case 4:
212        return $r('app.string.DATA_FLOW_TYPE_DORMANT')
213        break
214      default:
215        return 'NA'
216        break
217    }
218  }
219
220  cardType(cardTypeValue: number) {
221    switch (cardTypeValue) {
222      case -1:
223        return $r('app.string.UNKNOWN_CARD')
224        break
225      case 10:
226        return $r('app.string.SINGLE_MODE_SIM_CARD')
227        break
228      case 20:
229        return $r('app.string.SINGLE_MODE_USIM_CARD')
230        break
231      case 30:
232        return $r('app.string.SINGLE_MODE_RUIM_CARD')
233        break
234      case 40:
235        return $r('app.string.DUAL_MODE_CG_CARD')
236        break
237      case 41:
238        return $r('app.string.CT_NATIONAL_ROAMING_CARD')
239        break
240      case 42:
241        return $r('app.string.CU_DUAL_MODE_CARD')
242        break
243      case 43:
244        return $r('app.string.DUAL_MODE_TELECOM_LTE_CARD')
245        break
246      case 50:
247        return $r('app.string.DUAL_MODE_UG_CARD')
248        break
249      case 60:
250        return $r('app.string.SINGLE_MODE_ISIM_CARD')
251        break
252      default:
253        return 'NA'
254        break
255    }
256  }
257
258  simState(simStateValue: number) {
259    switch (simStateValue) {
260      case 0:
261        return $r('app.string.SIM_STATE_UNKNOWN')
262        break
263      case 1:
264        return $r('app.string.SIM_STATE_NOT_PRESENT')
265        break
266      case 2:
267        return $r('app.string.SIM_STATE_LOCKED')
268        break
269      case 3:
270        return $r('app.string.SIM_STATE_NOT_READY')
271        break
272      case 4:
273        return $r('app.string.SIM_STATE_READY')
274        break
275      case 5:
276        return $r('app.string.SIM_STATE_LOADED')
277        break
278      default:
279        return 'NA'
280        break
281    }
282  }
283
284  lockReason(lockReasonValue: number) {
285    switch (lockReasonValue) {
286      case 0:
287        return $r('app.string.SIM_NONE')
288        break
289      case 1:
290        return $r('app.string.SIM_PIN')
291        break
292      case 2:
293        return $r('app.string.SIM_PUK')
294        break
295      case 3:
296        return $r('app.string.SIM_PN_PIN')
297        break
298      case 4:
299        return $r('app.string.SIM_PN_PUK')
300        break
301      case 5:
302        return $r('app.string.SIM_PU_PIN')
303        break
304      case 6:
305        return $r('app.string.SIM_PU_PUK')
306        break
307      case 7:
308        return $r('app.string.SIM_PP_PIN')
309        break
310      case 8:
311        return $r('app.string.SIM_PP_PUK')
312        break
313      case 9:
314        return $r('app.string.SIM_PC_PIN')
315        break
316      case 10:
317        return $r('app.string.SIM_PC_PUK')
318        break
319      case 11:
320        return $r('app.string.SIM_SIM_PIN')
321        break
322      case 12:
323        return $r('app.string.SIM_SIM_PUK')
324        break
325      default:
326        return 'NA'
327        break
328    }
329  }
330
331  @Builder textComponent(name: Resource, value: Resource | string) {
332    Row() {
333      Text(name)
334        .fontSize(16)
335      Text(value)
336        .fontSize(16)
337    }
338    .width('100%')
339    .margin({ left: 20 })
340  }
341
342  build() {
343    Column() {
344      Row() {
345        Image($r('app.media.ic_back'))
346          .objectFit(ImageFit.Contain)
347          .margin({ left: 20 })
348          .size({ width: 30, height: 30 })
349          .onClick(() => {
350            router.back()
351          })
352          .key('back')
353        Text($r('app.string.detail'))
354          .fontSize(30)
355          .margin({ left: '26%' })
356          .fontColor(Color.White)
357      }
358      .width('100%')
359      .height('8%')
360      .backgroundColor('#0D9FFB')
361
362      Scroll() {
363        Column() {
364          Column() {
365            Text($r('app.string.network_registration_status'))
366              .fontSize(20)
367            if (this.detailData.networkState) {
368              this.textComponent($r('app.string.network_state_long_operator_name'), this.detailData.networkState.longOperatorName)
369              this.textComponent($r('app.string.network_state_short_operator_name'), this.detailData.networkState.shortOperatorName)
370              this.textComponent($r('app.string.plmn_numeric'), this.detailData.networkState.plmnNumeric)
371              this.textComponent($r('app.string.is_roaming'), JSON.stringify(this.detailData.networkState.isRoaming))
372              this.textComponent($r('app.string.reg_state'), this.regState(this.detailData.networkState.regState))
373              this.textComponent($r('app.string.cfg_tech'), this.radioTechnology(this.detailData.networkState.cfgTech))
374              this.textComponent($r('app.string.nsa_state'), this.nsaState(this.detailData.networkState.nsaState))
375              this.textComponent($r('app.string.is_ca_active'), JSON.stringify(this.detailData.networkState.isCaActive))
376              this.textComponent($r('app.string.is_emergency'), JSON.stringify(this.detailData.networkState.isEmergency))
377            }
378          }
379          .margin({ top: 10, left: 20 })
380          .alignItems(HorizontalAlign.Start)
381
382          Column() {
383            Text($r('app.string.signal_information'))
384              .fontSize(20)
385            if (this.detailData.signalInformation) {
386              ForEach(this.detailData.signalInformation, (item) => {
387                this.textComponent($r('app.string.signal_type'), this.networkType(item.signalType))
388                this.textComponent($r('app.string.signal_level'), JSON.stringify(item.signalLevel))
389              }, item => JSON.stringify(item.signalLevel))
390            }
391          }
392          .margin({ top: 10, left: 20 })
393          .alignItems(HorizontalAlign.Start)
394
395          Column() {
396            Text($r('app.string.call_state'))
397              .fontSize(20)
398            this.textComponent($r('app.string.call_state_code'), this.callState(this.detailData.callState))
399            this.textComponent($r('app.string.phone_number'), this.detailData.callNumber)
400          }
401          .margin({ top: 10, left: 20 })
402          .alignItems(HorizontalAlign.Start)
403
404          Column() {
405            Text($r('app.string.cellular_data'))
406              .fontSize(20)
407            this.textComponent($r('app.string.cellular_data_connection_state'), this.dataConnectState(this.detailData.dataConnectState))
408            this.textComponent($r('app.string.cellular_data_flow_type'), this.dataFlowType(this.detailData.dataFlowType))
409          }
410          .margin({ top: 10, left: 20 })
411          .alignItems(HorizontalAlign.Start)
412
413          Column() {
414            Text($r('app.string.sim_card_status'))
415              .fontSize(20)
416            if (this.detailData.simStateData) {
417              this.textComponent($r('app.string.card_type'), this.cardType(this.detailData.simStateData.type))
418              this.textComponent($r('app.string.sim_status'), this.simState(this.detailData.simStateData.state))
419              this.textComponent($r('app.string.lock_reason'), this.lockReason(this.detailData.simStateData.reason))
420            }
421          }
422          .margin({ top: 10, left: 20 })
423          .alignItems(HorizontalAlign.Start)
424        }
425        .width('100%')
426        .alignItems(HorizontalAlign.Start)
427      }
428      .width('100%')
429      .height('92%')
430    }
431    .width('100%')
432    .height('100%')
433  }
434}