Skip to content

Commit 17a15f8

Browse files
committed
feat: implement topbar gradient overlay
1 parent a5223e2 commit 17a15f8

1 file changed

Lines changed: 69 additions & 45 deletions

File tree

app/src/main/java/to/bitkit/ui/screens/widgets/price/PriceEditScreen.kt

Lines changed: 69 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package to.bitkit.ui.screens.widgets.price
22

3+
import androidx.compose.foundation.background
34
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.Box
46
import androidx.compose.foundation.layout.Column
57
import androidx.compose.foundation.layout.Row
68
import androidx.compose.foundation.layout.Spacer
9+
import androidx.compose.foundation.layout.fillMaxSize
710
import androidx.compose.foundation.layout.fillMaxWidth
811
import androidx.compose.foundation.layout.height
912
import androidx.compose.foundation.layout.padding
@@ -13,10 +16,14 @@ import androidx.compose.foundation.verticalScroll
1316
import androidx.compose.material3.HorizontalDivider
1417
import androidx.compose.material3.Icon
1518
import androidx.compose.material3.IconButton
19+
import androidx.compose.material3.MaterialTheme
1620
import androidx.compose.runtime.Composable
1721
import androidx.compose.runtime.getValue
1822
import androidx.compose.ui.Alignment
1923
import androidx.compose.ui.Modifier
24+
import androidx.compose.ui.graphics.Brush
25+
import androidx.compose.ui.graphics.Color
26+
import androidx.compose.ui.graphics.TileMode
2027
import androidx.compose.ui.platform.testTag
2128
import androidx.compose.ui.res.painterResource
2229
import androidx.compose.ui.res.stringResource
@@ -44,7 +51,7 @@ import to.bitkit.ui.theme.Colors
4451
fun PriceEditScreen(
4552
viewModel: PriceViewModel,
4653
onBack: () -> Unit,
47-
navigatePreview: () -> Unit
54+
navigatePreview: () -> Unit,
4855
) {
4956
val customPreferences by viewModel.customPreferences.collectAsStateWithLifecycle()
5057
val currentPrice by viewModel.currentPrice.collectAsStateWithLifecycle()
@@ -90,60 +97,77 @@ fun PriceEditContent(
9097
ScreenColumn(
9198
modifier = Modifier.testTag("weather_edit_screen")
9299
) {
93-
AppTopBar(
94-
titleText = stringResource(R.string.widgets__widget__edit),
95-
onBackClick = onBack,
96-
actions = { DrawerNavIcon() },
97-
)
98-
99-
Column(
100+
Box(
100101
modifier = Modifier
101-
.padding(horizontal = 16.dp)
102102
.weight(1f)
103-
.verticalScroll(rememberScrollState())
104-
.testTag("WidgetEditScrollView")
103+
.fillMaxWidth()
105104
) {
106-
Spacer(modifier = Modifier.height(26.dp))
105+
Column(
106+
modifier = Modifier
107+
.fillMaxSize()
108+
.padding(horizontal = 16.dp)
109+
.verticalScroll(rememberScrollState())
110+
.testTag("WidgetEditScrollView")
111+
) {
112+
Spacer(modifier = Modifier.height(82.dp))
107113

108-
BodyM(
109-
text = stringResource(R.string.widgets__widget__edit_description).replace(
110-
"{name}",
111-
stringResource(R.string.widgets__price__name)
112-
),
113-
color = Colors.White64,
114-
modifier = Modifier.testTag("edit_description")
115-
)
114+
BodyM(
115+
text = stringResource(R.string.widgets__widget__edit_description).replace(
116+
"{name}",
117+
stringResource(R.string.widgets__price__name)
118+
),
119+
color = Colors.White64,
120+
modifier = Modifier.testTag("edit_description")
121+
)
122+
123+
Spacer(modifier = Modifier.height(32.dp))
124+
125+
priceModel.widgets.map { data ->
126+
PriceEditOptionRow(
127+
label = data.pair.displayName,
128+
value = data.price,
129+
isEnabled = data.pair in preferences.enabledPairs,
130+
onClick = {
131+
onClickTradingPair(data.pair)
132+
},
133+
testTagPrefix = data.pair.displayName,
134+
)
135+
}
116136

117-
Spacer(modifier = Modifier.height(32.dp))
137+
allPeriodsUsd.map { priceData ->
138+
PriceChartOptionRow(
139+
widgetData = priceData,
140+
isEnabled = priceData.period == preferences.period,
141+
onClick = onClickGraph,
142+
testTagPrefix = priceData.period.value,
143+
)
144+
}
118145

119-
priceModel.widgets.map { data ->
120146
PriceEditOptionRow(
121-
label = data.pair.displayName,
122-
value = data.price,
123-
isEnabled = data.pair in preferences.enabledPairs,
124-
onClick = {
125-
onClickTradingPair(data.pair)
126-
},
127-
testTagPrefix = data.pair.displayName,
147+
label = stringResource(R.string.widgets__widget__source),
148+
value = priceModel.source,
149+
isEnabled = preferences.showSource,
150+
onClick = onClickSource,
151+
testTagPrefix = "showSource",
128152
)
129153
}
130154

131-
allPeriodsUsd.map { priceData ->
132-
PriceChartOptionRow(
133-
widgetData = priceData,
134-
isEnabled = priceData.period == preferences.period,
135-
onClick = onClickGraph,
136-
testTagPrefix = priceData.period.value,
155+
Column {
156+
AppTopBar(
157+
titleText = stringResource(R.string.widgets__widget__edit),
158+
onBackClick = onBack,
159+
actions = { DrawerNavIcon() },
160+
modifier = Modifier.background(
161+
Brush.verticalGradient(
162+
colors = listOf(
163+
MaterialTheme.colorScheme.background,
164+
Color.Transparent
165+
),
166+
tileMode = TileMode.Decal
167+
)
168+
)
137169
)
138170
}
139-
140-
PriceEditOptionRow(
141-
label = stringResource(R.string.widgets__widget__source),
142-
value = priceModel.source,
143-
isEnabled = preferences.showSource,
144-
onClick = onClickSource,
145-
testTagPrefix = "showSource",
146-
)
147171
}
148172

149173
Row(
@@ -182,7 +206,7 @@ private fun PriceEditOptionRow(
182206
value: String,
183207
isEnabled: Boolean,
184208
onClick: () -> Unit,
185-
testTagPrefix: String
209+
testTagPrefix: String,
186210
) {
187211
Column {
188212
Row(
@@ -235,7 +259,7 @@ private fun PriceChartOptionRow(
235259
widgetData: PriceWidgetData,
236260
isEnabled: Boolean,
237261
onClick: (GraphPeriod) -> Unit,
238-
testTagPrefix: String
262+
testTagPrefix: String,
239263
) {
240264
Column {
241265
Row(

0 commit comments

Comments
 (0)