/* Ċ Ġ* ĠL yn ket Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠA run k umar Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġar un . com . chrom er . tabs . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper . LEFT Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper . RIGHT Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . transition . Transition Manager Ċ import Ġar un . com . chrom er . R Ċ import Ġar un . com . chrom er . data . website . model . Website Ċ import Ġar un . com . chrom er . di . fragment . Fragment Component Ċ import Ġar un . com . chrom er . ext enst ions . g one Ċ import Ġar un . com . chrom er . ext enst ions . show Ċ import Ġar un . com . chrom er . shared . Fab Handler Ċ import Ġar un . com . chrom er . shared . base . fragment . Base Fragment Ċ import Ġar un . com . chrom er . tabs . Tabs Manager Ċ import Ġar un . com . chrom er . util . glide . G lide App Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġkotlinx . android . synt hetic . main . fragment _ tabs .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġar unk Ġon Ġ 2 0 - 1 2 - 2 0 1 7 . Ċ Ġ*/ Ċ class ĠTabs Fragment Ġ: ĠBase Fragment (), ĠF ab Handler Ġ{ ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġtabs Manager : ĠTabs Manager ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠ Ġprivate Ġvar Ġtabs ViewModel : ĠTabs ViewModel ? Ġ= Ġnull ĊĊĠ Ġlateinit Ġvar Ġtabs Adapter : ĠTabs Adapter ĊĊĠ Ġoverride Ġfun Ġinject ( fragment Component : ĠFragment Component ) Ġ{ ĊĠĠĠ Ġfragment Component . inject ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġlayout Res : ĠInt Ġget () Ġ= ĠR . layout . fragment _ tabs ĊĊĊĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġsetup RecyclerView () ĊĠĠĠ Ġwith ( swipe Refresh Layout ) Ġ{ ĊĠĠĠĠĠ Ġset On Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġload Tabs () ĊĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġset Color Scheme Resources ( ĊĠĠĠĠĠĠĠ ĠR . color . color Primary , ĊĠĠĠĠĠĠĠ ĠR . color . color Accent , ĊĠĠĠĠĠĠĠ ĠR . color . color Primary Dark er ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠ Ġtabs ViewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Tabs ViewModel :: class . java ) ĊĠĠĠ Ġobserve ViewModel () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠ Ġtabs ViewModel ?. apply Ġ{ ĊĠĠĠĠĠ Ġloading LiveData . observe ( view Lifecycle Owner , ĠObserver < Boolean > Ġ{ Ġloading Ġ-> ĊĠĠĠĠĠĠĠ Ġshow Loading ( loading !! ) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġtabs Data . observe ( view Lifecycle Owner , ĠObserver < Mutable List < Tabs Manager . Tab >> Ġ{ ĊĠĠĠĠĠĠĠ Ġset Tabs ( it !! ) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠ Ġ// ĠSetup ĠRecyclerView ĊĠĠĠ Ġtabs Adapter Ġ= ĠTabs Adapter ( G lide App . with ( this ), Ġtabs Manager ) ĊĠĠĠ Ġtabs RecyclerView . apply Ġ{ ĊĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠ Ġadapter Ġ= Ġtabs Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġswipe Touch Ġ= Ġobject Ġ: ĠItem Touch Helper . Simple Callback ( 0 , ĠLEFT Ġor ĠRIGHT ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtab Ġ= Ġtabs Adapter . get Tab At ( view Holder . adapter Position ) ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtabs Manager . finish Tab By Url ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWebsite ( tab . url ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( tab . getTarget Activity Name ()) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġload Tabs () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠItem Touch Helper ( swipe Touch ). apply Ġ{ Ġattach To RecyclerView ( tabs RecyclerView ) Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Tabs ( tabs : ĠList < Tabs Manager . Tab >) Ġ{ ĊĠĠĠ Ġtabs Adapter . submit List ( tabs ) ĊĠĠĠ ĠTransition Manager . begin Delayed Transition ( fragment Tabs Root ) ĊĠĠĠ Ġif Ġ( tabs . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġerror . show () ĊĠĠĠĠĠ Ġswipe Refresh Layout . g one () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġerror . g one () ĊĠĠĠĠĠ Ġswipe Refresh Layout . show () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Loading ( loading : ĠBoolean ) Ġ{ ĊĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġloading ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Hidden Changed ( hidden : ĠBoolean ) Ġ{ ĊĠĠĠ Ġsuper . on Hidden Changed ( hidden ) ĊĠĠĠ Ġif Ġ(! hidden ) Ġ{ ĊĠĠĠĠĠ Ġactivity !!. setTitle ( R . string . title _ tabs ) ĊĠĠĠĠĠ Ġload Tabs () ĊĠĠĠ Ġ} ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġif Ġ(! is Hidden ) Ġ{ ĊĠĠĠĠĠ Ġload Tabs () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġload Tabs () Ġ{ ĊĠĠĠ Ġtabs ViewModel ?. load Tabs () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Fab Click () Ġ{ ĊĠĠĠ Ġif Ġ( tabs Adapter . item Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ ĠMaterial Dialog . Builder ( activity !! ) ĊĠĠĠĠĠĠĠ Ġ. title ( R . string . are _ you _ sure ) ĊĠĠĠĠĠĠĠ Ġ. content ( R . string . tab _ deletion _ confirmation _ content ) ĊĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . yes ) ĊĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . no ) ĊĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġ_, Ġ_ Ġ-> Ġtabs ViewModel ?. clear All Tabs () Ġ} ĊĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ