Skip to content

Commit

Permalink
[UI] #102 : 인식된 텍스트 UI 구현 및 데이터 바인딩 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
jeongjaino committed Nov 17, 2023
1 parent e91d50d commit 5315d2f
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject

Expand All @@ -24,16 +25,20 @@ class TextDetectionViewModel @Inject constructor(
private val _imageUrl: MutableStateFlow<String> = MutableStateFlow("")
val imageUrl: StateFlow<String> get() = _imageUrl

private val _recognizedText: MutableStateFlow<String> = MutableStateFlow("")
val recognizedText: StateFlow<String> = _recognizedText.asStateFlow()

fun setImageUrl(imageUrl : String){
_imageUrl.value = imageUrl
}

fun checkAllergiesInKoreanText() {
viewModelScope.launch {
checkAllergiesInKoreanTextUseCase(_imageUrl.value)
.onSuccess { list ->
if(list.isNotEmpty())
_textDetectionUiEvent.emit(TextDetectionEvent.Detected(list))
.onSuccess { result ->
_recognizedText.value = result.recognizedText
if(result.allergies.isNotEmpty())
_textDetectionUiEvent.emit(TextDetectionEvent.Detected(result.allergies))
else
_textDetectionUiEvent.emit(TextDetectionEvent.NotDetected)
}
Expand All @@ -46,9 +51,10 @@ class TextDetectionViewModel @Inject constructor(
fun checkAllergiesInEnglishText() {
viewModelScope.launch {
checkAllergiesInEnglishTextUseCase(_imageUrl.value)
.onSuccess { list ->
if(list.isNotEmpty())
_textDetectionUiEvent.emit(TextDetectionEvent.Detected(list))
.onSuccess { result ->
_recognizedText.value = result.recognizedText
if(result.allergies.isNotEmpty())
_textDetectionUiEvent.emit(TextDetectionEvent.Detected(result.allergies))
else
_textDetectionUiEvent.emit(TextDetectionEvent.NotDetected)
}
Expand Down
139 changes: 124 additions & 15 deletions client/app/src/main/res/layout/fragment_text_detection.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,136 @@
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/light_gray">

<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/Capture_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:imageUrl="@{viewModel.imageUrl}"
<androidx.cardview.widget.CardView
android:id="@+id/cd_t_d_result"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">

<TextView
android:id="@+id/tv_t_d_result_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/sc_dream_nor"
android:text="@string/recongnized_text"
android:textColor="@color/black"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_t_d_result_title" >

<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_gray">

<TextView
android:id="@+id/tv_t_d_recognized_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.recognizedText}"
android:textSize="14sp"
android:textColor="@color/black"
android:fontFamily="@font/sc_dream_nor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

</androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

<androidx.cardview.widget.CardView
android:id="@+id/cd_t_d_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:placeholder="@{@drawable/health_c}" />
app:layout_constraintTop_toTopOf="parent">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">

<ImageButton
android:id="@+id/back_to_camera_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_baseline_arrow_back_ios_new_24"
app:backgroundTint="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/tv_t_d_top_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="@font/sc_dream_nor"
android:text="@string/korea_ocr_camera"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/back_to_camera_button"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

<ImageButton
android:id="@+id/back_to_camera_button"
android:layout_width="wrap_content"
<androidx.cardview.widget.CardView
android:id="@+id/cd_t_d_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:src="@drawable/ic_baseline_arrow_back_ios_new_24"
app:backgroundTint="@color/white"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@+id/cd_t_d_result"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/cd_t_d_top">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_t_d_image"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:imageUrl="@{viewModel.imageUrl}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:placeholder="@{@drawable/health_c}"
tools:layout_height="300dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

0 comments on commit 5315d2f

Please sign in to comment.