package Ġcz . be zv ad il na . pr az sk aw c . screen Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . Google Api Availability Ċ import Ġcz . be zv ad il na . pr az sk aw c . R Ċ import Ġcz . be zv ad il na . pr az sk aw c . api . Data Helper Ċ import Ġcz . be zv ad il na . pr az sk aw c . model . Point Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ const Ġval ĠUPDATE _ OH _ DELAY : ĠLong Ġ= Ġ 1 5 0 0 0 Ċ const Ġval ĠGOOGLE _ PLAY _ SERVICES _ VERSION _ CODE Ġ= Ġ 1 3 4 0 0 0 0 0 Ċ Ċ class ĠMainActivity Ġ: ĠExtended Activity (), ĠPoint Holder Interface Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Top Toolbar : ĠToolbar ĊĠĠĠ Ġprivate Ġvar Ġnav Host Fragment : ĠFragment ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġtry To Reload Cache Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġdata Helper : ĠData Helper ĊĠĠĠ Ġoverride Ġvar Ġcached Points Ġ= Ġmutable ListOf < Point >() ĊĊĠĠĠ Ġ/* List Ġwith Ġhosted Ġfragments Ġworking Ġwith Ġpoints */ ĊĠĠĠ Ġoverride Ġvar Ġpoint View ers Ġ= Ġmutable ListOf < Weak Reference < Point Viewer Interface >>() ĊĊĠĠĠ Ġ/* Scope Ġfor Ġlaunch ing ĠCor outines Ġon Ġmap Ġand Ġlist Ġfragments */ ĊĠĠĠ Ġprivate Ġval Ġmain Activity Scope Ġ= ĠCor outine Scope ( Dispatch ers . Default ) ĊĠĠĠ Ġoverride Ġval Ġpoint Holder Scope Ġ= Ġmain Activity Scope ĊĊĠĠĠ Ġ/* Handler Ġfor Ġschedule ĠO H Ġupdates , Ġfrom : Ġhttps :// guides . code path . com / android / Repe ating - Periodic - Tasks */ ĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler () ĊĠĠĠ Ġprivate Ġval Ġupdate OH Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Opening Hours () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( this , ĠUPDATE _ OH _ DELAY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġ// Toolbar ĊĠĠĠĠĠĠĠ Ġm Top Toolbar Ġ= ĠfindViewById < View >( R . id . activity _ main _ toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġm Top Toolbar . set Logo ( R . drawable . to ilet _ w _ space ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( m Top Toolbar ) ĊĊĠĠĠĠĠĠĠ Ġif ( google Play Services ()){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Getting Ġthe ĠNavigation ĠController ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= ĠNavigation . find Nav Controller ( this , ĠR . id . nav _ host _ fragment ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Setting Ġthe Ġnavigation Ġcontroller Ġto ĠBottom ĠNav ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Nav . setup With Nav Controller ( nav Controller ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Getting Ġfragment Ġholding Ġnavigation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Host Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Setting Ġup Ġthe Ġaction Ġbar ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation UI . setup ActionBar With Nav Controller ( this , Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Helper Ġinstance ĊĠĠĠĠĠĠĠ Ġdata Helper Ġ= ĠData Helper ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġ// Init iate Ġcheck Ġof ĠO H ĊĠĠĠĠĠĠĠ Ġhandler . post ( update OH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġfragments Ġfrom Ġnav host Ġfragment Ġmanagers Ġand Ġpull Ġthem Ġto Ġthe Ġpoint View ers Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġupdate Point View ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nav Host Fragment Ġ!= Ġnull Ġ&& Ġnav Host Fragment Ġis ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( fragment Ġin Ġnav Host Fragment !!. child FragmentManager . fragments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġis ĠPoint Viewer Interface ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreference Ġ= ĠWeak Reference ( fragment Ġas ĠPoint Viewer Interface ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reference Ġ! in Ġpoint View ers ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoint View ers . add ( reference ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Toolbar ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Inf late Ġthe Ġmenu Ġto Ġuse Ġin Ġthe Ġaction Ġbar ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . top _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . action _ info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠInfo Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠSetting ĠUp Ġthe Ġback Ġbutton ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNavigation UI . navigate Up ( nav Controller , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( update OH ) ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgoogle Play Services (): Boolean { ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠGoogle Api Availability . getInstance (). is Google Play Services Available ( application Context , ĠGOOGLE _ PLAY _ SERVICES _ VERSION _ CODE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( status Ġ!= ĠConnection Result . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġask Ġuser Ġto Ġupdate Ġgoogle Ġplay Ġservices . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Api Availability . getInstance (). getError Dialog ( this , Ġstatus , Ġ 1 ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }