/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠThanks M ister ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ċ Ġ* Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . th ank sm ister . iot . mqtt . alar mp anel . utils Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . arch . lifecycle . Lifecycle Observer Ċ import Ġandroid . arch . lifecycle . On Lifecycle Event Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . R Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . network . Image Options Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . network . model . Datum Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . persistence . Dark Sky Dao Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . persistence . Sensor Ċ import Ġcom . th ank sm ister . iot . mqtt . alar mp anel . ui . views .* Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠDialog Ġutils Ċ Ġ*/ Ċ class ĠDialog Utils ( base : ĠContext ?) Ġ: ĠContext Wrapper ( base ), ĠLifecycle Observer Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġalert Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġscreen Saver Dialog : ĠDialog ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠ Ġfun Ġclear Dialog s () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Ġ!= Ġnull Ġ&& Ġdialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( alert Dialog Ġ!= Ġnull Ġ&& Ġalert Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( screen Saver Dialog Ġ!= Ġnull Ġ&& Ġscreen Saver Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog !!. getWindow (). clear Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Screen Saver Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( screen Saver Dialog Ġ!= Ġnull Ġ&& Ġscreen Saver Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog !!. getWindow (). clear Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide AlertDialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( alert Dialog Ġ!= Ġnull Ġ&& Ġalert Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog ( activity : ĠAppCompatActivity , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( activity , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog ( context : ĠContext , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( context , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog To Dismiss ( activity : ĠAppCompatActivity , Ġtitle : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( activity , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog ( activity : ĠAppCompatActivity , Ġtitle : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( activity , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog ( context : ĠContext , Ġmessage : ĠString , ĠonClick Listener : ĠDialog Interface . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ ĠTim ber . d (" show AlertDialog ") ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( context , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , ĠonClick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog ( context : ĠContext , Ġtitle : ĠString , Ġmessage : ĠString , Ġon Positive Button : ĠDialog Interface . OnClickListener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Negative Button : ĠDialog Interface . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ ĠTim ber . d (" show AlertDialog ") ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( context , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġon Positive Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġon Negative Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow AlertDialog Cancel ( context : ĠContext , Ġmessage : ĠString , ĠonClick Listener : ĠDialog Interface . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide AlertDialog () ĊĠĠĠĠĠĠĠ ĠTim ber . d (" show AlertDialog ") ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( context , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , ĠonClick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġpossibly Ġadd Ġpassword Ġtext Ġvalue ĊĠĠĠ Ġfun Ġshow EditText Dialog ( activity : ĠAppCompatActivity , Ġvalue : ĠString , Ġlistener : ĠEditText Dialog View . View Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ edit _ text , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Dialog View Ġ= Ġview . findViewById < EditText Dialog View >( R . id . edit Text Dialog View ) ĊĠĠĠĠĠĠĠ Ġedit Text Dialog View . set Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġedit Text Dialog View . setValue ( value ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( activity , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( edit Text Dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener . onComplete ( edit Text Dialog View . value )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener . on Cancel () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Arm Options Dialog ( activity : ĠAppCompatActivity , Ġarm Listener : ĠArm Options View . View Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ alarm _ options , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Rectangle Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠ Ġwindow . decor View . getWindow Visible Display Frame ( display Rectangle ) ĊĠĠĠĠĠĠĠ Ġif ( resources . configuration . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . minimum Width Ġ= Ġ( display Rectangle . width () Ġ* Ġ 0 . 4 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . minimum Height Ġ= Ġ( display Rectangle . height () Ġ* Ġ 0 . 4 f ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoptions View Ġ= Ġview . findViewById < Arm Options View >( R . id . arm Options View ) ĊĠĠĠĠĠĠĠ Ġoptions View . set Listener ( arm Listener ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġthe Ġdisable Ġalarm Ġdialog Ġwith Ġcount down . ĠIt Ġis Ġimportant Ġthat Ġthis ĊĠĠĠĠ Ġ* Ġdialog Ġonly Ġbe Ġshown Ġonce Ġand Ġnot Ġrel a unched Ġwhen Ġalready Ġdisplayed Ġas ĊĠĠĠĠ Ġ* Ġit Ġresets Ġthe Ġtimer . Ġ ĠAlso Ġplays Ġa Ġsystem Ġsounds Ġ( if Ġsettings Ġtrue ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Alarm Disable Dialog ( activity : ĠAppCompatActivity , Ġalarm Code Listener : ĠAlarm Disable View . View Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode : ĠInt , Ġtime Remaining : ĠInt , Ġsystem Sounds : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Fingerprint : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ alarm _ disable , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġalarm Code View Ġ= Ġview . findViewById < Alarm Disable View >( R . id . alarm Disable View ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Listener ( alarm Code Listener ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Code ( code ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Use Sound ( system Sounds ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Use F inger Print ( use Fingerprint ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . start Count Down ( time Remaining ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . play Continuous Alarm () ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdialog !!. setOn Dismiss Listener Ġ{ Ġalarm Code View . destroy Sound Utils () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġthe Ġdisable Ġalarm Ġdialog Ġwith Ġcount down . ĠIt Ġis Ġimportant Ġthat Ġthis ĊĠĠĠĠ Ġ* Ġdialog Ġonly Ġbe Ġshown Ġonce Ġand Ġnot Ġrel a unched Ġwhen Ġalready Ġdisplayed Ġas ĊĠĠĠĠ Ġ* Ġit Ġresets Ġthe Ġtimer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Alarm Disable Dialog ( activity : ĠAppCompatActivity , Ġalarm Code Listener : ĠAlarm Disable View . View Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode : ĠInt , Ġtime Remaining : ĠInt , Ġuse Fingerprint : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ alarm _ disable , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġalarm Code View Ġ= Ġview . findViewById < Alarm Disable View >( R . id . alarm Disable View ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Listener ( alarm Code Listener ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Code ( code ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Use Sound ( false ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Use F inger Print ( use Fingerprint ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . start Count Down ( time Remaining ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdialog !!. setOn Dismiss Listener Ġ{ Ġalarm Code View . destroy Sound Utils () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Settings Code Dialog ( activity : ĠAppCompatActivity , Ġcode : ĠInt , Ġlistener : ĠSettings Code View . View Listener , Ġsystem Sounds : ĠBoolean , Ġuse Fingerprint : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ settings _ code , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Code View Ġ= Ġview . findViewById < Settings Code View >( R . id . settings Code View ) ĊĠĠĠĠĠĠĠ Ġsettings Code View . set Code ( code ) ĊĠĠĠĠĠĠĠ Ġsettings Code View . set Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġsettings Code View . set Use Sound ( system Sounds ) ĊĠĠĠĠĠĠĠ Ġsettings Code View . set Use F inger Print ( use Fingerprint ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Code Dialog ( activity : ĠAppCompatActivity , Ġconfirm Code : ĠBoolean , Ġlistener : ĠAlarm Code View . View Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Cancel Listener : ĠDialog Interface . On Cancel Listener , Ġsystem Sounds : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ alarm _ code _ set , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġalarm Code View Ġ= Ġview . findViewById < Alarm Code View >( R . id . alarm Code View ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle TextView Ġ= Ġalarm Code View . findViewById < TextView >( R . id . code Title ) ĊĠĠĠĠĠĠĠ Ġif Ġ( confirm Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . setText ( R . string . text _ ren ter _ alarm _ code _ title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġalarm Code View . set Use Sound ( system Sounds ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdialog !!. setOn Cancel Listener ( on Cancel Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Sensor Dialog ( activity : ĠAppCompatActivity , Ġsensor : ĠSensor , Ġtopic : ĠString , Ġlistener : ĠSensor Dialog View . View Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ sensor , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġsensor Dialog View Ġ= Ġview . findViewById < Sensor Dialog View >( R . id . sensor Dialog View ) ĊĠĠĠĠĠĠĠ Ġsensor Dialog View . set Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġsensor Dialog View . set Sensor ( sensor , Ġtopic ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Ġ= ĠAlertDialog . Builder ( activity , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( sensor Dialog View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener . onComplete ( sensor Dialog View . sensor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġ{ Ġ_, Ġ_ Ġ-> Ġlistener . on Cancel () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Extended Forecast Dialog ( activity : ĠAppCompatActivity , Ġdata : ĠList < Datum >) Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Dialog s () ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ extended _ forecast , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Rectangle Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠ Ġwindow . decor View . getWindow Visible Display Frame ( display Rectangle ) ĊĠĠĠĠĠĠĠ Ġview . minimum Width Ġ= Ġ( display Rectangle . width () Ġ* Ġ 0 . 7 f ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġactivity . resources . display Metrics . density D pi ĊĠĠĠĠĠĠĠ Ġif ( resources . configuration . orientation Ġ== ĠConfiguration . OR IENTATION _ LAND SC APE ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( density Ġ== ĠDisplay Metrics . D ENS ITY _ MEDIUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . minimum Height Ġ= Ġ( display Rectangle . height () Ġ* Ġ 0 . 6 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . minimum Height Ġ= Ġ( display Rectangle . height () Ġ* Ġ 0 . 7 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . minimum Height Ġ= Ġ( display Rectangle . height () Ġ* Ġ 0 . 4 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġextended Forecast View Ġ= Ġview . findViewById < Extended Forecast View >( R . id . extended Forecast View ) ĊĠĠĠĠĠĠĠ Ġextended Forecast View . set Extended Forecast ( data ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġview , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġthe Ġscreen Ġsa ver Ġonly Ġif Ġthe Ġalarm Ġisn 't Ġtriggered . ĠThis Ġshouldn 't Ġbe Ġan Ġissue ĊĠĠĠĠ Ġ* Ġwith Ġthe Ġalarm Ġdisabled Ġbecause Ġthe Ġdisable Ġtime Ġwill Ġbe Ġlonger Ġthan Ġthis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Screen Saver ( activity : ĠAppCompatActivity , Ġshow Photo Screen Saver : ĠBoolean , Ġoptions : Image Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener : ĠView . OnClickListener , ĠdataSource : ĠDark Sky Dao , Ġhas Weather : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( screen Saver Dialog Ġ!= Ġnull Ġ&& Ġscreen Saver Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclear Dialog s () Ġ// Ġclear Ġany Ġalert Ġdialog s ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġactivity . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ screen _ sa ver , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġscreen Saver View Ġ= Ġview . findViewById < Screen Saver View >( R . id . screen Saver View ) ĊĠĠĠĠĠĠĠ Ġscreen Saver View . init ( show Photo Screen Saver , Ġoptions , ĠdataSource , Ġhas Weather ) ĊĠĠĠĠĠĠĠ Ġscreen Saver View . setOnClickListener ( on ClickListener ) ĊĠĠĠĠĠĠĠ Ġscreen Saver Dialog Ġ= Ġbuild Imm ers ive Dialog ( activity , Ġtrue , Ġscreen Saver View , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( screen Saver Dialog Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Saver Dialog !!. window . add Flags ( ĠWindow Manager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġimm ers ive Ġdialog s Ġwithout Ġnavigation ĊĠĠĠ Ġ// Ġhttps :// stackoverflow . com / questions / 2 2 7 9 4 0 4 9 / how - do - i - maint ain - the - imm ers ive - mode - in - dialogs ĊĠĠĠ Ġprivate Ġfun Ġbuild Imm ers ive Dialog ( context : ĠAppCompatActivity , Ġcancel able : ĠBoolean , Ġview : ĠView , Ġfullscreen : ĠBoolean ): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog : ĠDialog ĊĠĠĠĠĠĠĠ Ġif Ġ( fullscreen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= ĠDialog ( context , Ġandroid . R . style . Theme _ Black _ No Title Bar _ Fullscreen ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Ġ= ĠDialog ( context , ĠR . style . Custom AlertDialog ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . set Cancel able ( cancel able ) ĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( view ) ĊĠĠĠĠĠĠĠ Ġ// Set Ġthe Ġdialog Ġto Ġnot Ġfocus able Ġ( m akes Ġnavigation Ġignore Ġus Ġadding Ġthe Ġwindow ) ĊĠĠĠĠĠĠĠ Ġdialog . window !!. set Flags ( WindowManager . LayoutParams . FLAG _ NOT _ FOCUS ABLE , ĠWindow Manager . LayoutParams . FLAG _ NOT _ FOCUS ABLE ) ĊĠĠĠĠĠĠĠ Ġdialog . window !!. decor View . system Ui Visibility Ġ= Ġcontext . window . decor View . system Ui Visibility ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġdialog . window !!. clear Flags ( WindowManager . LayoutParams . FLAG _ NOT _ FOCUS ABLE ) ĊĠĠĠĠĠĠĠ Ġval Ġwm Ġ= Ġcontext . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġwm . update View Layout ( context . window . decor View , Ġcontext . window . attributes ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠ Ġ} Ċ }