/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠThanks M ister ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 . th ank sm ister . iot . mqtt . alar mp anel . ui . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . annotation . Nullable Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . R Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . constants . Code Types Ċ import Ġkotlinx . android . synt hetic . main . fragment _ code _ bottom _ sheet .* Ċ import Ġkotlinx . android . synt hetic . main . view _ key pad .* Ċ Ċ class ĠCode Bottom Sheet Fragment Ġ( private Ġval Ġalarm Listener : ĠOn Alarm Code Fragment Listener ) Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcode Complete Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġentered Code Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġhandler : ĠHandler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelay Runnable Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( code Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete ( enter ed Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Alarm Code Fragment Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonComplete ( code : ĠString ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Code Error () ĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġclose Code Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 0 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 1 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 3 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 4 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 5 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 5 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 6 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 6 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 7 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 7 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 8 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 8 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton 9 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Pin Code (" 9 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Del . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Pin Code () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview . view Tree Observer . add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . view Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġdialog Ġas ĠBottom Sheet Dialog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= Ġdialog . findViewById < View >( com . google . android . material . R . id . design _ bottom _ sheet ) Ġas ĠFrame Layout ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbehavior Ġ= ĠBottom Sheet Behavior . from ( bottom Sheet !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif ( code Type Ġ== ĠCode Types . ARM _ REMOTE Ġ|| Ġcode Type Ġ== ĠCode Types . DIS ARM _ REMOTE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Key . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Key . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( delay Runnable , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( delay Time Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Down Progress Wheel . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Down Progress Wheel . set Wheel Progress ( delay Time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġoverride Ġfun ĠonCreate View (@ NonNull Ġinflater : ĠLayoutInflater , Ġ@ Nullable Ġcontainer : ĠViewGroup ?, Ġ@ Nullable ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ code _ bottom _ sheet , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Cancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġentered Code Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġshow Filled P ins ( 0 ) ĊĠĠĠĠĠĠĠ Ġalarm Listener . on Cancel () ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonComplete ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm Listener . onComplete ( code ) ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonError () Ġ{ ĊĠĠĠĠĠĠĠ Ġcode Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġalarm Listener . on Code Error () ĊĠĠĠĠĠĠĠ Ġentered Code Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġshow Filled P ins ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġhandler . remove Callbacks ( delay Runnable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Pin Code ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( code Complete ) Ġreturn ĊĠĠĠĠĠĠĠ Ġentered Code Ġ+= Ġcode ĊĠĠĠĠĠĠĠ Ġshow Filled P ins ( enter ed Code . length ) ĊĠĠĠĠĠĠĠ Ġif ( code Type Ġ== ĠCode Types . ARM _ REMOTE Ġ|| Ġcode Type Ġ== ĠCode Types . DIS ARM _ REMOTE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( enter ed Code . length Ġ== ĠMAX _ REMOTE _ CODE _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( delay Runnable , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( enter ed Code . length Ġ== ĠMAX _ CODE _ LENGTH Ġ&& Ġentered Code Ġ== Ġcurrent Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( delay Runnable , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( enter ed Code . length Ġ== ĠMAX _ CODE _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( delay Runnable , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Pin Code () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( code Complete ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( enter ed Code . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentered Code Ġ= Ġentered Code . substring ( 0 , Ġentered Code . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Filled P ins ( enter ed Code . length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Filled P ins ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Filled P ins ( pins Shown : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pin Code 1 Ġ!= Ġnull Ġ&& Ġpin Code 2 Ġ!= Ġnull Ġ&& Ġpin Code 3 Ġ!= Ġnull Ġ&& Ġpin Code 4 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( pins Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 1 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 2 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 3 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 4 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 5 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 6 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 7 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin Code 8 . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġ Ġval ĠMAX _ CODE _ LENGTH Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġ Ġval ĠMAX _ REMOTE _ CODE _ LENGTH Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Code : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcode Type : ĠCode Types Ġ= ĠCode Types . SETTINGS ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdelay Time Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( code : ĠString , Ġdelay : ĠInt ?, Ġtype : ĠCode Types , Ġlistener Ġ: ĠOn Alarm Code Fragment Listener ): ĠCode Bottom Sheet Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Code Ġ= Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Time Ġ= Ġdelay ?: 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCode Bottom Sheet Fragment ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }