package Ġcom . m ichael fl is ar . settings . demo . advanced . settings Ċ Ċ import Ġcom . m ichael fl is ar . settings . utils . interfaces . IC ustom Setting Ċ import Ġcom . m ichael fl is ar . settings . core . classes . Settings Icon Ċ import Ġcom . m ichael fl is ar . settings . core . enums . Change Type Ċ import Ġcom . m ichael fl is ar . settings . core . enums . Support Type Ċ import Ġcom . m ichael fl is ar . settings . core . interfaces . I Settings Data Ċ import Ġcom . m ichael fl is ar . settings . core . items . setup s . Text Setup Ċ import Ġcom . m ichael fl is ar . settings . core . settings . String Setting Ċ import Ġcom . m ichael fl is ar . settings . demo . R Ċ import Ġcom . m ichael fl is ar . settings . demo . advanced . data . db . Folder With Folders Ċ import Ġcom . m ichael fl is ar . settings . demo . advanced . data . global . Global Preference Ċ import Ġcom . m ichael fl is ar . settings . utils . Settings Data Ċ import Ġcom . m ichael fl is ar . settings . utils . interfaces . IG lobal Setting Ċ import Ġcom . m ichael fl is ar . text . as Text Ċ import Ġkotlinx . android . parcel . Ignored On Parcel Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ @ Parcel ize Ċ object ĠSet t Folder Tag Ġ: ĠString Setting ( ĊĠĠĠĠĠĠĠĠ 6 L , Ġ// ĠTODO ĊĠĠĠĠĠĠĠ Ġ" Folder Ġtag ". as Text (), ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ ĠSettings Icon ( R . drawable . ic _ label _ outline _ white _ 2 4 dp ), ĊĠĠĠĠĠĠĠ ĠText Setup ( true ) Ċ ), ĠI Global Setting < String , ĠGlobal Preference >, ĠI Custom Setting < String , ĠFolder With Folders > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġon ValueChanged Ġ= Ġ{ Ġsettings Data : ĠI Settings Data , Ġchange : ĠChange Type Ġ-> ĊĠĠĠĠĠĠĠ Ġ// Ġcallback ... Ġunused Ġin Ġthe Ġdemo Ġbut Ġmay Ġbe Ġuseful Ġin Ġa Ġreal Ġworld Ġexample ĊĠĠĠĠĠĠĠ Ġ// Ġe . g . Ġto Ġforward Ġan Ġevent Ġto Ġan Ġobservable Ġthat Ġis Ġused Ġin Ġdifferent ĠUI Ġparts Ġof Ġthe Ġapp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ------------ ĊĠĠĠ Ġ// ĠGlobal ĊĠĠĠ Ġ// Ġ------------ ĊĊĠĠĠ Ġoverride Ġval Ġglobal Item : ĠGlobal Preference Ġ= ĠGlobal Preference ĊĠĠĠ Ġoverride Ġval Ġglobal Read Func : Ġ( Global Preference . () Ġ-> ĠString ) Ġ= Ġ{ Ġfolder Tag . value Ġ} ĊĠĠĠ Ġoverride Ġval Ġglobal Write Func : Ġ( Global Preference .( String ) Ġ-> ĠBoolean ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Tag . update ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġon After Global Write Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ------------ ĊĠĠĠ Ġ// ĠCustom ĊĠĠĠ Ġ// Ġ------------ ĊĊĠĠĠ Ġoverride Ġfun Ġget Custom Item ( settings Data : ĠSettings Data . Custom ): ĠFolder With Folders Ġ= Ġsettings Data . load Item ( Folder With Folders :: class . java ) ĊĊĠĠĠ Ġoverride Ġval Ġcustom Read Func : Ġ( Folder With Folders . () Ġ-> ĠString ) Ġ= Ġ{ Ġfolder . custom Tag Ġ} ĊĠĠĠ Ġoverride Ġval Ġcustom Write Func : Ġ( Folder With Folders .( String ) Ġ-> ĠBoolean ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġfolder . custom Tag Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcustom Read IsEnabled Func : Ġ( Folder With Folders . () Ġ-> ĠBoolean ) Ġ= Ġ{ Ġfolder . has Custom Tag Ġ} ĊĠĠĠ Ġoverride Ġval Ġcustom Write IsEnabled Func : Ġ( Folder With Folders .( Boolean ) Ġ-> ĠBoolean ) Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġfolder . has Custom Tag Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġon After Custom Write : Ġ(( item : ĠFolder With Folders , Ġchange : ĠChange Type ) Ġ-> ĠUnit ) Ġ= Ġ{ Ġitem , Ġchange Ġ-> ĊĠĠĠĠĠĠĠ Ġitem . folder . persist () ĊĠĠĠ Ġ} Ċ }