Skip to content

Commit ea70835

Browse files
committed
feat : Click 경로 연결해서 뷰연결
1 parent 02c1be8 commit ea70835

File tree

5 files changed

+52
-24
lines changed

5 files changed

+52
-24
lines changed

presentation/src/main/java/com/stop/ui/alarmsetting/AlarmSettingFragment.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ import com.stop.AlarmFunctions
1515
import com.stop.AlarmWorker
1616
import com.stop.R
1717
import com.stop.databinding.FragmentAlarmSettingBinding
18-
import com.stop.ui.route.RouteViewModel
18+
import com.stop.ui.route.ClickRouteViewModel
1919
import dagger.hilt.android.AndroidEntryPoint
2020
import java.util.concurrent.TimeUnit
21+
import kotlin.math.roundToInt
2122

2223
@AndroidEntryPoint
2324
class AlarmSettingFragment : Fragment() {
@@ -26,7 +27,7 @@ class AlarmSettingFragment : Fragment() {
2627
private val binding get() = _binding!!
2728

2829
private val alarmSettingViewModel by viewModels<AlarmSettingViewModel>()
29-
private val routeViewModel by activityViewModels<RouteViewModel>()
30+
private val clickRouteViewModel by activityViewModels<ClickRouteViewModel>()
3031

3132
private lateinit var alarmFunctions: AlarmFunctions
3233

@@ -55,14 +56,16 @@ class AlarmSettingFragment : Fragment() {
5556
binding.apply {
5657
lifecycleOwner = viewLifecycleOwner
5758
alarmViewModel = alarmSettingViewModel
58-
routeViewModel = routeViewModel
59+
startPosition = clickRouteViewModel.clickRoute?.routes?.first()?.start?.name ?: "출발지 없음"
60+
endPosition = clickRouteViewModel.clickRoute?.routes?.last()?.end?.name ?: "도착지 없음"
61+
lastTime = clickRouteViewModel.lastTime
62+
walkTime = (clickRouteViewModel.clickRoute?.routes?.first()?.sectionTime?.div(60))?.roundToInt() ?: 0
5963
fragment = this@AlarmSettingFragment
6064
}
6165
}
6266

6367
private fun initView() {
6468
with(binding) {
65-
textViewLastTime.text = getString(R.string.last_transport_arrival_time, 23, 30)
6669
textViewWalk.text = getString(R.string.last_transport_walking_time, 10)
6770

6871
numberPickerAlarmTime.minValue = 0
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.stop.ui.route
2+
3+
import androidx.lifecycle.ViewModel
4+
import com.stop.domain.model.route.tmap.custom.Itinerary
5+
6+
class ClickRouteViewModel : ViewModel() {
7+
8+
var clickRoute : Itinerary? = null
9+
var lastTime = "23:30:00"
10+
11+
}

presentation/src/main/java/com/stop/ui/route/RouteFragment.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class RouteFragment : Fragment() {
2222
private val binding: FragmentRouteBinding
2323
get() = _binding!!
2424

25-
private val viewModel: RouteViewModel by activityViewModels()
25+
private val routeViewModel: RouteViewModel by activityViewModels()
26+
private val clickRouteViewModel : ClickRouteViewModel by activityViewModels()
2627

2728
private val args: RouteFragmentArgs by navArgs()
2829

@@ -48,7 +49,7 @@ class RouteFragment : Fragment() {
4849

4950
private fun setBinding() {
5051
binding.lifecycleOwner = viewLifecycleOwner
51-
binding.viewModel = viewModel
52+
binding.viewModel = routeViewModel
5253
}
5354

5455
private fun setListener() {
@@ -69,21 +70,22 @@ class RouteFragment : Fragment() {
6970
* UI가 ViewModel을 직접 호출하면 안 되지만, 테스트를 위해 막차 조회 함수를 호출했습니다.
7071
* 여기서 UI가 ViewModel을 직접 호출하지 않으면서 막차 조회 함수를 호출할 수 있을까요?
7172
*/
72-
viewModel.calculateLastTransportTime(itinerary)
73+
routeViewModel.calculateLastTransportTime(itinerary)
74+
clickRouteViewModel.clickRoute = itinerary
7375
}
7476
})
7577
binding.recyclerviewRoute.adapter = adapter
7678
}
7779

7880
private fun setObserve() {
79-
viewModel.routeResponse.observe(viewLifecycleOwner) {
81+
routeViewModel.routeResponse.observe(viewLifecycleOwner) {
8082
if (it == null) {
8183
return@observe
8284
}
8385
adapter.submitList(it)
8486
}
8587

86-
viewModel.errorMessage.observe(viewLifecycleOwner) {
88+
routeViewModel.errorMessage.observe(viewLifecycleOwner) {
8789
it.getContentIfNotHandled()?.let { errorType ->
8890
val message = when (errorType) {
8991
ErrorType.NO_START -> getString(R.string.no_start_input)
@@ -94,22 +96,22 @@ class RouteFragment : Fragment() {
9496
}
9597
}
9698

97-
viewModel.lastTimeResponse.observe(viewLifecycleOwner) { event ->
99+
routeViewModel.lastTimeResponse.observe(viewLifecycleOwner) { event ->
98100
event.getContentIfNotHandled()?.let { response ->
99-
viewModel.lastTimes = response.toMutableList()
101+
routeViewModel.lastTimes = response.toMutableList()
100102
binding.root.findNavController().navigate(R.id.action_routeFragment_to_routeDetailFragment)
101103
}
102104
}
103105
}
104106

105107
private fun setStartAndDestinationText() {
106108
args.start?.let {
107-
viewModel.setOrigin(it)
109+
routeViewModel.setOrigin(it)
108110
}
109111
args.end?.let {
110-
viewModel.setDestination(it)
112+
routeViewModel.setDestination(it)
111113
}
112-
viewModel.getRoute()
114+
routeViewModel.getRoute()
113115
}
114116

115117
override fun onDestroyView() {

presentation/src/main/res/layout/fragment_alarm_setting.xml

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,20 @@
1010
type="com.stop.ui.alarmsetting.AlarmSettingViewModel" />
1111

1212
<variable
13-
name="routeViewModel"
14-
type="com.stop.ui.route.RouteViewModel" />
13+
name="startPosition"
14+
type="String" />
15+
16+
<variable
17+
name="endPosition"
18+
type="String" />
19+
20+
<variable
21+
name="lastTime"
22+
type="String" />
23+
24+
<variable
25+
name="walkTime"
26+
type="int" />
1527

1628
<variable
1729
name="fragment"
@@ -54,7 +66,7 @@
5466
android:ellipsize="end"
5567
android:maxLines="1"
5668
android:padding="8dp"
57-
android:text="출발지 : 아남타워"
69+
android:text="@{@string/start_position_text(startPosition)}"
5870
android:textColor="@color/black"
5971
android:textSize="24sp"
6072
android:textStyle="bold"
@@ -71,7 +83,7 @@
7183
android:ellipsize="end"
7284
android:maxLines="1"
7385
android:padding="8dp"
74-
android:text="도착지 : 강남역"
86+
android:text="@{@string/end_position_text(endPosition)}"
7587
android:textColor="@color/black"
7688
android:textSize="24sp"
7789
android:textStyle="bold"
@@ -87,10 +99,10 @@
8799
android:gravity="center"
88100
android:textColor="@color/black"
89101
android:textSize="21sp"
102+
android:text="@{@string/last_transport_arrival_time(lastTime)}"
90103
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
91104
app:layout_constraintStart_toStartOf="@id/guide_line_start"
92-
app:layout_constraintTop_toBottomOf="@id/text_view_end_position"
93-
tools:text="막차가 23시30분에 도착할 예정이에요!!" />
105+
app:layout_constraintTop_toBottomOf="@id/text_view_end_position" />
94106

95107

96108
<ImageView
@@ -109,10 +121,10 @@
109121
android:textColor="@color/black"
110122
android:textSize="18sp"
111123
app:layout_constraintBottom_toBottomOf="@id/image_view_walk"
124+
android:text="@{@string/last_transport_walking_time(walkTime)}"
112125
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
113126
app:layout_constraintStart_toEndOf="@id/image_view_walk"
114-
app:layout_constraintTop_toTopOf="@id/image_view_walk"
115-
tools:text="막차까지 도보 시간이 10분 소요될것으로 예상돼요!!" />
127+
app:layout_constraintTop_toTopOf="@id/image_view_walk" />
116128

117129
<NumberPicker
118130
android:id="@+id/number_picker_alarm_time"

presentation/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
<string name="mission_toggle_text">미션 여부</string>
2525
<string name="on_text">ON</string>
2626
<string name="off_text">OFF</string>
27-
<string name="last_transport_arrival_time">막차가 %1$d시 %2$d분에 도착할 예정이에요!!</string>
28-
<string name="last_transport_walking_time">막차까지 도보 시간이 %1$d분 소요될것으로 예상돼요!!</string>
27+
<string name="last_transport_arrival_time">막차가 %1$s에 도착할 예정이에요!!</string>
28+
<string name="last_transport_walking_time">막차까지 도보 시간이 %1$d분 소요될것으로 예상되요!!</string>
2929
<string name="alarm_time_text">알람이 막차시간\n%1$d분 전에\n울리도록 설정하시겠습니까?</string>
3030
<string name="register_alarm_text">알람 등록</string>
3131
<string name="search_hint">장소, 주소 검색</string>

0 commit comments

Comments
 (0)