package Ġcom . ssr live . ss rd roid Ċ Ċ import Ġandroid . app .* Ċ import Ġandroid . content . res .* Ċ import Ġandroid . os .* Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app .* Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . recyclerview . widget .* Ċ import Ġcom . ssr live . ss rd roid . Shadow socks Application . Companion . app Ċ import Ġcom . ssr live . ss rd roid . database .* Ċ import Ġcom . ssr live . ss rd roid . utils .* Ċ Ċ class ĠTask er Activity Ġ: ĠAppCompatActivity () Ċ { Ċ ĉ private Ġlateinit Ġvar Ġtask er Option : ĠTask er Settings Ċ ĉ private Ġlateinit Ġvar Ġm Switch : ĠSwitch Ċ ĉ private Ġlateinit Ġvar Ġprofiles Adapter : ĠPro files Adapter ĊĊ ĉ override Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ċ ĉ { Ċĉ ĉ super . onCreate ( savedInstanceState ) Ċĉ ĉ set ContentView ( R . layout . layout _ task er ) ĊĊĉ ĉ profiles Adapter Ġ= ĠPro files Adapter () ĊĊĉ ĉ val Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) Ċĉ ĉ toolbar . setTitle ( R . string . app _ name ) Ċĉ ĉ toolbar . set Navigation Icon ( R . drawable . ic _ navigation _ close ) Ċĉ ĉ toolbar . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĊĉ ĉ task er Option Ġ= ĠTask er Settings . from Intent ( intent ) Ċĉ ĉ m Switch Ġ= ĠfindViewById ( R . id . service Switch ) Ċĉ ĉ m Switch . isChecked Ġ= Ġtask er Option . switch On Ċĉ ĉ val Ġprofiles List Ġ= ĠfindViewById < RecyclerView >( R . id . profiles List ) Ċĉ ĉ val Ġlm Ġ= ĠLinearLayoutManager ( this ) Ċĉ ĉ profiles List . layout Manager Ġ= Ġlm Ċĉ ĉ profiles List . item Animator Ġ= ĠDefault Item Animator () Ċĉ ĉ profiles List . adapter Ġ= Ġprofiles Adapter ĊĊĉ ĉ if Ġ( task er Option . profile Id Ġ>= Ġ 0 ) Ċĉ ĉ { Ċĉĉ ĉ var Ġposition Ġ= Ġ 0 Ċĉĉ ĉ val Ġprofiles Ġ= Ġprofiles Adapter . getCurrent Profiles () Ċĉĉ ĉ for Ġ(( i , Ġprofile ) Ġin Ġprofiles . with Index ()) Ċĉĉ ĉ { Ċĉĉĉ ĉ if Ġ( profile . id Ġ== Ġtask er Option . profile Id ) Ċĉĉĉ ĉ { Ċĉĉĉĉ ĉ position Ġ= Ġi Ġ+ Ġ 1 Ċĉĉĉĉ ĉ break Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉĉ ĉ lm . scrollTo Position ( position ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ private Ġinner Ġclass ĠProfile ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ), ĠView . OnClickListener Ċ ĉ { Ċĉ ĉ private Ġvar Ġitem : ĠProfile ? Ġ= Ġnull Ċĉ ĉ private Ġval Ġtext : ĠChecked TextView ĊĊĉ ĉ init Ċĉ ĉ { Ċĉĉ ĉ val Ġtyped Array Ġ= Ġobtain Styled Attributes ( int ArrayOf ( android . R . attr . selectable Item Background )) Ċĉĉ ĉ view . setBackground Resource ( typed Array . getResource Id ( 0 , Ġ 0 )) Ċĉĉ ĉ typed Array . recycle () ĊĊĉĉ ĉ text Ġ= ĠitemView . findViewById ( android . R . id . text 1 ) Ċĉĉ ĉ item View . setOnClickListener ( this ) Ċĉ ĉ } ĊĊĉ ĉ fun Ġbind Default () Ċĉ ĉ { Ċĉĉ ĉ item Ġ= Ġnull Ċĉĉ ĉ text . setText ( R . string . profile _ default ) Ċĉĉ ĉ text . isChecked Ġ= Ġtask er Option . profile Id Ġ< Ġ 0 Ċĉ ĉ } ĊĊĉ ĉ fun Ġbind ( item : ĠProfile ) Ċĉ ĉ { Ċĉĉ ĉ this . item Ġ= Ġitem Ċĉĉ ĉ text . text Ġ= Ġitem . name Ċĉĉ ĉ text . isChecked Ġ= Ġtask er Option . profile Id Ġ== Ġitem . id Ċĉ ĉ } ĊĊĉ ĉ override Ġfun ĠonClick ( v : ĠView ) Ċĉ ĉ { Ċĉĉ ĉ task er Option . switch On Ġ= Ġm Switch . isChecked Ċĉĉ ĉ task er Option . profile Id Ġ= Ġif Ġ( item Ġ== Ġnull ) Ġ- 1 Ġelse Ġitem !!. id Ċĉĉ ĉ set Result ( Activity . RESULT _ OK , Ġtask er Option . to Intent ( this @ Task er Activity )) Ċĉĉ ĉ finish () Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ private Ġinner Ġclass ĠPro files Adapter Ġ: ĠRecyclerView . Adapter < Profile ViewHolder >() Ċ ĉ { Ċĉ ĉ private Ġval Ġname : ĠString ĊĊĉ ĉ init Ċĉ ĉ { Ċĉĉ ĉ val Ġversion Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ" material " Ġelse Ġ" holo " Ċĉĉ ĉ name Ġ= Ġ" select _ dialog _ single choice _$ version " Ċĉ ĉ } ĊĊĉ ĉ fun ĠgetCurrent Profiles (): ĠList < Profile > Ċĉ ĉ { Ċĉĉ ĉ return Ġapp . profile Manager . all Profiles Ċĉ ĉ } ĊĊĉ ĉ override Ġfun ĠgetItem Count (): ĠInt Ċĉ ĉ { Ċĉĉ ĉ return Ġ 1 Ġ+ ĠgetCurrent Profiles (). size Ċĉ ĉ } ĊĊĉ ĉ override Ġfun Ġon Bind ViewHolder ( vh : ĠProfile ViewHolder , Ġi : ĠInt ) Ċĉ ĉ { Ċĉĉ ĉ if Ġ( i Ġ== Ġ 0 ) Ċĉĉ ĉ { Ċĉĉĉ ĉ vh . bind Default () Ċĉĉ ĉ } Ċĉĉ ĉ else Ċĉĉ ĉ { Ċĉĉĉ ĉ vh . bind ( getCurrent Profiles ()[ i Ġ- Ġ 1 ]) Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ override Ġfun ĠonCreate ViewHolder ( vg : ĠViewGroup , Ġi : ĠInt ): ĠProfile ViewHolder Ċĉ ĉ { Ċĉĉ ĉ val Ġview Ġ= ĠLayoutInflater . from ( vg . context ) Ċĉĉĉ ĉ . inflate ( Resources . getSystem (). getIdentifier ( name , Ġ" layout ", Ġ" android "), Ġv g , Ġfalse ) Ċĉĉ ĉ return ĠProfile ViewHolder ( view ) Ċĉ ĉ } Ċ ĉ } Ċ } Ċ