/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 , ĠTom ĠGe ise lm ann Ġ( tom g applications development @ gmail . com ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ċ Ġ* Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ċ Ġ* Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ċ Ġ* Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ċ Ġ* Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . Ċ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , WH ETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN Ċ Ġ* ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tom g . fi io k 9 control Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . tom g . fi io k 9 control . ga ia . Ga ia Gatt Side Effect Ċ import Ġkotlinx . coroutines . flow . Flow Ċ Ċ abstract Ġclass ĠBase Fragment < B Ġ: ĠView Binding >( ĊĠĠĠ Ġ@ Layout Res Ġlayout Res : ĠInt Ċ ) Ġ: ĠFragment ( layout Res ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠB ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġval Ġbinding : ĠB Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġlateinit Ġvar Ġgaia Gatt Side Effect Flow : ĠFlow < Ga ia Gatt Side Effect > ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġgaia Gatt Side Effect Flow Ġ= Ġ( require Activity () Ġas ĠF i io K 9 Control Activity ). ga ia Gatt Side Effect Flow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġbind Layout ( view ) ĊĠĠĠĠĠĠĠ Ġrequire Activity (). support FragmentManager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment Result Listener ( KEY _ BL U ETO OTH _ ENABLED , Ġview Lifecycle Owner ) Ġ{ Ġ_, Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenabled Ġ= Ġargs . getBoolean ( KEY _ BL U ETO OTH _ ENABLED , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Bluetooth StateChanged ( enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment Result Listener ( KEY _ SERVICE _ CONNECTED , Ġview Lifecycle Owner ) Ġ{ Ġ_, Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnected Ġ= Ġargs . getBoolean ( KEY _ SERVICE _ CONNECTED , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connected Ġ&& Ġgaia Gatt Service ()?. isConnected () Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Re connect To Device () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġgaia Gatt Service () ĊĠĠĠĠĠĠĠ Ġif Ġ( service Ġ!= Ġnull Ġ&& Ġ! service . isConnected ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Re connect To Device () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġon Bluetooth StateChanged ( enabled : ĠBoolean ) ĊĊĠĠĠ Ġabstract Ġfun Ġon Re connect To Device () ĊĊĠĠĠ Ġabstract Ġfun Ġbind Layout ( view : ĠView ): ĠB ĊĊĠĠĠ Ġfun Ġgaia Gatt Service () Ġ= Ġ( require Activity () Ġas ? ĠF i io K 9 Control Activity )?. ga ia Gatt Service ĊĊĠĠĠ Ġinternal Ġfun Ġnavigate ( nav Directions : ĠNav Directions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller () ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġnav Controller . current Destination ?. getAction ( nav Directions . action Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġnull Ġ&& Ġaction . destination Id Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( nav Directions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġnavigate To Start Destination () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). set Graph ( R . navigation . nav _ graph ) ĊĠĠĠ Ġ} Ċ } Ċ