package Ġcom . nov oda . android p . display _ cut out Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Radio Group Ċ import Ġcom . nov oda . android p . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ cut out .* Ċ Ċ class ĠCut out Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠC UT OUT _ MODE Ġ= Ġ" cut out _ mode " ĊĠĠĠ Ġprivate Ġval ĠC UT OUT _ USE _ IN SET Ġ= Ġ" cut out _ use _ in set " ĊĠĠĠ Ġprivate Ġval ĠC UT OUT _ MODE _ DEFAULT Ġ= ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ DEFAULT ĊĊĠĠĠ Ġval Ġcut out Mode Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rd _ cut out _ default Ġto ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rd _ cut out _ always Ġto ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ ALWAYS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rd _ cut out _ never Ġto ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ NE VER ) ĊĊĠĠĠ Ġval Ġcut out Use Inset Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rd _ cut out _ yes Ġto Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . rd _ cut out _ no Ġto Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ cut out ) ĊĠĠĠĠĠĠĠ Ġset Fullscreen () ĊĊĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġset Layout Cut out Mode ( pref ) ĊĠĠĠĠĠĠĠ Ġsetup Title View ( pref ) ĊĠĠĠĠĠĠĠ Ġsetup RadioButton For Cut out Mode ( pref ) ĊĠĠĠĠĠĠĠ Ġsetup RadioButton For Inset ( pref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Fullscreen () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Window (). get Decor View (). system Ui Visibility Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Layout Cut out Mode ( pref : ĠSharedPreferences ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . attributes . layout In Display Cut out Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcut out Mode Map [ pref . getInt ( CUT OUT _ MODE , ĠC UT OUT _ MODE _ DEFAULT )] Ġ?: ĠC UT OUT _ MODE _ DEFAULT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Title View ( pref : ĠSharedPreferences ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcut out Title View . setOn Apply Window Insets Listener Ġ{ Ġ_, Ġwindow Insets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Insets . display Cut out ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Use In setSelected ( pref )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsafe Inset Top Ġ= Ġwindow Insets . display Cut out . safe Inset Top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcut out Title View . y Ġ= Ġcut out Title View . top Ġ+ Ġsafe Inset Top . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Insets ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Use In setSelected ( pref : ĠSharedPreferences ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut out Use Inset Map [ pref . getInt ( CUT OUT _ USE _ IN SET , Ġ 0 )] Ġ?: Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RadioButton For Cut out Mode ( pref : ĠSharedPreferences ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġradio Group Ġ= ĠfindViewById < Radio Group >( R . id . rd _ cut out _ mode ) ĊĠĠĠĠĠĠĠ Ġradio Group . check ( pref . getInt ( CUT OUT _ MODE , ĠR . id . rd _ cut out _ default )) ĊĠĠĠĠĠĠĠ Ġradio Group . setOn Checked ChangeListener Ġ{ Ġradio Group , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . edit (). put Int ( CUT OUT _ MODE , Ġchecked Id ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RadioButton For Inset ( pref : ĠSharedPreferences ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġradio Group Ġ= ĠfindViewById < Radio Group >( R . id . rd _ cut out ) ĊĠĠĠĠĠĠĠ Ġradio Group . check ( pref . getInt ( CUT OUT _ USE _ IN SET , ĠR . id . rd _ cut out _ no )) ĊĠĠĠĠĠĠĠ Ġradio Group . setOn Checked ChangeListener Ġ{ Ġradio Group , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref . edit (). put Int ( CUT OUT _ USE _ IN SET , Ġchecked Id ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestart () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( get Intent ()); ĊĠĠĠĠĠĠĠ Ġfinish (); ĊĠĠĠ Ġ} Ċ Ċ } Ċ