package Ġcom . guru . compose cookbook . ui . home . clock Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ Ċ class ĠClock ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ clock State Ġ= ĠMutable State Flow ( Triple ( 0 f , Ġ 0 f , Ġ 0 f )) ĊĠĠĠ Ġval Ġclock State : ĠState Flow < Triple < Float , ĠFloat , ĠFloat >> Ġ= Ġ_ clock State ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Timer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Timer () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġcal . get ( Calendar . HOUR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute Ġ= Ġcal . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġcal . get ( Calendar . SECOND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Angle Ġ= Ġ( second Ġ* Ġ 6 f ). minus ( 9 0 ). plus ( 3 6 0 ). rem ( 3 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute Angle Ġ= Ġ( minute Ġ* Ġ 6 f ). plus ( second Ġ/ Ġ 1 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus ( 9 0 ). plus ( 3 6 0 ). rem ( 3 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour Angle Ġ= Ġ( hour Ġ* Ġ 3 0 f ). plus ( minute Ġ/ Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus ( 9 0 ). plus ( 3 6 0 ). rem ( 3 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ clock State . emit ( Triple ( hour Angle , Ġminute Angle , Ġsecond Angle )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }