package Ġcom . m ert ce y han . bitcoin market . widget . ui Ċ Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġandroidx . gl ance .* Ċ import Ġandroidx . gl ance . action . action Start Activity Ċ import Ġandroidx . gl ance . action . click able Ċ import Ġandroidx . gl ance . app widget . action . action Run Callback Ċ import Ġandroidx . gl ance . layout .* Ċ import Ġandroidx . gl ance . text . Font Weight Ċ import Ġandroidx . gl ance . text . Text Ċ import Ġandroidx . gl ance . text . TextStyle Ċ import Ġandroidx . gl ance . unit . Color Provider Ċ import Ġcom . m ert ce y han . R Ċ import Ġcom . m ert ce y han . bitcoin market . features . MainActivity Ċ import Ġcom . m ert ce y han . bitcoin market . widget . callback . Market Refresh Callback Ċ Ċ @ Composable Ċ fun ĠBitcoin Widget ( bitcoin Widget Ui State : ĠBitcoin Widget Ui State ) Ġ{ ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 1 7 0 . dp ). height ( 1 3 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Image Provider ( R . drawable . background _ widget )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able ( action Start Activity ( activity Ġ= ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 8 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBitcoin Widget Header () ĊĠĠĠĠĠĠĠ ĠBitcoin Widget Body ( bitcoin Widget Ui State . current Price ) ĊĠĠĠĠĠĠĠ ĠBitcoin Footer Body ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Widget Ui State . is Change Rate Positive , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Widget Ui State . change Rate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Widget Ui State . get Rate Background (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Widget Ui State . get Rate Arrow () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBitcoin Widget Header () Ġ{ ĊĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovider Ġ= ĠImage Provider ( R . drawable . ic _ btc _ flat ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġcontext . getString ( R . string . btc _ description ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . End , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider Ġ= ĠImage Provider ( R . drawable . ic _ refresh ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġcontext . getString ( R . string . refresh _ description ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . click able ( action Run Callback < Market Refresh Callback >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBitcoin Widget Body ( current Price : ĠString ) Ġ{ ĊĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . getString ( R . string . bitcoin _ label ), ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width (). padding ( top Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( font Weight Ġ= ĠFontWeight . Bold ), ĊĠĠĠ Ġ) ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġcurrent Price , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width (). padding ( top Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( font Weight Ġ= ĠFontWeight . Bold , ĠfontSize Ġ= Ġ 1 6 . sp ), ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠBitcoin Footer Body ( ĊĠĠĠ Ġis Change Rate Positive : ĠBoolean , ĊĠĠĠ Ġchange Rate : ĠString , ĊĠĠĠ Ġrate Background : ĠInt , ĊĠĠĠ Ġrate Arrow : ĠInt Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width (). padding ( top Ġ= Ġ 1 0 . dp ), ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . background ( rate Background ). padding ( 4 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider Ġ= ĠImage Provider ( rate Arrow ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġcontext . getString ( R . string . refresh _ description ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . size ( 1 1 . dp , Ġ 1 1 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġchange Rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 2 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor Provider ( R . color . white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . padding ( start Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . End , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . fill Max Width () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider Ġ= ĠImage Provider ( R . drawable . ic _ app ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġcontext . getString ( R . string . refresh _ description ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠGl ance Modifier . size ( 2 4 . dp , Ġ 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }