package Ġcom . kp stv . xc lip per . ui . fragments . sheets Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . kp stv . xc lip per . data . model . Clip Ċ import Ġcom . kp stv . xc lip per . data . provider . Preference Provider Ċ import Ġcom . kp stv . xc lip per . di . Common Re usable Entry Points Ċ import Ġcom . kp stv . xc lip per . extensions . elements . Custom Rounded Bottom Sheet Fragment Ċ import Ġcom . kp stv . xc lip per . extensions . view Binding Ċ import Ġcom . kp stv . xc lip per . feature _ special . R Ċ import Ġcom . kp stv . xc lip per . feature _ special . databinding . Bottom Sheet Special Binding Ċ import Ġcom . kp stv . xc lip per . ui . helpers . Special Helper Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġes . dm oral . toast y . Toast y Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ @ Android EntryPoint Ċ class ĠSpecial Bottom Sheet Ġ: ĠCustom Rounded Bottom Sheet Fragment ( R . layout . bottom _ sheet _ special ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding ( Bottom Sheet Special Binding :: bind ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġarguments ?. get Parcelable < Args >( ARG _ CLIP ) Ġ?: Ġrun Ġ{ Ġdismiss (); Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ ĠSpecial Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager Ġ= Ġrequire FragmentManager (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope Ġ= Ġview Lifecycle Owner . lifecycle Scope , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclip Ġ= Ġargs . clip ĊĠĠĠĠĠĠĠ Ġ). set Actions ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġdata Ġclass ĠArgs ( val Ġclip Json : ĠString ) Ġ: ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclip : ĠClip Ġget () Ġ= ĠClip . fromJson ( clip Json ) ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom Clip ( clip : ĠClip ) Ġ= ĠArgs ( clip Json Ġ= Ġclip . toJson ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ CLIP Ġ= Ġ" com . kp stv . xc lip per : arg : clip _ json " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDICTIONARY _ DIALOG Ġ= Ġ" dictionary _ dialog " ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠPreference Provider . is Dialog Shown (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Boolean Key ( DI CTIONARY _ DIALOG , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠPreference Provider . set Dialog Shown ( value : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean Key ( DI CTIONARY _ DIALOG , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow ( clip : ĠClip , Ġactivity : ĠFragment Activity , ĠonClose : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( clip , Ġactivity , Ġactivity . support FragmentManager , ĠonClose ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow ( clip : ĠClip , Ġfragment : ĠFragment , ĠonClose : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( clip , Ġfragment . require Context (), Ġfragment . child FragmentManager , ĠonClose ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow ( clip : ĠClip , Ġcontext : ĠContext , Ġfragment Manager : ĠFragment Manager , ĠonClose : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreference Provider Ġ= ĠCommon Re usable Entry Points . get ( context ). preference Provider () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġshow Sheet () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsheet Ġ= ĠSpecial Bottom Sheet (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( ARG _ CLIP , ĠArgs . from Clip ( clip )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsheet . show Now ( fragment Manager , Ġ" blank ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsheet . dialog ?. setOn Dismiss Listener Ġ{ ĠonClose () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! preference Provider . is Dialog Shown ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dis closure Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠR . string . dictionary _ dis closure , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Accept Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Provider . set Dialog Shown ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sheet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Den y Ġ= ĠonClose ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sheet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Dis closure Dialog ( context : ĠContext , Ġ@ String Res Ġmessage : ĠInt , Ġon Accept : Ġ() Ġ-> ĠUnit , Ġon Den y : Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . dis closure ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . accept ) Ġ{ Ġ_, Ġ_ Ġ-> Ġon Accept ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . deny ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( context , Ġcontext . getString ( R . string . dis closure _ deny )). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Den y () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }