package Ġcn . bn gel . bn gel book . activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . activity . result . Activity Result Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . interaction . Mutable Interaction Source Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled .* Ċ import Ġandroidx . compose . material . remember Sca ffold State Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Brush Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . vector . Image Vector Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcn . bn gel . bn gel book . R Ċ import Ġcn . bn gel . bn gel book . data . Common Result Ċ import Ġcn . bn gel . bn gel book . data . Global Variables Ċ import Ġcn . bn gel . bn gel book . data . Main Pages Ċ import Ġcn . bn gel . bn gel book . data . bean . User Ċ import Ġcn . bn gel . bn gel book . data . bean . Version Ċ import Ġcn . bn gel . bn gel book . data . shared Preferences . sp Api Ċ import Ġcn . bn gel . bn gel book . data . snapshot . User State Ċ import Ġcn . bn gel . bn gel book . network . api . Version Api Ċ import Ġcn . bn gel . bn gel book . ui . page .* Ċ import Ġcn . bn gel . bn gel book . ui . theme . Bn gel book Theme Ċ import Ġcn . bn gel . bn gel book . ui . widget . Ui Widget Ċ import Ġcn . bn gel . bn gel book . utils . Mq Utils Ċ import Ġcn . bn gel . bn gel book . utils . Ui Utils Ċ import Ġcom . tencent . cos . xml . exception . Cos Xml ClientException Ċ import Ġcom . tencent . cos . xml . exception . Cos Xml ServiceException Ċ import Ġcom . tencent . cos . xml . listener . Cos Xml Progress Listener Ċ import Ġcom . tencent . cos . xml . listener . Cos Xml Result Listener Ċ import Ġcom . tencent . cos . xml . model . Cos Xml Request Ċ import Ġcom . tencent . cos . xml . model . Cos Xml Result Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . io . File Ċ import Ġjava . lang . Exception Ċ import Ġjava . time . LocalDate ĊĊ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogin State Ġ= Ġmutable State Of ( Global Variables . USER Ġ!= Ġnull ) ĊĠĠĠ Ġprivate Ġval Ġpage State Ġ= Ġmutable State Of ( Main Pages . DEFAULT _ PAGE ) ĊĠĠĠ Ġprivate Ġval Ġuser Days Ġ= Ġmutable State Of ( 0 ) ĊĠĠĠ Ġprivate Ġval Ġres Update Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġprivate Ġval Ġversion Update Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġprivate Ġval Ġversion Download Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġprivate Ġval Ġversion Rate Ġ= Ġmutable State Of ( 0 F ) ĊĠĠĠ Ġprivate Ġvar Ġversion Required : ĠVersion ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscaffold State : ĠScaffold State ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscope : ĠCor outine Scope ĊĊĊĠĠĠ Ġoverride Ġfun Ġevent ( result : ĠActivity Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresult . data ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . result Code Ġ== ĠRESULT _ FIRST _ USER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin State . value Ġ= Ġdata . getBoolean Extra (" login State ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( login State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdata . get Serializable Extra (" userInfo ") Ġas ĠUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Variables . USER Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ( Main Pages . HOME _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Days . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( LocalDate . now (). to Epoch Day () Ġ- ĠLocalDate . parse ( user . register Date ). to Epoch Day ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Required Ġ= Ġdata . getBoolean Extra (" update State ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update Required ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage Manager . update All Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Update . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠPage Manager . register Page Manager ( this ) ĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB n gel book Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠM q Utils . start Consumer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun ĠMain Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġscaffold State Ġ= Ġremember Sca ffold State () ĊĠĠĠĠĠĠĠ Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠĠĠĠĠ Ġif Ġ( res Update . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Update . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( version Download . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Widget . Update Progress Dialog ( version Rate . value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( version Update . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUi Widget . Update Check Dialog ( on Confirm Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Required ?. let Ġ{ Ġdownload Updated A pk ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Update . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġon Cancel Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Update . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscaffold State Ġ= Ġscaffold State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw er () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloating ActionButton Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloating ActionButton ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor ( 0 xFF 6 6 CC FF ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= ĠColor ( 0 xFFFFFFFF ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , Ġwhen Ġ( Page Manager . get Cur Page ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . HOME _ PAGE Ġ-> ĠBill Save Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . ACCOUNT _ PAGE Ġ-> ĠAccount Save Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . FR I END _ PAGE Ġ-> ĠFriend Add Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠBill Save Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher . launch ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( Icons . Filled . Add , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloating ActionButton Position Ġ= ĠF ab Position . End ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( page State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . DEFAULT _ PAGE Ġ-> ĠPage Default . Default Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . HOME _ PAGE Ġ-> ĠPage Home . HomePage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . ACCOUNT _ PAGE Ġ-> ĠPage Account . Account Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Pages . FR I END _ PAGE Ġ-> ĠPage Friend . Friend Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun ĠDraw er () Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDraw er _ Profile Card () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( login State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . weight ( 1 f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Home , Ġfunction Name Ġ= Ġ" Home ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ( Main Pages . HOME _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Account Box , Ġfunction Name Ġ= Ġ" Account ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ( Main Pages . ACCOUNT _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Face , Ġfunction Name Ġ= Ġ" Friend ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ( Main Pages . FR I END _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Favorite , Ġfunction Name Ġ= Ġ" Favorite ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Account Circle , Ġfunction Name Ġ= Ġ" Account Circle ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDraw er _ Function ( image Vector Ġ= ĠIcons . Filled . Info , Ġfunction Name Ġ= Ġ" Info ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindication Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin State . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp Api . clear Local User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Page ( Main Pages . DEFAULT _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( image Vector Ġ= ĠIcons . Filled . Exit To App , Ġcontent Description Ġ= Ġ" exit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" éĢĢåĩº è´¦åı· ", Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 1 5 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun ĠDraw er _ Profile Card () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscaffold State Ġ= Ġremember Sca ffold State () ĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBr ush . vertical Gradient ( listOf ( Color ( 0 xFF 6 6 CC FF ), ĠColor ( 0 x 0 0 0 0 0 0 0 0 ))), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Theme . shapes . large ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 1 0 . dp , Ġtop Ġ= Ġ 4 0 . dp , Ġbottom Ġ= Ġ 5 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindication Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( login State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Manager . launch < User Detail Activity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" user ", ĠGlobal Variables . USER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ Ġscaffold State . drawer State . close () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Manager . launch < Login Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! login State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Widget . Custom Circle Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres Ġ= ĠR . drawable . default _ profile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Ġ= ĠR . drawable . default _ profile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment Ġ= ĠAlignment . Top Center , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 6 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 6 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" çĤ¹åĩ» çĻ»å½ķ ", Ġmodifier Ġ= ĠModifier . padding ( top Ġ= Ġ 1 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Widget . Custom Profile Image ( filePath Ġ= ĠUser State . profile Image . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 6 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 6 0 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( login State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= ĠGlobal Variables . USER ?. username ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" å·² è®° è´¦ : Ġ${ user Days . value } Ġ å¤© ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun ĠDraw er _ Function ( image Vector : ĠImage Vector , Ġfunction Name : ĠString , ĠonClick : Ġ() -> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( vertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Source Ġ= Ġremember Ġ{ ĠMutable Interaction Source () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindication Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscaffold State . drawer State . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 5 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( image Vector Ġ= Ġimage Vector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġfunction Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġfunction Name , ĠfontSize Ġ= Ġ 1 8 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 1 5 . dp , Ġend Ġ= Ġ 5 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( p ainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . right _ next ), Ġfunction Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 2 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 0 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġauto Login () ĊĠĠĠĠĠĠĠ Ġauto Update Check () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġauto Update Check () Ġ{ ĊĠĠĠĠĠĠĠ ĠVersion Api . getNew est Version Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġget Version Name () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" update Version ", Ġversion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ?. code Ġ== ĠCommon Result . SUCCESS _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnewest Version Ġ= Ġresult . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new est Version ?. version Ġ!= Ġnull Ġ&& Ġnewest Version . version Ġ!= Ġget Version Name ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" update Version ", Ġ" çīĪæľ¬ éľĢè¦ģ æĽ´æĸ° Ġfrom Ġ${ getVersion Name ()} Ġto Ġ${ new est Version . version }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Update . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Required Ġ= Ġnewest Version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload Updated A pk ( new est Version : ĠVersion ) Ġ{ ĊĠĠĠĠĠĠĠ Ġversion Download . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġprogress Listener Ġ= ĠCos Xml Progress Listener Ġ{ Ġcomplete , Ġtarget Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Rate . value Ġ= Ġ( complete . toDouble ()/ target . toDouble ()). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" update Version ", Ġversion Rate . value . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Listener Ġ= Ġobject : ĠCos Xml Result Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( p 0 : ĠCos Xml Request ?, Ġp 1 : ĠCos Xml Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" update Version ", Ġ" download Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġexternal Cache Dir . toString () Ġ+ Ġ"/ bn gel book -${ new est Version . version }. apk " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Download . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Rate . value Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Utils . install A pk ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 : ĠCos Xml Request ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 : ĠCos Xml ClientException ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 2 : ĠCos Xml ServiceException ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" update Version ", Ġ" download Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Download . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠVersion Api . download New est Version ( new est Version , Ġprogress Listener , Ġresult Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Version Name () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġpackage Manager . get Package Info ( packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpackage Info . version Name ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġauto Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġsp Api . getLocal User () ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Variables . USER Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Days . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( LocalDate . now (). to Epoch Day () Ġ- ĠLocalDate . parse ( user . register Date ). to Epoch Day ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin State . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage State . value Ġ= ĠMain Pages . HOME _ PAGE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch < Login Activity >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠGlobal Variables . token Ġ= Ġsp Api . getToken () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Page ( page : ĠMain Pages ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPage Manager . set Cur Page ( page ) ĊĠĠĠĠĠĠĠ Ġpage State . value Ġ= Ġpage ĊĠĠĠ Ġ} Ċ Ċ }