package Ġcom . d oo ol . poke dex . presentation . ui . home Ċ Ċ import Ġandroidx . activity . compose . Back Handler Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . compose . animation . Animated Visibility Ċ import Ġandroidx . compose . animation . core . animate Float As State Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Settings Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . save able . remember Save able Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . alpha Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . res . color Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . unit . Dp Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . h ilt . navigation . compose . h ilt ViewModel Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . d oo ol . core . nav . Local Nav Controller Ċ import Ġcom . d oo ol . core . utils . clip Background Ċ import Ġcom . d oo ol . core . utils . if Then Ċ import Ġcom . d oo ol . core . widget . Po ke Ball Ċ import Ġcom . d oo ol . core . widget . Space Fill Ċ import Ġcom . d oo ol . poke dex . R Ċ import Ġcom . d oo ol . poke dex . presentation . ui . main . Games Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . main . Item Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . main . Location Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . move . list . Move List Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . news . destination . News Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . pokemon _ list . destination . Pokemon List Destination Ċ import Ġcom . d oo ol . poke dex . presentation . ui . setting . Setting DropDown Ċ Ċ enum Ġclass ĠMenu (@ Color Res Ġval Ġcolor Res : ĠInt , Ġval Ġdestination : ĠString ) Ġ{ ĊĠĠĠ ĠNews ( R . color . background _ ps ych ic , ĠNews Destination . route ), ĊĠĠĠ ĠPokemon ( R . color . background _ f lying , ĠPokemon List Destination . route ), ĊĠĠĠ ĠMove ( R . color . background _ gr ass , ĠMove List Destination . route ), ĊĠĠĠ ĠItem ( R . color . background _ po ison , ĠItem Destination . route ), ĊĠĠĠ ĠB erry ( R . color . background _ normal , ĠLocation Destination . route ), ĊĠĠĠ ĠGames ( R . color . background _ rock , ĠGames Destination . route ), ĊĠĠĠ ĠLocation ( R . color . background _ electric , ĠLocation Destination . route ), Ċ } Ċ Ċ @ Composable Ċ fun ĠHome Screen ( ĊĠĠĠ ĠviewModel : ĠSearch ViewModel Ġ= Ġh ilt ViewModel (), ĊĠĠĠ ĠonClick Menu : Ġ( Menu , ĠString ?) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġis Searching Ġby Ġremember Save able Ġ{ Ġmutable State Of ( false ) Ġ} ĊĠĠĠ Ġval Ġanimation Offset Ġby Ġanimate Float As State ( target Value Ġ= Ġif Ġ( is Searching ) Ġ 0 f Ġelse Ġ 1 f ) ĊĊĠĠĠ Ġval Ġquery Ġby ĠviewModel . query . collect As State () ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. if Then ( animation Offset Ġ!= Ġ 0 f , ĠModifier . vertical Scroll ( remember Scroll State ())) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAnimated Visibility ( visible Ġ= Ġ! is Searching ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome Header () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Box Modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 4 0 . dp Ġ* Ġanimation Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 2 0 . dp Ġ* Ġanimation Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġ 2 0 . dp Ġ* Ġanimation Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . Light Gray . copy ( alpha Ġ= Ġ 0 . 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 8 . dp Ġ* Ġanimation Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Searching ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġsearch Box Modifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 5 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able (! is Searching ) Ġ{ Ġis Searching Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 2 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Alignment Ġ= ĠAlignment . Center Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( string Resource ( R . string . search _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 2 0 . dp , Ġvertical Ġ= Ġ 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( animation Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch TextField ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġsearch Box Modifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġquery , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Query Ġ= ĠviewModel :: search , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Clear Ġ= ĠviewModel :: clear Query , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Back Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . clear Query () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Searching Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animation Offset Ġ== Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Menu ( it , Ġquery ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠBack Handler ( is Searching ) Ġ{ Ġis Searching Ġ= Ġfalse Ġ} ĊĠĠĠ ĠLa unched Effect ( is Searching ) Ġ{ Ġif Ġ(! is Searching ) ĠviewModel . clear Query () Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠHome Header () Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 2 0 . dp , Ġend Ġ= Ġ 2 0 . dp , Ġtop Ġ= Ġ 4 8 . dp ), ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( id Ġ= ĠR . string . home _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠSpace Fill () ĊĊĠĠĠĠĠĠĠ Ġvar Ġshow Menu Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ Ġshow Menu Ġ= Ġtrue Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( image Vector Ġ= ĠIcons . Default . Settings , Ġcontent Description Ġ= Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting DropDown ( ex pended Ġ= Ġshow Menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Menu Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠMenu List ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ Ġval Ġnav Controller Ġ= ĠLocal Nav Controller . current ĊĊĠĠĠ ĠColumn ( modifier Ġ= Ġmodifier , Ġvertical Arrange ment Ġ= ĠArrange ment . spaced By ( 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠMenuItem ( Modifier . fill Max Width (), Ġnav Controller , ĠMenu . values (). first ()) ĊĊĠĠĠĠĠĠĠ ĠMenu . values (). drop ( 1 ). chunk ed ( 2 ). forEach Ġ{ Ġ( left , Ġright ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( horizontal Arrange ment Ġ= ĠArrange ment . spaced By ( 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( Modifier . weight ( 1 f ), Ġnav Controller , Ġleft ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( Modifier . weight ( 1 f ), Ġnav Controller , Ġright ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠMenuItem ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġnav Controller : ĠNav Controller , ĊĠĠĠ Ġmenu : ĠMenu , Ċ ) Ġ{ ĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 9 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip Background ( color Resource ( id Ġ= Ġmenu . color Res ), Ġshape Ġ= ĠRo unded Corner Shape ( 8 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( menu . destination ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcontent Alignment Ġ= ĠAlignment . Center ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPo ke Ball ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center End ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 1 2 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslate Offset Ġ= ĠD p Offset ( x Ġ= Ġ 2 3 . dp , Ġy Ġ= Ġ- 2 5 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate Ġ= Ġ 2 2 0 f , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġmenu . name , Ġstyle Ġ= ĠMaterial Theme . typography . h 4 ) ĊĠĠĠ Ġ} Ċ } Ċ