package Ġno . m hl . show room . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . core . view .* Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġco il . Co il Ċ import Ġco il . Image Loader Ċ import Ġco il . util . Co il Utils Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġno . m hl . show room . Constants . ANIM _ DURATION Ċ import Ġno . m hl . show room . Constants . MAX _ ALPHA Ċ import Ġno . m hl . show room . Constants . MIN _ ALPHA Ċ import Ġno . m hl . show room . Constants . TRANSP ARENT Ċ import Ġno . m hl . show room . R Ċ import Ġno . m hl . show room . data . preload Up coming Images Ċ import Ġno . m hl . show room . model . Gallery Image Ċ import Ġno . m hl . show room . ui . adapter . Image Pager Adapter Ċ import Ġno . m hl . show room . ui . adapter . Thumbnail Recycler Adapter Ċ import Ġno . m hl . show room . ui . views . Infinite ViewPager 2 Ċ import Ġno . m hl . show room . util . set Count Ċ import Ġno . m hl . show room . util . setDescription Ċ import Ġokhttp 3 . Ok HttpClient ĊĊ Ċ class Ġ ĠShow room Ċ constructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: ĠFrame Layout ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġ// Ġregion ĠView ĠProperties ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġparent Activity : ĠAppCompatActivity ĊĠĠĠ Ġprivate Ġval Ġimage ViewPager Ġby Ġlazy Ġ{ ĠfindViewById < Infinite ViewPager 2 >( R . id . image _ recycler ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġthumbnail Recycler Ġby Ġlazy Ġ{ ĠfindViewById < RecyclerView >( R . id . thumbnail _ recycler ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġthumbnail Recycler Container Ġby Ġlazy Ġ{ ĠfindViewById < Constraint Layout >( R . id . thumbnail _ recycler _ container ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġtoolbar Ġby Ġlazy Ġ{ ĠfindViewById < Toolbar >( R . id . toolbar ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġdescription Text Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . description ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġcount Text Ġby Ġlazy Ġ{ ĠfindViewById < TextView >( R . id . image _ counter ) Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠData ĠProperties ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgallery Data : ĠList < Gallery Image > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġimage Pager Adapter : ĠImage Pager Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthumbnail Recycler Adapter : ĠThumb nail Recycler Adapter ĊĠĠĠ Ġprivate Ġvar Ġoriginal StatusBar Color : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġoriginal NavigationBar Color : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġoriginal StatusBar s Are Light : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġinitial Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġim mer sed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġtop Padding Updated : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġbottom Padding Updated : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠCustom ĠAttributes ĊĠĠĠ Ġprivate Ġvar Ġfont Primary : ĠType face ? Ġ= ĠType face . DEFAULT ĊĠĠĠ Ġprivate Ġvar Ġfont Secondary : ĠType face ? Ġ= ĠType face . DEFAULT ĊĠĠĠ Ġprivate Ġvar Ġimage Pre load Limit : ĠInt Ġ= Ġ 3 ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠIO ĠEvent ĠProperties ĊĠĠĠ Ġprivate Ġvar Ġon Back Navigation Pressed : Ġ(( position : ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠInitial isation ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . layout _ show room , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Show room , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ). apply (:: setup Custom Attributes ) ĊĊĠĠĠĠĠĠĠ Ġsetup Co il () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Co il () Ġ{ ĊĠĠĠĠĠĠĠ ĠCo il . setDefault Image Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross fade ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( Co il Utils . create Default Cache ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠView ĠSetup ĊĠĠĠ Ġprivate Ġfun Ġsetup Custom Attributes ( typed Array : ĠTyped Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Primary Res Ġ= Ġtyped Array . getResource Id ( R . style able . Show room _ fontFamily Primary , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Secondary Res Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getResource Id ( R . style able . Show room _ fontFamily Secondary , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreload Limit Ġ= Ġtyped Array . getInteger ( R . style able . Show room _ image Pre load Limit , Ġ 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( font Primary Res Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Primary Ġ= ĠResources Compat . getFont ( context , Ġfont Primary Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( font Secondary Res Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont Secondary Ġ= ĠResources Compat . getFont ( context , Ġfont Secondary Res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Text . type face Ġ= Ġfont Primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Text . type face Ġ= Ġfont Secondary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Pre load Limit Ġ= Ġpreload Limit ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach ( activity : ĠAppCompatActivity , Ġdata : ĠList < Gallery Image >, Ġopen AtIndex : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġgallery Data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġinitial Position Ġ= Ġopen AtIndex ĊĠĠĠĠĠĠĠ Ġoriginal StatusBar Color Ġ= Ġactivity . window . status Bar Color ĊĠĠĠĠĠĠĠ Ġoriginal NavigationBar Color Ġ= Ġactivity . window . navigation Bar Color ĊĠĠĠĠĠĠĠ Ġoriginal StatusBar s Are Light Ġ= Ġis StatusBar Light () ĊĠĠĠĠĠĠĠ Ġsetup Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Edge To Edge () ĊĠĠĠĠĠĠĠ Ġsetup ImageView Pager () ĊĠĠĠĠĠĠĠ Ġsetup Thumbnail Recycler () ĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Edge To Edge () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 8 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġsystem Ġbar Ġicons Ġare Ġwhite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset StatusBar Icons Light () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDeclare Ġwe Ġare Ġdrawing Ġunder Ġsystem Ġbars ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Compat . set Decor Fits System Windows ( parent Activity . window , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġsystem Ġbars Ġas Ġtrans luc ent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Activity . window . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Bar Color Ġ= ĠColor . parse Color ( TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . parse Color ( TRANSP ARENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠListen Ġfor Ġin sets Ġand Ġadjust Ġas Ġnecessary ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( toolbar ) Ġ{ Ġv , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( top Padding Updated . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Insets Ġ= Ġin sets . get Insets ( Window Insets Compat . Type . display Cut out ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . update Padding ( top Ġ= Ġsystem Insets . top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Padding Updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( thumbnail Recycler Container ) Ġ{ Ġv , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bottom Padding Updated . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsystem Insets Ġ= Ġin sets . get Insets ( Window Insets Compat . Type . navigation Bars ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . update Padding ( bottom Ġ= Ġsystem Insets . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Padding Updated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOn Ġolder ĠSDK Ġversions Ġwe Ġsimply Ġset Ġthe Ġsystem Ġbars Ġto Ġblack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Activity . window . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Bar Color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ImageView Pager () Ġ{ ĊĠĠĠĠĠĠĠ Ġimage Pager Adapter Ġ= ĠImage Pager Adapter ( gallery Data ) ĊĠĠĠĠĠĠĠ Ġimage Pager Adapter . on Image Clicked Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Imm ersion () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġim mer sed Ġ= Ġim mer sed . not () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Gallery Ui ( im mer sed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġimage ViewPager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Adapter ( image Pager Adapter , Ġimage Pre load Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item Position Ġ= Ġinitial Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister On Page Callback ( object Ġ: ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable Position Ġ= Ġimage ViewPager . currentItem Position ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Recycler . smooth Scroll To Position ( stable Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Thumbnail As Selected ( stable Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreload ( stable Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpreload ( position : ĠInt ) Ġ= ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠ Ġpreload Up coming Images ( context , Ġposition , Ġgallery Data , Ġimage Pre load Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Thumbnail Recycler () Ġ{ ĊĠĠĠĠĠĠĠ Ġthumbnail Recycler Adapter Ġ= ĠThumb nail Recycler Adapter ( gallery Data ) ĊĠĠĠĠĠĠĠ Ġthumbnail Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthumbnail Recycler Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Item View Cache Size ( image Pre load Limit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthumbnail Recycler Adapter . on Thumbnail Clicked Ġ= Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage ViewPager . currentItem Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Thumbnail As Selected ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Thumbnail As Selected ( initial Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Activity . set Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġparent Activity . support ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home As Up Indicator ( R . drawable . ic _ clear ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Window Pre Gallery () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Navigation Pressed ?. invoke ( gallery Data . indexOf ( gallery Data . first Ġ{ Ġit . selected Ġ})) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠShow / Hide ĠSystem ĠUI ĊĠĠĠ Ġprivate Ġfun Ġtoggle Gallery Ui ( hide : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfade ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( if Ġ( hide ) ĠMIN _ ALPHA Ġelse ĠMAX _ ALPHA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( ANIM _ DURATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Start Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hide . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with End Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hide ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠtranslateY ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( if Ġ( hide ) Ġview . height . toFloat () Ġelse Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( ANIM _ DURATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfade ( toolbar ) ĊĠĠĠĠĠĠĠ Ġfade ( description Text ) ĊĠĠĠĠĠĠĠ Ġfade ( count Text ) ĊĠĠĠĠĠĠĠ ĠtranslateY ( thumbnail Recycler Container ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Imm ersion () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġtoggle Ġsystem Ġbars Ġon ĠSDK Ġ 2 8 Ġand Ġover Ġto Ġavoid Ġgraphical Ġissues ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 8 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġwindow Ġin sets Ġcontroller ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin sets Controller Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Insets Controller Compat ( parent Activity . window , Ġparent Activity . window . decor View ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġbehavior Ġof Ġthe Ġimm ers ive Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbehavior Ġ= ĠWindow Insets Controller Compat . BE HAV IOR _ SHOW _ TRAN SI ENT _ BAR S _ BY _ SW I PE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġtype Ġof Ġsystem Ġbars Ġto Ġhide Ġand Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠWindow Insets Compat . Type . system Bars () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets Controller . system Bars Behavior Ġ= Ġbehavior ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToggle Ġimm ersion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( im mer sed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin sets Controller . show ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin sets Controller . hide ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠThumb nail ĠSelection ĊĠĠĠ Ġprivate Ġfun Ġset Thumbnail As Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Position Ġ= Ġgallery Data . indexOf ( gallery Data . find Ġ{ Ġit . selected Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ!= Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ<= Ġgallery Data . size Ġ&& Ġposition Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Text . set Count ( position , Ġgallery Data . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Text . setDescription ( gallery Data [ position ]. description ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgallery Data . find Ġ{ Ġit . selected Ġ} ?. selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgallery Data [ position ]. selected Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Recycler Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠMis cellaneous ĊĠĠĠ Ġprivate Ġfun Ġset StatusBar Icons Dark () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġparent Activity . window ĊĠĠĠĠĠĠĠ ĠWindow Insets Controller Compat ( window , Ġwindow . decor View ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Appearance Light StatusBar s Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset StatusBar Icons Light () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġparent Activity . window ĊĠĠĠĠĠĠĠ ĠWindow Insets Controller Compat ( window , Ġwindow . decor View ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Appearance Light StatusBar s Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" In lined Api ") ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġis StatusBar Light (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġparent Activity . window ĊĠĠĠĠĠĠĠ Ġreturn Ġwindow . decor View . system Ui Visibility Ġand ĠSYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR Ġ!= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestore Window Pre Gallery () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( original StatusBar s Are Light ) Ġ{ Ġset StatusBar Icons Dark () Ġ} ĊĊĠĠĠĠĠĠĠ Ġparent Activity . window . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Bar Color Ġ= Ġoriginal NavigationBar Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Color Ġ= Ġoriginal StatusBar Color ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( im mer sed ) Ġ{ Ġtoggle Imm ersion () Ġ} ĊĠĠĠĠĠĠĠ ĠWindow Compat . set Decor Fits System Windows ( parent Activity . window , Ġtrue ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġ// Ġregion ĠIO ĠEvents ĊĠĠĠ Ġfun Ġset Navigation Exit Event ( back Pressed Event : Ġ(( position : ĠInt ) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Navigation Pressed Ġ= Ġback Pressed Event ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region Ċ Ċ }