package Ġcom . gmail . to fib ash ers . map wit ht ools . zoom čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . graphics . drawable . Drawable č Ċ import Ġandroid . os . Build č Ċ import Ġandroid . support . annotation . Id Res č Ċ import Ġandroid . support . v 4 . content . Context Compat č Ċ import Ġandroid . util . Attribute Set č Ċ import Ġandroid . view . View č Ċ import Ġandroid . widget . Frame Layout č Ċ import Ġandroid . widget . LinearLayout č Ċ import Ġandroid . widget . Seek Bar č Ċ import Ġcom . gmail . to fib ash ers . map wit ht ools . Base Builder č Ċ import Ġcom . gmail . to fib ash ers . map wit ht ools . R č Ċ import Ġcom . gmail . to fib ash ers . map wit ht ools . internal . Map With Tools Dsl č Ċ import Ġkotlinx . android . synt hetic . main . view _ zoom _ range bar . view .* čĊčĊč Ċ /** čĊ Ġ* ĠCreated Ġby ĠT of iB ash ers Ġon Ġ 0 7 . 0 4 . 2 0 1 9 . čĊ Ġ* čĊ Ġ* ĠThis Ġclass Ġrepresents Ġzoom ing Ġview Ġwith Ġmanual Ġsetting Ġzoom Ġlevels Ġcount . čĊ Ġ*/ č Ċ class ĠZoom Range Bar View Ġ: ĠLinearLayout Ġ{ čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġzoom Max Image : ĠDrawable čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġzoom Min Image : ĠDrawable čĊčĊĠĠĠ Ġprivate Ġval Ġon Seek bar ChangeListener Ġ= Ġobject Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Zoom Levels ChangeListener ?. on Zoom Level Changed ( seek bar _ range . progress , Ġlevels Count ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġlevels Count : ĠInt Ġ= ĠDEFAULT _ LEVEL S _ COUNT čĊĠĠĠĠĠĠĠ Ġprivate Ġset čĊčĊĠĠĠ Ġvar Ġon Zoom Levels ChangeListener : ĠOn Zoom Level ChangeListener ? Ġ= Ġnull čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit ( attrs ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style Attr ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt , Ġdef Style Res : ĠInt ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit ( attrs , Ġdef Style Attr , Ġdef Style Res ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġconstructor ( context : ĠContext , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Id Res Ġid : ĠInt , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Max Image : ĠDrawable , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Min Image : ĠDrawable , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevels Count : ĠInt ) Ġ: Ġsuper ( context ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid čĊĠĠĠĠĠĠĠ Ġthis . zoom Max Image Ġ= Ġzoom Max Image čĊĠĠĠĠĠĠĠ Ġthis . zoom Min Image Ġ= Ġzoom Min Image čĊĠĠĠĠĠĠĠ Ġthis . levels Count Ġ= Ġlevels Count čĊĠĠĠĠĠĠĠ Ġinit Range Bar With Images () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠMan ually Ġset Ġprogress Ġlevel Ġwithout Ġcalling Ġany Ġlisteners . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġset Progress Without Notify ( progress : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġseek bar _ range . setOn Seek Bar ChangeListener ( null ) čĊĠĠĠĠĠĠĠ Ġseek bar _ range . progress Ġ= Ġprogress čĊĠĠĠĠĠĠĠ Ġseek bar _ range . setOn Seek Bar ChangeListener ( on Seek bar ChangeListener ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 , Ġdef Style Res : ĠInt Ġ= Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠ Ġzoom Max Image Ġ= ĠContext Compat . get Drawable ( context , ĠDEFAULT _ ZO OM _ HIGH _ IMAGE _ ID ) !! čĊĠĠĠĠĠĠĠ Ġzoom Min Image Ġ= ĠContext Compat . get Drawable ( context , ĠDEFAULT _ ZO OM _ LOW _ IMAGE _ ID ) !! čĊĠĠĠĠĠĠĠ Ġlevels Count Ġ= ĠDEFAULT _ LEVEL S _ COUNT čĊĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Zoom Range Bar View , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Res ). apply Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Max Image Ġ= Ġget Drawable ( R . style able . Zoom Range Bar View _ zoom Max Image ) Ġ?: Ġzoom Max Image čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Min Image Ġ= Ġget Drawable ( R . style able . Zoom Range Bar View _ zoom Min Image ) Ġ?: Ġzoom Min Image čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevels Count Ġ= Ġget Integer ( R . style able . Zoom Range Bar View _ levels Count , ĠDEFAULT _ LEVEL S _ COUNT ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycle () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġinit Range Bar With Images () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġinit Range Bar With Images () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġzoom Range Bar View Ġ= ĠView . inflate ( context , ĠR . layout . view _ zoom _ range bar , Ġnull ) čĊĠĠĠĠĠĠĠ Ġzoom Range Bar View . layout Params Ġ= ĠFrame Layout . LayoutParams ( LayoutParams . WRAP _ CONTENT , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayout Params . WRAP _ CONTENT ) čĊčĊĠĠĠĠĠĠĠ Ġadd View ( zoom Range Bar View ) čĊčĊĠĠĠĠĠĠĠ Ġseek bar _ range . max Ġ= Ġlevels Count čĊĠĠĠĠĠĠĠ Ġseek bar _ range . setOn Seek Bar ChangeListener ( on Seek bar ChangeListener ) čĊčĊĠĠĠĠĠĠĠ Ġimage _ zoom _ min . setImage Drawable ( zoom Min Image ) čĊĠĠĠĠĠĠĠ Ġimage _ zoom _ min . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek bar _ range . increment Progress By (- 1 ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġimage _ zoom _ min . setOn Long ClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek bar _ range . progress Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġseek bar _ range . min čĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Long ClickListener Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġimage _ zoom _ max . setImage Drawable ( zoom Max Image ) čĊĠĠĠĠĠĠĠ Ġimage _ zoom _ max . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek bar _ range . increment Progress By ( 1 ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġimage _ zoom _ max . setOn Long ClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġseek bar _ range . progress Ġ= Ġseek bar _ range . max čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Long ClickListener Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinterface ĠOn Zoom Level ChangeListener Ġ{ čĊĠĠĠĠĠĠĠ Ġfun Ġon Zoom Level Changed ( zoom Level : ĠInt , Ġzoom Levels Count : ĠInt ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġopen Ġclass ĠDefault Zoom Range Bar View Builder ( context : ĠContext ): ĠBase Builder < Zoom Range Bar View >( context ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġ_ id Ġ= ĠR . id . zoom _ range bar _ default čĊčĊĠĠĠĠĠĠĠ Ġprotected Ġvar Ġ_ zoom High Image : ĠDrawable Ġ= ĠContext Compat . get Drawable ( context , ĠDEFAULT _ ZO OM _ HIGH _ IMAGE _ ID ) !! čĊĠĠĠĠĠĠĠ Ġprotected Ġvar Ġ_ zoom Low Image : ĠDrawable Ġ= ĠContext Compat . get Drawable ( context , ĠDEFAULT _ ZO OM _ LOW _ IMAGE _ ID ) !! čĊĠĠĠĠĠĠĠ Ġprotected Ġvar Ġ_ levels Count : ĠInt Ġ= ĠDEFAULT _ LEVEL S _ COUNT čĊčĊĠĠĠĠĠĠĠ Ġ@ Published Api čĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠZoom Range Bar View Ġ= ĠZoom Range Bar View ( context , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ zoom High Image , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ zoom Low Image , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ levels Count ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠThis Ġis Ġpreferred Ġway Ġfor Ġcreation Ġ[ Zoom Range Bar View ] Ġfrom ĠJava Ġcode . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġclass ĠBuilder ( context : ĠContext ): ĠDefault Zoom Range Bar View Builder ( context ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġview Ġid . ĠIf Ġnot , Ġ[ R . id . zoom _ range bar _ default ] Ġis Ġdefault Ġvalue . čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun ĠsetId (@ Id Res Ġid : ĠInt ) Ġ= Ġapply Ġ{ Ġthis ._ id Ġ= Ġid Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġzoom Ġhighest Ġimage . ĠDefault Ġimage Ġis Ġ[ DEFAULT _ ZO OM _ HIGH _ IMAGE _ ID ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġset Zoom High Image ( zoom High Image : ĠDrawable ) Ġ= Ġapply Ġ{ Ġthis ._ zoom High Image Ġ= Ġzoom High Image Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġzoom Ġlowest Ġimage . ĠDefault Ġimage Ġis Ġ[ DEFAULT _ ZO OM _ LOW _ IMAGE _ ID ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġset Zoom Low Image ( zoom Low Image : ĠDrawable ) Ġ= Ġapply Ġ{ Ġthis ._ zoom Low Image Ġ= Ġzoom Low Image Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġzoom ing Ġlevels Ġcount . ĠDefault Ġvalue Ġis Ġ[ DEFAULT _ LEVEL S _ COUNT ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġset Levels Count ( levels Count : ĠInt ) Ġ= Ġapply Ġ{ Ġthis ._ levels Count Ġ= Ġlevels Count Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġpublic Ġfun Ġbuild (): ĠZoom Range Bar View Ġ= Ġsuper . build () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠThis Ġis Ġpreferred Ġway Ġfor Ġcreation Ġ[ Zoom Range Bar View ] Ġfrom ĠKotlin Ġcode . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ Map With Tools Dsl čĊĠĠĠ Ġclass ĠD sl Builder ( context : ĠContext ): ĠDefault Zoom Range Bar View Builder ( context ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠView Ġid . ĠIf Ġnot Ġset , Ġ[ R . id . zoom _ range bar _ default ] Ġis Ġdefault Ġvalue . čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġvar Ġid : ĠInt čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Id Res Ġget () Ġ= Ġ_ id čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset (@ Id Res Ġvalue ) Ġ{ Ġ_ id Ġ= Ġvalue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠZoom Ġhighest Ġimage . ĠDefault Ġimage Ġis Ġ[ DEFAULT _ ZO OM _ HIGH _ IMAGE _ ID ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġvar Ġzoom High Image : ĠDrawable čĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ zoom High Image čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġ_ zoom High Image Ġ= Ġvalue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠZoom Ġlowest Ġimage . ĠDefault Ġimage Ġis Ġ[ DEFAULT _ ZO OM _ LOW _ IMAGE _ ID ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġvar Ġzoom Low Image : ĠDrawable čĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ zoom Low Image čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġ_ zoom Low Image Ġ= Ġvalue } čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠLevel s Ġcount Ġof Ġzoom Ġview . ĠDefault Ġvalue Ġis Ġ[ DEFAULT _ LEVEL S _ COUNT ] čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġvar Ġlevels Count : ĠInt čĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ levels Count čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġ_ levels Count Ġ= Ġvalue Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ ZO OM _ HIGH _ IMAGE _ ID Ġ= ĠR . drawable . ic _ default _ plus čĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ ZO OM _ LOW _ IMAGE _ ID Ġ= ĠR . drawable . ic _ default _ minus čĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ LEVEL S _ COUNT Ġ= Ġ 5 čĊĠĠĠ Ġ} č Ċ }