package Ġcom . om god se . not ally . parents Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . om god se . not ally . R Ċ import Ġcom . om god se . not ally . activities . MainActivity Ċ import Ġcom . om god se . not ally . activities . Make List Ċ import Ġcom . om god se . not ally . activities . Take Note Ċ import Ġcom . om god se . not ally . adapters . Note Adapter Ċ import Ġcom . om god se . not ally . databinding . Fragment Notes Binding Ċ import Ġcom . om god se . not ally . helpers . Export Helper Ċ import Ġcom . om god se . not ally . helpers . Menu Helper Ċ import Ġcom . om god se . not ally . helpers . Notes Helper Ċ import Ġcom . om god se . not ally . helpers . Settings Helper Ċ import Ġcom . om god se . not ally . interfaces . Dialog Listener Ċ import Ġcom . om god se . not ally . interfaces . Label Listener Ċ import Ġcom . om god se . not ally . interfaces . Note Listener Ċ import Ġcom . om god se . not ally . mis cellaneous .* Ċ import Ġcom . om god se . not ally . view models . Note Model Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠNot ally Fragment Ġ: ĠFragment (), ĠNote Listener Ġ{ ĊĊĠĠĠ Ġinternal Ġlateinit Ġvar ĠmContext : ĠContext ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġnote Adapter : ĠNote Adapter ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġbinding : ĠFragment Notes Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexport Helper : ĠExport Helper ĊĊĠĠĠ Ġinternal Ġval Ġmodel : ĠNote Model Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel . fetch Re levant Notes ( get Payload ()) ĊĊĠĠĠĠĠĠĠ Ġexport Helper Ġ= ĠExport Helper ( mContext , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġnote Adapter Ġ= ĠNote Adapter ( mContext ) ĊĠĠĠĠĠĠĠ Ġnote Adapter . note Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . RecyclerView . adapter Ġ= Ġnote Adapter ĊĠĠĠĠĠĠĠ Ġbinding . RecyclerView . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġsetup Padding () ĊĠĠĠĠĠĠĠ Ġsetup Frame Layout () ĊĠĠĠĠĠĠĠ Ġsetup LayoutManager () ĊĠĠĠĠĠĠĠ Ġsetup Item Decoration () ĊĊĠĠĠĠĠĠĠ Ġpopulate RecyclerView () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Notes Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġget Payload () ĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġdata ?. getString Extra ( Constants . FilePath ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠConstants . Request Code Export File Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġdata ?. data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexport Helper . writeFile To Stream ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Edited File Ġ-> Ġmodel . handle Note Edited ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Created File Ġ-> Ġmodel . handle Note Created ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Deleted File Ġ-> Ġmodel . handle Note Deleted ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Arch ived File Ġ-> Ġmodel . handle Note Arch ived ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Restore d File Ġ-> Ġmodel . handle Note Restore d ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . ResultCode Deleted Fore ver File Ġ-> Ġmodel . handle Note Deleted Fore ver ( filePath , Ġpayload ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Note Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnote Ġ= Ġnote Adapter . current List [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġif Ġ( note . is Note ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( mContext , ĠTake Note :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠIntent ( mContext , ĠMake List :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Constants . FilePath , Ġnote . filePath ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Constants . Previous Fragment , Ġget Fragment ID ()) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠConstants . Request Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Note Long Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( get Supported Operations (). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote Ġ= Ġnote Adapter . current List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotes Helper Ġ= ĠNotes Helper ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Helper Ġ= ĠMenu Helper ( mContext ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Supported Operations (). forEach Ġ{ Ġoperation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Helper . addItem ( operation . text Id , Ġoperation . drawable Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Helper . set Listener ( object Ġ: ĠDialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Item Clicked ( label : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( label ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . share ) Ġ-> Ġnotes Helper . share Note ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . labels ) Ġ-> Ġlabel Note ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . export ) Ġ-> Ġshow Export Dialog ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . delete ) Ġ-> Ġmodel . handle Note Deleted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote . filePath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Payload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . archive ) Ġ-> Ġmodel . handle Note Arch ived ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote . filePath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Payload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . restore ) Ġ-> Ġmodel . handle Note Restore d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote . filePath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Payload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . un archive ) Ġ-> Ġmodel . handle Note Restore d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote . filePath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Payload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . delete _ fore ver ) Ġ-> Ġconfirm Deletion ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Helper . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġsetup Padding () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpadding Ġ= ĠmContext . resources . get Dimension Pixel Size ( R . dim en . re cyclerView Padding ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Helper Ġ= ĠSettings Helper ( mContext ) ĊĠĠĠĠĠĠĠ Ġval Ġcard Preference Ġ= Ġsettings Helper . get Note Type Preferences () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( card Preference Ġ== ĠmContext . getString ( R . string . elev ated Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . RecyclerView . set Padding Relative ( padding , Ġ 0 , Ġpadding , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Frame Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . Frame Layout . background Ġ= Ġget Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup LayoutManager () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Helper Ġ= ĠSettings Helper ( mContext ) ĊĠĠĠĠĠĠĠ Ġval Ġview Preference Ġ= Ġsettings Helper . getView Preference () ĊĊĠĠĠĠĠĠĠ Ġbinding . RecyclerView . layout Manager Ġ= Ġif Ġ( view Preference Ġ== ĠmContext . getString ( R . string . grid Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSt agger ed Grid LayoutManager ( 2 , ĠLinearLayout . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠLinearLayoutManager ( mContext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Item Decoration () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Helper Ġ= ĠSettings Helper ( mContext ) ĊĠĠĠĠĠĠĠ Ġval Ġcard Margin Ġ= ĠmContext . resources . get Dimension Pixel Size ( R . dim en . card Margin ) ĊĠĠĠĠĠĠĠ Ġval Ġview Preference Ġ= Ġsettings Helper . getView Preference () ĊĠĠĠĠĠĠĠ Ġval Ġcard Preference Ġ= Ġsettings Helper . get Note Type Preferences () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( card Preference Ġ== ĠmContext . getString ( R . string . elev ated Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Preference Ġ== ĠmContext . getString ( R . string . grid Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . RecyclerView . addItem Decoration ( Item Decoration ( card Margin , Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġbinding . RecyclerView . addItem Decoration ( Item Decoration ( card Margin , Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġlabel Note ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġobject Ġ: ĠLabel Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonUpdate Labels ( labels : ĠHashSet < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . edit Note Label ( note , Ġlabels , Ġget Payload ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotes Helper Ġ= ĠNotes Helper ( mContext ) ĊĠĠĠĠĠĠĠ Ġnotes Helper . label Note ( note . labels , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfirm Deletion ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog Builder Ġ= ĠMaterial AlertDialog Builder ( mContext ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . setMessage ( R . string . delete _ note _ fore ver ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . set Positive Button ( R . string . delete ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . handle Note Deleted Fore ver ( note . filePath , Ġget Payload ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . set Negative Button ( R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠ Ġalert Dialog Builder . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Export Dialog ( note : ĠNote ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( note . filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġmenu Helper Ġ= ĠMenu Helper ( mContext ) ĊĊĠĠĠĠĠĠĠ Ġmenu Helper . addItem ( R . string . pdf , ĠR . drawable . pdf ) ĊĠĠĠĠĠĠĠ Ġmenu Helper . addItem ( R . string . html , ĠR . drawable . html ) ĊĠĠĠĠĠĠĠ Ġmenu Helper . addItem ( R . string . plain _ text , ĠR . drawable . plain _ text ) ĊĊĠĠĠĠĠĠĠ Ġmenu Helper . set Listener ( object Ġ: ĠDialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Item Clicked ( label : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( label ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . pdf ) Ġ-> Ġexport Helper . export File To PDF ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . html ) Ġ-> Ġexport Helper . export File To HTML ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . getString ( R . string . plain _ text ) Ġ-> Ġexport Helper . export File To Plain Text ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġmenu Helper . show () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġpopulate RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Observable ()?. observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġnotes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Adapter . submit Correct List ( notes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Visibility ( notes ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfirm Visibility ( notes : ĠList < Note >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( notes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . RecyclerView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( mContext Ġas ĠMainActivity ). binding . AppBar Layout . set Expanded ( true , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġabstract Ġfun Ġget Fragment ID (): ĠInt ĊĊĠĠĠ Ġabstract Ġfun Ġget Background (): ĠDrawable ? ĊĊĠĠĠ Ġabstract Ġfun Ġget Supported Operations (): ĠArrayList < Operation > ĊĊĊĠĠĠ Ġabstract Ġfun Ġget Payload (): ĠString ĊĊĠĠĠ Ġabstract Ġfun Ġget Observable (): ĠMutable LiveData < ArrayList < Note >> ? Ċ }