package Ġcom . mov soft . ap tracker . scenes . list Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . ch auth ai . swiper e ve all ayout . Swipe Re veal Layout Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . m ichael fl is ar . changelog . Change log Builder Ċ import Ġcom . mov soft . ap tracker . R Ċ import Ġcom . mov soft . ap tracker . databinding . Activity Main Binding Ċ import Ġcom . mov soft . ap tracker . databinding . Dialog Track able Options Bottom Sheet Binding Ċ import Ġcom . mov soft . ap tracker . scenes . add _ item . Add Tracked Item Dialog Ċ import Ġcom . mov soft . ap tracker . scenes . add _ item . Edit Tracked Item Dialog Ċ import Ġcom . mov soft . ap tracker . scenes . base . AP Tracker Base Activity Ċ import Ġcom . mov soft . ap tracker . scenes . base . ViewModel State Ċ import Ġcom . mov soft . ap tracker . scenes . base . ViewModel State . Placeholder Ċ import Ġcom . mov soft . ap tracker . scenes . base . ViewModel State Placeholder . Settings Not Valid Ċ import Ġcom . mov soft . ap tracker . scenes . focus . Focus Activity Ċ import Ġcom . mov soft . ap tracker . scenes . settings . Settings Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ interface ĠTracker List Action Handler Ġ{ ĊĠĠĠ Ġfun Ġon Settings T apped () ĊĠĠĠ Ġfun Ġon AddItem T apped () ĊĠĠĠ Ġfun ĠonDelete Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) ĊĠĠĠ Ġfun Ġon Edit Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) ĊĠĠĠ Ġfun Ġon Focus T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) ĊĠĠĠ Ġfun Ġon Options For Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel , Ġcell : ĠSw ipe Re veal Layout ) ĊĠĠĠ Ġfun Ġon Average For Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel , Ġcell : ĠSw ipe Re veal Layout ) ĊĠĠĠ Ġfun Ġon Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ): ĠBoolean Ċ } Ċ Ċ class ĠTracker List Activity Ġ: ĠAP Tracker Base Activity (), ĠTracker List ViewModel . Listener , ĠTracker List Action Handler , ĠAdd Tracked Item Dialog . Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġvar Ġitem Options Dialog : ĠBottom Sheet Dialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTracker List ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠviewModel Provider . get ( Tracker List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . listener Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġbinding . tracker List . adapter Ġ= ĠTracker ListAdapter ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . tracker List . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( this , ĠObserver Ġ{ Ġtransition To State ( it ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . should Show Wh ats New . observe ( this , ĠObserver Ġ{ Ġinvalidate Options Menu () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . handler Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Wh ats New Ġ= ĠviewModel . should Show Wh ats New . value Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġmenu Resource Ġ= Ġif Ġ( show Wh ats New ) ĠR . menu . menu _ whats _ new Ġelse ĠR . menu . menu _ main ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( menu Resource , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Settings T apped () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ whats _ new Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Wh ats New Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĠĠĠ Ġ// ĠTracker List ViewModel . Listener ĠCon formance ĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĊĠĠĠ Ġoverride Ġfun Ġshow Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . tracker List , Ġmessage , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĠSn ackbar . make ( binding . tracker List , Ġmessage , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ Ġval Ġred Color Ġ= Ġresources . getColor ( android . R . color . holo _ red _ dark ) ĊĠĠĠĠĠĠĠ Ġsn ackbar . view . set BackgroundColor ( red Color ) ĊĠĠĠĠĠĠĠ Ġsn ackbar . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĠĠĠ Ġ// ĠAdd Tracked Item Dialog . Handler ĠCon formance ĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĊĠĠĠ Ġoverride Ġfun Ġon Tracked Item Added Or Updated () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĠĠĠ Ġ// ĠTracker List Action Handler ĠCon formance ĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĊĠĠĠ Ġoverride Ġfun Ġon Settings T apped () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Intent Ġ= ĠSettings Activity . new Intent ( this ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( settings Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon AddItem T apped () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Add Tracked Item Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . delete Item ( tracked Item ViewModel . item Identifier ) ĊĠĠĠĠĠĠĠ Ġitem Options Dialog ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Edit Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Options Dialog ?. dismiss () ĊĠĠĠĠĠĠĠ Ġshow Edit Tracked Item Dialog ( tracked Item ViewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Focus T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Options Dialog ?. dismiss () ĊĠĠĠĠĠĠĠ Ġval Ġfocus Intent Ġ= ĠFocus Activity . new Intent ( this , Ġtracked Item ViewModel . item Identifier ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( focus Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options For Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel , Ġcell : ĠSw ipe Re veal Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcell . close ( true ) ĊĠĠĠĠĠĠĠ Ġshow Options Dialog ( tracked Item ViewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Average For Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel , Ġcell : ĠSw ipe Re veal Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcell . close ( true ) ĊĠĠĠĠĠĠĠ ĠviewModel . track Average Item ( tracked Item ViewModel . item Identifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item T apped ( tracked Item ViewModel : ĠTrack ed Item ViewModel ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv ib Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠ Ġv ib . vi br ate ( 2 0 0 ) ĊĠĠĠĠĠĠĠ ĠviewModel . track Item ( tracked Item ViewModel . item Identifier ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĠĠĠ Ġ// ĠUI ĊĠĠĠ Ġ// ---------------------------------------------------------------- ------------------------------------------------ -- ĊĊĠĠĠ Ġprivate Ġfun Ġshow Options Dialog ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Options Dialog Ġ= ĠBottom Sheet Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Dialog Track able Options Bottom Sheet Binding >( layout Inflater , ĠR . layout . dialog _ track able _ options _ bottom _ sheet , Ġbinding . tracker List , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . handler Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . tracked Item ViewModel Ġ= Ġtracked Item ViewModel ĊĠĠĠĠĠĠĠ Ġitem Options Dialog !!. set ContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġitem Options Dialog !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Edit Tracked Item Dialog ( tracked Item ViewModel : ĠTrack ed Item ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠEdit Tracked Item Dialog ( this , Ġtracked Item ViewModel . item Identifier , Ġthis ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Add Tracked Item Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAdd Tracked Item Dialog ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Wh ats New Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠChangelog Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Title ( getString ( R . string . whats _ new )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Min Version To Show ( viewModel . last Used Version Code Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build And ShowDialog ( this , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠviewModel . mark Wh ats New As Seen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransition To State ( state : ĠViewModel State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow Settings Placeholder Ġ= Ġstate Ġis ĠPlace holder Ġ&& Ġstate . type Ġ== ĠSettings Not Valid ĊĠĠĠĠĠĠĠ Ġbinding . fab . visibility Ġ= Ġif Ġ(! show Settings Placeholder ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠĠĠĠĠ Ġbinding . settings Placeholder Container . visibility Ġ= Ġif Ġ( show Settings Placeholder ) ĠVIS IBLE Ġelse ĠG ONE ĊĠĠĠ Ġ} Ċ } Ċ