package Ġch . r my . android . http _ shortcuts . activities . widget Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġch . r my . android . framework . extensions . bind ViewModel Ċ import Ġch . r my . android . framework . extensions . consume Ċ import Ġch . r my . android . framework . extensions . observe Ċ import Ġch . r my . android . framework . extensions . visible Ċ import Ġch . r my . android . framework . ui . Base Intent Builder Ċ import Ġch . r my . android . framework . view model . ViewModel Event Ċ import Ġch . r my . android . http _ shortcuts . R Ċ import Ġch . r my . android . http _ shortcuts . activities . Base Activity Ċ import Ġch . r my . android . http _ shortcuts . data . d tos . Launcher Shortcut Ċ import Ġch . r my . android . http _ shortcuts . databinding . Activity Widget Settings Binding Ċ import Ġch . r my . android . http _ shortcuts . icons . Shortcut Icon Ċ import Ġcom . sky do ves . color picker view . Color Picker Dialog Ċ import Ġcom . sky do ves . color picker view . listeners . Color Envelope Listener Ċ Ċ class ĠWidget Settings Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Widget Settings Binding ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠWidget Settings ViewModel Ġby Ġbind ViewModel () ĊĊĠĠĠ Ġoverride Ġfun Ġon Created ( saved State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . initialize ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Settings ViewModel . Init Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Id Ġ= Ġintent . getString Extra ( EXTRA _ SHORT CUT _ ID ) !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Name Ġ= Ġintent . getString Extra ( EXTRA _ SHORT CUT _ NAME ) !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Icon Ġ= ĠShort cut Icon . from Name ( intent . getString Extra ( EXTRA _ SHORT CUT _ ICON ) !! ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġinit User Input Bindings () ĊĠĠĠĠĠĠĠ Ġinit ViewModel Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= Ġapply Binding ( Activity Widget Settings Binding . inflate ( layout Inflater )) ĊĠĠĠĠĠĠĠ ĠsetTitle ( R . string . title _ configure _ widget ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit User Input Bindings () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . input Label Color . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Label Color Input Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . input Show Label . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Show Label Changed ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel Bindings () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . view State . observe ( this ) Ġ{ Ġview State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . widget Label . visible Ġ= Ġview State . show Label ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Label Color . isEnabled Ġ= Ġview State . show Label ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . widget Icon . setIcon ( view State . shortcut Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . widget Label . text Ġ= Ġview State . shortcut Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Label Color . subtitle Ġ= Ġview State . label Color Formatted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . widget Label . setTextColor ( view State . label Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . events . observe ( this , Ġ:: handle Event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Event ( event : ĠViewModel Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWidget Settings Event . Show Label Color Picker Ġ-> Ġshow Label Color Picker ( event . initial Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . handle Event ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Label Color Picker ( initial Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColor Picker Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . dialog _ ok , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Envelope Listener Ġ{ Ġenvelope , Ġfrom User Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( from User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Label Color Selected ( envelope . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . dialog _ cancel ) Ġ{ Ġdialog Interface , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Interface . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. attach Alpha Slide Bar ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. attach Brightness Slide Bar ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Bottom Space ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Picker View . setInitial Color ( initial Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . widget _ settings _ activity _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . action _ create _ widget Ġ-> Ġconsume Ġ{ ĠviewModel . onCreate Button Clicked () Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġnavigate Up Icon Ġ= ĠR . drawable . ic _ clear ĊĊĠĠĠ Ġclass ĠIntent Builder Ġ: ĠBase Intent Builder ( Widget Settings Activity :: class . java ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġshortcut ( shortcut : ĠLaunch er Shortcut ) Ġ= Ġalso Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ SHORT CUT _ ID , Ġshortcut . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ SHORT CUT _ NAME , Ġshortcut . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ SHORT CUT _ ICON , Ġshortcut . icon . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ SHORT CUT _ ID Ġ= Ġ" ch . r my . android . http _ shortcuts . activities . widget . Widget Settings Activity . shortcut _ id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ SHORT CUT _ NAME Ġ= Ġ" ch . r my . android . http _ shortcuts . activities . widget . Widget Settings Activity . shortcut _ name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ SHORT CUT _ ICON Ġ= Ġ" ch . r my . android . http _ shortcuts . activities . widget . Widget Settings Activity . shortcut _ icon " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ SHOW _ LABEL Ġ= Ġ" ch . r my . android . http _ shortcuts . activities . widget . Widget Settings Activity . show _ label " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ LABEL _ COLOR Ġ= Ġ" ch . r my . android . http _ shortcuts . activities . widget . Widget Settings Activity . label _ color " ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Shortcut Id ( intent : ĠIntent ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra ( EXTRA _ SHORT CUT _ ID ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Label Color ( intent : ĠIntent ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra ( EXTRA _ LABEL _ COLOR ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġshould Show Label ( intent : ĠIntent ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getBoolean Extra ( EXTRA _ SHOW _ LABEL , Ġtrue ) ĊĠĠĠ Ġ} Ċ } Ċ