package Ġcom . de de . n ativ et ools . net speed Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . preference . Preference Fragment Compat Ċ import Ġcom . de de . n ativ et ools . R Ċ import Ġcom . de de . n ativ et ools . databinding . Layout Net Speed Advanced Header Binding Ċ import Ġcom . de de . n ativ et ools . main . apply Bottom Bars Insets Ċ import Ġcom . de de . n ativ et ools . net speed . service . Net Speed Service Controller Ċ import Ġcom . de de . n ativ et ools . net speed . utils . Net Text Icon Factory Ċ import Ġcom . de de . n ativ et ools . ui . Slider Preference Ċ import Ġcom . de de . n ativ et ools . util . global Preferences Ċ import Ġcom . de de . n ativ et ools . util . require Preference Ċ import Ġcom . google . android . material . slider . Label Formatter Ċ import Ġcom . google . android . material . slider . Slider Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* Ġ é«ĺ çº§ è®¾ç½® Ċ Ġ*/ Ċ class ĠNet Speed Advanced Fragment Ġ: ĠPreference Fragment Compat (), ĊĠĠĠ ĠSharedPreferences . On Shared Preference ChangeListener , ĠSlider . On ChangeListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġconfiguration Ġ= ĠNet Speed Configuration . initialize () ĊĠĠĠ Ġprivate Ġval Ġcontroller Ġby Ġlazy Ġ{ ĠNet Speed Service Controller ( require Context ()) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠLayout Net Speed Advanced Header Binding ĊĊĠĠĠ Ġprivate Ġfun ĠSlider Preference . initialize ( ĊĠĠĠĠĠĠĠ Ġlistener : ĠNet Speed Advanced Fragment , ĊĠĠĠĠĠĠĠ Ġlabel Formatter : ĠLabel Formatter ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on ChangeListener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġthis . slider Label Formatter Ġ= Ġlabel Formatter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠLayout Net Speed Advanced Header Binding . inflate ( LayoutInflater . from ( this . context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ĠViewGroup ). addView ( binding . root , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlabel Formatter Percent Ġ= ĠLabel Formatter Ġ{ Ġ"% d Ġ%% ". format (( it Ġ* Ġ 1 0 0 ). round ToInt ()) Ġ} ĊĠĠĠ Ġprivate Ġval Ġlabel Formatter Ratio Ġ= ĠLabel Formatter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdenominator Ġ= Ġ( it Ġ* Ġ 1 0 0 ). round ToInt () ĊĠĠĠĠĠĠĠ Ġval Ġmolec ular Ġ= Ġ 1 0 0 Ġ- Ġdenominator ĊĠĠĠĠĠĠĠ Ġ"$ denom inator Ġ: Ġ$ molec ular " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Preferences From Resource ( R . xml . net _ speed _ advanced _ preference ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ VERTICAL _ OFFSET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Percent ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ OFFSET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Percent ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ RATIO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Ratio ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ DISTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Percent ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ TEXT _ SCALE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Percent ) ĊĠĠĠĠĠĠĠ Ġrequire Preference < Slider Preference >( Net Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ SCALE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initialize ( this , Ġlabel Formatter Percent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcontroller . bind Service () ĊĊĠĠĠĠĠĠĠ Ġapply Bottom Bars Insets ( list View ) ĊĠĠĠĠĠĠĠ Ġupdate Preview ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Preview ( configuration : ĠNet Speed Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . iv Preview . setImage Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Text Icon Factory . create ( 0 , Ġ 0 , Ġconfiguration , Ġ 5 1 2 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtemp Configuration : ĠNet Speed Configuration ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Value Change ( slider : ĠSlider , Ġvalue : ĠFloat , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! from User ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġslider . tag Ġas ĠString ? Ġ?: Ġreturn // ĠSlider Preference åĨħ è®¾ç½® äºĨ tag ĊĠĠĠĠĠĠĠ Ġvar Ġconfig Ġ= Ġtemp Configuration ĊĠĠĠĠĠĠĠ Ġif Ġ( config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= Ġconfiguration . copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Configuration Ġ= Ġconfig ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . update From ( configuration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ VERTICAL _ OFFSET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . vertical Offset Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ OFFSET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . horizontal Offset Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ RATIO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . relative Ratio Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ DISTANCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . relative Distance Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ TEXT _ SCALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . text Scale Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ SCALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . horizontal Scale Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Preview ( config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġglobal Preferences . register On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġglobal Preferences . unregister On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( preferences : ĠSharedPreferences , Ġkey : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration . update On Preference Changed ( key ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ TEXT _ STYLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ FONT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ VERTICAL _ OFFSET , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ OFFSET , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ RATIO , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ REL ATIVE _ DISTANCE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ TEXT _ SCALE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Speed Preferences . KEY _ NET _ SPEED _ HORIZONTAL _ SCALE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Preview ( configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . update Configuration ( configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontroller . unbind Service () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ Ċ }