package Ġorg . step ik . android . view . lesson . ui . delegate Ċ Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Popup Window Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Pl urals Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġandroidx . core . view . do On Pre Draw Ċ import Ġandroidx . core . widget . Popup Window Compat Ċ import Ġkotlinx . android . synt hetic . main . tooltip _ lesson _ info . view .* Ċ import Ġorg . step ic . d roid . R Ċ import Ġorg . step ik . android . view . progress . ui . mapper . Progress Text Mapper Ċ Ċ class ĠLess on Info Tooltip Delegate ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠView Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġshow Lesson Info Tooltip ( ĊĠĠĠĠĠĠĠ Ġstep Score : ĠFloat , ĊĠĠĠĠĠĠĠ Ġstep Cost : ĠLong , ĊĠĠĠĠĠĠĠ Ġlesson TimeTo Complete InSeconds : ĠLong , ĊĠĠĠĠĠĠĠ Ġcertificate Threshold : ĠLong ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanchor View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findViewById < View >( R . id . lesson _ menu _ item _ info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġpopup View Ġ= ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( anchor View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . tooltip _ lesson _ info , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( step Score Ġ> Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. step W orth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setItem ( step Score , Ġstep Cost , ĠR . string . lesson _ info _ points _ with _ score , ĠR . string . lesson _ info _ points _ with _ score _ fraction , ĠR . plurals . points , ĠR . drawable . ic _ check _ rounded ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. step W orth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setItem ( step Cost , ĠR . string . lesson _ info _ points , ĠR . plurals . points , ĠR . drawable . ic _ check _ rounded ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġ( time Value , Ġ@ Pl urals Res Ġtime Unit Pl ural ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lesson TimeTo Complete InSeconds Ġin Ġ 0 Ġuntil Ġ 3 6 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlesson TimeTo Complete InSeconds Ġ/ Ġ 6 0 Ġto ĠR . plurals . minutes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlesson TimeTo Complete InSeconds Ġ/ Ġ 3 6 0 0 Ġto ĠR . plurals . hours ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpopup View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. lesson TimeTo Complete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setItem ( time Value , ĠR . string . lesson _ info _ time _ to _ complete , Ġtime Unit Pl ural , ĠR . drawable . ic _ duration ) ĊĊĠĠĠĠĠĠĠ Ġpopup View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. certificate Threshold ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setItem ( certificate Threshold , ĠR . string . lesson _ info _ certificate _ threshold , ĠR . plurals . points , ĠR . drawable . ic _ lesson _ info ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpopup Window Ġ= ĠPopup Window ( popup View , ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĠLinearLayout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġpopup Window . animation Style Ġ= ĠR . style . Popup Animations ĊĠĠĠĠĠĠĠ Ġpopup Window . is Outside Touchable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġpopup Window . setBackground Drawable ( Color Drawable ()) Ġ// Ġworkaround Ġto Ġmake Ġis Outside Touchable Ġwork Ġon ĠAndroid Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġpopup View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Window . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpopup View . do On Pre Draw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup View . arrow View ?. x Ġ= Ġcalc Arrow Horizontal Offset ( anchor View , Ġpopup View , Ġpopup View . arrow View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġanchor View . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anchor View . window Token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPopup Window Compat . show As DropDown ( popup Window , Ġanchor View , Ġ 0 , Ġ 0 , ĠGr avity . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAppCompat TextView . setItem ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġstring Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Pl urals Res Ġplural Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġdrawable Res : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Drawable ( drawable Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( string Res , Ġresources . get Quantity String ( plural Res , Ġvalue . toInt (), Ġvalue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ' Step Progress . score ' Ġpoints Ġout Ġof Ġ' Step Progress . cost ' Ġ( for Ġstep ) ĊĠĠĠ Ġprivate Ġfun ĠAppCompat TextView . setItem ( ĊĠĠĠĠĠĠĠ Ġstep Score : ĠFloat , ĊĠĠĠĠĠĠĠ Ġstep Cost : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġstring Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġfraction Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Pl urals Res Ġplural Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġdrawable Res : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Item Drawable ( drawable Res ) ĊĠĠĠĠĠĠĠ Ġtext Ġ= ĠProgress Text Mapper . map Progress ToText ( context , Ġstep Score , Ġstep Cost , Ġstring Res , Ġfraction Res , Ġplural Res ) ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAppCompat TextView . setItem Drawable (@ Drawable Res Ġdrawable Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġicon Drawable Ġ= ĠAppCompat Resources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Drawable ( context , Ġdrawable Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let ( Drawable Compat :: wrap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let ( Drawable :: mutate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ ĠDrawable Compat . set Tint ( icon Drawable , ĠContext Compat . getColor ( context , Ġ Ġandroid . R . color . white )) ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( icon Drawable , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalc Arrow Horizontal Offset ( anchor View : ĠView , Ġpopup View : ĠView , Ġarrow View : ĠView ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpos Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġanchor View . getLocation On Screen ( pos ) ĊĠĠĠĠĠĠĠ Ġval Ġanchor Offset Ġ= Ġpos [ 0 ] Ġ+ Ġanchor View . meas ured Width Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġpopup View . getLocation On Screen ( pos ) ĊĠĠĠĠĠĠĠ Ġreturn Ġanchor Offset . toFloat () Ġ- Ġpos [ 0 ] Ġ- Ġarrow View . meas ured Width Ġ/ Ġ 2 ĊĠĠĠ Ġ} Ċ }