package Ġcom . example . my library . sections . series Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . my library . R Ċ import Ġcom . example . my library . data Layer . books . Get Books Ċ import Ġcom . example . my library . data Layer . series . Delete Series Ċ import Ġcom . example . my library . data Layer . series . Save Series Ċ import Ġcom . example . my library . d tos . Book Dto Ċ import Ġcom . example . my library . d tos . Series Dto Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġcom . google . android . material . chip . Chip Group Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ series .* Ċ Ċ /** Ċ Ġ* ĠUsed Ġto Ġhandle Ġadding Ġand Ġediting Ġseries Ġin Ġthe Ġsystem Ċ Ġ* Ċ Ġ* Ġ@ param Ġparent Ġthe Ġcontaining Ġfragment Ċ Ġ* Ċ Ġ*/ Ċ class ĠAdd Series ( private Ġval Ġparent : ĠSeries Section ) Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġselected Books : ĠMutable List < Book Dto > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġbook IS B Ns : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġbook Names : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġbook Types : ĠMutable List < Int > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar Ġseries : ĠSeries Dto ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġseries View : ĠView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġseries View Ġ= Ġinflater . inflate ( R . layout . fragment _ add _ series , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġseries Ġ= Ġarguments ?. get Parcelable (" Series ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsave Button Ġ= Ġseries View . findViewById ( R . id . save Series Button ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġval Ġdelete Button Ġ= Ġseries View . findViewById ( R . id . delete Series Button ) Ġas ĠButton ĊĊĠĠĠĠĠĠĠ Ġsave Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Series () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelete Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Series () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGet Books ( this ). execute (" Add Series ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġseries View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġpopulate Ġthe Ġauto Ġcomplete Ġtext Ġview Ġfor Ġbooks ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbooks Ġlist Ġof Ġbooks Ġto Ġuse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Books ( books : ĠList < Book Dto >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( book Ġin Ġbooks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Names . add ( String . format ("% s Ġ- Ġ% s ", Ġbook . isbn , Ġbook . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook IS B Ns . add ( book . isbn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Types . add ( book . type Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbook Picker Ġ= Ġseries View . findViewById < Auto Complete TextView >( R . id . pick Book Input ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbook Adapter : ĠArray Adapter < String > Ġ= ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġas ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ spinner _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . book Names ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbook Picker . setAdapter ( book Adapter ) ĊĠĠĠĠĠĠĠ Ġbook Picker . on ItemClickListener Ġ= Ġobject Ġ: ĠAdapter View . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( p 0 : ĠAdapter View < *> ?, Ġitem : ĠView ?, Ġp 2 : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbook Names . indexOf (( item Ġas ĠAppCompat TextView ). text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Books . add ( Book Dto ( book IS B Ns [ position ], Ġbook Names [ position ], Ġbooks [ position ]. type Id , Ġcreated Date Ġ= Ġbooks [ position ]. created Date , Ġimage Ġ= Ġbooks [ position ]. image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Group Ġ= Ġseries View . findViewById < Chip Group >( R . id . books ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( chip Group . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġbook Names [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . chip Icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ clear _ 2 4 px , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setOnClickListener ( object Ġ: ĠView . OnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Chip ( chip ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . addView ( chip ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Picker . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( series Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Inputs ( series Ġas ĠSeries Dto , Ġseries View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġset Ġthe Ġform Ġinputs Ġwith Ġexisting Ġseries Ġdata Ġif Ġthere Ġis Ġone ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġseries Ġexisting Ġseries Ġto Ġbe Ġedited ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġthe Ġview Ġcontaining Ġthe Ġform ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Inputs ( series : ĠSeries Dto , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . series Name Input ). text Ġ= Ġseries . name ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . series Id ). text Ġ= Ġseries . id . toString () ĊĠĠĠĠĠĠĠ Ġview . findViewById < Button >( R . id . delete Series Button ). visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġchip Group Ġ= Ġseries View . findViewById < Chip Group >( R . id . books ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( book Ġin Ġseries . books ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook IS B Ns . add ( book . isbn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Names . add ( book . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( chip Group . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= ĠString . format ("% s Ġ- Ġ% s ", Ġbook . isbn , Ġbook . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . chip Icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ clear _ 2 4 px , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip ToDelete Ġ= Ġit Ġas ĠCh ip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Chip ( chip ToDelete ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group . addView ( chip ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġcall Ġthe Ġtask Ġto Ġsave Ġa Ġseries ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsave Series () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġseries Ġ= ĠSeries Dto ( id Ġ= Ġ 0 , Ġname Ġ= Ġseries Name Input . text . toString (), Ġbooks Ġ= Ġselected Books ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( series . name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Name Ġrequired ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( series . books . count () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" A Ġbook Ġis Ġrequired ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexisting Id Ġ= Ġseries View . findViewById < TextView >( R . id . series Id ). text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( existing Id . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseries . id Ġ= Ġexisting Id . toInt () ĊĊĠĠĠĠĠĠĠ ĠSave Series ( this , Ġseries ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġcall Ġthe Ġtask Ġto Ġdelete Ġa Ġseries ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdelete Series () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġseries Ġ= ĠSeries Dto ( id Ġ= Ġseries Id . text . toString (). toInt (), Ġname Ġ= Ġseries Name Input . text . toString ()) ĊĊĠĠĠĠĠĠĠ ĠDelete Series ( this , Ġseries ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġreturn Ġto Ġlist Ġand Ġindicate Ġdelete Ġwas Ġsuccessful ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġseries Deleted () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Series Ġdeleted Ġsuccessfully ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġparent . back Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġreturn Ġto Ġlist Ġand Ġindicate Ġsave Ġwas Ġsuccessful ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġseries Saved () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this . context , Ġ" Series Ġsaved Ġsuccessfully ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġparent . back Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthis Ġis Ġused Ġto Ġremove Ġthe Ġbook Ġfrom Ġthe Ġselection Ġfor Ġthe Ġseries ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchip Ġthe Ġchip Ġrepresenting Ġthe Ġbook ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġremove Chip ( chip : ĠCh ip ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġselected Books . find Ġ{ Ġit . name Ġ== Ġchip . text . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġselected Books . remove ( book ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchip Group Ġ= Ġseries View . findViewById < Chip Group >( R . id . books ) ĊĠĠĠĠĠĠĠ Ġchip Group . remove View ( chip ) ĊĠĠĠ Ġ} Ċ } Ċ