package Ġcom . br ins . light music . ui . fragment . video ĊĊ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . swiper ef resh layout . widget . Swipe Refresh Layout Ċ import Ġcom . br ins . light music . R Ċ import Ġcom . br ins . light music . model . music video . Mv Ċ import Ġcom . br ins . light music . ui . activity . MainActivity Ċ import Ġcom . br ins . light music . ui . base . Base Fragment Ċ import Ġcom . br ins . light music . ui . base . adapter . On ItemClickListener Ċ import Ġcom . br ins . light music . utils . launch Ċ import Ġcom . br ins . light music . utils . show Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . android . synt hetic . main . fragment _ video _ category .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ @ Android EntryPoint Ċ class ĠVideo Category Fragment ( var Ġarea : ĠString ) Ġ: ĠBase Fragment (), ĊĠĠĠ ĠVideo Contract . View , ĊĠĠĠ ĠOn ItemClickListener , ĠSw ipe Refresh Layout . On Refresh Listener Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Presenter Ġ: ĠVideo Present ĊĠĠĠ Ġprivate Ġvar Ġcount : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġvideo List Ġ= Ġmutable ListOf < Mv >() ĊĠĠĠ Ġprivate Ġval Ġvideo Adapter : ĠVideo ListAdapter Ġby Ġlazy Ġ{ ĠVideo ListAdapter ( video List , Ġcontext !! ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Fresh : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġget Layout Res ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ video _ category ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View After Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View After Binding () ĊĠĠĠĠĠĠĠ Ġvideo Adapter . setOn Item Listener ( this ) ĊĠĠĠĠĠĠĠ Ġvideo ListView . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġvideo ListView . adapter Ġ= Ġvideo Adapter ĊĠĠĠĠĠĠĠ Ġinit Loading More () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lazy Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Lazy Load () ĊĠĠĠĠĠĠĠ Ġm Presenter . subscribe ( this ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView ?, position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Parcelable (" Mv ", Ġvideo List [ position ]) ĊĠĠĠĠĠĠĠ Ġswitch ( Video Detail Fragment (), Ġbundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch ( fragment : ĠFragment , Ġbundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). switch Fragment ( fragment , Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Fresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Fresh Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Mv Data ( count Ġ* Ġ 1 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġload Mv Data ( 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Mv Data ( limit Ġ: Int ){ ĊĠĠĠĠĠĠĠ Ġlaunch ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo List . addAll ( load Mv Data ( limit , area )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Fresh ) Ġis Fresh Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . connect _ error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Retry View () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Mv Data ( limit : ĠInt Ġ= Ġ 0 , area : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠ Ġif Ġ( limit Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . load Video ( area Ġ= Ġarea ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . load Video ( limit , area ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Retry View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . show Retry View () ĊĠĠĠĠĠĠĠ Ġval Ġtext Error Ġ= ĠTextView ( context ) ĊĠĠĠĠĠĠĠ Ġtext Error . setText ( R . string . connect _ error ) ĊĠĠĠĠĠĠĠ Ġtext Error . text Size Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġtext Error . setTextColor ( Context Compat . getColor ( context !! , R . color . trans luc ent )) ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ: ĠLinearLayout . LayoutParams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġp . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġtext Error . gravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġrecommend Container . addView ( text Error , p ) ĊĠĠĠĠĠĠĠ Ġtext Error . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecommend Container . remove View ( text Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Mv Data ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Loading More () Ġ{ ĊĠĠĠĠĠĠĠ Ġload . setColor Scheme Colors ( Color . BLUE , ĠColor . GREEN , ĠColor . YELLOW , ĠColor . RED ) ĊĠĠĠĠĠĠĠ Ġload . set Distance To Trigger Sync ( 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġload . set Progress BackgroundColor Scheme Color ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġload . setSize ( Swipe Refresh Layout . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġload . setOn Refresh Listener ( this ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ