package Ġcom . nik ol ad rl jac a . get re min ded ĊĊ Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . time picker . Material Time Picker Ċ import Ġcom . nik ol ad rl jac a . get re min ded . utils . Alert Receiver Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġhour Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġminutes Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcheck Theme () ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġcheck Dark Mode () ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġhas Seen Dialog Ġ= Ġshared . getBoolean ( HAS _ SE EN _ DIALOG , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Seen Dialog ) Ġshow Start Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Dark Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġdark Mode Toggle Ġ= Ġshared . getBoolean (" dark _ mode _ switch ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dark Mode Toggle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor List Ġ= Ġprefs . getString (" accent _ color _ list ", Ġ" null ") ĊĠĠĠĠĠĠĠ Ġif Ġ( color List Ġ== Ġ" red ") Ġset Theme ( R . style . App Theme Red ) ĊĠĠĠĠĠĠĠ Ġif Ġ( color List Ġ== Ġ" green ") Ġset Theme ( R . style . App Theme Green ) ĊĠĠĠĠĠĠĠ Ġif Ġ( color List Ġ== Ġ" blue ") Ġset Theme ( R . style . App Theme ) ĊĠĠĠĠĠĠĠ Ġif Ġ( color List Ġ== Ġ" orange ") Ġset Theme ( R . style . App Theme Orange ) ĊĠĠĠĠĠĠĠ Ġif Ġ( color List Ġ== Ġ" purple ") Ġset Theme ( R . style . App Theme Pur ple ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Start Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog Builder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . setTitle ( getString ( R . string . welcome _ dialog )) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . setMessage ( getString ( R . string . welcome _ message )) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . set Positive Button ( getString ( R . string . alert _ dialog _ ok )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// display Ġclock Ġdialog Ġand Ġsave Ġvalue Ġto Ġshared Ġprefs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared . put Boolean ( HAS _ SE EN _ DIALOG , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Time Picker () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// close Ġthe Ġapp Ġif Ġdialog Ġis Ġcanceled Ġor Ġset Ġa Ġdefault Ġtime ? ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . set Negative Button ( getString ( R . string . cancel )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . create (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Time Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Builder Ġ= ĠMaterial Time Picker . newInstance () ĊĠĠĠĠĠĠĠ Ġtime Builder . set Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġit . hour ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes Ġ= Ġit . minute ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// here Ġyou Ġwant Ġto Ġset Ġthe Ġtime Ġfor ĠAlarm Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġhour ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġminutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// here Ġstart Ġthe Ġalarm Manager Ġand Ġpass Ġthis Ġcalendar Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Alarm ( calendar ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// save Ġto Ġshared Prefs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared . put Long (" reminder _ time ", Ġcalendar . time In Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared . apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( fab _ create _ new _ reminder , ĠgetString ( R . string . time _ saved ), ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Anchor View ( fab _ create _ new _ reminder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtime Builder . show ( support FragmentManager , Ġ" tag ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Alarm ( calendar : ĠCalendar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalarm Manager Ġ= Ġget System Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAlert Receiver :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . get Broadcast ( this , Ġ 1 , Ġintent , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġalarm Manager . set In exact Repe ating ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . RTC _ WAKE UP , Ġ// w akes Ġup Ġthe Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time In Millis , Ġ// alarm Ġfires Ġoff Ġat Ġthis Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlarm Manager . INTERVAL _ DAY , Ġ// this Ġis Ġthe Ġrepe ating Ġinterval ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Intent ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHAS _ SE EN _ DIALOG Ġ= Ġ" has _ seen _ dialog " ĊĠĠĠ Ġ} Ċ }