TimeUtils.smali 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  1. .class public final Landroid/support/v4/util/TimeUtils;
  2. .super Ljava/lang/Object;
  3. .source "TimeUtils.java"
  4. # static fields
  5. .field public static final HUNDRED_DAY_FIELD_LEN:I = 0x13
  6. .field private static final SECONDS_PER_DAY:I = 0x15180
  7. .field private static final SECONDS_PER_HOUR:I = 0xe10
  8. .field private static final SECONDS_PER_MINUTE:I = 0x3c
  9. .field private static sFormatStr:[C
  10. .field private static final sFormatSync:Ljava/lang/Object;
  11. # direct methods
  12. .method static constructor <clinit>()V
  13. .locals 1
  14. .prologue
  15. .line 35
  16. new-instance v0, Ljava/lang/Object;
  17. invoke-direct {v0}, Ljava/lang/Object;-><init>()V
  18. sput-object v0, Landroid/support/v4/util/TimeUtils;->sFormatSync:Ljava/lang/Object;
  19. .line 36
  20. const/16 v0, 0x18
  21. new-array v0, v0, [C
  22. sput-object v0, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  23. return-void
  24. .end method
  25. .method private constructor <init>()V
  26. .locals 0
  27. .prologue
  28. .line 176
  29. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  30. return-void
  31. .end method
  32. .method private static accumField(IIZI)I
  33. .locals 1
  34. .param p0, "amt" # I
  35. .param p1, "suffix" # I
  36. .param p2, "always" # Z
  37. .param p3, "zeropad" # I
  38. .prologue
  39. .line 39
  40. const/16 v0, 0x63
  41. if-gt p0, v0, :cond_0
  42. if-eqz p2, :cond_1
  43. const/4 v0, 0x3
  44. if-lt p3, v0, :cond_1
  45. .line 40
  46. :cond_0
  47. add-int/lit8 v0, p1, 0x3
  48. .line 48
  49. :goto_0
  50. return v0
  51. .line 42
  52. :cond_1
  53. const/16 v0, 0x9
  54. if-gt p0, v0, :cond_2
  55. if-eqz p2, :cond_3
  56. const/4 v0, 0x2
  57. if-lt p3, v0, :cond_3
  58. .line 43
  59. :cond_2
  60. add-int/lit8 v0, p1, 0x2
  61. goto :goto_0
  62. .line 45
  63. :cond_3
  64. if-nez p2, :cond_4
  65. if-lez p0, :cond_5
  66. .line 46
  67. :cond_4
  68. add-int/lit8 v0, p1, 0x1
  69. goto :goto_0
  70. .line 48
  71. :cond_5
  72. const/4 v0, 0x0
  73. goto :goto_0
  74. .end method
  75. .method public static formatDuration(JJLjava/io/PrintWriter;)V
  76. .locals 3
  77. .param p0, "time" # J
  78. .param p2, "now" # J
  79. .param p4, "pw" # Ljava/io/PrintWriter;
  80. .prologue
  81. .line 169
  82. const-wide/16 v0, 0x0
  83. cmp-long v0, p0, v0
  84. if-nez v0, :cond_0
  85. .line 170
  86. const-string v0, "--"
  87. invoke-virtual {p4, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
  88. .line 174
  89. :goto_0
  90. return-void
  91. .line 173
  92. :cond_0
  93. sub-long v0, p0, p2
  94. const/4 v2, 0x0
  95. invoke-static {v0, v1, p4, v2}, Landroid/support/v4/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V
  96. goto :goto_0
  97. .end method
  98. .method public static formatDuration(JLjava/io/PrintWriter;)V
  99. .locals 1
  100. .param p0, "duration" # J
  101. .param p2, "pw" # Ljava/io/PrintWriter;
  102. .prologue
  103. .line 164
  104. const/4 v0, 0x0
  105. invoke-static {p0, p1, p2, v0}, Landroid/support/v4/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V
  106. .line 165
  107. return-void
  108. .end method
  109. .method public static formatDuration(JLjava/io/PrintWriter;I)V
  110. .locals 5
  111. .param p0, "duration" # J
  112. .param p2, "pw" # Ljava/io/PrintWriter;
  113. .param p3, "fieldLen" # I
  114. .prologue
  115. .line 156
  116. sget-object v2, Landroid/support/v4/util/TimeUtils;->sFormatSync:Ljava/lang/Object;
  117. monitor-enter v2
  118. .line 157
  119. :try_start_0
  120. invoke-static {p0, p1, p3}, Landroid/support/v4/util/TimeUtils;->formatDurationLocked(JI)I
  121. move-result v0
  122. .line 158
  123. .local v0, "len":I
  124. new-instance v1, Ljava/lang/String;
  125. sget-object v3, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  126. const/4 v4, 0x0
  127. invoke-direct {v1, v3, v4, v0}, Ljava/lang/String;-><init>([CII)V
  128. invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
  129. .line 159
  130. monitor-exit v2
  131. .line 160
  132. return-void
  133. .line 159
  134. .end local v0 # "len":I
  135. :catchall_0
  136. move-exception v1
  137. monitor-exit v2
  138. :try_end_0
  139. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  140. throw v1
  141. .end method
  142. .method public static formatDuration(JLjava/lang/StringBuilder;)V
  143. .locals 4
  144. .param p0, "duration" # J
  145. .param p2, "builder" # Ljava/lang/StringBuilder;
  146. .prologue
  147. .line 148
  148. sget-object v2, Landroid/support/v4/util/TimeUtils;->sFormatSync:Ljava/lang/Object;
  149. monitor-enter v2
  150. .line 149
  151. const/4 v1, 0x0
  152. :try_start_0
  153. invoke-static {p0, p1, v1}, Landroid/support/v4/util/TimeUtils;->formatDurationLocked(JI)I
  154. move-result v0
  155. .line 150
  156. .local v0, "len":I
  157. sget-object v1, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  158. const/4 v3, 0x0
  159. invoke-virtual {p2, v1, v3, v0}, Ljava/lang/StringBuilder;->append([CII)Ljava/lang/StringBuilder;
  160. .line 151
  161. monitor-exit v2
  162. .line 152
  163. return-void
  164. .line 151
  165. .end local v0 # "len":I
  166. :catchall_0
  167. move-exception v1
  168. monitor-exit v2
  169. :try_end_0
  170. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  171. throw v1
  172. .end method
  173. .method private static formatDurationLocked(JI)I
  174. .locals 20
  175. .param p0, "duration" # J
  176. .param p2, "fieldLen" # I
  177. .prologue
  178. .line 76
  179. sget-object v4, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  180. array-length v4, v4
  181. move/from16 v0, p2
  182. if-ge v4, v0, :cond_0
  183. .line 77
  184. move/from16 v0, p2
  185. new-array v4, v0, [C
  186. sput-object v4, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  187. .line 80
  188. :cond_0
  189. sget-object v2, Landroid/support/v4/util/TimeUtils;->sFormatStr:[C
  190. .line 82
  191. .local v2, "formatStr":[C
  192. const-wide/16 v6, 0x0
  193. cmp-long v4, p0, v6
  194. if-nez v4, :cond_2
  195. .line 83
  196. const/4 v5, 0x0
  197. .line 84
  198. .local v5, "pos":I
  199. add-int/lit8 p2, p2, -0x1
  200. .line 85
  201. :goto_0
  202. move/from16 v0, p2
  203. if-ge v5, v0, :cond_1
  204. .line 86
  205. const/16 v4, 0x20
  206. aput-char v4, v2, v5
  207. goto :goto_0
  208. .line 88
  209. :cond_1
  210. const/16 v4, 0x30
  211. aput-char v4, v2, v5
  212. .line 89
  213. const/4 v4, 0x1
  214. .line 143
  215. :goto_1
  216. return v4
  217. .line 93
  218. .end local v5 # "pos":I
  219. :cond_2
  220. const-wide/16 v6, 0x0
  221. cmp-long v4, p0, v6
  222. if-lez v4, :cond_6
  223. .line 94
  224. const/16 v16, 0x2b
  225. .line 100
  226. .local v16, "prefix":C
  227. :goto_2
  228. const-wide/16 v6, 0x3e8
  229. rem-long v6, p0, v6
  230. long-to-int v13, v6
  231. .line 101
  232. .local v13, "millis":I
  233. const-wide/16 v6, 0x3e8
  234. div-long v6, p0, v6
  235. long-to-double v6, v6
  236. invoke-static {v6, v7}, Ljava/lang/Math;->floor(D)D
  237. move-result-wide v6
  238. double-to-int v0, v6
  239. move/from16 v17, v0
  240. .line 102
  241. .local v17, "seconds":I
  242. const/4 v3, 0x0
  243. .local v3, "days":I
  244. const/4 v12, 0x0
  245. .local v12, "hours":I
  246. const/4 v14, 0x0
  247. .line 104
  248. .local v14, "minutes":I
  249. const v4, 0x15180
  250. move/from16 v0, v17
  251. if-le v0, v4, :cond_3
  252. .line 105
  253. const v4, 0x15180
  254. div-int v3, v17, v4
  255. .line 106
  256. const v4, 0x15180
  257. mul-int/2addr v4, v3
  258. sub-int v17, v17, v4
  259. .line 108
  260. :cond_3
  261. const/16 v4, 0xe10
  262. move/from16 v0, v17
  263. if-le v0, v4, :cond_4
  264. .line 109
  265. move/from16 v0, v17
  266. div-int/lit16 v12, v0, 0xe10
  267. .line 110
  268. mul-int/lit16 v4, v12, 0xe10
  269. sub-int v17, v17, v4
  270. .line 112
  271. :cond_4
  272. const/16 v4, 0x3c
  273. move/from16 v0, v17
  274. if-le v0, v4, :cond_5
  275. .line 113
  276. div-int/lit8 v14, v17, 0x3c
  277. .line 114
  278. mul-int/lit8 v4, v14, 0x3c
  279. sub-int v17, v17, v4
  280. .line 117
  281. :cond_5
  282. const/4 v5, 0x0
  283. .line 119
  284. .restart local v5 # "pos":I
  285. if-eqz p2, :cond_b
  286. .line 120
  287. const/4 v4, 0x1
  288. const/4 v6, 0x0
  289. const/4 v7, 0x0
  290. invoke-static {v3, v4, v6, v7}, Landroid/support/v4/util/TimeUtils;->accumField(IIZI)I
  291. move-result v15
  292. .line 121
  293. .local v15, "myLen":I
  294. const/4 v6, 0x1
  295. if-lez v15, :cond_7
  296. const/4 v4, 0x1
  297. :goto_3
  298. const/4 v7, 0x2
  299. invoke-static {v12, v6, v4, v7}, Landroid/support/v4/util/TimeUtils;->accumField(IIZI)I
  300. move-result v4
  301. add-int/2addr v15, v4
  302. .line 122
  303. const/4 v6, 0x1
  304. if-lez v15, :cond_8
  305. const/4 v4, 0x1
  306. :goto_4
  307. const/4 v7, 0x2
  308. invoke-static {v14, v6, v4, v7}, Landroid/support/v4/util/TimeUtils;->accumField(IIZI)I
  309. move-result v4
  310. add-int/2addr v15, v4
  311. .line 123
  312. const/4 v6, 0x1
  313. if-lez v15, :cond_9
  314. const/4 v4, 0x1
  315. :goto_5
  316. const/4 v7, 0x2
  317. move/from16 v0, v17
  318. invoke-static {v0, v6, v4, v7}, Landroid/support/v4/util/TimeUtils;->accumField(IIZI)I
  319. move-result v4
  320. add-int/2addr v15, v4
  321. .line 124
  322. const/4 v6, 0x2
  323. const/4 v7, 0x1
  324. if-lez v15, :cond_a
  325. const/4 v4, 0x3
  326. :goto_6
  327. invoke-static {v13, v6, v7, v4}, Landroid/support/v4/util/TimeUtils;->accumField(IIZI)I
  328. move-result v4
  329. add-int/lit8 v4, v4, 0x1
  330. add-int/2addr v15, v4
  331. .line 125
  332. :goto_7
  333. move/from16 v0, p2
  334. if-ge v15, v0, :cond_b
  335. .line 126
  336. const/16 v4, 0x20
  337. aput-char v4, v2, v5
  338. .line 127
  339. add-int/lit8 v5, v5, 0x1
  340. .line 128
  341. add-int/lit8 v15, v15, 0x1
  342. goto :goto_7
  343. .line 96
  344. .end local v3 # "days":I
  345. .end local v5 # "pos":I
  346. .end local v12 # "hours":I
  347. .end local v13 # "millis":I
  348. .end local v14 # "minutes":I
  349. .end local v15 # "myLen":I
  350. .end local v16 # "prefix":C
  351. .end local v17 # "seconds":I
  352. :cond_6
  353. const/16 v16, 0x2d
  354. .line 97
  355. .restart local v16 # "prefix":C
  356. move-wide/from16 v0, p0
  357. neg-long v0, v0
  358. move-wide/from16 p0, v0
  359. goto/16 :goto_2
  360. .line 121
  361. .restart local v3 # "days":I
  362. .restart local v5 # "pos":I
  363. .restart local v12 # "hours":I
  364. .restart local v13 # "millis":I
  365. .restart local v14 # "minutes":I
  366. .restart local v15 # "myLen":I
  367. .restart local v17 # "seconds":I
  368. :cond_7
  369. const/4 v4, 0x0
  370. goto :goto_3
  371. .line 122
  372. :cond_8
  373. const/4 v4, 0x0
  374. goto :goto_4
  375. .line 123
  376. :cond_9
  377. const/4 v4, 0x0
  378. goto :goto_5
  379. .line 124
  380. :cond_a
  381. const/4 v4, 0x0
  382. goto :goto_6
  383. .line 132
  384. .end local v15 # "myLen":I
  385. :cond_b
  386. aput-char v16, v2, v5
  387. .line 133
  388. add-int/lit8 v5, v5, 0x1
  389. .line 135
  390. move/from16 v18, v5
  391. .line 136
  392. .local v18, "start":I
  393. if-eqz p2, :cond_c
  394. const/16 v19, 0x1
  395. .line 137
  396. .local v19, "zeropad":Z
  397. :goto_8
  398. const/16 v4, 0x64
  399. const/4 v6, 0x0
  400. const/4 v7, 0x0
  401. invoke-static/range {v2 .. v7}, Landroid/support/v4/util/TimeUtils;->printField([CICIZI)I
  402. move-result v5
  403. .line 138
  404. const/16 v8, 0x68
  405. move/from16 v0, v18
  406. if-eq v5, v0, :cond_d
  407. const/4 v10, 0x1
  408. :goto_9
  409. if-eqz v19, :cond_e
  410. const/4 v11, 0x2
  411. :goto_a
  412. move-object v6, v2
  413. move v7, v12
  414. move v9, v5
  415. invoke-static/range {v6 .. v11}, Landroid/support/v4/util/TimeUtils;->printField([CICIZI)I
  416. move-result v5
  417. .line 139
  418. const/16 v8, 0x6d
  419. move/from16 v0, v18
  420. if-eq v5, v0, :cond_f
  421. const/4 v10, 0x1
  422. :goto_b
  423. if-eqz v19, :cond_10
  424. const/4 v11, 0x2
  425. :goto_c
  426. move-object v6, v2
  427. move v7, v14
  428. move v9, v5
  429. invoke-static/range {v6 .. v11}, Landroid/support/v4/util/TimeUtils;->printField([CICIZI)I
  430. move-result v5
  431. .line 140
  432. const/16 v8, 0x73
  433. move/from16 v0, v18
  434. if-eq v5, v0, :cond_11
  435. const/4 v10, 0x1
  436. :goto_d
  437. if-eqz v19, :cond_12
  438. const/4 v11, 0x2
  439. :goto_e
  440. move-object v6, v2
  441. move/from16 v7, v17
  442. move v9, v5
  443. invoke-static/range {v6 .. v11}, Landroid/support/v4/util/TimeUtils;->printField([CICIZI)I
  444. move-result v5
  445. .line 141
  446. const/16 v8, 0x6d
  447. const/4 v10, 0x1
  448. if-eqz v19, :cond_13
  449. move/from16 v0, v18
  450. if-eq v5, v0, :cond_13
  451. const/4 v11, 0x3
  452. :goto_f
  453. move-object v6, v2
  454. move v7, v13
  455. move v9, v5
  456. invoke-static/range {v6 .. v11}, Landroid/support/v4/util/TimeUtils;->printField([CICIZI)I
  457. move-result v5
  458. .line 142
  459. const/16 v4, 0x73
  460. aput-char v4, v2, v5
  461. .line 143
  462. add-int/lit8 v4, v5, 0x1
  463. goto/16 :goto_1
  464. .line 136
  465. .end local v19 # "zeropad":Z
  466. :cond_c
  467. const/16 v19, 0x0
  468. goto :goto_8
  469. .line 138
  470. .restart local v19 # "zeropad":Z
  471. :cond_d
  472. const/4 v10, 0x0
  473. goto :goto_9
  474. :cond_e
  475. const/4 v11, 0x0
  476. goto :goto_a
  477. .line 139
  478. :cond_f
  479. const/4 v10, 0x0
  480. goto :goto_b
  481. :cond_10
  482. const/4 v11, 0x0
  483. goto :goto_c
  484. .line 140
  485. :cond_11
  486. const/4 v10, 0x0
  487. goto :goto_d
  488. :cond_12
  489. const/4 v11, 0x0
  490. goto :goto_e
  491. .line 141
  492. :cond_13
  493. const/4 v11, 0x0
  494. goto :goto_f
  495. .end method
  496. .method private static printField([CICIZI)I
  497. .locals 3
  498. .param p0, "formatStr" # [C
  499. .param p1, "amt" # I
  500. .param p2, "suffix" # C
  501. .param p3, "pos" # I
  502. .param p4, "always" # Z
  503. .param p5, "zeropad" # I
  504. .prologue
  505. .line 53
  506. if-nez p4, :cond_0
  507. if-lez p1, :cond_7
  508. .line 54
  509. :cond_0
  510. move v1, p3
  511. .line 55
  512. .local v1, "startPos":I
  513. if-eqz p4, :cond_1
  514. const/4 v2, 0x3
  515. if-ge p5, v2, :cond_2
  516. :cond_1
  517. const/16 v2, 0x63
  518. if-le p1, v2, :cond_3
  519. .line 56
  520. :cond_2
  521. div-int/lit8 v0, p1, 0x64
  522. .line 57
  523. .local v0, "dig":I
  524. add-int/lit8 v2, v0, 0x30
  525. int-to-char v2, v2
  526. aput-char v2, p0, p3
  527. .line 58
  528. add-int/lit8 p3, p3, 0x1
  529. .line 59
  530. mul-int/lit8 v2, v0, 0x64
  531. sub-int/2addr p1, v2
  532. .line 61
  533. .end local v0 # "dig":I
  534. :cond_3
  535. if-eqz p4, :cond_4
  536. const/4 v2, 0x2
  537. if-ge p5, v2, :cond_5
  538. :cond_4
  539. const/16 v2, 0x9
  540. if-gt p1, v2, :cond_5
  541. if-eq v1, p3, :cond_6
  542. .line 62
  543. :cond_5
  544. div-int/lit8 v0, p1, 0xa
  545. .line 63
  546. .restart local v0 # "dig":I
  547. add-int/lit8 v2, v0, 0x30
  548. int-to-char v2, v2
  549. aput-char v2, p0, p3
  550. .line 64
  551. add-int/lit8 p3, p3, 0x1
  552. .line 65
  553. mul-int/lit8 v2, v0, 0xa
  554. sub-int/2addr p1, v2
  555. .line 67
  556. .end local v0 # "dig":I
  557. :cond_6
  558. add-int/lit8 v2, p1, 0x30
  559. int-to-char v2, v2
  560. aput-char v2, p0, p3
  561. .line 68
  562. add-int/lit8 p3, p3, 0x1
  563. .line 69
  564. aput-char p2, p0, p3
  565. .line 70
  566. add-int/lit8 p3, p3, 0x1
  567. .line 72
  568. .end local v1 # "startPos":I
  569. :cond_7
  570. return p3
  571. .end method