package Ġio . case y . mus ik cube . remote . ui . shared . extension Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 4 . view . MenuItem Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġio . case y . mus ik cube . remote . Application Ċ import Ġio . case y . mus ik cube . remote . R Ċ import Ġio . case y . mus ik cube . remote . ui . shared . activity . Filter able Ċ import Ġio . case y . mus ik cube . remote . ui . shared . fragment . Transport Fragment Ċ import Ġio . case y . mus ik cube . remote . util . Strings Ċ Ċ val ĠEX TRA _ ACTIVITY _ TITLE Ġ= Ġ" extra _ title " Ċ Ċ fun ĠAppCompatActivity . setup Default RecyclerView ( ĊĠĠĠ Ġre cyclerView : ĠRecyclerView , Ġadapter : ĠRecyclerView . Adapter <* >) Ċ { ĊĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠ Ġval Ġdivider Item Decoration Ġ= ĠDiv ider Item Decoration ( this , Ġlayout Manager . orientation ) ĊĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠ Ġre cyclerView . addItem Decoration ( divider Item Decoration ) Ċ } Ċ Ċ fun ĠRecyclerView . ViewHolder . getColor Compat ( resourceId : ĠInt ): ĠInt Ġ= ĊĠĠĠ ĠContext Compat . getColor ( item View . context , Ġresource Id ) Ċ Ċ fun ĠView . getColor Compat ( resourceId : ĠInt ): ĠInt Ġ= ĊĠĠĠ ĠContext Compat . getColor ( context , Ġresource Id ) Ċ Ċ fun ĠFragment . getColor Compat ( resourceId : ĠInt ): ĠInt Ġ= ĊĠĠĠ ĠContext Compat . getColor ( activity !! , Ġresource Id ) Ċ Ċ fun ĠAppCompatActivity . getColor Compat ( resourceId : ĠInt ): ĠInt Ġ= ĊĠĠĠ ĠContext Compat . getColor ( this , Ġresource Id ) Ċ Ċ fun ĠAppCompatActivity . enable Up Navigation () Ġ{ ĊĠĠĠ Ġval Ġab Ġ= Ġthis . support ActionBar ĊĠĠĠ Ġab ?. set Display Home As Up Enabled ( true ) Ċ } Ċ Ċ fun ĠAppCompatActivity . add Transport Fragment ( ĊĠĠĠĠĠĠĠ Ġlistener : ĠTransport Fragment . On Model Changed Listener ? Ġ= Ġnull ): ĠTransport Fragment ? Ċ { ĊĠĠĠ Ġval Ġroot Ġ= ĠfindViewById < View >( android . R . id . content ) ĊĠĠĠ Ġif Ġ( root Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root . findViewById < View >( R . id . transport _ container ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠTransport Fragment . newInstance () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . transport _ container , Ġfragment , ĠTransport Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . model Changed Listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } ĊĊ Ċ fun ĠAppCompatActivity . setTitle From Intent ( default Id : ĠInt ) Ġ= ĊĠĠĠ Ġthis . setTitle From Intent ( getString ( default Id )) Ċ Ċ fun ĠAppCompatActivity . setTitle From Intent ( default Title : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġtitle Ġ= Ġthis . intent . getString Extra ( EXTRA _ ACTIVITY _ TITLE ) ĊĠĠĠ Ġthis . title Ġ= Ġif Ġ( Strings . not Empty ( title )) Ġtitle Ġelse Ġdefault Title Ċ } Ċ Ċ fun ĠAppCompatActivity . set Fab Visible ( visible : ĠBoolean , Ġfab : ĠView , Ġre cycler : ĠRecyclerView ) Ġ{ ĊĠĠĠ Ġif Ġ( visible ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġthis . resources . get Dimension Pixel Size ( R . dim en . fab _ plus _ padding ) ĊĠĠĠĠĠĠĠ Ġfab . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġre cycler . clip To Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġre cycler . set Padding ( 0 , Ġ 0 , Ġ 0 , Ġbottom ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfab . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġre cycler . clip To Padding Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġre cycler . set Padding ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAppCompatActivity . init Search Menu ( menu : ĠMenu , Ġfilter able : ĠFilter able ?) Ġ{ ĊĠĠĠ Ġthis . menu Inflater . inflate ( R . menu . search _ menu , Ġmenu ) ĊĊĠĠĠ Ġval Ġsearch MenuItem Ġ= Ġmenu . find Item ( R . id . action _ search ) ĊĠĠĠ Ġval Ġsearch View Ġ= ĠMenuItem Compat . getAction View ( search MenuItem ) Ġas ĠSearch View ĊĊĠĠĠ Ġsearch View . maxWidth Ġ= ĠInteger . MAX _ VALUE ĊĊĠĠĠ Ġif Ġ( filter able Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter able . set Filter ( new Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Close Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter able . set Filter ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsearch Manager Ġ= Ġthis . getSystem Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ĊĠĠĠ Ġval Ġsearch able Info Ġ= Ġsearch Manager . get Search able Info ( this . component Name ) ĊĊĠĠĠ Ġsearch View . set Search able Info ( search able Info ) ĊĠĠĠ Ġsearch View . setIcon ified ByDefault ( true ) Ċ } Ċ Ċ fun ĠCheckBox . set Check Without Event ( checked : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : Ġ( Compound Button , ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . setOn Checked ChangeListener ( null ) ĊĠĠĠ Ġthis . isChecked Ġ= Ġchecked ĊĠĠĠ Ġthis . setOn Checked ChangeListener ( listener ) Ċ } Ċ Ċ fun ĠEditText . setText And Move Cursor ToEnd ( text : ĠString ) Ġ{ ĊĠĠĠ Ġthis . setText ( text ) ĊĠĠĠ Ġthis . setSelection ( this . text . length ) Ċ } Ċ Ċ fun ĠView . setVisible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= Ġif Ġ( visible ) ĠView . VISIBLE Ġelse ĠView . GONE Ċ } Ċ Ċ fun ĠAppCompatActivity . dp To Px ( dp : ĠFloat ): ĠFloat Ġ= Ġdp Ġ* Ġthis . resources . display Metrics . density Ċ Ċ fun Ġshow Keyboard ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġimm . toggle Soft Input ( Input Method Manager . SHOW _ FOR CED , ĠInput Method Manager . HIDE _ IMP LICIT _ ONLY ) Ċ } Ċ Ċ fun Ġhide Keyboard ( context : ĠContext , Ġview : ĠView ) Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġcontext . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġimm . hide Soft Input From Window ( view . window Token , Ġ 0 ) Ċ } Ċ Ċ fun ĠAppCompatActivity . show Keyboard () Ġ= Ġshow Keyboard ( this ) Ċ Ċ fun ĠAppCompatActivity . hide Keyboard ( view : ĠView ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġv Ġ= Ġview Ġ?: Ġthis . findViewById ( android . R . id . content ) ĊĠĠĠ Ġhide Keyboard ( this , Ġv ) Ċ } Ċ Ċ fun ĠDialog Fragment . show Keyboard () Ġ= Ġshow Keyboard ( activity !! ) Ċ Ċ fun ĠDialog Fragment . hide Keyboard () Ġ= ĊĠĠĠ Ġhide Keyboard ( activity !! , Ġactivity !!. findViewById ( android . R . id . content )) Ċ Ċ fun ĠAppCompatActivity . dialog Visible ( tag : ĠString ): ĠBoolean Ġ= ĊĠĠĠ Ġthis . support FragmentManager . find Fragment By Tag ( tag ) Ġ!= Ġnull Ċ Ċ fun ĠAppCompatActivity . show Dialog ( dialog : ĠDialog Fragment , Ġtag : ĠString ) Ġ{ ĊĠĠĠ Ġdialog . show ( this . support FragmentManager , Ġtag ) Ċ } Ċ Ċ fun Ġshow Snackbar ( view : ĠView , Ġtext : ĠString , Ġbg Color : ĠInt , Ġfg Color : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġval Ġsb Ġ= ĠSn ackbar . make ( view , Ġtext , ĠSn ackbar . LENGTH _ LONG ) ĊĊĠĠĠ Ġif Ġ( button Text Ġ!= Ġnull Ġ&& Ġbutton Cb Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . setAction ( button Text , Ġbutton Cb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsb View Ġ= Ġsb . view ĊĠĠĠ Ġval Ġcontext Ġ= Ġview . context ĊĠĠĠ Ġsb View . set BackgroundColor ( Context Compat . getColor ( context , Ġbg Color )) ĊĠĠĠ Ġval Ġtv Ġ= Ġsb View . findViewById < TextView >( android . support . design . R . id . sn ackbar _ text ) ĊĠĠĠ Ġtv . setTextColor ( Context Compat . getColor ( context , Ġfg Color )) ĊĠĠĠ Ġsb . show () Ċ } Ċ Ċ fun Ġshow Snackbar ( view : ĠView , Ġstring Id : ĠInt , Ġbg Color : ĠInt , Ġfg Color : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( view , ĠApplication . instance . getString ( string Id ), Ġbg Color , Ġfg Color , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun Ġshow Snackbar ( view : ĠView , Ġtext : ĠString , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( view , Ġtext , ĠR . color . color _ primary , ĠR . color . theme _ foreground , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun Ġshow Snackbar ( view : ĠView , Ġstring Id : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( view , ĠApplication . instance . getString ( string Id ), Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun Ġshow Error Snackbar ( view : ĠView , Ġtext : ĠString , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( view , Ġtext , ĠR . color . theme _ red , ĠR . color . theme _ foreground , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun Ġshow Error Snackbar ( view : ĠView , Ġstring Id : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Error Snackbar ( view , ĠApplication . instance . getString ( string Id ), Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun ĠAppCompatActivity . show Error Snackbar ( string Id : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Error Snackbar ( this . findViewById < View >( android . R . id . content ), Ġstring Id , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun ĠAppCompatActivity . show Snackbar ( string Id : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( this . findViewById < View >( android . R . id . content ), Ġstring Id , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun ĠAppCompatActivity . show Snackbar ( string Id : ĠString , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠĠĠĠĠ Ġshow Snackbar ( this . findViewById < View >( android . R . id . content ), Ġstring Id , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun ĠAppCompatActivity . show Snackbar ( view Id : ĠInt , Ġstring Id : ĠInt , Ġbutton Text : ĠString ? Ġ= Ġnull , Ġbutton Cb : Ġ(( View ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġshow Snackbar ( this . findViewById < View >( view Id ), Ġstring Id , Ġbutton Text , Ġbutton Cb ) Ċ Ċ fun Ġfallback ( input : ĠString ?, Ġfallback : ĠString ): ĠString Ġ= ĊĠĠĠ Ġif Ġ( input . isNull OrEmpty ()) Ġfallback Ġelse Ġinput !! Ċ Ċ fun Ġfallback ( input : ĠString ?, Ġfallback : ĠInt ): ĠString Ġ= ĊĠĠĠ Ġif Ġ( input . isNull OrEmpty ()) ĠApplication . Companion . instance . getString ( fallback ) Ġelse Ġinput !! Ċ Ċ fun ĠAppCompatActivity . slide Next Up () Ġ= Ġoverride Pending Transition ( R . anim . slide _ up , ĠR . anim . st ay _ put ) Ċ Ċ fun ĠAppCompatActivity . slide This Down () Ġ= Ġoverride Pending Transition ( R . anim . st ay _ put , ĠR . anim . slide _ down ) Ċ Ċ fun Ġ< T 1 : ĠAny , ĠT 2 : ĠAny , ĠR : ĠAny > Ġlet Many ( p 1 : ĠT 1 ?, Ġp 2 : ĠT 2 ?, Ġblock : Ġ( T 1 , ĠT 2 ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull ) Ġblock ( p 1 , Ġp 2 ) Ġelse Ġnull Ċ } Ċ Ċ fun Ġ< T 1 : ĠAny , ĠT 2 : ĠAny , ĠT 3 : ĠAny , ĠR : ĠAny > Ġlet Many ( p 1 : ĠT 1 ?, Ġp 2 : ĠT 2 ?, Ġp 3 : ĠT 3 ?, Ġblock : Ġ( T 1 , ĠT 2 , ĠT 3 ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull Ġ&& Ġp 3 Ġ!= Ġnull ) Ġblock ( p 1 , Ġp 2 , Ġp 3 ) Ġelse Ġnull Ċ } Ċ Ċ fun Ġ< T 1 : ĠAny , ĠT 2 : ĠAny , ĠT 3 : ĠAny , ĠT 4 : ĠAny , ĠR : ĠAny > Ġlet Many ( p 1 : ĠT 1 ?, Ġp 2 : ĠT 2 ?, Ġp 3 : ĠT 3 ?, Ġp 4 : ĠT 4 ?, Ġblock : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 )-> R ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull Ġ&& Ġp 3 Ġ!= Ġnull Ġ&& Ġp 4 Ġ!= Ġnull ) Ġblock ( p 1 , Ġp 2 , Ġp 3 , Ġp 4 ) Ġelse Ġnull Ċ } Ċ fun Ġ< T 1 : ĠAny , ĠT 2 : ĠAny , ĠT 3 : ĠAny , ĠT 4 : ĠAny , ĠT 5 : ĠAny , ĠR : ĠAny > Ġlet Many ( p 1 : ĠT 1 ?, Ġp 2 : ĠT 2 ?, Ġp 3 : ĠT 3 ?, Ġp 4 : ĠT 4 ?, Ġp 5 : ĠT 5 ?, Ġblock : Ġ( T 1 , ĠT 2 , ĠT 3 , ĠT 4 , ĠT 5 )-> R ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull Ġ&& Ġp 3 Ġ!= Ġnull Ġ&& Ġp 4 Ġ!= Ġnull Ġ&& Ġp 5 Ġ!= Ġnull ) Ġblock ( p 1 , Ġp 2 , Ġp 3 , Ġp 4 , Ġp 5 ) Ġelse Ġnull Ċ }