Skip to content

Commit

Permalink
Merge pull request #92 from grodnoroads/1.2.8
Browse files Browse the repository at this point in the history
1.2.8
  • Loading branch information
egorikftp committed Apr 23, 2024
2 parents 1667851 + beac74f commit f154301
Show file tree
Hide file tree
Showing 47 changed files with 870 additions and 381 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package com.egoriku.grodnoroads.screen.main

import com.arkivanov.decompose.router.stack.ChildStack
import com.arkivanov.decompose.value.Value
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportingResult
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportParams
import com.egoriku.grodnoroads.map.domain.component.MapComponent
import com.egoriku.grodnoroads.setting.domain.component.SettingsComponent

interface MainComponent {

val childStack: Value<ChildStack<*, Child>>

fun processReporting(result: ReportingResult)
fun processReporting(params: ReportParams)

sealed class Child(val index: Int) {
data class Map(val component: MapComponent) : Child(index = 0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.egoriku.grodnoroads.screen.main
import com.arkivanov.decompose.ComponentContext
import com.arkivanov.decompose.router.stack.*
import com.arkivanov.decompose.value.Value
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportingResult
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportParams
import com.egoriku.grodnoroads.map.domain.component.buildMapComponent
import com.egoriku.grodnoroads.screen.main.MainComponent.Child
import com.egoriku.grodnoroads.setting.domain.component.buildSettingsComponent
Expand Down Expand Up @@ -48,8 +48,8 @@ internal class MainComponentImpl(
}
}

override fun processReporting(result: ReportingResult) {
(stack.active.instance as? Child.Map)?.component?.processReporting(result)
override fun processReporting(params: ReportParams) {
(stack.active.instance as? Child.Map)?.component?.processReporting(params)
}

private fun child(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private fun VerticalOrientationLayout(
)

val contentPaddingValues = WindowInsets
.navigationBars
.systemBars
.add(WindowInsets(bottom = bottomPadding))
.asPaddingValues()

Expand All @@ -92,7 +92,7 @@ private fun VerticalOrientationLayout(
}

is Child.Settings -> SettingsScreen(
contentPadding = contentPaddingValues,
contentPadding = PaddingValues(0.dp),
settingsComponent = child.component
)
}
Expand Down Expand Up @@ -136,8 +136,8 @@ private fun HorizontalOrientationLayout(
targetValue = if (isHideBottomBar) NavigationBarHeight else 0.dp,
label = "leftPadding"
)
val contentPaddingValues = WindowInsets(left = leftPadding)
.add(WindowInsets.systemBars.only(WindowInsetsSides.Horizontal))
val contentPaddingValues = WindowInsets.systemBars
.add(WindowInsets(left = leftPadding))
.asPaddingValues()

Box(modifier = Modifier.fillMaxSize()) {
Expand All @@ -153,7 +153,7 @@ private fun HorizontalOrientationLayout(
)

is Child.Settings -> SettingsScreen(
contentPadding = contentPaddingValues,
contentPadding = PaddingValues(start = leftPadding),
settingsComponent = child.component
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.arkivanov.decompose.router.slot.ChildSlot
import com.arkivanov.decompose.router.stack.ChildStack
import com.arkivanov.decompose.value.Value
import com.arkivanov.essenty.backhandler.BackHandlerOwner
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportingResult
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportParams
import com.egoriku.grodnoroads.extensions.common.StateData
import com.egoriku.grodnoroads.screen.main.MainComponent
import com.egoriku.grodnoroads.screen.root.store.headlamp.HeadLampType
Expand All @@ -24,7 +24,7 @@ interface RoadsRootComponent : BackHandlerOwner {
val childSlot: Value<ChildSlot<*, Any>>

fun closeReporting()
fun processReporting(result: ReportingResult)
fun processReporting(params: ReportParams)

val themeState: Flow<StateData<Theme>>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.arkivanov.decompose.router.stack.*
import com.arkivanov.decompose.value.Value
import com.arkivanov.mvikotlin.core.instancekeeper.getStore
import com.arkivanov.mvikotlin.extensions.coroutines.states
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportingResult
import com.egoriku.grodnoroads.eventreporting.domain.model.ReportParams
import com.egoriku.grodnoroads.extensions.common.StateData
import com.egoriku.grodnoroads.screen.main.buildMainComponent
import com.egoriku.grodnoroads.screen.root.RoadsRootComponent.Child
Expand Down Expand Up @@ -69,8 +69,8 @@ class RoadsRootComponentImpl(
rootStore.accept(Intent.CloseDialog)
}

override fun processReporting(result: ReportingResult) {
(stack.active.instance as? Child.Main)?.component?.processReporting(result)
override fun processReporting(params: ReportParams) {
(stack.active.instance as? Child.Main)?.component?.processReporting(params)
}

override fun closeReporting() = reportingNavigation.dismiss()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.egoriku.grodnoroads.foundation.core

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.unit.dp

@Composable
fun AutoScrollLazyRow(
state: LazyListState = rememberLazyListState(),
contentPadding: PaddingValues = PaddingValues(horizontal = 20.dp),
horizontalArrangement: Arrangement.Horizontal = Arrangement.spacedBy(8.dp),
indexToScroll: Int,
content: LazyListScope.() -> Unit
) {
LaunchedEffect(indexToScroll) {
state.animateScrollToItem(indexToScroll)
}

LazyRow(
state = state,
contentPadding = contentPadding,
horizontalArrangement = horizontalArrangement,
content = content
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.egoriku.grodnoroads.foundation.core

import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun HorizontalScrollableRow(
paddingValues: PaddingValues = PaddingValues(horizontal = 20.dp),
horizontalArrangement: Arrangement.HorizontalOrVertical = Arrangement.spacedBy(8.dp),
content: @Composable RowScope.() -> Unit
) {
Row(
modifier = Modifier
.fillMaxWidth()
.horizontalScroll(rememberScrollState())
.padding(paddingValues),
horizontalArrangement = horizontalArrangement,
content = content
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ package com.egoriku.grodnoroads.foundation.core
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.material.ripple.rememberRipple
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed

fun Modifier.unboundClickable(onClick: () -> Unit) = composed {
clickable(
@Composable
fun Modifier.unboundClickable(onClick: () -> Unit) =
this.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(bounded = false),
onClick = onClick
)
}

fun Modifier.noIndicationClick(onClick: () -> Unit = {}): Modifier = composed {
clickable(
@Composable
fun Modifier.noIndicationClick(onClick: () -> Unit = {}): Modifier =
this.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = null,
onClick = onClick
)
}
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package com.egoriku.grodnoroads.foundation.uikit

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.unit.dp
import com.egoriku.grodnoroads.foundation.core.rememberMutableState
import com.egoriku.grodnoroads.foundation.preview.GrodnoRoadsPreview

@Composable
fun OutlinedTextField(
value: String,
onValueChange: (String) -> Unit,
label: String,
modifier: Modifier = Modifier,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
supportingText: String? = null,
onFocusChange: () -> Unit
) {
var isFirstFocus by rememberMutableState { true }

OutlinedTextField(
modifier = modifier
.onFocusChanged { focusState ->
when {
isFirstFocus -> isFirstFocus = false
!focusState.isFocused -> onFocusChange()
}
},
value = value,
onValueChange = onValueChange,
label = label,
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
supportingText = supportingText,
)
}

@Composable
fun OutlinedTextField(
value: String,
onValueChange: (String) -> Unit,
label: String,
modifier: Modifier = Modifier,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
supportingText: String? = null
) {
androidx.compose.material3.OutlinedTextField(
modifier = modifier.fillMaxWidth(),
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
value = value,
shape = RoundedCornerShape(16.dp),
singleLine = true,
onValueChange = onValueChange,
label = { Text(text = label) },
supportingText = when {
supportingText != null -> {
{
Text(
text = supportingText,
color = MaterialTheme.colorScheme.error
)
}
}
else -> null
}
)
}

@GrodnoRoadsPreview
@Composable
private fun OutlinedTextFieldPreview() {
Column(
modifier = Modifier.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
OutlinedTextField(
value = "Text",
onValueChange = {},
label = "Label",
)
OutlinedTextField(
value = "Text",
onValueChange = {},
label = "Label",
supportingText = "Error text"
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ fun GoogleMap(
}
googleMap.setOnCameraMoveListener {
updatedOnZoomChanged(ZoomLevelState.Moving(zoom = googleMap.zoom))
updatedOnProjectionChanged(googleMap.projection)
}

updateMapProperties(googleMap, mapProperties)
Expand Down
Loading

0 comments on commit f154301

Please sign in to comment.