package Ġcom . ar im dor . shared notes . ui . book ĊĊ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Toast Ċ import Ġcom . ar im dor . shared notes . R Ċ import Ġcom . ar im dor . shared notes . repository . entity . Book Ċ import Ġcom . ar im dor . shared notes . ui . login . Login Activity ĊĊ Ċ class ĠBook Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbook Adapter : ĠBook Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf btn Add Book : ĠFloating ActionButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtxt find Book : ĠEditText ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Providers . of ( this ). get ( Book ViewModel :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġbooks : ĠMutable List < Book > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ book , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= Ġactivity !!. get SharedPreferences (" preferences ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġbook Adapter Ġ= ĠBook Adapter ( context !! , Ġbooks , ĠviewModel ) ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġview . findViewById ( R . id . re cyclerView Book ) ĊĠĠĠĠĠĠĠ Ġf btn Add Book Ġ= Ġview . findViewById ( R . id . f btn Add Book ) ĊĠĠĠĠĠĠĠ Ġtxt find Book Ġ= Ġview . findViewById ( R . id . txt Search Book ) ĊĊĊĠĠĠĠĠĠĠ Ġf btn Add Book . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow AlertDialog (" Ag regar Ġnue va Ġli bre ta ", Ġ" Ag rega Ġun Ġt ÃŃtulo Ġa Ġla Ġli bre ta ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Books (). observe ( this , ĠObserver Ġ{ Ġbooks Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . books . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . books . addAll ( 0 , Ġbooks !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . schedule Layout Animation () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtxt find Book . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . find Book By Title ( s . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsetup Recycler Books () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Recycler Books () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġanimation Recycler Ġ= ĠAnimation Utils . load Layout Animation ( re cyclerView . context , ĠR . anim . layout _ animation _ load ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity , ĠLinearLayout . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . has Fixed Size () ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġbook Adapter ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Animation Ġ= Ġanimation Recycler ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Boolean (" lo ged ", Ġfalse ). apply () ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Out And For get () Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). clear (). apply () ĊĠĠĠĠĠĠĠ Ġlog Out () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . update _ all Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Books () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ forget Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Out And For get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAdd ĠBook ĠDialog ĊĠĠĠ Ġprivate Ġfun Ġshow AlertDialog ( title : ĠString ?, Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( context !! ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( title ) ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage ( message ) ĊĊĠĠĠĠĠĠĠ Ġval Ġview Inflater Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . dialog _ create _ book , Ġnull ) ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( view Inflater ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġview Inflater . findViewById ( R . id . txt Add Book Title ) Ġas ĠEditText ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" Add ") Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġinput . text . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Books ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" The Ġname Ġis Ġrequired Ġto Ġcreate Ġa Ġnew ĠBook ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} Ċ Ċ } Ċ