TP-31192 Toast is not showing up on screen (#79)

This commit is contained in:
Aparna Vadlamani
2023-06-02 17:25:16 +05:30
committed by GitHub Enterprise
parent 84c6503ed2
commit 57910e48d9
4 changed files with 52 additions and 2 deletions

View File

@@ -9,7 +9,10 @@ package com.navi.uitron.model.ui
class ToastProperty(
var message: String? = null,
var duration: String? = null
var duration: String? = null,
var gravity: String? = null,
var xOffset: Int? = null,
var yOffset: Int? = null
) : BaseProperty() {
override fun copyNonNullFrom(property: BaseProperty?) {
@@ -17,5 +20,8 @@ class ToastProperty(
val toastProperty = property as? ToastProperty?
toastProperty?.message?.let { message = it }
toastProperty?.duration?.let { duration = it }
toastProperty?.gravity?.let { gravity = it }
toastProperty?.xOffset?.let { xOffset = it }
toastProperty?.yOffset?.let { yOffset = it }
}
}

View File

@@ -256,3 +256,15 @@ enum class InputTransformationType {
NUMBER_TO_WORDS,
DOB_TO_READABLE_STRING
}
enum class GravityType {
BOTTOM,
CENTER,
CENTER_VERTICAL,
CENTER_HORIZONTAL,
TOP,
START,
END,
LEFT,
RIGHT
}

View File

@@ -12,11 +12,20 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSavedStateRegistryOwner
import androidx.compose.ui.unit.dp
import androidx.lifecycle.ViewTreeLifecycleOwner
import androidx.lifecycle.ViewTreeViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
import androidx.savedstate.setViewTreeSavedStateRegistryOwner
import com.navi.uitron.model.data.ToastData
import com.navi.uitron.model.data.UiTronData
import com.navi.uitron.model.ui.ToastProperty
import com.navi.uitron.model.ui.UiTronView
import com.navi.uitron.viewmodel.UiTronViewModel
import dpToPx
import getGravity
import isNotNullAndNotEmpty
import orFalse
@@ -59,13 +68,20 @@ class ToastRenderer(
} else {
Toast(LocalContext.current).apply {
duration = getToastDuration(property.duration)
view = ComposeView(LocalContext.current).apply {
val views = ComposeView(LocalContext.current).apply {
childrenComposeViews?.let {
setContent {
uiTronRenderer.Render(composeViews = childrenComposeViews)
}
}
}
ViewTreeLifecycleOwner.set(views, LocalLifecycleOwner.current)
ViewTreeViewModelStoreOwner.set(views, LocalViewModelStoreOwner.current)
views.setViewTreeSavedStateRegistryOwner(LocalSavedStateRegistryOwner.current)
setGravity(getGravity(property.gravity), property.xOffset?.dp?.value?.toInt() ?: 0,
property.yOffset?.dp?.value?.toInt() ?: 0
)
view = views
}.show()
}

View File

@@ -6,6 +6,7 @@
*/
import android.content.res.Resources
import android.view.Gravity
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
@@ -549,6 +550,21 @@ fun getKeyboardOptions(keyboardOptions: OutlinedTextFieldKeyBoardOptions?): Keyb
)
}
fun getGravity(gravity: String?): Int {
return when(gravity) {
GravityType.BOTTOM.name -> Gravity.BOTTOM
GravityType.CENTER.name -> Gravity.CENTER
GravityType.CENTER_VERTICAL.name -> Gravity.CENTER_VERTICAL
GravityType.CENTER_HORIZONTAL.name -> Gravity.CENTER_HORIZONTAL
GravityType.TOP.name -> Gravity.TOP
GravityType.START.name -> Gravity.START
GravityType.END.name -> Gravity.END
GravityType.LEFT.name -> Gravity.LEFT
GravityType.RIGHT.name -> Gravity.RIGHT
else -> Gravity.NO_GRAVITY
}
}
fun String?.getDataId() = this.orEmpty()+DATA_SUFFIX
fun String?.getInputId() = this.orEmpty()+ INPUT_SUFFIX