/* Ċ Ġ* Ġ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 . home . fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġar un . com . chrom er . R Ċ import Ġar un . com . chrom er . b rowsing . provider selection . Provider Selection Activity Ċ import Ġar un . com . chrom er . data . Result Ċ 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 . appName Ċ 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 . ext enst ions . watch Ċ import Ġar un . com . chrom er . settings . Preferences Ċ import Ġar un . com . chrom er . settings . b rowsing options . B rowsing Options Activity Ċ import Ġar un . com . chrom er . shared . Constants Ċ import Ġar un . com . chrom er . shared . base . Sn ack able Ċ import Ġar un . com . chrom er . shared . base . fragment . Base Fragment Ċ import Ġar un . com . chrom er . tips . Tips Activity Ċ import Ġar un . com . chrom er . util . Html Compat Ċ import Ġar un . com . chrom er . util . Rx EventBus Ċ import Ġar un . com . chrom er . util . glide . G lide App Ċ import Ġar un . com . chrom er . util . glide . app icon . Application Icon Ċ import Ġbutter knife . OnClick Ċ import Ġcom . mike pen z . community _ material _ type face _ library . Community Material Ċ import Ġcom . mike pen z . icon ics . Icon ics Drawable Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ provider _ info _ card .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA run k umar Ġon Ġ 0 7 - 0 4 - 2 0 1 7 . Ċ Ġ*/ Ċ class ĠHome Fragment Ġ: ĠBase Fragment (), ĠSn ack able Ġ{ ĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġrecent s Adapter : ĠRecent s Adapter ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġrx EventBus : ĠRx EventBus ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġpreferences : ĠPreferences ĊĊĠ Ġprivate Ġlateinit Ġvar Ġhome Fragment ViewModel : ĠHome Fragment ViewModel ĊĊĠ Ġoverride Ġfun Ġinject ( fragment Component : ĠFragment Component ) Ġ= Ġfragment Component . inject ( this ) ĊĊĠ Ġoverride Ġval Ġlayout Res : ĠInt Ġget () Ġ= ĠR . layout . fragment _ home ĊĊĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġsetup Material Search () ĊĠĠĠ Ġsetup Recent s () ĊĠĠĠ Ġsetup Provider Card () ĊĠĠĠ Ġsetup Tips Card () ĊĠĠĠ Ġsetup Event Listeners () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠ Ġhome Fragment ViewModel Ġ= ĊĠĠĠĠĠ ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Home Fragment ViewModel :: class . java ) ĊĠĠĠ Ġobserve ViewModel () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġif Ġ(! is Hidden ) Ġ{ ĊĠĠĠĠĠ Ġload Recent s () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Hidden Changed ( hidden : ĠBoolean ) Ġ{ ĊĠĠĠ Ġsuper . on Hidden Changed ( hidden ) ĊĠĠĠ Ġif Ġ(! hidden ) Ġ{ ĊĠĠĠĠĠ Ġactivity ?. setTitle ( R . string . app _ name ) ĊĠĠĠĠĠ Ġload Recent s () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsn ack ( message : ĠString ) Ġ{ ĊĠĠĠ Ġ( activity Ġas ĠSn ack able ). sn ack ( message ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsn ack Long ( message : ĠString ) Ġ{ ĊĠĠĠ Ġ( activity Ġas ĠSn ack able ). sn ack Long ( message ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Recent s ( websites : ĠList < Website >) Ġ{ ĊĠĠĠ Ġrecent s Adapter . set Web sites ( websites ) ĊĠĠĠ Ġif Ġ( websites . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġrecent _ missing _ text . show () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġrecent _ missing _ text . g one () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsetup Material Search () Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġload Recent s () Ġ{ ĊĠĠĠ Ġhome Fragment ViewModel . load Recent s () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsetup Recent s () Ġ{ ĊĠĠĠ Ġrecent s Header Icon . setImage Drawable ( ĊĠĠĠĠĠ ĠIcon ics Drawable ( context !! ) ĊĠĠĠĠĠĠĠ Ġ. icon ( Community Material . Icon . cmd _ history ) ĊĠĠĠĠĠĠĠ Ġ. color Res ( R . color . accent ) ĊĠĠĠĠĠĠĠ Ġ. size Dp ( 2 4 ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġrecent s List . apply Ġ{ ĊĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( activity , Ġ 4 ) ĊĠĠĠĠĠ Ġadapter Ġ= Ġrecent s Adapter ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġobserve ViewModel () Ġ{ ĊĠĠĠ Ġhome Fragment ViewModel . recent s Result LiveData . watch ( this ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠResult . Loading < List < Website >> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠShow Ġprogress Ġbar . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠResult . Success < List < Website >> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset Recent s ( result . data !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġsetup Provider Card () Ġ{ ĊĠĠĠ Ġif Ġ( is Added Ġ&& Ġcontext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġcustom Tab Provider : ĠString ? Ġ= Ġpreferences . custom Tab Package () ĊĠĠĠĠĠ Ġval ĠisIn cognito Ġ= Ġpreferences . full In cognito Mode () ĊĠĠĠĠĠ Ġval Ġis WebView Ġ= Ġpreferences . use WebView () ĊĠĠĠĠĠ Ġif Ġ( custom Tab Provider Ġ== Ġnull Ġ|| ĠisIn cognito Ġ|| Ġis WebView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprovider Description . text Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠ ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . tab _ provider _ status _ message _ home , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . system _ webview ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠG lide App . with ( this ) ĊĠĠĠĠĠĠĠĠĠ Ġ. load ( Application Icon . create Uri ( Constants . SYSTEM _ WEB VIEW )) ĊĠĠĠĠĠĠĠĠĠ Ġ. error ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ics Drawable ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( Community Material . Icon . cmd _ web ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. color Res ( R . color . primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size Dp ( 2 4 ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ. into ( provider Icon ) ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn cognito ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprovider Reason . show () ĊĠĠĠĠĠĠĠĠĠ Ġprovider Change Button . g one () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprovider Reason . g one () ĊĠĠĠĠĠĠĠĠĠ Ġprovider Change Button . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprovider Reason . g one () ĊĠĠĠĠĠĠĠ Ġprovider Change Button . show () ĊĠĠĠĠĠĠĠ Ġval ĠappName Ġ= Ġcontext !!. appName ( custom Tab Provider ) ĊĠĠĠĠĠĠĠ Ġprovider Description . text Ġ= ĊĠĠĠĠĠĠĠĠĠ ĠHtml Compat . from Html ( getString ( R . string . tab _ provider _ status _ message _ home , ĠappName )) ĊĠĠĠĠĠĠĠ ĠG lide App . with ( this ) ĊĠĠĠĠĠĠĠĠĠ Ġ. load ( Application Icon . create Uri ( custom Tab Provider )) ĊĠĠĠĠĠĠĠĠĠ Ġ. into ( provider Icon ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġsetup Tips Card () Ġ{ ĊĠĠĠ Ġtips Icon . setImage Drawable ( ĊĠĠĠĠĠ ĠIcon ics Drawable ( context !! ) ĊĠĠĠĠĠĠĠ Ġ. icon ( Community Material . Icon . cmd _ light bul b _ on ) ĊĠĠĠĠĠĠĠ Ġ. color Res ( R . color . md _ yellow _ 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġ. size Dp ( 2 4 ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsetup Event Listeners () Ġ{ ĊĠĠĠ Ġsubs . add ( rx EventBus ĊĠĠĠĠĠ Ġ. filtered Events < B rowsing Options Activity . Provider Changed >() ĊĠĠĠĠĠ Ġ. subscribe Ġ{ Ġsetup Provider Card () Ġ}) ĊĠ Ġ} ĊĊĠ Ġ@ OnClick ( R . id . provider Change Button ) ĊĠ Ġfun Ġon Provider Change Clicked () Ġ{ ĊĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠ ĠstartActivity ( Intent ( context , ĠProvider Selection Activity :: class . java )) ĊĠĠĠ Ġ}, Ġ 2 0 0 ) ĊĠ Ġ} ĊĊĠ Ġ@ OnClick ( R . id . tips Button ) ĊĠ Ġfun Ġon Tips Clicked () Ġ{ ĊĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠ ĠstartActivity ( Intent ( context , ĠT ips Activity :: class . java )) ĊĠĠĠ Ġ}, Ġ 2 0 0 ) ĊĠ Ġ} Ċ } Ċ