package Ġorg . sil . story producer . controller . story list Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Transaction Ċ import Ġorg . sil . story producer . R Ċ import Ġorg . sil . story producer . activities . Base Activity Ċ import Ġorg . sil . story producer . controller . MainActivity Ċ import Ġorg . sil . story producer . model . Story Ċ import Ġorg . sil . story producer . service . Slide Service Ċ Ċ /** Ċ Ġ* ĠStory Page Fragment Ġis Ġa Ġflexible Ġfragment Ġin Ġthat Ġit Ġdisplays Ġdifferent Ġthings Ġbased Ġon Ġthe Ċ Ġ* Ġcurrent Ġconfigurations . ĠTypically , Ġthis Ġshows Ġa Ġlist Ġof Ġlist Ġof Ġstories . ĠHowever , Ġwhen Ġthere Ġare Ċ Ġ* Ġno Ġstories Ġpresent , Ġa Ġmessage Ġis Ġshown Ġthat Ġnot ifies Ġthe Ġuser Ġthat Ġthere Ġaren 't Ġany Ġstories Ġof Ċ Ġ* Ġthat Ġtype Ġin Ġthe Ġtab . ĠLast ly , Ġa ĠStory Page Fragment Ġcan Ġcontain Ġa ĠFilter Toolbar Frag Ġthat Ġhelps Ġto Ċ Ġ* Ġsort Ġthe Ġlist Ġof Ġstories Ġin Ġthe Ġadapter . Ċ Ġ* Ċ Ġ* ĠStory Page Fragment Ġhas Ġa Ġone - one Ġrelationship Ġwith Ġa ĠStory Page Tab , Ġhowever , Ġsince Ġthe Ċ Ġ* ĠStory Page Fragment Ġis Ġan ĠAndroid : Fragment , Ġit Ġwill Ġfollow Ġthe Ġtypical Ġactivity Ġlifecycle , Ġwhich Ċ Ġ* Ġmeans Ġthat Ġit Ġgets Ġcreated Ġand Ġdestroyed Ġwhen Ġit Ġis Ġnot Ġbeing Ġused . Ċ Ġ*/ Ċ class ĠStory Page Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstory Page Tab Ġ: ĠStory Page Tab ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠlistView : ĠListView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠList Adapter ĊĠĠĠ Ġ// ĠD KH Ġ- Ġ 0 7 / 1 0 / 2 0 2 1 Ġ- ĠIssue Ġ 4 0 7 : ĠAdd Ġfiltering Ġto ĠSP 's Ġ' Story ĠTemplates ' ĠList ĊĠĠĠ Ġ// ĠUpdated Ġwhile Ġintegr ating Ġpull Ġrequest Ġ# 5 6 1 Ġinto Ġcurrent Ġs ills dev Ġbaseline ĊĠĠĠ Ġ// ĠIntegration Ġtesting Ġidentified Ġthe Ġwrong Ġindex Ġwas Ġbeing Ġused Ġfor Ġthe Ġselected Ġstory ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠThe Ġstory Ġlist , Ġas Ġsupplied Ġby ĠStory Page Tab , Ġcan Ġbe Ġmodified Ġby ĠFilter Toolbar Frag ĊĠĠĠ Ġ// Ġvia Ġupdate Story List . Ġ ĠSo , Ġwe Ġst ash Ġa Ġcopy Ġof Ġthe Ġstory Ġlist Ġin ĠCurrent Story List Ġso Ġthat ĊĠĠĠ Ġ// Ġwhen Ġa Ġclick Ġis Ġperformed Ġon Ġa Ġstory , Ġwe Ġknow Ġwhich Ġstory Ġwas Ġactually Ġclicked Ġon . ĊĠĠĠ Ġ// ĠCurrent Story List Ġis Ġused Ġbelow Ġto Ġstart Ġa Ġnew Ġactivity Ġon Ġa Ġselected Ġstory ĊĠĠĠ Ġprivate Ġvar ĠCurrent Story List : ĠList < Story > Ġ= Ġempty List () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ POSITION Ġ= Ġ" position " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġinstance Ġbased Ġoff Ġof Ġthe Ġtab Ġposition Ġparameter ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġposition ĠThe ĠTab ĠPosition ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( position : ĠInt ): ĠStory Page Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstory Page Fragment Ġ= ĠStory Page Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Int ( ARG _ POSITION , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstory Page Fragment . arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstory Page Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġrequire Arguments (). getInt ( ARG _ POSITION ) ĊĠĠĠĠĠĠĠ Ġstory Page Tab Ġ= ĠStory Page Tab . values ()[ position ] ĊĊĠĠĠĠĠĠĠ Ġ// ĠD KH Ġ- Ġ 0 7 / 1 0 / 2 0 2 1 Ġ- ĠIssue Ġ 4 0 7 : ĠAdd Ġfiltering Ġto ĠSP 's Ġ' Story ĠTemplates ' ĠList ĊĠĠĠĠĠĠĠ Ġ// ĠUpdated Ġwhile Ġintegr ating Ġpull Ġrequest Ġ# 5 6 1 Ġinto Ġcurrent Ġs ills dev Ġbaseline ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġsave Ġthe Ġstories Ġass o icated Ġwith Ġthis Ġstory Page Fragment ĊĠĠĠĠĠĠĠ Ġ// Ġ( eg , ĠALL ĠST ORIES , ĠIN ĠPROG RESS , ĠCOMP LETED ) ĊĠĠĠĠĠĠĠ ĠCurrent Story List Ġ= Ġstory Page Tab . get Story List () Ġ Ġ// Ġgrab Ġthe Ġstories ĊĠĠĠĠĠĠĠ Ġif Ġ( Current Story List . isEmpty ()) Ġ{ Ġ Ġ// ĠIf Ġempty , Ġset Ġup Ġfor Ġdisplaying Ġ" No ĠStory " Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ no _ stories , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview !!. findViewById < TextView >( R . id . stories _ not _ found _ text ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 4 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml . from Html ( getString ( story Page Tab . empty Story String Id ), Ġ 0 )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml . from Html ( getString ( story Page Tab . empty Story String Id ))} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Ġ: ĠButton Ġ= Ġview . findViewById ( R . id . update _ workspace _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( story Page Tab Ġ!= ĠStory Page Tab . ALL _ STOR IES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠBase Activity )?. show Select Templates Folder Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlf view Ġ= Ġinflater . inflate ( R . layout . story _ list _ container , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠApply Ġthe ĠSt ories Ġto Ġthe ĠStory ĠList ĠView ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Adapter ( context !! , ĠR . layout . story _ list _ item , Ġstory Page Tab . get Story List (), Ġstory Page Tab ) ĊĊĠĠĠĠĠĠĠ ĠlistView Ġ= Ġlf view . findViewById ( R . id . story _ list _ view ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠD KH Ġ- Ġ 0 7 / 1 0 / 2 0 2 1 Ġ- ĠIssue Ġ 4 0 7 : ĠAdd Ġfiltering Ġto ĠSP 's Ġ' Story ĠTemplates ' ĠList ĊĠĠĠĠĠĠĠ Ġ// ĠUpdated Ġwhile Ġintegr ating Ġpull Ġrequest Ġ# 5 6 1 Ġinto Ġcurrent Ġs ills dev Ġbaseline ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġa Ġlambda Ġroutine Ġto Ġexecute Ġwhen Ġa Ġuser Ġclicks Ġon Ġa Ġstory . ĊĠĠĠĠĠĠĠ Ġ// ĠUp on Ġa Ġstory Ġclick , Ġthe Ġstory Ġis Ġset Ġas Ġthe Ġcurrent Ġstory Ġand Ġa Ġnew ĊĠĠĠĠĠĠĠ Ġ// Ġactivity Ġis Ġstarted Ġusing Ġthe Ġselected Ġstory . Ġ ĠUse ĠCurrent Story List Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġdetermine Ġwhich Ġstory ĊĠĠĠĠĠĠĠ ĠlistView . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). switch To Story ( Current Story List [ position ]) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssign Ġadapter Ġto ĠListView ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlf view ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates ĠList Adapter Ġto Ġuse Ġthe Ġnewly Ġprovided Ġlist . ĠThis Ġis Ġvery Ġhelpful Ġwhen Ġfilter Ġoptions ĊĠĠĠĠ Ġ* Ġare Ġused . ĊĠĠĠĠ Ġ* Ġ@ param Ġstory List ĠList Ġof Ġnew Ġstories Ġto Ġbe Ġused Ġin Ġthe ĠList Adapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Story List ( story List : ĠList < Story >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠD KH Ġ- Ġ 0 7 / 1 0 / 2 0 2 1 Ġ- ĠIssue Ġ 4 0 7 : ĠAdd Ġfiltering Ġto ĠSP 's Ġ' Story ĠTemplates ' ĠList ĊĠĠĠĠĠĠĠ Ġ// ĠUpdated Ġwhile Ġintegr ating Ġpull Ġrequest Ġ# 5 6 1 Ġinto Ġcurrent Ġs ills dev Ġbaseline ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠUpdate ĠCurrent Story List Ġso Ġthat Ġwhen Ġa Ġclick Ġis Ġmade Ġon Ġa Ġstory , Ġwe Ġknow Ġwhich ĊĠĠĠĠĠĠĠ Ġ// Ġstory Ġis Ġselected ĊĠĠĠĠĠĠĠ ĠCurrent Story List Ġ= Ġstory List ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Adapter ( context !! , ĠR . layout . story _ list _ item , Ġstory List , Ġstory Page Tab ) ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( story Page Tab . has Filter Toolbar Ġ&& Ġstory Page Tab . get Story List (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Fragment : ĠFragment Ġ= ĠFilter Toolbar Frag ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction : ĠFragment Transaction Ġ= Ġchild FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . replace ( R . id . filter _ container , Ġchild Fragment ). commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠList Adapter ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġresource Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġstories : ĠList < Story >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġstory Page Tab : ĠStory Page Tab ) Ġ: ĠArray Adapter < Story >( context , Ġresource Id , Ġstories ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġrow Ġ= ĠconvertView ĊĠĠĠĠĠĠĠ Ġval Ġholder : ĠFile Holder ĊĊĠĠĠĠĠĠĠ Ġif Ġ( row Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġ( context Ġas ĠActivity ). layout Inflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġ= Ġinflater . inflate ( resourceId , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġ= ĠFile Holder ( row !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow . tag Ġ= Ġholder ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġ= Ġrow . tag Ġas ĠFile Holder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( position Ġ<= Ġstories . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstory Ġ= Ġstories [ position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 9 / 1 1 / 2 0 2 1 Ġ- ĠD KH : ĠUpdate Ġfor ĠTesting ĠAb straction Ġ# 5 6 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠALL _ STOR IES , ĠIN _ PROGRESS , ĠCOMP LETED Ġare Ġthe Ġtabs Ġin Ġthe Ġ" Story ĠTemplates " Ġview . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrevious ly Ġfor Ġall Ġtabs , Ġthe Ġfollowing Ġcode Ġwas Ġused Ġto Ġassign Ġthe Ġtitle : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠ Ġholder . txt Title . text Ġ= Ġstory . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUsing Ġthis Ġcode , Ġthe Ġsame Ġexact Ġtitle Ġcan Ġappear Ġin Ġtwo Ġplaces , Ġeg , Ġonce Ġin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠALL _ STOR IES Ġtab Ġand Ġonce Ġin ĠIN _ PROGRESS Ġtab . Ġ ĠWhen Ġrunning Ġthe ĠE sp ress o Ġtest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġthe ĠE sp ress o Ġtitle Ġpicker Ġthrows Ġan Ġexception Ġbecause Ġit Ġcannot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġdifferent iate Ġbetween Ġthe Ġsame Ġtitle Ġin Ġthe ĠALL _ STOR IES Ġtab Ġand Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġthe ĠIN _ PROGRESS Ġtab . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTo Ġprovide Ġmore Ġuni queness , Ġadd Ġone Ġspace Ġto Ġthe Ġtitle Ġin Ġthe ĠIN _ PROGRESS Ġtab , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġtwo Ġspaces Ġto Ġthe Ġtitle Ġin Ġthe ĠCOMP LETED Ġtab Ġand Ġthree Ġspaces Ġto Ġthe Ġtitle Ġin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġany Ġother Ġadded Ġtab bed ĠEN UM S . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠThe Ġusers Ġwill Ġnot Ġsee Ġa Ġdifference Ġbut Ġthe ĠE sp ress o Ġsoftware Ġwill Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġable Ġto Ġpick Ġthe Ġappropriate Ġstory / tab Ġcombo . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠE sp ress o Ġtest Ġwill Ġhave Ġto Ġreflect Ġthis Ġnew Ġnaming Ġconvention Ġfor Ġstories Ġin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġeach Ġtab . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( story Page Tab ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStory Page Tab . ALL _ STOR IES -> Ġholder . txt Title . text Ġ= Ġstory . title Ġ Ġ// Ġleave Ġunchanged ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStory Page Tab . IN _ PROGRESS -> Ġholder . txt Title . text Ġ= Ġstory . title Ġ+ Ġ" Ġ" Ġ// Ġadd Ġ 1 Ġspace Ġfor Ġuni queness ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStory Page Tab . COMPLETED -> Ġholder . txt Title . text Ġ= Ġstory . title Ġ+ Ġ" Ġ Ġ" Ġ// Ġadd Ġ 2 Ġspaces Ġfor Ġuni queness ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġholder . txt Title . text Ġ= Ġstory . title Ġ+ Ġ" ĠĠ Ġ" Ġ Ġ// Ġadd Ġ 3 Ġspaces Ġfor Ġuni queness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġput Ġth Ġnumber Ġ 2 5 Ġin Ġsome Ġconfiguration . Ġ ĠWhat Ġif Ġthe Ġimages Ġare Ġdifferent Ġsizes ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Use Ġthe Ġ" second " Ġimage , Ġbecause Ġthe Ġfirst Ġis Ġjust Ġfor Ġthe Ġtitle Ġscreen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . img Icon . setImage Bitmap ( Slide Service ( context ). getImage ( 1 , Ġ 2 5 , Ġstory )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Sub Title . text Ġ= Ġstory . slides [ 0 ]. subtitle ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġgray ing Ġout Ġtext Ġwhen Ġstory Ġis Ġcompleted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( story Page Tab Ġ== ĠStory Page Tab . ALL _ STOR IES Ġ&& Ġstory . is Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Title . alpha Ġ= Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Sub Title . alpha Ġ= Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Title . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt Sub Title . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġthe Ġimage Ġicon Ġto Ġthe Ġside Ġof Ġthe Ġstory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġstory Page Tab Ġ== ĠStory Page Tab . ALL _ STOR IES ) Ġ{ Ġ// ĠOnly Ġshow Ġicon Ġon ĠALL ĠSt ories ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif ( story . is Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . story _ list _ completed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( story . in Progress Ġ&& Ġ! story . is Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . story _ list _ in _ progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Icon Ġ: ĠImageView Ġ= Ġrow . findViewById ( R . id . progress _ icon ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( color Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Icon . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Icon . set BackgroundColor ( context . getColor ( color )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠFile Holder ( view : ĠView ){ ĊĠĠĠĠĠĠĠ Ġvar Ġimg Icon : ĠImageView Ġ= Ġview . findViewById ( R . id . story _ list _ image ) ĊĠĠĠĠĠĠĠ Ġvar Ġtxt Title : ĠTextView Ġ= Ġview . findViewById ( R . id . story _ list _ title ) ĊĠĠĠĠĠĠĠ Ġvar Ġtxt Sub Title : ĠTextView Ġ= Ġview . findViewById ( R . id . story _ list _ subtitle ) ĊĠĠĠ Ġ} Ċ Ċ }