package Ġcom . ben ny . open launcher . core . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . ben ny . open launcher . core . manager . Setup Ċ import Ġcom . ben ny . open launcher . core . util . Tool Ċ import Ġcom . ben ny . open launcher . core . util . to Px Ċ import Ġcom . ben ny . open launcher . core . widget . Pager Indicator . Mode . ARROW Ċ import Ġcom . ben ny . open launcher . core . widget . Pager Indicator . Mode . NORMAL Ċ Ċ class ĠP ager Indicator Ġ: ĠView , ĠSm ooth ViewPager . On Page ChangeListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpager : ĠSm ooth ViewPager ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġmode Ġ= ĠMode . NORMAL ĊĊĠĠĠ Ġprivate Ġvar Ġdot Size : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġvar Ġdot Paint : ĠPaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĊĠĠĠ Ġprivate Ġvar Ġscale Factor Ġ= Ġ 1 f ĊĠĠĠ Ġprivate Ġvar Ġscale Factor 2 Ġ= Ġ 1 . 5 f ĊĊĠĠĠ Ġprivate Ġvar Ġprevious Page Ġ= Ġ- 1 ĊĊĠĠĠ Ġprivate Ġvar Ġreal Previous Page : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġarrow Path : ĠPath ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġarrow Paint : ĠPaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĊĠĠĠ Ġprivate Ġvar Ġmy X Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġpre Page Count : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġscroll Offset Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġscroll Page Position Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġalpha Fade Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġalpha Show Ġ= Ġfalse ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpad Ġ= Ġ 3 . to Px (). toFloat () ĊĊĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĠĠĠĠĠĠĠ Ġdot Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġdot Paint . stroke Width Ġ= Ġ 2 . to Px (). toFloat () ĊĠĠĠĠĠĠĠ Ġdot Paint . is Anti Alias Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġarrow Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġarrow Paint . is Anti Alias Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġarrow Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġarrow Paint . stroke Width Ġ= Ġpad Ġ/ Ġ 1 . 5 f ĊĠĠĠĠĠĠĠ Ġarrow Paint . stroke Join Ġ= ĠPaint . Join . ROUND ĊĊĠĠĠĠĠĠĠ Ġarrow Path Ġ= ĠPath () ĊĊĠĠĠĠĠĠĠ Ġmode Ġ= ĠSetup . app Settings (). desktop Indicator Mode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Mode ( mode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mode Ġ= Ġmode ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Outline Paint () Ġ{ ĊĠĠĠĠĠĠĠ Ġdot Paint !!. style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Fill Paint () Ġ{ ĊĠĠĠĠĠĠĠ Ġdot Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Color ( c : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdot Paint . color Ġ= Ġc ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ViewPager ( pager : ĠSm ooth ViewPager ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . pager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pager !!. remove On Page ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pager Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get LayoutParams (). width Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . pager Ġ= Ġpager ĊĠĠĠĠĠĠĠ Ġpre Page Count Ġ= Ġpager . adapter . count ĊĠĠĠĠĠĠĠ Ġpager . add On Page ChangeListener ( this ) ĊĊĠĠĠĠĠĠĠ ĠTool . print ( pager . adapter . count ) ĊĠĠĠĠĠĠĠ Ġ// get LayoutParams (). width Ġ= ĠMath . round ( this . pager . get Adapter (). getCount () Ġ* Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 )); ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġhas Trig ged Alpha Show Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pre Page Count Ġ!= Ġpager !!. adapter . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// get LayoutParams (). width Ġ= ĠMath . round ( pager . get Adapter (). getCount () Ġ* Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre Page Count Ġ= Ġpager !!. adapter . count ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscroll Offset Ġ= Ġposition Offset ĊĠĠĠĠĠĠĠ Ġscroll Page Position Ġ= Ġposition ĊĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{} ĊĊĠĠĠ Ġfun Ġshow Now () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove Callbacks ( delay Show ) ĊĠĠĠĠĠĠĠ Ġalpha Show Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġalpha Fade Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelay Show Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġalpha Fade Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġalpha Show Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Delay () Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Delayed ( delay Show , Ġ 5 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠmCurrent Pager State : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠmCurrent Pager State Ġ= Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdot Size Ġ= Ġheight Ġ- Ġpad Ġ* Ġ 1 . 2 5 f ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdot Size Ġ= Ġheight Ġ- Ġpad Ġ* Ġ 1 . 2 5 f ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNORMAL Ġ-> Ġif Ġ( pager Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Paint . alpha Ġ= Ġ 2 5 5 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcircles Width Ġ= Ġpager !!. adapter . count Ġ* Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . translate ( width Ġ/ Ġ 2 Ġ- Ġcircles Width Ġ/ Ġ 2 , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Previous Page Ġ!= Ġpager !!. currentItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal Previous Page Ġ= Ġpager !!. currentItem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġpager !!. adapter . count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Factor Ġ= Ġ 1 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Factor 2 Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġincrease Factor Ġ= Ġ 0 . 0 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġprevious Page Ġ&& Ġi Ġ!= Ġpager !!. currentItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor 2 Ġ= ĠTool . clamp Float ( scale Factor 2 Ġ- Ġincrease Factor , Ġtarget Factor 2 , Ġtarget Factor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTool . print ( scale Factor 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dot Size Ġ/ Ġ 2 Ġ+ Ġpad Ġ+ Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 ) Ġ* Ġi , Ġ( height Ġ/ Ġ 2 ). toFloat (), Ġscale Factor 2 Ġ* Ġdot Size Ġ/ Ġ 2 , Ġdot Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scale Factor 2 Ġ!= Ġtarget Factor 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor 2 Ġ= Ġ 1 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Page Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( pager !!. currentItem Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Page Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Page Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Ġ= ĠTool . clamp Float ( scale Factor Ġ+ Ġincrease Factor , Ġtarget Factor 2 , Ġtarget Factor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dot Size Ġ/ Ġ 2 Ġ+ Ġpad Ġ+ Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 ) Ġ* Ġi , Ġ( height Ġ/ Ġ 2 ). toFloat (), Ġscale Factor Ġ* Ġdot Size Ġ/ Ġ 2 , Ġdot Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scale Factor Ġ!= Ġtarget Factor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( dot Size Ġ/ Ġ 2 Ġ+ Ġpad Ġ+ Ġ( dot Size Ġ+ Ġpad Ġ* Ġ 2 ) Ġ* Ġi , Ġ( height Ġ/ Ġ 2 ). toFloat (), Ġdot Size Ġ/ Ġ 2 , Ġdot Paint !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAR ROW Ġ-> Ġif Ġ( pager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Path !!. reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Path !!. moveTo ( width Ġ/ Ġ 2 Ġ- Ġdot Size Ġ* Ġ 1 . 5 f , Ġheight . toFloat () Ġ- Ġdot Size Ġ/ Ġ 3 Ġ- Ġpad Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Path !!. lineTo (( width Ġ/ Ġ 2 ). toFloat (), Ġpad Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrow Path !!. lineTo ( width Ġ/ Ġ 2 Ġ+ Ġdot Size Ġ* Ġ 1 . 5 f , Ġheight . toFloat () Ġ- Ġdot Size Ġ/ Ġ 3 Ġ- Ġpad Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Path ( arrow Path !! , Ġarrow Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlineWidth Ġ= Ġwidth Ġ/ Ġpager !!. adapter . count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Start X Ġ= Ġscroll Page Position Ġ* ĠlineWidth ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy X Ġ= Ġcurrent Start X Ġ+ Ġscroll Offset Ġ* ĠlineWidth ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my X Ġ% ĠlineWidth Ġ!= Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alpha Fade ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Paint . alpha Ġ= ĠTool . clamp Int ( dot Paint . alpha Ġ- Ġ 1 0 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dot Paint . alpha Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Fade Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alpha Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Paint . alpha Ġ= ĠTool . clamp Int ( dot Paint . alpha Ġ+ Ġ 1 0 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dot Paint . alpha Ġ== Ġ 2 5 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Show Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( my X , Ġheight . toFloat (), Ġmy X Ġ+ ĠlineWidth . toFloat (), Ġheight . toFloat (), Ġdot Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠMode Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠNORMAL Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval ĠAR ROW Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpad : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġ} Ċ } Ċ