package Ġpl . m are k lang iew ic z . my utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroid . view . LayoutInflater . from Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġpl . m are k lang iew ic z . up ue . Cancel Ċ import Ġpl . m are k lang iew ic z . up ue . IS cheduler Ċ import Ġpl . m are k lang iew ic z . up ue . Pul lee Ċ import Ġpl . m are k lang iew ic z . up ue . P us he e Ċ import Ġpl . m are k lang iew ic z . up ue .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠM are k ĠLang iew ic z Ġon Ġ 2 9 . 0 1 . 1 6 . Ċ Ġ* ĠSome Ġutilities Ċ Ġ*/ ĊĊ Ċ operator Ġfun ĠTextView . setValue ( obj : ĠAny ?, Ġproperty : ĠAny ?, Ġarg : ĠCharSequence ) Ġ{ Ġtext Ġ= Ġarg Ġ} Ċ Ċ operator Ġfun ĠTextView . getValue ( obj : ĠAny ?, Ġproperty : ĠAny ?): ĠString Ġ= Ġtext . toString () Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< V Ġ: ĠView > ĠViewGroup . inflate (@ Layout Res Ġres : ĠInt , Ġattach : ĠBoolean Ġ= Ġfalse ) Ġ= Ġfrom ( context ). inflate ( res , Ġthis , Ġattach ) Ġas ? ĠV Ċ Ċ inline Ġfun ĠView . sn ack ( message : ĠString , Ġlength : ĠInt Ġ= ĠSn ackbar . LENGTH _ LONG , Ġf : ĠSn ackbar . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġsn ack Ġ= ĠSn ackbar . make ( this , Ġmessage , Ġlength ) ĊĠĠĠ Ġsn ack . f () ĊĠĠĠ Ġsn ack . show () Ċ } Ċ Ċ fun ĠSn ackbar . action ( action : ĠString , Ġcolor : ĠInt ? Ġ= Ġnull , Ġlistener : Ġ( View ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġset Action ( action , Ġlistener ) ĊĠĠĠ Ġcolor ?. let Ġ{ Ġset Action TextColor ( it ) Ġ} Ċ } Ċ Ċ operator Ġfun ĠViewGroup . get ( pos : ĠInt ): ĠView Ġ= Ġget Child At ( pos ) Ċ Ċ val ĠViewGroup . views : ĠList < View > Ġget () Ġ= Ġ( 0 Ġuntil Ġchild Count ). map Ġ{ Ġthis [ it ] Ġ} Ċ Ċ fun ĠView ?. overlap s ( that : ĠView ?): ĠBoolean Ġ{ ĊĊĠĠĠ Ġif Ġ( this Ġ=== Ġnull Ġ|| Ġthat Ġ=== Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġif Ġ( this . visibility Ġ!= ĠView . VISIBLE Ġ|| Ġthat . visibility Ġ!= ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġval Ġw 1 Ġ= Ġthis . meas ured Width ĊĠĠĠ Ġif Ġ( w 1 Ġ< Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġval Ġw 2 Ġ= Ġthat . meas ured Width ĊĠĠĠ Ġif Ġ( w 2 Ġ< Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġval Ġh 1 Ġ= Ġthis . meas ured Height ĊĠĠĠ Ġif Ġ( h 1 Ġ< Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġval Ġh 2 Ġ= Ġthat . meas ured Height ĊĠĠĠ Ġif Ġ( h 2 Ġ< Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġval Ġpos 1 Ġ= ĠInt Array ( 2 ) ĊĠĠĠ Ġval Ġpos 2 Ġ= ĠInt Array ( 2 ) ĊĠĠĠ Ġthis . getLocation In Window ( pos 1 ) ĊĠĠĠ Ġthat . getLocation In Window ( pos 2 ) ĊĊĠĠĠ Ġval Ġr 1 Ġ= ĠRect ( pos 1 [ 0 ], Ġpos 1 [ 1 ], Ġpos 1 [ 0 ] Ġ+ Ġw 1 , Ġpos 1 [ 1 ] Ġ+ Ġh 1 ) ĊĠĠĠ Ġval Ġr 2 Ġ= ĠRect ( pos 2 [ 0 ], Ġpos 2 [ 1 ], Ġpos 2 [ 0 ] Ġ+ Ġw 2 , Ġpos 2 [ 1 ] Ġ+ Ġh 2 ) ĊĊĠĠĠ Ġreturn ĠRect . intersect s ( r 1 , Ġr 2 ) Ċ } Ċ Ċ fun ĠCursor . k getString ( columnName : ĠString ): ĠString Ġ= ĠgetString ( getColumnIndex OrThrow ( columnName )) Ċ fun ĠCursor . k getInt ( columnName : ĠString ): ĠInt Ġ= Ġget Int ( getColumnIndex OrThrow ( columnName )) Ċ Ċ fun ĠCursor . k getString OrNull ( columnName : ĠString ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= Ġget Column Index OrThrow ( columnName ) ĊĠĠĠ Ġreturn Ġif Ġ( isNull ( index )) Ġnull Ġelse ĠgetString ( index ) Ċ } Ċ fun ĠCursor . k getInt OrNull ( columnName : ĠString ): ĠInt ? Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= Ġget Column Index OrThrow ( columnName ) ĊĠĠĠ Ġreturn Ġif Ġ( isNull ( index )) Ġnull Ġelse Ġget Int ( index ) Ċ } Ċ Ċ // ĠTODO ĠSO MED AY : Ġsimilar ĠCursor Ġextensions Ġfor Ġother Ġdata Ġtypes ĊĊ Ċ fun ĠContent Resolver . k clear ( uri : ĠUri ): ĠInt Ġ= Ġdelete ( uri , Ġnull , Ġnull ) Ċ Ċ inline Ġfun ĠContent Resolver . k insert ( uri : ĠUri , Ġcv builder : ĠContent Values . () Ġ-> ĠUnit ): ĠUri Ġ= Ġinsert ( uri , ĠContent Values (). apply ( cv builder )) !! Ċ Ċ inline Ġfun ĠContent Resolver . k query ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠĠĠ Ġprojection : ĠArray < out ĠString >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġselection : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < out ĠString >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġsort Order : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġuse cursor : Ġ( Cursor ) Ġ-> ĠBoolean Ċ ): ĠBoolean ĊĠĠĠĠĠĠĠ Ġ= Ġquery ( uri , Ġprojection , Ġselection , Ġselection Args , Ġsort Order )?. use ( use cursor ) Ġ?: Ġfalse ĊĊ Ċ fun ĠSQLite Database . createTable ( name : ĠString , Ġvar arg Ġcolumns : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġsql Ġ= ĠStringBuilder (" CREATE ĠTABLE Ġ") ĊĠĠĠ Ġsql . append ( name ) ĊĠĠĠ Ġsql . append (" Ġ( Ġ") ĊĠĠĠ Ġfor Ġ( i Ġin Ġcolumns . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsql . append ( columns [ i ]) ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġcolumns . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql . append (" Ġ, Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġsql . append (" Ġ) Ġ") ĊĠĠĠ Ġexec SQL ( sql . toString ()) Ċ } Ċ Ċ fun ĠSQLite Database . drop Table ( name : ĠString ) Ġ= Ġexec SQL (" DROP ĠTABLE ĠIF ĠEXISTS Ġ" Ġ+ Ġname ) Ċ Ċ fun ĠActivity . getInput Method Service () Ġ= Ġget System Service ( Activity . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager Ċ // ĠTODO ĠL ATER : Ġsimilar Ġmethods Ġfor Ġother Ġservices Ċ Ċ fun ĠActivity . hide Keyboard () Ġ= Ġcurrent Focus ?. window Token ?. let Ġ{ Ġget Input Method Service (). hide Soft Input From Window ( it , Ġ 0 ) Ġ} Ġ?: Ġfalse Ċ Ċ fun Ġ< I > ĠRecyclerView . notify ( chg : ĠL st Ch g < I >) Ġ= Ġadapter ?. run Ġ{ ĊĠĠĠ Ġwhen ( chg ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠL st Set Ġ-> Ġnotify Item Changed ( chg . idx ) ĊĠĠĠĠĠĠĠ Ġis ĠL st Ins Ġ-> Ġnotify Item Inserted ( chg . idx ) ĊĠĠĠĠĠĠĠ Ġis ĠL st Del Ġ-> Ġnotify Item Removed ( chg . idx ) ĊĠĠĠĠĠĠĠ Ġis ĠL st Add Ġ-> Ġnotify Item Inserted ( item Count Ġ- Ġ 1 ) Ġ// Ġitem Count Ġis Ġalready Ġincreased ĊĠĠĠĠĠĠĠ Ġis ĠL st Mov Ġ-> Ġnotify Item Moved ( chg . src , Ġch g . dst ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠHandler Scheduler ( private Ġval Ġhandler : ĠHandler Ġ= ĠHandler ( Looper . get Main Looper ())) Ġ: ĠIS cheduler Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġschedule ( delay : ĠLong , Ġaction : Ġ( Unit ) Ġ-> ĠUnit ): ĠP us he e < Cancel > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrunnable Ġ= ĠRunnable Ġ{ Ġaction ( Unit ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( delay Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( run nable , Ġdelay ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post ( run nable ) ĊĠĠĠĠĠĠĠ Ġreturn ĠP us he e Ġ{ Ġhandler . remove Callbacks ( run nable ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġnow Ġ= ĠP ul lee Ġ{ Ġ_: ĠUnit Ġ-> ĠSystem . currentTimeMillis () Ġ} Ċ } ĊĊ