/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠWide verse Ċ Ġ* Ċ Ġ* Ġ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 . wide verse . headless w if im an ager _ discover er . fragment Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . wide verse . headless w if im an ager . data . Wifi Scan Result Ċ import Ġcom . wide verse . headless w if im an ager . helper . Wifi Helper Ċ import Ġcom . wide verse . headless w if im an ager _ discover er . R Ċ import Ġcom . wide verse . headless w if im an ager _ discover er . view model . Wifi ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ wifi _ select . view .* Ċ import Ġkotlinx . android . synt hetic . main . view _ item _ wifi . view .* Ċ import Ġorg . jetbrains . ank o . ok Button Ċ import Ġorg . jetbrains . ank o . sdk 2 7 . coroutines . onClick Ċ import Ġorg . jetbrains . ank o . support . v 4 . alert Ċ Ċ class ĠW ifi Select Fragment Ġ: ĠBase Fragment (), ĠOn Fragment Wifi Selected Ġ{ ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠW ifi ViewModel ĊĠĠĠ Ġprivate Ġvar Ġwifi Listener : ĠOn Fragment Wifi Selected ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Wifi ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ wifi _ select , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġview . cancel Button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Listener ?. on Fragment Interaction (" cancel Button ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . recycler Adapter Ġ= ĠW ifi View Adapter ( viewModel . wifi List , Ġwifi Listener !! ) ĊĠĠĠĠĠĠĠ ĠviewModel . recycler Layout Ġ= ĠLinearLayoutManager ( in flater . context ) ĊĊĠĠĠĠĠĠĠ Ġview . wifi Recycler . layout Manager Ġ= ĠviewModel . recycler Layout ĊĠĠĠĠĠĠĠ Ġview . wifi Recycler . adapter Ġ= ĠviewModel . recycler Adapter ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Wifi Selected ( result : ĠW ifi Scan Result ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Listener ?. on Fragment Wifi Selected ( null ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Wifi Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Dialog Ġ= ĠPassword Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Dialog . wifi Selected Ġ= Ġresult ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . protected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Dialog . show ( fragment Manager , Ġ" password Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Listener ?. on Fragment Wifi Selected ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Wifi Scan List ( wifi List : ĠList < Wifi Scan Result >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( wifi List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert (" No ĠWi - Fi Ġnetwork Ġfound . ĠTry Ġagain Ġlater .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Button Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Listener ?. on Fragment Wifi Selected ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Cancel able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . wifi List Ġ= Ġwifi List ĊĊĠĠĠĠĠĠĠ Ġview ?. wifi Recycler ?. adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ifi View Adapter ( viewModel . wifi List , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġview ?. wifi Recycler ?. invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠOn Fragment Wifi Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Listener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ("$ context Ġmust Ġimplement ĠOn Fragment Interaction Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġwifi Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* override Ġfun Ġon Dialog Positive Click ( dialog : ĠDialog Fragment , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Wifi ?. password Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Wifi Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwifi Listener ?. on Fragment Wifi Selected ( selected Wifi !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprint ("$ TAG : Ġ$ password ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dialog Negative Click ( dialog : ĠDialog Fragment ) Ġ{ ĊĠĠĠ Ġ}*/ Ċ } Ċ Ċ interface ĠOn Fragment Wifi Selected Ġ{ ĊĠĠĠ Ġfun Ġon Fragment Wifi Selected ( result : ĠW ifi Scan Result ?) Ċ } Ċ Ċ class ĠW ifi View Adapter ( private Ġval Ġwifi List : ĠList < Wifi Scan Result >, Ġprivate Ġval Ġlistener : ĠOn Fragment Wifi Selected ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Wifi View Adapter . Wifi List Holder >() Ġ{ ĊĊĠĠĠ Ġclass ĠW ifi List Holder ( val Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) ĊĊĊĠĠĠ Ġ// ĠCreate Ġnew Ġviews Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Type : ĠInt ): ĠW ifi List Holder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . view _ item _ wifi , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠW ifi List Holder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReplace Ġthe Ġcontents Ġof Ġa Ġview Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠW ifi List Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Wifi Ġ= Ġwifi List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . view . wifi R ssi Icon . setImage Resource ( Wifi Helper . get Drawable From RSS I ( current Wifi . level , Ġcurrent Wifi . protected )) ĊĠĠĠĠĠĠĠ Ġholder . view . wifi Title . text Ġ= Ġwifi List [ position ]. SSID ĊĊĠĠĠĠĠĠĠ Ġholder . view . wifi Item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Fragment Wifi Selected ( wifi List [ position ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturn Ġthe Ġsize Ġof Ġyour Ġdataset Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġwifi List . size Ċ }