package Ġio . heck el . nt fy . ui Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġio . heck el . nt fy . R Ċ import Ġio . heck el . nt fy . db . Database Ċ import Ġio . heck el . nt fy . db . Repository Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ Ċ class ĠNotification Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĠĠĠ Ġvar Ġsettings Listener : ĠNotification Settings Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠRepository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute For 3 0 min Button : ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute For 1 h Button : ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute For 2 h Button : ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute For 8 h Button : ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute Until Tom orrow Button : ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmute Fore ver Button : ĠRadio Button ĊĊĠĠĠ Ġinterface ĠNotification Settings Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Notification Mut ed Until Changed ( muted Until Timestamp : ĠLong ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Listener Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Listener Ġ= Ġactivity Ġas ĠNotification Settings Listener ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Activity Ġcannot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDependencies ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠRepository . getInstance ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBuild Ġroot Ġview ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġrequire Activity (). layout Inflater . inflate ( R . layout . fragment _ notification _ dialog , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġmute For 3 0 min Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ 3 0 min ) ĊĠĠĠĠĠĠĠ Ġmute For 3 0 min Button . setOnClickListener Ġ{ ĠonClick Minutes ( 3 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute For 1 h Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ 1 h ) ĊĠĠĠĠĠĠĠ Ġmute For 1 h Button . setOnClickListener Ġ{ ĠonClick Minutes ( 6 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute For 2 h Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ 2 h ) ĊĠĠĠĠĠĠĠ Ġmute For 2 h Button . setOnClickListener Ġ{ ĠonClick Minutes ( 2 Ġ* Ġ 6 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute For 8 h Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ 8 h ) ĊĠĠĠĠĠĠĠ Ġmute For 8 h Button . setOnClickListener { ĠonClick Minutes ( 8 Ġ* Ġ 6 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute Until Tom orrow Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ tom orrow ) ĊĠĠĠĠĠĠĠ Ġmute Until Tom orrow Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDuplicate Ġcode Ġin ĠSettings Activity , Ġ: shr ug : Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . add ( Calendar . DAY _ OF _ MONTH , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . set ( Calendar . HOUR _ OF _ DAY , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . set ( Calendar . MINUTE , Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . set ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate . set ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( date . time In Millis / 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute Fore ver Button Ġ= Ġview . findViewById ( R . id . notification _ dialog _ fore ver ) ĊĠĠĠĠĠĠĠ Ġmute Fore ver Button . setOnClickListener { ĠonClick ( Repository . MUT ED _ UNT IL _ FORE VER ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonClick Minutes ( minutes : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonClick ( System . currentTimeMillis ()/ 1 0 0 0 Ġ+ Ġminutes Ġ* Ġ 6 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonClick ( muted Until Timestamp : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 5 0 ) Ġ// ĠAnother Ġhack : ĠLet Ġthe Ġanimation Ġfinish Ġbefore Ġdis missing Ġthe Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Listener ?. on Notification Mut ed Until Changed ( muted Until Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" N tf y Notification Fragment " ĊĠĠĠ Ġ} Ċ } Ċ