package Ġcom . element ary . tasks . settings . additional Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . element ary . tasks . R Ċ import Ġcom . element ary . tasks . core . data . models . Sms Template Ċ import Ġcom . element ary . tasks . core . filter . Search Modifier Ċ import Ġcom . element ary . tasks . core . interfaces . Actions Listener Ċ import Ġcom . element ary . tasks . core . utils . Constants Ċ import Ġcom . element ary . tasks . core . utils . Dialog ues Ċ import Ġcom . element ary . tasks . core . utils . List Actions Ċ import Ġcom . element ary . tasks . core . utils . View Utils Ċ import Ġcom . element ary . tasks . core . view _ models . sms _ templates . Sms Templates ViewModel Ċ import Ġcom . element ary . tasks . databinding . Fragment Settings Templates List Binding Ċ import Ġcom . element ary . tasks . settings . Base Settings Fragment Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠTemplates Fragment Ġ: ĠBase Settings Fragment < Fragment Settings Templates List Binding >() Ġ{ ĊĊĠ Ġprivate Ġval Ġadapter Ġ= ĠTemplates Adapter () ĊĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Sms Templates ViewModel >() ĊĊĠ Ġprivate Ġvar Ġm Search View : ĠSearch View ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm Search Menu : ĠMenuItem ? Ġ= Ġnull ĊĊĠ Ġprivate Ġval Ġsearch Modifier Ġ= Ġobject Ġ: ĠSearch Modifier < Sms Template >( null , Ġ{ ĊĠĠĠ Ġadapter . data Ġ= Ġit ĊĠĠĠ Ġbinding . templates List . smooth Scroll To Position ( 0 ) ĊĠĠĠ Ġrefresh View () ĊĠ Ġ}) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfilter ( v : ĠS ms Template ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsearch Value . isEmpty () Ġ|| Ġv . title . toLowerCase (). contains ( search Value . toLowerCase ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġquery Text Listener Ġ= Ġobject Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġsearch Modifier . set Search Value ( query ) ĊĠĠĠĠĠ Ġm Search Menu ?. collapse Action View () ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġsearch Modifier . set Search Value ( new Text ) ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġm Close Listener Ġ= Ġ{ ĊĠĠĠ Ġsearch Modifier . set Search Value ("") ĊĠĠĠ Ġtrue ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠ Ġset Has Options Menu ( true ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠ Ġinflater . inflate ( R . menu . templates _ menu , Ġmenu ) ĊĠĠĠ Ġm Search Menu Ġ= Ġmenu . find Item ( R . id . action _ search ) ĊĠĠĠ Ġval Ġsearch Manager Ġ= Ġactivity ?. getSystem Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ? ĊĠĠĠ Ġif Ġ( m Search Menu Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġm Search View Ġ= Ġm Search Menu ?. action View Ġas ĠSearch View ? ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( m Search View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġact Ġ= Ġactivity ĊĠĠĠĠĠ Ġif Ġ( search Manager Ġ!= Ġnull Ġ&& Ġact Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Search View ?. set Search able Info ( search Manager . get Search able Info ( act . component Name )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġm Search View ?. setOn Query Text Listener ( query Text Listener ) ĊĠĠĠĠĠ Ġm Search View ?. setOn Close Listener ( m Close Listener ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġinf late ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ) Ġ= ĠFragment Settings Templates List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġbinding . fab . setOnClickListener Ġ{ Ġopen Create Screen () Ġ} ĊĠĠĠ Ġinit Template List () ĊĠĠĠ Ġinit ViewModel () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit ViewModel () Ġ{ ĊĠĠĠ ĠviewModel . sms Templates . observe ( view Lifecycle Owner , Ġ{ Ġsms Templates Ġ-> ĊĠĠĠĠĠ Ġif Ġ( sms Templates Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Templates ( sms Templates ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġopen Create Screen () Ġ{ ĊĠĠĠ ĠstartActivity ( Intent ( context , ĠTemplate Activity :: class . java )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit Template List () Ġ{ ĊĠĠĠ Ġbinding . templates List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠ Ġadapter . actions Listener Ġ= Ġobject Ġ: ĠActions Listener < Sms Template > Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Action ( view : ĠView , Ġposition : ĠInt , Ġt : ĠS ms Template ?, Ġactions : ĠList Actions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( actions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠList Actions . MORE Ġ-> Ġif Ġ( t Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Menu ( view , Ġt ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ ĠList Actions . OPEN Ġ-> Ġif Ġ( t Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Template ( t ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġbinding . templates List . adapter Ġ= Ġadapter ĊĠĠĠ ĠView Utils . listen Scroll ableView ( binding . templates List , Ġ{ Ġset Toolbar Alpha ( to Alpha ( it . toFloat ())) Ġ}) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( it ) Ġbinding . fab . show () ĊĠĠĠĠĠ Ġelse Ġbinding . fab . hide () ĊĠĠĠ Ġ} ĊĠĠĠ Ġrefresh View () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Menu ( view : ĠView , Ġsms Template : ĠS ms Template ) Ġ{ ĊĠĠĠ Ġval Ġitems Ġ= ĠarrayOf ( getString ( R . string . edit ), ĠgetString ( R . string . delete )) ĊĠĠĠ ĠDialog ues . show Popup ( view , Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġopen Template ( sms Template ) ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġdelete Template ( sms Template ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġ* items ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġopen Template ( sms Template : ĠS ms Template ) Ġ{ ĊĠĠĠ ĠstartActivity ( Intent ( context , ĠTemplate Activity :: class . java ) ĊĠĠĠĠĠ Ġ. putExtra ( Constants . INT ENT _ ID , Ġsms Template . key )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdelete Template ( sms Template : ĠS ms Template ) Ġ{ ĊĠĠĠ ĠviewModel . delete Sms Template ( sms Template ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Title (): ĠString Ġ= ĠgetString ( R . string . messages ) ĊĊĠ Ġprivate Ġfun Ġshow Templates ( sms Templates : ĠList < Sms Template >) Ġ{ ĊĠĠĠ Ġsearch Modifier . original Ġ= Ġsms Templates ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġrefresh View () Ġ{ ĊĠĠĠ Ġif Ġ( adapter . item Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġbinding . empty Item . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġbinding . templates List . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġbinding . empty Item . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠ Ġbinding . templates List . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ