package Ġcom . lightning k ite . android runtime ĊĊ Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . core . view . Window Insets Compat Ċ import Ġjava . util .* Ċ Ċ object ĠSafe Padding Flags Ġ{ ĊĠĠĠ Ġconst Ġval ĠNONE : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġconst Ġval ĠTOP : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġconst Ġval ĠRIGHT : ĠInt Ġ= Ġ 2 ĊĠĠĠ Ġconst Ġval ĠBOTTOM : ĠInt Ġ= Ġ 4 ĊĠĠĠ Ġconst Ġval ĠLEFT : ĠInt Ġ= Ġ 8 ĊĠĠĠ Ġconst Ġval ĠH ORIZONTAL : ĠInt Ġ= Ġ 1 0 ĊĠĠĠ Ġconst Ġval ĠV ERT ICAL : ĠInt Ġ= Ġ 5 ĊĠĠĠ Ġconst Ġval ĠALL : ĠInt Ġ= Ġ 1 5 Ċ } Ċ Ċ fun ĠView . safe Insets ( flags : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġdefault Padding Left Ġ= Ġpadding Left ĊĠĠĠ Ġval Ġdefault Padding Right Ġ= Ġpadding Right ĊĠĠĠ Ġval Ġdefault Padding Bottom Ġ= Ġpadding Bottom ĊĠĠĠ Ġval Ġdefault Padding Top Ġ= Ġpadding Top ĊĠĠĠ Ġval Ġuse Left Ġ= Ġflags Ġand ĠSafe Padding Flags . LEFT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Right Ġ= Ġflags Ġand ĠSafe Padding Flags . RIGHT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Bottom Ġ= Ġflags Ġand ĠSafe Padding Flags . BOTTOM Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Top Ġ= Ġflags Ġand ĠSafe Padding Flags . TOP Ġ!= Ġ 0 ĊĊĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( this ) Ġlabel @{ Ġv : ĠView , Ġin sets : ĠWindow Insets Compat Ġ-> ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Left Ġ= Ġif Ġ( use Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Left Ġ+ Ġdefault Padding Left ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Left ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Right Ġ= Ġif Ġ( use Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Right Ġ+ Ġdefault Padding Right ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Right ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Bottom Ġ= Ġif Ġ( use Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Bottom Ġ+ Ġdefault Padding Bottom ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Bottom ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Top Ġ= Ġif Ġ( use Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Top Ġ+ Ġdefault Padding Top ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Top ĊĊĠĠĠĠĠĠĠ Ġv . set Padding ( new Padding Left , Ġnew Padding Top , Ġnew Padding Right , Ġnew Padding Bottom ) ĊĠĠĠĠĠĠĠ Ġv . request Layout () ĊĊĠĠĠĠĠĠĠ Ġreturn @ label Ġin sets . replace System Window Insets ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Left ) Ġ 0 Ġelse Ġin sets . system Window Inset Left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Top ) Ġ 0 Ġelse Ġin sets . system Window Inset Top , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Right ) Ġ 0 Ġelse Ġin sets . system Window Inset Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Bottom ) Ġ 0 Ġelse Ġin sets . system Window Inset Bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ?. reset Window Insets () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġsystem Ui Visibility Ġ= ĊĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ċ } Ċ Ċ private Ġval Ġreset Window Insets Pending Ġ= ĠHashSet < View >() Ċ fun ĠView . reset Window Insets () Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( this . parent Ġas ? ĠViewGroup )?. reset Window Insets () Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( reset Window Insets Pending . add ( this )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . root Window Insets ?. let Ġ{ Ġstart Insets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Apply Window Insets ( start Insets ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Window Insets Pending . remove ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . safe Insets S izing ( flags : ĠInt ) Ġ{ ĊĠĠĠ Ġif ( layout Params Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ Ġsafe Insets S izing ( flags ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdefault Width Ġ= Ġthis . layout Params . width ĊĠĠĠ Ġval Ġdefault Height Ġ= Ġthis . layout Params . height ĊĠĠĠ Ġval Ġuse Left Ġ= Ġflags Ġand ĠSafe Padding Flags . LEFT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Right Ġ= Ġflags Ġand ĠSafe Padding Flags . RIGHT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Bottom Ġ= Ġflags Ġand ĠSafe Padding Flags . BOTTOM Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Top Ġ= Ġflags Ġand ĠSafe Padding Flags . TOP Ġ!= Ġ 0 ĊĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( this ) Ġlabel @{ Ġv : ĠView , Ġin sets : ĠWindow Insets Compat Ġ-> ĊĊĠĠĠĠĠĠĠ Ġvar Ġnew Width Ġ= Ġdefault Width ĊĠĠĠĠĠĠĠ Ġvar Ġnew Height Ġ= Ġdefault Height ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Width Ġ+= Ġin sets . system Window Inset Left ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Width Ġ+= Ġin sets . system Window Inset Right ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Height Ġ+= Ġin sets . system Window Inset Bottom ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Height Ġ+= Ġin sets . system Window Inset Top ĊĊĠĠĠĠĠĠĠ Ġv . layout Params . width Ġ= Ġnew Width ĊĠĠĠĠĠĠĠ Ġv . layout Params . height Ġ= Ġnew Height ĊĠĠĠĠĠĠĠ Ġv . parent . request Layout () ĊĊĠĠĠĠĠĠĠ Ġreturn @ label Ġin sets . replace System Window Insets ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Left ) Ġ 0 Ġelse Ġin sets . system Window Inset Left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Top ) Ġ 0 Ġelse Ġin sets . system Window Inset Top , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Right ) Ġ 0 Ġelse Ġin sets . system Window Inset Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Bottom ) Ġ 0 Ġelse Ġin sets . system Window Inset Bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ?. reset Window Insets () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġsystem Ui Visibility Ġ= ĊĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ċ } ĊĊ Ċ fun ĠView . safe Insets Both ( flags : ĠInt ) Ġ{ ĊĠĠĠ Ġif ( layout Params Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ Ġsafe Insets S izing ( flags ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdefault Padding Left Ġ= Ġpadding Left ĊĠĠĠ Ġval Ġdefault Padding Right Ġ= Ġpadding Right ĊĠĠĠ Ġval Ġdefault Padding Bottom Ġ= Ġpadding Bottom ĊĠĠĠ Ġval Ġdefault Padding Top Ġ= Ġpadding Top ĊĠĠĠ Ġval Ġdefault Width Ġ= Ġthis . layout Params . width ĊĠĠĠ Ġval Ġdefault Height Ġ= Ġthis . layout Params . height ĊĠĠĠ Ġval Ġuse Left Ġ= Ġflags Ġand ĠSafe Padding Flags . LEFT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Right Ġ= Ġflags Ġand ĠSafe Padding Flags . RIGHT Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Bottom Ġ= Ġflags Ġand ĠSafe Padding Flags . BOTTOM Ġ!= Ġ 0 ĊĠĠĠ Ġval Ġuse Top Ġ= Ġflags Ġand ĠSafe Padding Flags . TOP Ġ!= Ġ 0 ĊĊĠĠĠ ĠView Compat . setOn Apply Window Insets Listener ( this ) Ġlabel @{ Ġv : ĠView , Ġin sets : ĠWindow Insets Compat Ġ-> ĊĊĠĠĠĠĠĠĠ Ġvar Ġnew Width Ġ= Ġdefault Width ĊĠĠĠĠĠĠĠ Ġvar Ġnew Height Ġ= Ġdefault Height ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Width Ġ+= Ġin sets . system Window Inset Left ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Width Ġ+= Ġin sets . system Window Inset Right ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Height Ġ+= Ġin sets . system Window Inset Bottom ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Height Ġ+= Ġin sets . system Window Inset Top ĊĊĠĠĠĠĠĠĠ Ġv . layout Params . width Ġ= Ġnew Width ĊĠĠĠĠĠĠĠ Ġv . layout Params . height Ġ= Ġnew Height ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Left Ġ= Ġif Ġ( use Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Left Ġ+ Ġdefault Padding Left ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Left ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Right Ġ= Ġif Ġ( use Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Right Ġ+ Ġdefault Padding Right ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Right ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Bottom Ġ= Ġif Ġ( use Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Bottom Ġ+ Ġdefault Padding Bottom ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Bottom ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Padding Top Ġ= Ġif Ġ( use Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets . system Window Inset Top Ġ+ Ġdefault Padding Top ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . padding Top ĊĊĠĠĠĠĠĠĠ Ġv . set Padding ( new Padding Left , Ġnew Padding Top , Ġnew Padding Right , Ġnew Padding Bottom ) ĊĠĠĠĠĠĠĠ Ġv . parent . request Layout () ĊĊĠĠĠĠĠĠĠ Ġreturn @ label Ġin sets . replace System Window Insets ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Left ) Ġ 0 Ġelse Ġin sets . system Window Inset Left , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Top ) Ġ 0 Ġelse Ġin sets . system Window Inset Top , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Right ) Ġ 0 Ġelse Ġin sets . system Window Inset Right , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Bottom ) Ġ 0 Ġelse Ġin sets . system Window Inset Bottom ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . add On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ?. reset Window Insets () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġsystem Ui Visibility Ġ= ĊĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ċ } Ċ