Skip to content

Commit

Permalink
fix #575 and some improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
T8RIN committed Nov 28, 2023
1 parent 30282cc commit 0043e56
Show file tree
Hide file tree
Showing 25 changed files with 302 additions and 205 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ru.tech.imageresizershrinker.core.utils

fun String.trimTrailingZero(): String {
val value = this
return if (value.isNotEmpty()) {
if (value.indexOf(".") < 0) {
value
} else {
value.replace("0*$".toRegex(), "").replace("\\.$".toRegex(), "")
}
} else {
value
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,6 @@ fun BytesResizeScreen(
viewModel.updateUris(uris)
viewModel.decodeBitmapByUri(
uri = uris[0],
originalSize = false,
onGetMimeType = viewModel::setMime,
onGetMetadata = {},
onGetImage = viewModel::updateBitmap,
onError = {
scope.launch {
toastHostState.showError(context, it)
Expand All @@ -165,10 +161,6 @@ fun BytesResizeScreen(
viewModel.updateUris(list)
viewModel.decodeBitmapByUri(
uri = uris[0],
originalSize = false,
onGetMimeType = viewModel::setMime,
onGetMetadata = {},
onGetImage = viewModel::updateBitmap,
onError = {
scope.launch {
toastHostState.showError(context, it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,34 +287,41 @@ class BytesResizeViewModel @Inject constructor(
}
}

private var job: Job? = null

private fun setImageData(imageData: ImageData<Bitmap, ExifInterface>) {
job?.cancel()
_isImageLoading.value = false
job = viewModelScope.launch {
_isImageLoading.value = true
imageManager.scaleUntilCanShow(imageData.image)?.let {
_bitmap.value = imageData.image
_previewBitmap.value = it
_imageFormat.value = imageData.imageInfo.imageFormat
_imageSize.value = imageManager.calculateImageSize(
imageData = ImageData(
image = imageData.image,
imageInfo = ImageInfo(imageFormat = imageFormat)
)
)
}
_isImageLoading.value = false
}
}

fun decodeBitmapByUri(
uri: Uri,
originalSize: Boolean,
onGetMimeType: (ImageFormat) -> Unit,
onGetMetadata: (ExifInterface?) -> Unit,
onGetImage: (Bitmap?) -> Unit,
onError: (Throwable) -> Unit
) {
_isImageLoading.value = true
imageManager.getImageAsync(
uri = uri.toString(),
originalSize = originalSize,
onGetImage = {
onGetImage(it.image)
onGetMetadata(it.metadata)
onGetMimeType(it.imageInfo.imageFormat)
viewModelScope.launch {
_isImageLoading.value = true
_imageSize.value = imageManager.calculateImageSize(
imageData = ImageData(
image = it.image,
imageInfo = it.imageInfo,
metadata = it.metadata
)
)
_isImageLoading.value = false
}
},
onError = onError
originalSize = true,
onGetImage = ::setImageData,
onError = {
_isImageLoading.value = false
onError(it)
}
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import com.smarttoolfactory.cropper.model.CropAspectRatio
import com.smarttoolfactory.cropper.util.createRectShape
import com.smarttoolfactory.cropper.widget.AspectRatioSelectionCard
import ru.tech.imageresizershrinker.R
import ru.tech.imageresizershrinker.core.utils.trimTrailingZero
import ru.tech.imageresizershrinker.domain.model.AspectRatio.Numeric
import ru.tech.imageresizershrinker.presentation.root.theme.outlineVariant
import ru.tech.imageresizershrinker.presentation.root.widget.modifier.container
Expand Down Expand Up @@ -167,17 +168,4 @@ fun DomainAspectRatio.toCropAspectRatio(
shape = createRectShape(AspectRatio(value)),
aspectRatio = AspectRatio(value)
)
}

private fun String.trimTrailingZero(): String {
val value = this
return if (value.isNotEmpty()) {
if (value.indexOf(".") < 0) {
value
} else {
value.replace("0*$".toRegex(), "").replace("\\.$".toRegex(), "")
}
} else {
value
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -403,41 +403,39 @@ fun FiltersScreen(

val controls: @Composable (filterType: Screen.Filter.Type) -> Unit = { filterType ->
val baseControls: @Composable (wrapped: @Composable () -> Unit) -> Unit = { wrapped ->
if (viewModel.bitmap != null) {
val internalHeight = rememberAvailableHeight(imageState, showOriginal)
LazyColumn(
contentPadding = PaddingValues(
bottom = WindowInsets
.navigationBars
.asPaddingValues()
.calculateBottomPadding() + WindowInsets.ime
.asPaddingValues()
.calculateBottomPadding() + (if (!imageInside && viewModel.bitmap != null) 20.dp else 100.dp),
top = if (viewModel.bitmap == null || !imageInside) 20.dp else 0.dp,
start = 20.dp,
end = 20.dp
),
modifier = Modifier
.fillMaxHeight(1f)
.clipToBounds()
) {
imageStickyHeader(
visible = imageInside && viewModel.bitmap != null,
internalHeight = internalHeight,
imageState = imageState,
onStateChange = { imageState = it },
imageBlock = imageBlock
)
item {
Column(
modifier = Modifier
.fillMaxSize()
.navBarsLandscapePadding(viewModel.bitmap == null),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
wrapped()
}
val internalHeight = rememberAvailableHeight(imageState, showOriginal)
LazyColumn(
contentPadding = PaddingValues(
bottom = WindowInsets
.navigationBars
.asPaddingValues()
.calculateBottomPadding() + WindowInsets.ime
.asPaddingValues()
.calculateBottomPadding() + (if (!imageInside && viewModel.bitmap != null) 20.dp else 100.dp),
top = if (viewModel.bitmap == null || !imageInside) 20.dp else 0.dp,
start = 20.dp,
end = 20.dp
),
modifier = Modifier
.fillMaxHeight(1f)
.clipToBounds()
) {
imageStickyHeader(
visible = imageInside && viewModel.bitmap != null,
internalHeight = internalHeight,
imageState = imageState,
onStateChange = { imageState = it },
imageBlock = imageBlock
)
item {
Column(
modifier = Modifier
.fillMaxSize()
.navBarsLandscapePadding(viewModel.bitmap == null),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
wrapped()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import ru.tech.imageresizershrinker.R
import ru.tech.imageresizershrinker.core.utils.trimTrailingZero
import ru.tech.imageresizershrinker.presentation.root.widget.controls.EnhancedButton
import ru.tech.imageresizershrinker.presentation.root.widget.modifier.alertDialogBorder
import kotlin.math.pow
Expand All @@ -50,8 +51,8 @@ fun ValueDialog(
Text(
stringResource(
R.string.value_in_range,
valueRange.start.toInt(),
valueRange.endInclusive.toInt()
valueRange.start.toString().trimTrailingZero(),
valueRange.endInclusive.toString().trimTrailingZero()
)
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import ru.tech.imageresizershrinker.core.utils.trimTrailingZero

@Composable
fun ValueText(
Expand All @@ -31,7 +32,7 @@ fun ValueText(
transitionSpec = { fadeIn() togetherWith fadeOut() }
) {
Text(
text = "$it$valueSuffix",
text = "${it.toString().trimTrailingZero()}$valueSuffix",
color = LocalContentColor.current.copy(0.5f),
modifier = modifier
.clip(CircleShape)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.smarttoolfactory.colordetector.util.ColorUtil.roundToTwoDigits
import ru.tech.imageresizershrinker.R
import ru.tech.imageresizershrinker.core.utils.trimTrailingZero
import ru.tech.imageresizershrinker.presentation.root.widget.controls.EnhancedSlider
import ru.tech.imageresizershrinker.presentation.root.widget.modifier.ContainerShapeDefaults
import ru.tech.imageresizershrinker.presentation.root.widget.modifier.container
Expand Down Expand Up @@ -88,7 +89,7 @@ fun FontScaleSettingItem(
}
) { value ->
Text(
text = value.takeIf { it > 0 }?.toString()
text = value.takeIf { it > 0 }?.toString()?.trimTrailingZero()
?: stringResource(R.string.defaultt),
color = MaterialTheme.colorScheme.onSurface.copy(
alpha = 0.5f
Expand Down
Loading

0 comments on commit 0043e56

Please sign in to comment.