Skip to content

Commit 30021ed

Browse files
committed
✨ feat(features/settings): move settings ui components to dedicated file
reorganize and streamline settings UI component structure for better maintainability - centralized settings UI logic in one place - improved code organization and reusability - better separation of concerns between presentation layer and business logic
1 parent b6c1374 commit 30021ed

16 files changed

Lines changed: 40 additions & 47 deletions

File tree

app/src/main/java/dev/abd3lraouf/learn/decompose/MainActivity.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ import com.woowla.compose.icon.collections.heroicons.heroicons.outline.Funnel
3535
import com.woowla.compose.icon.collections.heroicons.heroicons.solid.ChartBar
3636
import com.woowla.compose.icon.collections.heroicons.heroicons.solid.Cog
3737
import dev.abd3lraouf.learn.decompose.features.settings.data.SettingsManager
38-
import dev.abd3lraouf.learn.decompose.features.settings.presentation.SettingsContent
39-
import dev.abd3lraouf.learn.decompose.features.settings.presentation.components.createSettingsTopAppBarConfig
40-
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.StatsContent
41-
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.components.createStatsTopAppBarConfig
42-
import dev.abd3lraouf.learn.decompose.features.todo.presentation.components.AddTaskFab
43-
import dev.abd3lraouf.learn.decompose.features.todo.presentation.components.createTodoTopAppBarConfig
38+
import dev.abd3lraouf.learn.decompose.features.settings.presentation.ui.SettingsContent
39+
import dev.abd3lraouf.learn.decompose.features.settings.presentation.ui.createSettingsTopAppBarConfig
40+
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.ui.StatsContent
41+
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.ui.createStatsTopAppBarConfig
42+
import dev.abd3lraouf.learn.decompose.features.todo.presentation.ui.AddTaskFab
43+
import dev.abd3lraouf.learn.decompose.features.todo.presentation.ui.createTodoTopAppBarConfig
4444
import dev.abd3lraouf.learn.decompose.features.todo.presentation.list.TodoListComponent
45-
import dev.abd3lraouf.learn.decompose.features.todo.presentation.list.TodoListContent
45+
import dev.abd3lraouf.learn.decompose.features.todo.presentation.list.ui.TodoListContent
4646
import dev.abd3lraouf.learn.decompose.navigation.DefaultRootComponent
4747
import dev.abd3lraouf.learn.decompose.navigation.RootComponent
4848
import dev.abd3lraouf.learn.decompose.navigation.TabNavigationComponent

app/src/main/java/dev/abd3lraouf/learn/decompose/features/settings/presentation/components/SettingsComponents.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/settings/presentation/ui/SettingsComponents.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.settings.presentation.components
1+
package dev.abd3lraouf.learn.decompose.features.settings.presentation.ui
22

33
import androidx.compose.runtime.Composable
44
import dev.abd3lraouf.learn.decompose.ui.components.TopAppBarConfig

app/src/main/java/dev/abd3lraouf/learn/decompose/features/settings/presentation/SettingsScreen.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/settings/presentation/ui/SettingsScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.settings.presentation
1+
package dev.abd3lraouf.learn.decompose.features.settings.presentation.ui
22

33
import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.animation.core.animateFloatAsState
@@ -41,7 +41,6 @@ import androidx.compose.ui.text.font.FontWeight
4141
import androidx.compose.ui.tooling.preview.Preview
4242
import androidx.compose.ui.unit.dp
4343
import com.arkivanov.decompose.extensions.compose.subscribeAsState
44-
import com.woowla.compose.icon.collections.heroicons.AllIcons
4544
import com.woowla.compose.icon.collections.heroicons.Heroicons
4645
import com.woowla.compose.icon.collections.heroicons.heroicons.Outline
4746
import com.woowla.compose.icon.collections.heroicons.heroicons.Solid
@@ -55,6 +54,7 @@ import com.woowla.compose.icon.collections.ionicons.Ionicons
5554
import com.woowla.compose.icon.collections.ionicons.ionicons.Filled
5655
import com.woowla.compose.icon.collections.ionicons.ionicons.filled.Moon
5756
import com.woowla.compose.icon.collections.ionicons.ionicons.filled.Sunny
57+
import dev.abd3lraouf.learn.decompose.features.settings.presentation.SettingsComponent
5858
import dev.abd3lraouf.learn.decompose.ui.preview.PreviewSettingsComponent
5959
import dev.abd3lraouf.learn.decompose.ui.theme.DecomposeTutorialTheme
6060

app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/components/StatisticsCard.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/ui/StatisticsCard.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.statistics.presentation.components
1+
package dev.abd3lraouf.learn.decompose.features.statistics.presentation.ui
22

33
import androidx.compose.animation.AnimatedContent
44
import androidx.compose.animation.core.Animatable

app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/components/StatsComponents.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/ui/StatsComponents.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.statistics.presentation.components
1+
package dev.abd3lraouf.learn.decompose.features.statistics.presentation.ui
22

33
import androidx.compose.runtime.Composable
44
import dev.abd3lraouf.learn.decompose.ui.components.TopAppBarConfig

app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/StatsScreen.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/statistics/presentation/ui/StatsScreen.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.statistics.presentation
1+
package dev.abd3lraouf.learn.decompose.features.statistics.presentation.ui
22

33
import androidx.compose.foundation.layout.Arrangement
44
import androidx.compose.foundation.layout.Column
@@ -19,14 +19,13 @@ import com.arkivanov.decompose.extensions.compose.subscribeAsState
1919
import com.woowla.compose.icon.collections.heroicons.Heroicons
2020
import com.woowla.compose.icon.collections.heroicons.heroicons.Outline
2121
import com.woowla.compose.icon.collections.heroicons.heroicons.Solid
22-
import com.woowla.compose.icon.collections.heroicons.heroicons.outline.Check
2322
import com.woowla.compose.icon.collections.heroicons.heroicons.outline.CheckCircle
2423
import com.woowla.compose.icon.collections.heroicons.heroicons.outline.ExclamationCircle
2524
import com.woowla.compose.icon.collections.heroicons.heroicons.outline.MinusCircle
2625
import com.woowla.compose.icon.collections.heroicons.heroicons.solid.ChartBar
2726
import com.woowla.compose.icon.collections.heroicons.heroicons.solid.Clock
2827
import com.woowla.compose.icon.collections.heroicons.heroicons.solid.Fire
29-
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.components.StatisticsCard
28+
import dev.abd3lraouf.learn.decompose.features.statistics.presentation.StatsComponent
3029
import dev.abd3lraouf.learn.decompose.ui.preview.PreviewStatsComponent
3130
import dev.abd3lraouf.learn.decompose.ui.theme.DecomposeTutorialTheme
3231

app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/create/CreateTaskScreen.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/create/ui/CreateTaskScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dev.abd3lraouf.learn.decompose.features.todo.presentation.create
1+
package dev.abd3lraouf.learn.decompose.features.todo.presentation.create.ui
22

33
import androidx.compose.foundation.clickable
44
import androidx.compose.foundation.layout.Arrangement

app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/create/TodoCreateContent.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/create/ui/TodoCreateContent.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
package dev.abd3lraouf.learn.decompose.features.todo.presentation.create
1+
package dev.abd3lraouf.learn.decompose.features.todo.presentation.create.ui
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.getValue
55
import androidx.compose.ui.Modifier
66
import com.arkivanov.decompose.extensions.compose.subscribeAsState
7+
import dev.abd3lraouf.learn.decompose.features.todo.presentation.create.TodoCreateComponent
78

89
@Composable
910
fun TodoCreateContent(
1011
component: TodoCreateComponent,
1112
modifier: Modifier = Modifier
1213
) {
1314
val model by component.model.subscribeAsState()
14-
15+
1516
CreateTaskScreen(
1617
onSaveClick = { title, description, status, deadline, priority, tags ->
1718
component.onTitleChanged(title)

app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/details/TodoDetailsContent.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/details/ui/TodoDetailsContent.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
package dev.abd3lraouf.learn.decompose.features.todo.presentation.details
1+
package dev.abd3lraouf.learn.decompose.features.todo.presentation.details.ui
22

33
import androidx.compose.foundation.layout.Box
44
import androidx.compose.foundation.layout.fillMaxSize
5-
import androidx.compose.foundation.layout.padding
65
import androidx.compose.material3.CircularProgressIndicator
76
import androidx.compose.material3.Text
87
import androidx.compose.runtime.Composable
98
import androidx.compose.runtime.getValue
109
import androidx.compose.ui.Alignment
1110
import androidx.compose.ui.Modifier
1211
import androidx.compose.ui.tooling.preview.Preview
13-
import androidx.compose.ui.unit.dp
1412
import com.arkivanov.decompose.extensions.compose.subscribeAsState
13+
import dev.abd3lraouf.learn.decompose.features.todo.presentation.details.TodoDetailsComponent
1514
import dev.abd3lraouf.learn.decompose.ui.preview.PreviewTodoDetailsComponent
1615
import dev.abd3lraouf.learn.decompose.ui.theme.DecomposeTutorialTheme
1716

app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/details/TodoDetailsScreen.kt renamed to app/src/main/java/dev/abd3lraouf/learn/decompose/features/todo/presentation/details/ui/TodoDetailsScreen.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package dev.abd3lraouf.learn.decompose.features.todo.presentation.details
1+
package dev.abd3lraouf.learn.decompose.features.todo.presentation.details.ui
22

3-
import androidx.compose.animation.AnimatedVisibility
43
import androidx.compose.animation.core.animateFloatAsState
54
import androidx.compose.foundation.background
65
import androidx.compose.foundation.layout.Arrangement
@@ -22,10 +21,7 @@ import androidx.compose.material3.Button
2221
import androidx.compose.material3.ButtonDefaults
2322
import androidx.compose.material3.Card
2423
import androidx.compose.material3.CardDefaults
25-
import androidx.compose.material3.Checkbox
26-
import androidx.compose.material3.Divider
2724
import androidx.compose.material3.ElevatedCard
28-
import androidx.compose.material3.FilledTonalButton
2925
import androidx.compose.material3.Icon
3026
import androidx.compose.material3.IconButton
3127
import androidx.compose.material3.LinearProgressIndicator
@@ -36,20 +32,17 @@ import androidx.compose.material3.SuggestionChipDefaults
3632
import androidx.compose.material3.Text
3733
import androidx.compose.runtime.Composable
3834
import androidx.compose.runtime.getValue
39-
import androidx.compose.runtime.mutableStateOf
40-
import androidx.compose.runtime.remember
41-
import androidx.compose.runtime.setValue
4235
import androidx.compose.ui.Alignment
4336
import androidx.compose.ui.Modifier
4437
import androidx.compose.ui.draw.alpha
4538
import androidx.compose.ui.draw.clip
4639
import androidx.compose.ui.graphics.Color
4740
import androidx.compose.ui.graphics.StrokeCap
41+
import androidx.compose.ui.graphics.vector.ImageVector
4842
import androidx.compose.ui.text.font.FontWeight
4943
import androidx.compose.ui.text.style.TextOverflow
5044
import androidx.compose.ui.tooling.preview.Preview
5145
import androidx.compose.ui.unit.dp
52-
import androidx.compose.ui.unit.sp
5346
import com.woowla.compose.icon.collections.heroicons.Heroicons
5447
import com.woowla.compose.icon.collections.heroicons.heroicons.Outline
5548
import com.woowla.compose.icon.collections.heroicons.heroicons.Solid
@@ -476,7 +469,7 @@ private fun DetailsCard(
476469
verticalAlignment = Alignment.CenterVertically
477470
) {
478471
Icon(
479-
imageVector = icon as androidx.compose.ui.graphics.vector.ImageVector,
472+
imageVector = icon as ImageVector,
480473
contentDescription = null,
481474
tint = iconTint,
482475
modifier = Modifier.size(20.dp)

0 commit comments

Comments
 (0)