/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠD uck Duck Go Ċ Ġ* Ċ Ġ* Ġ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 . duck duck go . app . tabs . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . RecyclerView . Adapter Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . duck duck go . app . browser . R Ċ import Ġcom . duck duck go . app . global . image . G lide App Ċ import Ġcom . duck duck go . app . tabs . model . Tab Entity Ċ import Ġcom . duck duck go . app . tabs . ui . Tab Switch er Adapter . Tab ViewHolder Ċ import Ġkotlinx . android . synt hetic . main . item _ tab . view .* Ċ Ċ class ĠTab Switch er Adapter ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġitem ClickListener : ĠTab Sw itched Listener ) Ġ: ĠAdapter < Tab ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdata : ĠList < Tab Entity > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġselected Tab : ĠTab Entity ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠTab ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . item _ tab , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTab ViewHolder ( root , Ġroot . favicon , Ġroot . title , Ġroot . url , Ġroot . close , Ġroot . tab Un read ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠTab ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtab Ġ= Ġdata [ position ] ĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġtab . display Title ( context ) ĊĠĠĠĠĠĠĠ Ġholder . url . text Ġ= Ġtab . display Url () ĊĠĠĠĠĠĠĠ Ġholder . tab Un read . visibility Ġ= Ġif Ġ( tab . view ed ) ĠView . IN VISIBLE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġholder . root . setBackground Resource ( if Ġ( tab . tab Id Ġ== Ġselected Tab ?. tab Id ) ĠSELECT ED _ BACKGROUND Ġelse ĠDEFAULT _ BACKGROUND ) ĊĊĠĠĠĠĠĠĠ ĠG lide App . with ( holder . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( tab . favicon ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ glo be _ gray _ 1 6 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ glo be _ gray _ 1 6 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . favicon ) ĊĊĠĠĠĠĠĠĠ Ġattach Click Listeners ( holder , Ġtab ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattach Click Listeners ( holder : ĠTab ViewHolder , Ġtab : ĠTab Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener . on Tab Selected ( tab ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . close . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener . on Tab Deleted ( tab ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( data : ĠList < Tab Entity > ?, Ġselected Tab : ĠTab Entity ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġthis . selected Tab Ġ= Ġselected Tab ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠTab Sw itched Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon New Tab Requested () ĊĠĠĠĠĠĠĠ Ġfun Ġon Tab Selected ( tab : ĠTab Entity ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Tab Deleted ( tab : ĠTab Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTab ViewHolder ( ĊĠĠĠĠĠĠĠ Ġval Ġroot : ĠView , ĊĠĠĠĠĠĠĠ Ġval Ġfav icon : ĠImageView , ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠTextView , ĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠTextView , ĊĠĠĠĠĠĠĠ Ġval Ġclose : ĠImageView , ĊĠĠĠĠĠĠĠ Ġval Ġtab Un read : ĠView ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( root ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Drawable Res ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT ED _ BACKGROUND Ġ= ĠR . drawable . tab _ background _ selected ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ BACKGROUND Ġ= ĠR . drawable . tab _ background ĊĠĠĠ Ġ} Ċ Ċ } Ċ