/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 7 - 2 0 1 9 ĠWire Guard ĠLLC . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 8 - 2 0 1 9 ĠHar sh ĠSh and ily a Ġ< ms f jar vis @ gmail . com >. ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ package Ġcom . wire guard . android . fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . Frame Layout Ċ 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 . google . android . material . button . Material Button Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . google . zx ing . Result Ċ import Ġcom . k ro e ger ama . ka ite ki . b code . Barcode Result Listener Ċ import Ġcom . k ro e ger ama . ka ite ki . b code . ui . Barcode Bottom Sheet Ċ import Ġcom . wire guard . android . R Ċ import Ġcom . wire guard . android . activity . Tunnel Creator Activity Ċ import Ġcom . wire guard . android . util . Import Events Listener Ċ import Ġcom . wire guard . android . util . resolve Attribute Ċ import Ġcom . google . android . material . R Ġas Ġmaterial R Ċ Ċ class ĠAdd Tunnel s Sheet () Ġ: ĠBottom Sheet Dialog Fragment (), ĠBar code Result Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfragment Listener : ĠImport Events Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( listener : ĠImport Events Listener ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Theme (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . style . Bottom Sheet Dialog Theme ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġdismiss () ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . add _ tunnel s _ bottom _ sheet , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġctx Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠ Ġ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 ? Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= Ġdialog . findViewById < Frame Layout >( material R . id . design _ bottom _ sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbehavior Ġ= ĠBottom Sheet Behavior . from ( bottom Sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . peek Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . bottom Sheet Callback Ġ= Ġobject Ġ: ĠBottom Sheet Behavior . Bottom Sheet Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newState Ġ== ĠBottom Sheet Behavior . STATE _ COLL AP SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < Material Button >( R . id . create _ empty )?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Create Config () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < Material Button >( R . id . create _ from _ file )?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Import Config () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < Material Button >( R . id . create _ from _ qrcode )?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Scan QR Code () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġgradient Drawable Ġ= ĠGradient Drawable (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( ctx . resolve Attribute ( R . attr . color Background )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . background Ġ= Ġgradient Drawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Barcode Result ( result : ĠResult ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener ?. on Qr Import ( result . text ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Barcode Scan Cancelled () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Request Create Config () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( activity , ĠT unnel Creator Activity :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Request Import Config () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener ?. on Request Import () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Request Scan QR Code () Ġ{ ĊĠĠĠĠĠĠĠ ĠBar code Bottom Sheet . show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformats Ġ= ĠlistOf ( Barcode Format . QR _ CODE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode In verted Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ