package Ġfr . uge . conf roid . configurations . fragments Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Navigation Ċ import Ġfr . uge . conf roid . R Ċ import Ġfr . uge . conf roid . configurations . model . Config Ċ import Ġfr . uge . conf roid . configurations . model . Field Ċ import Ġfr . uge . conf roid . configurations . services . Configuration Versions Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ config .* ĊĊ Ċ /** Ċ Ġ* ĠThis ĠFragment Ġretrieves Ġa Ġconfig Ġwith Ġa Ġfield Ġselected Ġby Ġthe Ġuser , Ċ Ġ* Ġthen Ġthe Ġuser Ġcan Ġmodify Ġthe Ġfield . Ċ Ġ* ĠIt Ġwill Ġadd Ġa Ġnew Ġconfig Ġinto Ġthe Ġdatabase . Ċ Ġ* Ċ Ġ* Ġ@ author ĠA il ton ĠL op es ĠMen des Ċ Ġ* Ġ@ author ĠJon athan ĠCH U Ċ Ġ* Ġ@ author ĠF ab ien ĠL AM BER T -- DEL AVA QU ER IE Ċ Ġ* Ġ@ author ĠAk ram ĠM ALE K Ċ Ġ* Ġ@ author ĠG Ã© ral d ĠLIN Ċ Ġ*/ Ċ class ĠAdd Config Fragment Ġ: ĠFragment ( R . layout . fragment _ add _ config ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfields : ĠArrayList < Field > ĊĠĠĠ Ġprivate Ġvar Ġnew version : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġlateinit Ġvar Ġconfigs Versions : ĠList < Int > ĊĠĠĠ Ġval Ġfilter : ĠIntent Filter Ġ= ĠIntent Filter () ĊĊĠĠĠ Ġprivate Ġval Ġreceiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . action Ġ== ĠAll Versions Fragment . broadcast Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversions Ġ= Ġintent . get Serializable Extra (" versions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs Versions Ġ= Ġ(( versions Ġas ĠArray < Config >). toList ()). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( activity , ĠConfiguration Versions :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). stop Service ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= ĠNavigation . find Nav Controller ( view ) ĊĠĠĠĠĠĠĠ Ġvar Ġapp Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġold version Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfilter . addAction ( All Versions Fragment . broadcast Action ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields Ġ= Ġit . get (" fields ") Ġas ĠArrayList < Field > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Ġ= Ġit . getString (" app _ name "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold version Ġ= Ġit . getInt (" version _ number ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġapp _ name . text Ġ= Ġapp ĊĠĠĠĠĠĠĠ Ġedit Tag . hint Ġ= Ġ" Version Ġ$ old version Ġmodified " ĊĊĊĠĠĠĠĠĠĠ ĠIntent ( activity , ĠConfiguration Versions :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" app ", Ġapp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). start Service ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinalize Config . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit Version . text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew version Ġ= ĠInteger . parseInt ( edit Version . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( configs Versions . contains ( new version )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" version Ġalready Ġsaved ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Tag : ĠString Ġ= Ġif Ġ( edit Tag . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Version Ġ$ old version Ġmodified " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Tag . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Fragment . model . add Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtoJson Format (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( R . id . action _ create Config Fragment _ to _ app Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠtoJson Format (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres : ĠStringBuilder Ġ= Ġjava . lang . StringBuilder () ĊĠĠĠĠĠĠĠ Ġres . append ("{ ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfields . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . append ( fields [ i ]. toJson Format ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġfields . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . append (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġres . append (" }") ĊĠĠĠĠĠĠĠ Ġreturn Ġres . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ ĠPO UR ĠEN REGISTR ER ĠLE ĠRE CE IVER ĠDE ĠL ' INT ENT ĠD U ĠSERVICE ĠDE ĠP ULL ER ĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. unregister Receiver ( receiver ) ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġactivity ?. register Receiver ( receiver , Ġfilter ) ĊĠĠĠ Ġ} Ċ }