Skip to content

Commit 41037b7

Browse files
committed
fix theme, refactor dimensions
1 parent d796144 commit 41037b7

File tree

6 files changed

+135
-44
lines changed

6 files changed

+135
-44
lines changed

app/src/main/java/com/example/reply/ui/ReplyApp.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
77
import androidx.compose.runtime.Composable
88
import androidx.compose.runtime.collectAsState
99
import androidx.compose.ui.Modifier
10-
import androidx.compose.ui.unit.dp
10+
import androidx.compose.ui.res.dimensionResource
1111
import androidx.lifecycle.viewmodel.compose.viewModel
12+
import com.example.reply.R
1213
import com.example.reply.data.Email
1314
import com.example.reply.data.MailboxType
1415
import com.example.reply.ui.utils.ReplyContentType
@@ -59,6 +60,8 @@ fun ReplyApp(
5960
onDetailScreenBackPressed = {
6061
viewModel.resetHomeScreenStates()
6162
},
62-
modifier = if (navigationType == ReplyNavigationType.PERMANENT_NAVIGATION_DRAWER) modifier else modifier.padding(top = 20.dp)
63+
modifier = if (navigationType == ReplyNavigationType.PERMANENT_NAVIGATION_DRAWER) modifier else modifier.padding(
64+
top = dimensionResource(R.dimen.padding_app_top)
65+
)
6366
)
6467
}

app/src/main/java/com/example/reply/ui/ReplyDetailsScreen.kt

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,14 @@ import androidx.compose.material3.ExperimentalMaterial3Api
2424
import androidx.compose.material3.Icon
2525
import androidx.compose.material3.IconButton
2626
import androidx.compose.material3.MaterialTheme
27-
import androidx.compose.material3.OutlinedButton
2827
import androidx.compose.material3.Text
2928
import androidx.compose.runtime.Composable
3029
import androidx.compose.ui.Alignment
3130
import androidx.compose.ui.Modifier
3231
import androidx.compose.ui.platform.LocalContext
3332
import androidx.compose.ui.platform.testTag
33+
import androidx.compose.ui.res.dimensionResource
3434
import androidx.compose.ui.res.stringResource
35-
import androidx.compose.ui.unit.dp
3635
import com.example.reply.R
3736
import com.example.reply.data.Email
3837
import com.example.reply.data.MailboxType
@@ -52,7 +51,7 @@ fun ReplyDetailsScreen(
5251
.testTag(stringResource(R.string.details_screen))
5352
.fillMaxSize()
5453
.background(color = MaterialTheme.colorScheme.inverseOnSurface)
55-
.padding(top = 24.dp)
54+
.padding(top = dimensionResource(R.dimen.detail_card_list_padding_top))
5655
) {
5756
item {
5857
if (isFullScreen) {
@@ -63,9 +62,9 @@ fun ReplyDetailsScreen(
6362
mailboxType = replyUiState.currentMailbox,
6463
isFullScreen = isFullScreen,
6564
modifier = if (isFullScreen)
66-
Modifier.padding(horizontal = 16.dp)
65+
Modifier.padding(horizontal = dimensionResource(R.dimen.detail_card_outer_padding_horizontal))
6766
else
68-
Modifier.padding(end = 16.dp)
67+
Modifier.padding(end = dimensionResource(R.dimen.detail_card_outer_padding_horizontal))
6968
)
7069
}
7170
}
@@ -80,13 +79,13 @@ private fun ReplyDetailsScreenTopBar(
8079
Row(
8180
modifier = modifier
8281
.fillMaxWidth()
83-
.padding(bottom = 24.dp),
82+
.padding(bottom = dimensionResource(R.dimen.detail_topbar_padding_bottom)),
8483
verticalAlignment = Alignment.CenterVertically,
8584
) {
8685
IconButton(
8786
onClick = onBackButtonClicked,
8887
modifier = Modifier
89-
.padding(horizontal = 16.dp)
88+
.padding(horizontal = dimensionResource(R.dimen.detail_topbar_back_button_padding_horizontal))
9089
.background(MaterialTheme.colorScheme.surface, shape = CircleShape),
9190
) {
9291
Icon(
@@ -98,7 +97,7 @@ private fun ReplyDetailsScreenTopBar(
9897
horizontalArrangement = Arrangement.Center,
9998
modifier = Modifier
10099
.fillMaxWidth()
101-
.padding(end = 40.dp)
100+
.padding(end = dimensionResource(R.dimen.detail_subject_padding_end))
102101
) {
103102
Text(
104103
text = replyUiState.currentSelectedEmail.subject,
@@ -128,18 +127,21 @@ private fun ReplyEmailDetailsCard(
128127
Column(
129128
modifier = Modifier
130129
.fillMaxWidth()
131-
.padding(20.dp)
130+
.padding(dimensionResource(R.dimen.detail_card_inner_padding))
132131
) {
133132
DetailsScreenHeader(email)
134133
if (!isFullScreen) {
135134
Text(
136135
text = email.subject,
137136
style = MaterialTheme.typography.bodyMedium,
138137
color = MaterialTheme.colorScheme.outline,
139-
modifier = Modifier.padding(top = 12.dp, bottom = 8.dp),
138+
modifier = Modifier.padding(
139+
top = dimensionResource(R.dimen.detail_content_padding_top),
140+
bottom = dimensionResource(R.dimen.detail_expanded_subject_body_spacing)
141+
),
140142
)
141143
} else {
142-
Spacer(modifier = Modifier.height(12.dp))
144+
Spacer(modifier = Modifier.height(dimensionResource(R.dimen.detail_content_padding_top)))
143145
}
144146
Text(
145147
text = email.body,
@@ -168,8 +170,12 @@ private fun DetailsScreenButtonBar(
168170
Row(
169171
modifier = modifier
170172
.fillMaxWidth()
171-
.padding(vertical = 20.dp),
172-
horizontalArrangement = Arrangement.spacedBy(4.dp),
173+
.padding(
174+
vertical = dimensionResource(R.dimen.detail_button_bar_padding_vertical)
175+
),
176+
horizontalArrangement = Arrangement.spacedBy(
177+
dimensionResource(R.dimen.detail_button_bar_item_spacing)
178+
),
173179
) {
174180
ActionButton(
175181
text = stringResource(id = R.string.move_to_inbox),
@@ -187,8 +193,12 @@ private fun DetailsScreenButtonBar(
187193
Row(
188194
modifier = modifier
189195
.fillMaxWidth()
190-
.padding(vertical = 20.dp),
191-
horizontalArrangement = Arrangement.spacedBy(4.dp),
196+
.padding(
197+
vertical = dimensionResource(R.dimen.detail_button_bar_padding_vertical)
198+
),
199+
horizontalArrangement = Arrangement.spacedBy(
200+
dimensionResource(R.dimen.detail_button_bar_item_spacing)
201+
),
192202
) {
193203
ActionButton(
194204
text = stringResource(id = R.string.reply),
@@ -210,12 +220,17 @@ private fun DetailsScreenHeader(email: Email, modifier: Modifier = Modifier) {
210220
ReplyProfileImage(
211221
drawableResource = email.sender.avatar,
212222
description = email.sender.fullName,
213-
modifier = Modifier.size(40.dp)
223+
modifier = Modifier.size(
224+
dimensionResource(R.dimen.email_header_profile_size)
225+
)
214226
)
215227
Column(
216228
modifier = Modifier
217229
.weight(1f)
218-
.padding(horizontal = 12.dp, vertical = 4.dp),
230+
.padding(
231+
horizontal = dimensionResource(R.dimen.email_header_content_padding_horizontal),
232+
vertical = dimensionResource(R.dimen.email_header_content_padding_vertical)
233+
),
219234
verticalArrangement = Arrangement.Center
220235
) {
221236
Text(
@@ -242,7 +257,7 @@ private fun ActionButton(
242257
onClick = { onButtonClicked(text) },
243258
modifier = modifier
244259
.fillMaxWidth()
245-
.padding(vertical = 20.dp),
260+
.padding(vertical = dimensionResource(R.dimen.detail_action_button_padding_vertical)),
246261
colors = ButtonDefaults.buttonColors(
247262
containerColor =
248263
if (!containIrreversibleAction)

app/src/main/java/com/example/reply/ui/ReplyHomeContent.kt

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.example.reply.ui
33
import android.app.Activity
44
import androidx.annotation.DrawableRes
55
import androidx.compose.foundation.Image
6-
import androidx.compose.foundation.background
76
import androidx.compose.foundation.layout.Arrangement
87
import androidx.compose.foundation.layout.Column
98
import androidx.compose.foundation.layout.Row
@@ -25,10 +24,10 @@ import androidx.compose.ui.draw.clip
2524
import androidx.compose.ui.graphics.Color
2625
import androidx.compose.ui.graphics.ColorFilter
2726
import androidx.compose.ui.platform.LocalContext
27+
import androidx.compose.ui.res.dimensionResource
2828
import androidx.compose.ui.res.painterResource
2929
import androidx.compose.ui.res.stringResource
3030
import androidx.compose.ui.text.style.TextOverflow
31-
import androidx.compose.ui.unit.dp
3231
import com.example.reply.R
3332
import com.example.reply.data.Email
3433
import com.example.reply.data.local.LocalAccountsDataProvider
@@ -41,7 +40,9 @@ fun ReplyListOnlyContent(
4140
) {
4241
val emails = replyUiState.currentMailboxEmails
4342

44-
LazyColumn(modifier = modifier.padding(horizontal = 16.dp)) {
43+
LazyColumn(modifier = modifier.padding(
44+
horizontal = dimensionResource(R.dimen.email_list_only_horizontal_padding)
45+
)) {
4546
item {
4647
ReplyHomeTopBar(modifier = Modifier.fillMaxWidth())
4748
}
@@ -68,7 +69,10 @@ fun ReplyListAndDetailContent(
6869
LazyColumn(
6970
modifier = Modifier
7071
.weight(1f)
71-
.padding(end = 16.dp, top = 20.dp)
72+
.padding(
73+
end = dimensionResource(R.dimen.list_and_detail_list_padding_end),
74+
top = dimensionResource(R.dimen.list_and_detail_list_padding_top)
75+
)
7276
) {
7377
items(emails, key = { email -> email.id }) { email ->
7478
ReplyEmailListItem(
@@ -98,7 +102,9 @@ fun ReplyEmailListItem(
98102
modifier: Modifier = Modifier
99103
) {
100104
Card(
101-
modifier = modifier.padding(vertical = 4.dp),
105+
modifier = modifier.padding(
106+
vertical = dimensionResource(R.dimen.email_list_item_vertical_spacing)
107+
),
102108
colors = CardDefaults.cardColors(
103109
containerColor = if (selected) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.secondaryContainer
104110
),
@@ -107,14 +113,17 @@ fun ReplyEmailListItem(
107113
Column(
108114
modifier = Modifier
109115
.fillMaxWidth()
110-
.padding(20.dp)
116+
.padding(dimensionResource(R.dimen.email_list_item_inner_padding))
111117
) {
112118
ReplyEmailItemHeader(email)
113119
Text(
114120
text = email.subject,
115121
style = MaterialTheme.typography.bodyLarge,
116122
color = MaterialTheme.colorScheme.onSurface,
117-
modifier = Modifier.padding(top = 12.dp, bottom = 8.dp),
123+
modifier = Modifier.padding(
124+
top = dimensionResource(R.dimen.email_list_item_header_subject_spacing),
125+
bottom = dimensionResource(R.dimen.email_list_item_subject_body_spacing)
126+
),
118127
)
119128
Text(
120129
text = email.body,
@@ -133,12 +142,15 @@ private fun ReplyEmailItemHeader(email: Email, modifier: Modifier = Modifier) {
133142
ReplyProfileImage(
134143
drawableResource = email.sender.avatar,
135144
description = email.sender.fullName,
136-
modifier = Modifier.size(40.dp)
145+
modifier = Modifier.size(dimensionResource(R.dimen.email_header_profile_size))
137146
)
138147
Column(
139148
modifier = Modifier
140149
.weight(1f)
141-
.padding(horizontal = 12.dp, vertical = 4.dp),
150+
.padding(
151+
horizontal = dimensionResource(R.dimen.email_header_content_padding_horizontal),
152+
vertical = dimensionResource(R.dimen.email_header_content_padding_vertical)
153+
),
142154
verticalArrangement = Arrangement.Center
143155
) {
144156
Text(
@@ -187,19 +199,19 @@ private fun ReplyHomeTopBar(modifier: Modifier = Modifier) {
187199
verticalAlignment = Alignment.CenterVertically,
188200
modifier = modifier
189201
.fillMaxWidth()
190-
.padding(vertical = 8.dp)
202+
.padding(vertical = dimensionResource(R.dimen.topbar_padding_vertical))
191203
) {
192204
ReplyLogo(
193205
modifier = Modifier
194-
.size(64.dp)
195-
.padding(start = 4.dp)
206+
.size(dimensionResource(R.dimen.topbar_logo_size))
207+
.padding(start = dimensionResource(R.dimen.topbar_logo_padding_start))
196208
)
197209
ReplyProfileImage(
198210
drawableResource = LocalAccountsDataProvider.defaultAccount.avatar,
199211
description = stringResource(R.string.profile),
200212
modifier = Modifier
201-
.padding(end = 8.dp)
202-
.size(48.dp)
213+
.padding(end = dimensionResource(R.dimen.topbar_profile_image_padding_end))
214+
.size(dimensionResource(R.dimen.topbar_profile_image_size))
203215
)
204216
}
205217
}

app/src/main/java/com/example/reply/ui/ReplyHomeScreen.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ import androidx.compose.ui.Modifier
3535
import androidx.compose.ui.graphics.Color
3636
import androidx.compose.ui.graphics.vector.ImageVector
3737
import androidx.compose.ui.platform.testTag
38+
import androidx.compose.ui.res.dimensionResource
3839
import androidx.compose.ui.res.stringResource
39-
import androidx.compose.ui.unit.dp
4040
import com.example.reply.R
4141
import com.example.reply.data.Email
4242
import com.example.reply.data.MailboxType
@@ -81,7 +81,7 @@ fun ReplyHomeScreen(
8181
val navigationDrawerContentDescription = stringResource(R.string.navigation_drawer)
8282
PermanentNavigationDrawer(
8383
drawerContent = {
84-
PermanentDrawerSheet(Modifier.width(240.dp)) {
84+
PermanentDrawerSheet(Modifier.width(dimensionResource(R.dimen.drawer_width))) {
8585
NavigationDrawerContent(
8686
selectedDestination = replyUiState.currentMailbox,
8787
onTabPressed = onTabPressed,
@@ -233,7 +233,7 @@ private fun NavigationDrawerContent(
233233
.wrapContentWidth()
234234
.fillMaxHeight()
235235
.background(MaterialTheme.colorScheme.inverseOnSurface)
236-
.padding(12.dp)
236+
.padding(dimensionResource(R.dimen.drawer_padding_content))
237237
) {
238238
NavigationDrawerHeader(modifier)
239239
for (navItem in navigationItemContentList) {
@@ -242,7 +242,7 @@ private fun NavigationDrawerContent(
242242
label = {
243243
Text(
244244
text = navItem.text,
245-
modifier = Modifier.padding(horizontal = 16.dp)
245+
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.drawer_padding_header))
246246
)
247247
},
248248
icon = {
@@ -265,16 +265,16 @@ private fun NavigationDrawerHeader(modifier: Modifier) {
265265
Row(
266266
modifier = modifier
267267
.fillMaxWidth()
268-
.padding(16.dp),
268+
.padding(dimensionResource(R.dimen.profile_image_padding)),
269269
horizontalArrangement = Arrangement.SpaceBetween,
270270
verticalAlignment = Alignment.CenterVertically
271271
) {
272-
ReplyLogo(modifier = Modifier.size(48.dp))
272+
ReplyLogo(modifier = Modifier.size(dimensionResource(R.dimen.reply_logo_size)))
273273
ReplyProfileImage(
274274
drawableResource = LocalAccountsDataProvider.defaultAccount.avatar,
275275
description = stringResource(id = R.string.profile),
276276
modifier = Modifier
277-
.size(28.dp)
277+
.size(dimensionResource(R.dimen.profile_image_size))
278278
)
279279
}
280280
}

0 commit comments

Comments
 (0)