package Ġorg . wikipedia . feed . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . icu . text . Compact Decimal Format Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . util . Pair Ċ import Ġorg . wikipedia . R Ċ import Ġorg . wikipedia . databinding . View List Card Item Binding Ċ import Ġorg . wikipedia . datac lient . page . Page Summary Ċ import Ġorg . wikipedia . feed . model . Card Ċ import Ġorg . wikipedia . history . History Entry Ċ import Ġorg . wikipedia . page . Page Available Offline Handler . check Ċ import Ġorg . wikipedia . reading list . Long Press Menu Ċ import Ġorg . wikipedia . reading list . database . Reading List Page Ċ import Ġorg . wikipedia . util .* Ċ import Ġorg . wikipedia . views . View Util Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠList Card Item View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĠConstraint Layout ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonSelect Page ( card : ĠCard , Ġentry : ĠHistory Entry , Ġopen In New Background Tab : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun ĠonSelect Page ( card : ĠCard , Ġentry : ĠHistory Entry , Ġshared Elements : ĠArray < Pair < View , ĠString >>) ĊĠĠĠĠĠĠĠ Ġfun Ġon Add Page ToList ( entry : ĠHistory Entry , ĠaddTo Default : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Move Page ToList ( source Reading List Id : ĠLong , Ġentry : ĠHistory Entry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġ= ĠView List Card Item Binding . inflate ( LayoutInflater . from ( context ), Ġthis ) ĊĠĠĠ Ġprivate Ġvar Ġcard : ĠCard ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ get : Visible ForTesting ĊĠĠĠ Ġvar Ġcallback : ĠCallback ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ@ get : Visible ForTesting ĊĠĠĠ Ġvar Ġhistory Entry : ĠHistory Entry ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠViewGroup . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Bottom Padding Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġset Padding ( 0 , ĠDim en Util . rounded Dp To Px ( top Bottom Padding . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĠDim en Util . rounded Dp To Px ( top Bottom Padding . toFloat ())) ĊĠĠĠĠĠĠĠ ĠDevice Util . set Context Click As Long Click ( this ) ĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠAppCompat Resources . get Drawable ( getContext (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Util . get The med Attribute Id ( getContext (), ĠR . attr . selectable Item Background )) ĊĊĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history Entry Ġ!= Ġnull Ġ&& Ġcard Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Select Page ( card !! , Ġhistory Entry !! , ĠTransition Util . get Shared Elements ( context , Ġbinding . view List Card Item Image )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Long ClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLong Press Menu ( view , Ġtrue , Ġobject Ġ: ĠLong Press Menu . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Open Link ( entry : ĠHistory Entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Select Page ( it , Ġentry , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Open In New Tab ( entry : ĠHistory Entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Select Page ( it , Ġentry , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Add Request ( entry : ĠHistory Entry , ĠaddTo Default : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Add Page ToList ( entry , ĠaddTo Default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move Request ( page : ĠReading List Page ?, Ġentry : ĠHistory Entry ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Move Page ToList ( it . list Id , Ġentry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( history Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Card ( card : ĠCard ?): ĠList Card Item View Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . card Ġ= Ġcard ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Callback ( callback : ĠCallback ?): ĠList Card Item View Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset History Entry ( entry : ĠHistory Entry ): ĠList Card Item View Ġ{ ĊĠĠĠĠĠĠĠ Ġhistory Entry Ġ= Ġentry ĊĠĠĠĠĠĠĠ ĠsetTitle ( StringUtil . from Html ( entry . title . display Text )) ĊĠĠĠĠĠĠĠ Ġset Subtitle ( entry . title . description ) ĊĠĠĠĠĠĠĠ Ġset Image ( entry . title . thumb Url ) ĊĠĠĠĠĠĠĠ Ġcheck ( entry . title ) Ġ{ Ġavailable Ġ-> Ġset Views Grey ed Out (! available ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġset Image ( url : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . view List Card Item Image . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . view List Card Item Image . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Util . load Image With Rounded C orners ( binding . view List Card Item Image , Ġurl , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun ĠsetTitle ( text : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Title . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġset Subtitle ( text : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Subtitle . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Number ( number : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Number . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Number . set Number ( number ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Page Views ( page Views : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Page views . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Page views . text Ġ= Ġget Page View Text ( page Views ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Graph View ( view Hist ories : ĠList < Page Summary . View History >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdataSet Ġ= Ġmutable ListOf < Float >() ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġview Hist ories . size ĊĠĠĠĠĠĠĠ Ġwhile Ġ( DEFAULT _ VIEW _ HISTORY _ ITEMS Ġ> Ġi ++) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet . add ( 0 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠdataSet . addAll ( view Hist ories . map Ġ{ Ġit . views Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Graph . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Graph . setData ( data Set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Page View Text ( page Views : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Locale Ġ= Ġcontext . resources . configuration . locales [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecimal Format Ġ= ĠComp act Decimal Format . getInstance ( primary Locale , ĠComp act Decimal Format . Compact Style . SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdecimal Format . format ( page Views ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Views Ġ< Ġ 1 0 0 0 Ġ-> Ġpage Views . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Views Ġ< Ġ 1 0 0 0 0 0 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . view _ top _ read _ card _ page views _ k _ suffix , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( page Views Ġ/ Ġ 1 0 0 0 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . view _ top _ read _ card _ page views _ m _ suffix , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( page Views Ġ/ Ġ 1 0 0 0 0 0 0 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Views Grey ed Out ( grey ed Out : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġif Ġ( grey ed Out ) Ġ 0 . 5 f Ġelse Ġ 1 . 0 f ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Title . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Subtitle . alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġbinding . view List Card Item Image . alpha Ġ= Ġalpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ VIEW _ HISTORY _ ITEMS Ġ= Ġ 5 ĊĠĠĠ Ġ} Ċ } Ċ