package Ġcom . pdf tron . show case . activities Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . pdf tron . pdf . PDF View Ctrl Ċ import Ġcom . pdf tron . pdf . dialog . page label . Page Label Dialog Ċ import Ġcom . pdf tron . pdf . dialog . page label . Page Label Setting Ċ import Ġcom . pdf tron . pdf . dialog . page label . Page Label Setting ViewModel Ċ import Ġcom . pdf tron . pdf . dialog . page label . Page Label Utils Ċ import Ġcom . pdf tron . pdf . utils . Common Toast Ċ import Ġcom . pdf tron . pdf . utils . Event Ċ import Ġcom . pdf tron . show case . R Ċ import Ġkotlinx . android . synt hetic . main . content _ bottom _ sheet .* Ċ import Ġkotlinx . android . synt hetic . main . content _ bottom sheet _ button .* Ċ import Ġkotlinx . android . synt hetic . main . control _ button _ simple .* Ċ Ċ class ĠPage Label Activity Ġ: ĠFeature Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm File Page : ĠTextView ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Container Ġ= Ġfeature _ content _ container ĊĠĠĠĠĠĠĠ Ġlayout Inflater . inflate ( R . layout . control _ button _ simple , Ġbottom Sheet Container , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġadd Control () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Control () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton . text Ġ= ĠgetString ( R . string . page _ label _ button ) ĊĠĠĠĠĠĠĠ Ġbutton . set Compound Draw ables With Intr insic Bounds ( R . drawable . ic _ edit _ black _ 2 4 dp , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġm Page Label ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Page Label Setting ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġm Page Label ViewModel . observe On Complete ( this , ĠObserver < Event < Page Label Setting >> Ġ{ Ġpage Label Setting Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Label Setting Event Ġ!= Ġnull Ġ&& Ġ! page Label Setting Event . has Been Handled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Successful Ġ= ĠPage Label Utils . set Page Label ( get PDF View Ctrl () !! , Ġpage Label Setting Event . content IfNot Handled !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Toast . show Text ( this , ĠgetString ( com . pdf tron . pdf . tools . R . string . page _ label _ success ), ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Page TextView ( get PDF View Ctrl () !!. currentPage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Toast . show Text ( this , ĠgetString ( com . pdf tron . pdf . tools . R . string . page _ label _ failed ), ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġget PDF View Ctrl () !!. currentPage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Pages Ġ= Ġget PDF View Ctrl () !!. page Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Page Label Settings Dialog ( support FragmentManager , Ġpage , Ġpage , Ġnum Pages ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtext Ġfor Ġpage Ġlabel Ġtext ĊĠĠĠĠĠĠĠ Ġm File Page Ġ= ĠTextView ( this , Ġnull , Ġ 0 , ĠR . style . Roboto TextView Style ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( 0 , Ġresources . get Dimension ( R . dim en . content _ text _ top _ margin ). toInt (), Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget PDF View Ctrl () !!. add Page ChangeListener Ġ{ Ġold _ page , Ġcur _ page , Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠPDF View Ctrl . Page Change State . END ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Page TextView ( cur _ page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontrol _ button _ simple . addView ( m File Page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Page TextView ( currentPage : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm File Page . text Ġ= ĠString . format ( getString ( R . string . page _ label _ text ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage Label Utils . getPage Number Indicator ( get PDF View Ctrl () !! , ĠcurrentPage )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Page Label Settings Dialog ( fragment Manager : ĠFragment Manager , Ġfrom Page : ĠInt , Ġto Page : ĠInt , Ġpage Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠPage Label Dialog . newInstance ( from Page , Ġto Page , Ġpage Count ) ĊĠĠĠĠĠĠĠ Ġdialog . setStyle ( Dialog Fragment . STYLE _ NO _ TITLE , ĠR . style . Custom App Theme ) ĊĠĠĠĠĠĠĠ Ġdialog . show ( fragment Manager , ĠPage Label Dialog . TAG ) ĊĠĠĠ Ġ} Ċ } Ċ