/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠCl iff ord ĠLi u Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mad ness . collision . unit . api _ view ing . stats Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġcom . mad ness . collision . R Ġas ĠMain R Ċ import Ġcom . mad ness . collision . Dem ocr atic Ċ import Ġcom . mad ness . collision . main . Main ViewModel Ċ import Ġcom . mad ness . collision . unit . api _ view ing . R Ċ import Ġcom . mad ness . collision . unit . api _ view ing . data . Api Unit Ċ import Ġcom . mad ness . collision . unit . api _ view ing . data . Easy Access Ċ import Ġcom . mad ness . collision . unit . api _ view ing . databinding . Fragment Statistics Binding Ċ import Ġcom . mad ness . collision . util . App Utils . as Bottom Margin Ċ import Ġcom . mad ness . collision . util . Tagged Fragment Ċ import Ġcom . mad ness . collision . util . alter Padding Ċ import Ġcom . mad ness . collision . util . controller . get Saved Fragment Ċ import Ġcom . mad ness . collision . util . controller . save Fragment Ċ import Ġcom . mad ness . collision . util . ensure Added Ċ Ċ internal Ġclass ĠStatistics Fragment : ĠTag ged Fragment (), ĠDem ocr atic Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcategory : ĠString Ġ= Ġ" AV " ĊĠĠĠ Ġoverride Ġval Ġid : ĠString Ġ= Ġ" Statistics " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ TYPE Ġ= Ġ" type " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ KEY _ H OR Ġ= Ġ" Is Hor " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ KEY _ CH ART Ġ= Ġ" Chart Fragment " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTATE _ KEY _ STATS Ġ= Ġ" Stats Fragment " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( type : ĠInt ) Ġ= ĠStatistics Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ TYPE , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Binding : ĠFragment Statistics Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchart Fragment : ĠChart Fragment ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstats Fragment : ĠStats Fragment ĊĠĠĠ Ġprivate Ġval Ġmain ViewModel : ĠMain ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Options ( context : ĠContext , Ġtoolbar : ĠToolbar , Ġicon Color : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmain ViewModel . config Navigation ( toolbar , Ġicon Color ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( if Ġ( Easy Access . is View ing Target ) ĠMain R . string . api Sdk Target Ġelse ĠMain R . string . api Sdk Min ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġview Binding Ġ= ĠFragment Statistics Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Hor Ġ= Ġview Binding . av Statistics Container Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġunit : ĠInt Ġ= Ġarguments ?. getInt ( ARG _ TYPE ) Ġ?: ĠApi Unit . ALL _ APPS ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġchild FragmentManager ĊĠĠĠĠĠĠĠ Ġvar Ġdo New Ġ= ĠsavedInstanceState Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf C Ġ= Ġfm . get Saved Fragment < Chart Fragment >( savedInstanceState , ĠSTATE _ KEY _ CH ART )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchart Fragment Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf S Ġ= Ġfm . get Saved Fragment < Stats Fragment >( savedInstanceState , ĠSTATE _ KEY _ STATS )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats Fragment Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f C Ġ!= Ġnull Ġ&& Ġf S Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwas Hor Ġ= ĠsavedInstanceState . getBoolean ( STATE _ KEY _ H OR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo New Ġ= Ġis Hor Ġ!= Ġwas Hor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( do New ) Ġfm . beginTransaction (). remove ( chart Fragment ). remove ( stats Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo New Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( do New ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchart Fragment Ġ= ĠChart Fragment . newInstance ( unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstats Fragment Ġ= ĠStats Fragment . newInstance ( unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġensure Added ( if Ġ( is Hor ) ĠR . id . av Statistics Container Pie Chart Ġelse ĠR . id . av Statistics Container , Ġchart Fragment ) ĊĠĠĠĠĠĠĠ Ġensure Added ( if Ġ( is Hor ) ĠR . id . av Statistics Container List Ġelse ĠR . id . av Statistics Container , Ġstats Fragment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdem ocr at ize ( main ViewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġview Binding . av Statistics Container Ġ?: Ġview Binding . av Statistics Root ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . content Width Top . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . alter Padding ( top Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . content Width Bottom . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Hor Ġ= Ġview Binding . av Statistics Container Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . alter Padding ( bottom Ġ= Ġif Ġ( is Hor ) Ġit Ġelse Ġas Bottom Margin ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġthem Ġboth Ġor Ġneither ĊĠĠĠĠĠĠĠ Ġif Ġ( chart Fragment . is Added Ġ&& Ġstats Fragment . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Hor Ġ= Ġview Binding . av Statistics Container Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Boolean ( STATE _ KEY _ H OR , Ġis Hor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . save Fragment ( out State , ĠSTATE _ KEY _ CH ART , Ġchart Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . save Fragment ( out State , ĠSTATE _ KEY _ STATS , Ġstats Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ