package Ġcom . battle l ancer . series guide . ui . episodes Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences . On Shared Preference ChangeListener Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 4 . app . List Fragment Ċ import Ġandroid . support . v 4 . app . Loader Manager Ċ import Ġandroid . support . v 4 . content . Cursor Loader Ċ import Ġandroid . support . v 4 . content . Loader Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . OnClickListener Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ListView Ċ import Ġandroid . widget . PopupMenu Ċ import Ġcom . battle l ancer . series guide . Constants Ċ import Ġcom . battle l ancer . series guide . R Ċ import Ġcom . battle l ancer . series guide . provider . Series Guide Contract . Episode s Ċ import Ġcom . battle l ancer . series guide . provider . Series Guide Contract . ListItem Types Ċ import Ġcom . battle l ancer . series guide . settings . Display Settings Ċ import Ġcom . battle l ancer . series guide . ui . dialogs . Single Choice Dialog Fragment Ċ import Ġcom . battle l ancer . series guide . ui . episodes . Episode s Adapter . On Flag Episode Listener Ċ import Ġcom . battle l ancer . series guide . ui . lists . Manage Lists Dialog Fragment Ċ import Ġcom . battle l ancer . series guide . util . Utils Ċ Ċ /** Ċ Ġ* ĠDisplays Ġa Ġlist Ġof Ġepisode s Ġof Ġa Ġseason . Ċ Ġ*/ Ċ class ĠEp isode s Fragment Ġ: ĠList Fragment (), ĠOn ClickListener , ĠOn Flag Episode Listener , ĊĠĠĠĠĠĠĠ ĠEp isode s Adapter . PopupMenu ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsort Order : ĠConstants . Episode Sorting ĊĠĠĠ Ġprivate Ġvar Ġis Dual Pane : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠEp isode s Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġshow Tv db Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġseason Tv db Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġseason Number : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġstarting Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlast Checked ItemId : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Episode s " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SHOW _ TV DB ID Ġ= Ġ" show _ tv db id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SE ASON _ TV DB ID Ġ= Ġ" season _ tv db id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SE ASON _ NUMBER Ġ= Ġ" season _ number " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ START ING _ POSITION Ġ= Ġ" starting _ position " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( show Id : ĠInt , Ġseason Id : ĠInt , Ġseason Number : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstarting Position : ĠInt ): ĠEp isode s Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEp isode s Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ SHOW _ TV DB ID , Ġshow Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ SE ASON _ TV DB ID , Ġseason Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ SE ASON _ NUMBER , Ġseason Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ START ING _ POSITION , Ġstarting Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Tv db Id Ġ= Ġit . getInt ( ARG _ SHOW _ TV DB ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseason Tv db Id Ġ= Ġit . getInt ( ARG _ SE ASON _ TV DB ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseason Number Ġ= Ġit . getInt ( ARG _ SE ASON _ NUMBER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarting Position Ġ= Ġit . getInt ( ARG _ START ING _ POSITION ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalArgumentException (" Missing Ġarguments ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ episodes , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġload SortOrder () ĊĊĠĠĠĠĠĠĠ Ġ// Ġlisten Ġto Ġchanges Ġto Ġthe Ġsorting Ġpreference ĊĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( require Activity ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister On Shared Preference ChangeListener ( on SortOrder Changed Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġto Ġsee Ġif Ġwe Ġhave Ġa Ġframe Ġin Ġwhich Ġto Ġembed Ġthe Ġdetails ĊĠĠĠĠĠĠĠ Ġ// Ġfragment Ġdirectly Ġin Ġthe Ġcontaining ĠUI . ĊĠĠĠĠĠĠĠ Ġval Ġpager Ġ= Ġrequire Activity (). findViewById < View >( R . id . pager Episode s ) ĊĠĠĠĠĠĠĠ Ġis Dual Pane Ġ= Ġpager Ġ!= Ġnull Ġ&& Ġpager . visibility Ġ== ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Dual Pane ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . choice Mode Ġ= ĠListView . CHO ICE _ MODE _ SINGLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarting Position Ġ= Ġ- 1 Ġ// Ġoverwrite Ġstarting Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlast Checked ItemId Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠEp isode s Adapter ( require Activity (), Ġthis , Ġthis ) ĊĠĠĠĠĠĠĠ Ġlist Adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġloader Manager . init Loader ( Episode s Activity . E PI SO DES _ LOAD ER _ ID , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode s Loader Callbacks ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplay Ġthe Ġepisode Ġat Ġthe Ġgiven Ġposition Ġin Ġa Ġdetail Ġpane Ġor Ġif Ġnot Ġavailable Ġin Ġa Ġnew ĊĠĠĠĠ Ġ* Ġactivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Details ( view : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Dual Pane ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġrequire Activity () Ġas ĠEp isode s Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . setCurrent Page ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Checked ( position ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Id Ġ= ĠlistView . getItem Id At Position ( position ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Class ( require Activity (), ĠEp isode s Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Episode s Activity . Init Bundle . E PI SO DE _ TV DB ID , Ġepisode Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . startActivity With Animation ( require Activity (), Ġintent , Ġview ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġload SortOrder () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġ// Ġstop Ġlistening Ġto Ġsort Ġpref Ġchanges ĊĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( require Activity ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister On Shared Preference ChangeListener ( on SortOrder Changed Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater ?. inflate ( R . menu . episode list _ menu , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ ep sorting Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sort Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ListItem Click ( l : ĠListView ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Details ( view , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon PopupMenu Click ( v : ĠView , Ġepisode Tv db Id : ĠInt , Ġepisode Number : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Time Ms : ĠLong , Ġw atched Flag : ĠInt , Ġis Collected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPopup Menu ( v . context , Ġv ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinf late ( R . menu . episodes _ popup _ menu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ collection _ add ). isVisible Ġ= Ġ! is Collected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ collection _ remove ). isVisible Ġ= Ġis Collected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis W atched Ġ= ĠEp isode Tools . is W atched ( w atched Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ w atched ). isVisible Ġ= Ġ! is W atched ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ not _ w atched ). isVisible Ġ= Ġis W atched ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Skipped Ġ= ĠEp isode Tools . is Skipped ( w atched Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ skip ). isVisible Ġ= Ġ! is W atched Ġ&& Ġ! is Skipped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . menu _ action _ episodes _ dont _ skip ). isVisible Ġ= Ġis Skipped ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener ( PopupMenu . On MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ w atched Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode W atched ( episode Tv db Id , Ġepisode Number , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġw atched ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ not _ w atched Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode W atched ( episode Tv db Id , Ġepisode Number , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġun w atched ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ collection _ add Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode Collected ( episode Tv db Id , Ġepisode Number , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġcollected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ collection _ remove Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode Collected ( episode Tv db Id , Ġepisode Number , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġun collected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ skip Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode Skipped ( episode Tv db Id , Ġepisode Number , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġskipped ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ dont _ skip Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Flag Episode Skipped ( episode Tv db Id , Ġepisode Number , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġnot Ġskipped ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ w atched _ previous Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEp isode Tools . episode W atched Previous ( require Context (), Ġshow Tv db Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Time Ms , Ġepisode Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Flag Ġpreviously Ġa ired ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ action _ episodes _ manage _ lists Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManage Lists Dialog Fragment . show Lists Dialog ( episode Tv db Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Types . E PI SO DE , Ġfragment Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . track ContextMenu ( require Context (), ĠTAG , Ġ" Manage Ġlists ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Flag Episode W atched ( episode Tv db Id : ĠInt , Ġepisode : ĠInt , Ġis W atched : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEp isode Tools . episode W atched ( require Context (), Ġshow Tv db Id , Ġepisode Tv db Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason Number , Ġepisode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is W atched ) ĠEp isode Flags . WATCH ED Ġelse ĠEp isode Flags . UN WATCH ED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Flag Episode Skipped ( episode Tv db Id : ĠInt , Ġepisode : ĠInt , Ġis Skipped : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEp isode Tools . episode W atched ( require Context (), Ġshow Tv db Id , Ġepisode Tv db Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason Number , Ġepisode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Skipped ) ĠEp isode Flags . SKIP PED Ġelse ĠEp isode Flags . UN WATCH ED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Flag Episode Collected ( episode Tv db Id : ĠInt , Ġepisode : ĠInt , Ġis Collected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEp isode Tools . episode Collected ( require Context (), Ġshow Tv db Id , Ġepisode Tv db Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseason Number , Ġepisode , Ġis Collected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload SortOrder () Ġ{ ĊĠĠĠĠĠĠĠ Ġsort Order Ġ= ĠDisplay Settings . get Episode SortOrder ( require Activity ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Sort Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsort Dialog Ġ= ĠSingle Choice Dialog Fragment . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . ep sorting , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . ep sorting Data , Ġsort Order . index (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Settings . KEY _ E PI SO DE _ SORT _ ORDER , ĠR . string . pref _ episode sorting ) ĊĠĠĠĠĠĠĠ Ġsort Dialog . show ( require FragmentManager (), Ġ" fragment _ sort ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġon SortOrder Changed Listener Ġ= ĠOn Shared Preference ChangeListener Ġ{ Ġ_, Ġkey Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( Display Settings . KEY _ E PI SO DE _ SORT _ ORDER Ġ== Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon SortOrder Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon SortOrder Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġload SortOrder () ĊĊĠĠĠĠĠĠĠ Ġlast Checked ItemId Ġ= ĠlistView . getItem Id At Position ( list View . checked Item Position ) ĊĠĠĠĠĠĠĠ Ġloader Manager . restart Loader ( Episode s Activity . E PI SO DES _ LOAD ER _ ID , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode s Loader Callbacks ) ĊĊĠĠĠĠĠĠĠ ĠUtils . track Custom Event ( require Activity (), ĠTAG , Ġ" Sorting ", Ġsort Order . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHighlight Ġthe Ġgiven Ġepisode Ġin Ġthe Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Item Checked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( list View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Checked ( position , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġfirst Visible Position Ġ|| Ġposition Ġ>= Ġlast Visible Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth Scroll To Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). open ContextMenu ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġepisode s Loader Callbacks Ġ= Ġobject Ġ: ĠLoader Manager . Loader Callbacks < Cursor > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Loader ( id : ĠInt , Ġargs : ĠBundle ?): ĠLoader < Cursor > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCursor Loader ( require Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEp isode s . build Episode s Of Season With Show Uri ( season Tv db Id . toString ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEp isode s Adapter . Episode s Query . PRO JECTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġsort Order . query ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Finished ( loader : ĠLoader < Cursor >, Ġdata : ĠCursor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . swap Cursor ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġan Ġinitial Ġchecked Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( starting Position Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Checked ( starting Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstarting Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcorrectly Ġrestore Ġthe Ġlast Ġchecked Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( last Checked ItemId Ġ!= Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Checked ( adapter . getItem Position ( last Checked ItemId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Checked ItemId Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Loader Reset ( loader : ĠLoader < Cursor >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . swap Cursor ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ