package Ġcom . in fin um . db inspector . ui . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . core . view . children Ċ import Ġandroidx . core . view . isIn visible Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . in fin um . db inspector . R Ċ import Ġcom . in fin um . db inspector . databinding . D bins pector Activity Settings Binding Ċ import Ġcom . in fin um . db inspector . databinding . D bins pector Item Ignored TableName Binding Ċ import Ġcom . in fin um . db inspector . domain . settings . models . Settings Ċ import Ġcom . in fin um . db inspector . domain . shared . models . Blob Preview Mode Ċ import Ġcom . in fin um . db inspector . domain . shared . models . Truncate Mode Ċ import Ġcom . in fin um . db inspector . ui . Presentation Ċ import Ġcom . in fin um . db inspector . ui . shared . base . Base Activity Ċ import Ġcom . in fin um . db inspector . ui . shared . deleg ates . view Binding Ċ import Ġkotlin . math . round ToInt Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ @ Suppress (" Too Many Functions ") Ċ internal Ġclass ĠSettings Activity Ġ: ĠBase Activity < Settings State , ĠSettings Event >() Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġbinding Ġby Ġview Binding ( D bins pector Activity Settings Binding :: inflate ) ĊĊĠĠĠ Ġoverride Ġval ĠviewModel : ĠSettings ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġinit Ui () ĊĊĠĠĠĠĠĠĠ ĠviewModel . load () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon State ( state : ĠSettings State ) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSettings State . Settings Ġ-> Ġsetup Ui ( state . settings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Event ( event : ĠSettings Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSettings Event . Add Ignored Table Ġ-> Ġadd New Ignored TableName View ( event . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSettings Event . Remove Ignored Table Ġ-> Ġremove Ignored TableName View ( event . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Ui () Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . value From Ġ= ĠPresentation . Constants . Settings . LINES _ LIMIT _ MIN IMUM . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . value To Ġ= ĠPresentation . Constants . Settings . LINES _ LIMIT _ MAXIMUM . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecrease Lines Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . value Ġ= Ġ( lines Slider . value Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce At Least ( Presentation . Constants . Settings . LINES _ LIMIT _ MIN IMUM . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrease Lines Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . value Ġ= Ġ( lines Slider . value Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce At Most ( Presentation . Constants . Settings . LINES _ LIMIT _ MAXIMUM . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ui ( settings : ĠSettings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Ignored Table Names ( settings ) ĊĠĠĠĠĠĠĠ Ġsetup Lines Limit ( settings ) ĊĠĠĠĠĠĠĠ Ġsetup Blob Preview ( settings ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ignored Table Names ( settings : ĠSettings ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Input Layout . set End Icon OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Input Layout . edit Text ?. text ?. toString (). or Empty (). trim (). split ("," ). forEach Ġ{ ĠnewName Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ignored TableName View ( new Name . trim ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . ignored Table Names . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames Layout . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ignored TableName View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Lines Limit ( settings : ĠSettings ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines CheckBox . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines CheckBox . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines CheckBox . isChecked Ġ= Ġsettings . lines Limit Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines CheckBox . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines View . isIn visible Ġ= Ġis Checked . not () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines Layout . isVisible Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . toggle Lines Limit ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines View . isIn visible Ġ= Ġsettings . lines Limit Enabled . not () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Layout . isVisible Ġ= Ġsettings . lines Limit Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines View . text Ġ= Ġsettings . lines Count . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . clear OnChange Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . value Ġ= Ġsettings . lines Count . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines Slider . add On ChangeListener Ġ{ Ġ_, Ġvalue , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines View . text Ġ= Ġvalue . round ToInt (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Lines Count ( value . round ToInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtruncate Group . clear On Button Checked Listeners () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtruncate Group . check ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( settings . truncate Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uncate Mode . START Ġ-> ĠR . id . truncate Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uncate Mode . MIDDLE Ġ-> ĠR . id . truncate Middle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTr uncate Mode . END Ġ-> ĠR . id . truncate End ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . id . truncate End ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtruncate Group . add On Button Checked Listener Ġ{ Ġ_, Ġchecked Id , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . truncate Start Ġ-> ĠTr uncate Mode . START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . truncate Middle Ġ-> ĠTr uncate Mode . MIDDLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . truncate End Ġ-> ĠTr uncate Mode . END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTr uncate Mode . END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Truncate Mode ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Blob Preview ( settings : ĠSettings ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblob Preview Group . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Holder Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġutf 8 Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhexadecimal Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase 6 4 Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblob Preview Group . check ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( settings . blob Preview Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlob Preview Mode . PLACE HOLDER Ġ-> ĠR . id . place Holder Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlob Preview Mode . UTF _ 8 Ġ-> ĠR . id . utf 8 Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlob Preview Mode . HEX Ġ-> ĠR . id . hex adecimal Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlob Preview Mode . BASE _ 6 4 Ġ-> ĠR . id . base 6 4 Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . id . place Holder Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblob Preview Group . setOn Checked ChangeListener Ġ{ Ġ_, Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . place Holder Button Ġ-> ĠBlob Preview Mode . PLACE HOLDER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . utf 8 Button Ġ-> ĠBlob Preview Mode . UTF _ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . hex adecimal Button Ġ-> ĠBlob Preview Mode . HEX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . base 6 4 Button Ġ-> ĠBlob Preview Mode . BASE _ 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠBlob Preview Mode . PLACE HOLDER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Blob Preview Type ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ignored TableName View ( name : ĠString ): ĠLinearLayout Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠD bins pector Item Ignored TableName Binding . inflate ( layout Inflater , Ġbinding . names Layout , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . name View . text Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġbinding . remove Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove Ignored TableName ( binding . name View . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . root . tag Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Ignored TableName View ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġignored Names Ġ= Ġnames Layout . children ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < LinearLayout >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . tag Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ! in Ġignored Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Ignored TableName ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd New Ignored TableName View ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Layout . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ignored TableName View ( name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtableName Input Layout . edit Text ?. text ?. clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Ignored TableName View ( name : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnames Layout . children ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < LinearLayout >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Ġ{ Ġit . tag Ġ== Ġname Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġnames Layout . remove View ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ