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}