package Ġcom . alpha e . r ish i . tow atch . Fragments ĊĊ Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . alpha e . r ish i . tow atch . Adapters . W atched Adapter Ċ import Ġcom . alpha e . r ish i . tow atch . Database . Watch Database Ċ import Ġcom . alpha e . r ish i . tow atch . Database . W atched List Ċ import Ġcom . alpha e . r ish i . tow atch . R Ċ import Ġkotlinx . android . synt hetic . main . recycler _ view .* ĊĊ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠW atched List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Adapter : ĠRecyclerView . Adapter < *> ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Manager : ĠRecyclerView . LayoutManager ĊĠĠĠ Ġprivate Ġvar Ġw atched List : ĠMutable List < W atched List > Ġ= Ġmutable ListOf < W atched List >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwatch Database : ĠWatch Database ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . recycler _ view , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġshim mer _ container . start Sh im mer Animation () ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġshim mer _ container . stop Sh im mer Animation () ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġwatch Database Ġ= ĠWatch Database . getInstance ( context !! ) !! ĊĠĠĠĠĠĠĠ Ġview Manager Ġ= ĠGrid LayoutManager ( context , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġview Adapter Ġ= Ġobject Ġ: ĠW atched Adapter ( context !! , Ġw atched List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove Movie ( movie : ĠW atched List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw atched List . remove ( movie ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( refresh _ layout Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRemove Movie (). execute ( movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġview Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġview Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( refresh _ layout Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRead From Database (). execute () ĊĊĠĠĠĠĠĠĠ Ġrefresh _ layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer _ container . start Sh im mer Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer _ container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw atched List . removeAll ( w atched List ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRead From Database (). execute () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠWatch Database . destroy Instance () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠRemove Movie Ġ: ĠAsync Task < W atched List , ĠVoid , ĠVoid >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠW atched List ?): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= Ġparams [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatch Database . w atched Dao Access (). delete Movie ( movie !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( refresh _ layout Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( re cyclerView , Ġ" Removed Ġfrom ĠPlaylist ", ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠRead From Database Ġ: ĠAsync Task < Void , ĠVoid , ĠList < W atched List >> (){ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠVoid ?): ĠList < W atched List > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwatch Database . w atched Dao Access (). fetch All Movies () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠList < W atched List > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( refresh _ layout Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh _ layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer _ container . stop Sh im mer Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshim mer _ container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġresult !! ) Ġw atched List . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }