package Ġcom . hack ware . m orm ont . notebook ĊĊ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . hack ware . m orm ont . notebook . adapters . Note ListAdapter Ċ import Ġcom . hack ware . m orm ont . notebook . adapters . Search Note ListAdapter Ċ import Ġcom . hack ware . m orm ont . notebook . db . Notes Data Base Ċ import Ġcom . hack ware . m orm ont . notebook . db . entity . Notes Data Ċ import Ġorg . wordpress . android . util . Toast Utils . show Toast Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠPopup Menu . On MenuItem ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Db : ĠNotes Data Base ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch View : ĠSearch View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Manager Ġ: RecyclerView . LayoutManager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : ĠNote ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Search Adapter : ĠSearch Note ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Fab Ġ: ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Items : ĠArrayList < Notes Data > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Db Worker Thread : ĠDb Worker Thread ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġp Layout Ġ: String ĊĊĠĠĠ Ġprivate Ġval Ġm Ui Handler Ġ= ĠHandler () Ġ// ĠUI ĠÑħ Ñį Ð½ Ð´ Ð» ÐµÑĢ ĠÐ´Ð»Ñı ĠÑĥ Ð´ Ð¾Ð± Ð½Ð¾Ð¹ ĠÑĢÐ°Ð±Ð¾ÑĤ Ñĭ ĠÑģ ĠÐ¿Ð¾ÑĤ Ð¾Ðº Ð¾Ð¼ ĠÐĳ ÐĶ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar )) ĊĊĠĠĠĠĠĠĠ Ġm Fab Ġ= ĠfindViewById ( R . id . fab ) ĊĠĠĠĠĠĠĠ Ġm Db Worker Thread Ġ= ĠDb Worker Thread (" db Worker Thread ") Ġ// ĠÐ¡ Ð¾Ð·Ð´ Ð°Ð½Ð¸Ðµ ĠÐ´ Ð± ĠÐĴ Ð¾ÑĢ Ðº ÐµÑĢÐ° ĊĠĠĠĠĠĠĠ Ġm Db Worker Thread . start () ĊĊĠĠĠĠĠĠĠ Ġget Pref () ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= ĠfindViewById ( R . id . recycle View ) ĊĠĠĠĠĠĠĠ Ġset View Manager () ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġview Manager ĊĊĠĠĠĠĠĠĠ Ġm Db Ġ= ĠNotes Data Base . getInstance ( this ) Ġ// Ġ ĠÐŁ Ð¾Ð» ÑĥÑĩ ÐµÐ½Ð¸Ðµ ĠÐ¸Ð½ ÑģÑĤÐ°Ð½ Ñģ Ð° ĠÐĳ ÐĶ ĊĠĠĠĠĠĠĠ Ġload Data In ListView () ĊĊĠĠĠĠĠĠĠ Ġm Fab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠEditor :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset RecyclerView Item Touch Listener () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Pref () ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĺ Ð· Ð¼ÐµÐ½ ÐµÐ½Ð¸Ðµ ĠÐ¸Ð½ ÑĤÐµ ÑĦ ÐµÐ¹ Ñģ Ð° ĠÐ² ĠÐ· Ð°Ð² Ð¸Ñģ Ð¸Ð¼Ð¾ÑģÑĤ Ð¸ ĠÐ¾ÑĤ ĠÐ½Ð° ÑģÑĤ ÑĢÐ¾ ÐµÐº ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset View Manager (){ ĊĠĠĠĠĠĠĠ Ġwhen ( p Layout ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 " Ġ-> Ġview Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 " Ġ-> Ġview Manager Ġ= ĠGrid LayoutManager ( this , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġview Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġview Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restart () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Pref () ĊĠĠĠĠĠĠĠ Ġset View Manager () ĊĠĠĠĠĠĠĠ Ġsuper . on Restart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠÐŁ Ð¾Ð» ÑĥÑĩ ÐµÐ½Ð¸Ðµ ĠÐ½Ð° ÑģÑĤ ÑĢÐ¾ ÐµÐº ĠÐ¿ÑĢÐ¸Ð»Ð¾Ð¶ ÐµÐ½Ð¸Ñı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Pref (){ ĊĠĠĠĠĠĠĠ Ġval Ġmy Shared Pref : ĠSharedPreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġp Layout Ġ= Ġmy Shared Pref . getString (" layout _ list ", Ġ" 0 ") !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĿ Ð°Ð· Ð½Ð°Ñĩ ÐµÐ½Ð¸Ðµ ĠÐ» Ð¸ÑģÑĤ ÐµÐ½ ÐµÑĢÐ° ĠÐ½Ð° ĠRecyclerView , ĠÑģÐ¾Ð·Ð´ Ð°Ð½Ð¸Ðµ ĠÐº Ñį Ð» Ð± Ñį ÐºÐ° ĠÐ½Ð° ĠÑģÐ² Ð°Ð¹ Ð¿ Ñĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset RecyclerView Item Touch Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Touch Callback Ġ= Ġobject Ġ: ĠItem Touch Helper . Simple Callback ( 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Touch Helper . LEFT Ġor ĠItem Touch Helper . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete Element From Db ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Ġ= ĠItem Touch Helper ( item Touch Callback ) ĊĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( re cyclerView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ£ Ð´Ð°Ð» ÐµÐ½Ð¸Ðµ ĠNote ĠÑģ ĠÐĳ ÐĶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġto Delete Element From Db ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Db Worker Thread . post Task ( Runnable { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Db ?. notes Data Dao ()?. delete Note ( m Items [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ui Handler . post ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter !!. notify Item Removed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġload Data In ListView () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ Ð¾Ð´ ÐºÐ»ÑİÑĩ ÐµÐ½Ð¸Ðµ ĠÐº ĠÑĤ Ñĥ Ð» Ð» Ð± Ð° ÑĢÑĥ ĠÐ¼ÐµÐ½ Ñİ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠMenu Inflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . app bar _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . set t Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Popup ( findViewById ( R . id . set t )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ search Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View Ġ Ġ= Ġitem . action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Query Text Listener ( search View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĿ Ð°Ð· Ð½Ð°Ñĩ ÐµÐ½Ð¸Ðµ ĠÐ» Ð¸ÑģÑĤ ÐµÐ½ ÐµÑĢÐ° ĠÐ½Ð° ĠÐ¿Ð¾ Ð¸Ñģ ÐºÐ¾Ð² Ð¸Ðº ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsearch Query Text Listener ( search View : ĠSearch View ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch View . query Hint Ġ= Ġ" Search Ġnotes " ĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Notes From Db ( new Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Notes From Db ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( application Context , Ġ" Query ĠPost ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐŁ Ð¾ Ð¸Ñģ Ðº ĠÐ· Ð°Ð¼ ÐµÑĤ ÐºÐ¸ ĠÐ² ĠÐĳ ÐĶ , ĠÐ´Ð¾ÑģÑĤ Ð°ÑĤÑĮ ĠÐ¸ ĠÐ¿Ð¾Ð» Ð¾Ð¶ Ð¸ÑĤÑĮ ĠÐ² ĠÐ° Ð´ Ð°Ð¿ ÑĤÐµÑĢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Notes From Db ( query : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Text Query Ġ= Ġ"% $ query %" ĊĠĠĠĠĠĠĠ Ġm Db !!. notes Data Dao (). get Notes For Query ( search Text Query ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObserver < List < Notes Data >> Ġ{ Ġnotes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items Ġ= ĠArrayList ( notes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Search Adapter Ġ= ĠSearch Note ListAdapter ( m Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġm Search Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Popup ( v : ĠView ): ĠBoolean { ĊĠĠĠĠĠĠĠ ĠPopup Menu ( this , Ġv , ĠGr avity . END ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMainActivity Ġimplements ĠOn MenuItem ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinf late ( R . menu . popup _ menu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MenuItem Click ( item : ĠMenuItem ): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSettings Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ Ġtrue } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐĴ Ñĭ Ð³ ÑĢÑĥÐ· Ð¸ÑĤÑĮ ĠÑģ ĠÐĳ ÐĶ ĠÐ²ÑģÐµ ĠÐ· Ð°Ð¼ ÐµÑĤ ÐºÐ¸ , ĠÐ´Ð¾ÑģÑĤ Ð°ÑĤÑĮ ĠÐ¸ ĠÐ¿Ð¾Ð» Ð¾Ð¶ Ð¸ÑĤÑĮ ĠÐ² ĠÐ° Ð´ Ð°Ð¿ ÑĤÐµÑĢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Data In ListView (){ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotes Data Ġ= Ġm Db ?. notes Data Dao ()?. getAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ui Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notes Data Ġ== Ġnull Ġ|| Ġnotes Data . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( this , Ġ" No Data Ġin ĠCas he ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items Ġ= ĠArrayList ( notes Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠNote ListAdapter ( m Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Db Worker Thread . post Task ( task ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ