package Ġcom . ru u vi . station . widgets . ui . first Widget Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . compose . setContent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Indexed Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġcom . ru u vi . station . df u . ui . ui . theme . Com ru uv ist ation Theme Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Brush Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . p ainter . Painter Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . ru u vi . station . R Ċ import Ġcom . ru u vi . station . df u . ui . Regular Text Ċ import Ġcom . ru u vi . station . tag . domain . R uu vi Tag Ċ import Ġorg . kode in . di . K ode in Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . android . closest K ode in Ċ import Ġcom . ru u vi . station . util . extensions . viewModel Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠSensor Widget Configure Activity Ġ: ĠAppCompatActivity (), ĠK ode in Aware Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġapp Widget Id Ġ= ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĊĠĠĠ Ġoverride Ġval Ġk ode in : ĠK ode in Ġby Ġclosest K ode in () ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSensor Widget Configure ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( ic icle : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( ic icle ) ĊĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED ) ĊĊĠĠĠĠĠĠĠ Ġapp Widget Id Ġ= Ġintent ?. extras ?. getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Widget Manager . EXTRA _ APP WIDGET _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĠĠĠĠĠĠĠ Ġ) Ġ?: ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ĊĊĠĠĠĠĠĠĠ Ġif Ġ( app Widget Id Ġ== ĠApp Widget Manager . INVALID _ APP WIDGET _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup ViewModel () ĊĊĠĠĠĠĠĠĠ Ġset Content Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCom ru uv ist ation Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Setup Screen ( viewModel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . set Widget Id ( app Widget Id ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . setup Complete . observe ( this ) Ġ{ Ġsetup Complete Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" setup Complete Ġ$ setup Complete Ġapp Widget Id Ġ$ app Widget Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setup Complete ) Ġsetup Completed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Widget Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Widget Manager . getInstance ( this @ Sensor Widget Configure Activity ) ĊĊĠĠĠĠĠĠĠ Ġupdate App Widget ( this @ Sensor Widget Configure Activity , Ġapp Widget Manager , Ġapp Widget Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent (). putExtra ( App Widget Manager . EXTRA _ APP WIDGET _ ID , Ġapp Widget Id ) ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġresult Value ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠWidget Setup Screen ( viewModel : ĠSensor Widget Configure ViewModel ) Ġ{ ĊĠĠĠ Ġval Ġsensors Ġby ĠviewModel . sensors . observe As State ( listOf ()) ĊĠĠĠ Ġval Ġuser LoggedIn Ġby ĠviewModel . user LoggedIn . observe As State ( false ) ĊĊĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! user LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog In First Screen ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sensors . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFor Network Sensors Only Screen ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSelect Sensor Screen ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠLog In First Screen ( viewModel : ĠSensor Widget Configure ViewModel ) Ġ{ ĊĠĠĠ ĠColumn () Ġ{ ĊĠĠĠĠĠĠĠ ĠRegular Text ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . widgets _ sign _ in _ first )) ĊĠĠĠĠĠĠĠ ĠRegular Text ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . widgets _ gateway _ only )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠFor Network Sensors Only Screen ( viewModel : ĠSensor Widget Configure ViewModel ) Ġ{ ĊĠĠĠ ĠColumn () Ġ{ ĊĠĠĠĠĠĠĠ ĠRegular Text ( text Ġ= Ġstring Resource ( id Ġ= ĠR . string . widgets _ gateway _ only )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠSelect Sensor Screen ( viewModel : ĠSensor Widget Configure ViewModel ) Ġ{ ĊĠĠĠ Ġval Ġsensors Ġby ĠviewModel . sensors . observe As State ( listOf ()) ĊĠĠĠ Ġval Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . bg 1 ) ĊĊĠĠĠ ĠColumn () Ġ{ ĊĠĠĠĠĠĠĠ ĠHeader Text (" Select Ġsensor ") ĊĠĠĠĠĠĠĠ ĠLazy Column ( modifier Ġ= ĠModifier . padding ( 1 6 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Indexed ( items Ġ= Ġsensors ) Ġ{ index , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Card ( sensor Ġ= Ġitem , Ġpainter Ġ= Ġpainter ) Ġ{ Ġsensor Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Card Ġclicked Ġ$ sensor Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Widget Settings ( sensor Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠSensor Card ( ĊĠĠĠ Ġsensor : ĠR uu vi Tag , ĊĠĠĠ Ġpainter : ĠP ainter , ĊĠĠĠ Ġaction : Ġ( String ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠCard ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġaction ( sensor . id ) Ġ}, ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 1 6 . dp ), ĊĠĠĠĠĠĠĠ Ġelevation Ġ= Ġ 4 . dp ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( modifier Ġ= ĠModifier . height ( 1 0 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġsensor . displayName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill MaxSize (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBr ush . vertical Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . Black ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġstart Y Ġ= Ġ 7 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 8 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Alignment Ġ= ĠAlignment . Bottom Start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġsensor . displayName , Ġstyle Ġ= ĠTextStyle ( color Ġ= ĠColor . White , ĠfontSize Ġ= Ġ 2 4 . sp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ fun ĠDefault Preview () Ġ{ ĊĠĠĠ ĠCom ru uv ist ation Theme Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠHeader Text ( text : ĠString ) Ġ{ ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 1 6 . dp , Ġtop Ġ= Ġ 1 6 . dp , Ġend Ġ= Ġ 1 6 . dp ), ĊĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext ) Ċ }