Skip to content

Commit 08b2c60

Browse files
committed
Merge branch 'develop' into 70-feature-fix-ui
# Conflicts: # presentation/src/main/java/com/stop/ui/placesearch/PlaceSearchFragment.kt # presentation/src/main/java/com/stop/ui/route/RouteFragment.kt
2 parents 6006e59 + fdae435 commit 08b2c60

File tree

23 files changed

+263
-209
lines changed

23 files changed

+263
-209
lines changed

โ€Ždomain/src/main/java/com/stop/domain/model/route/tmap/custom/Route.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ interface Route {
55
val end: Place
66
val mode: MoveType
77
val sectionTime: Double
8+
val proportionOfSectionTime: Float
89
val start: Place
910
}

โ€Ždomain/src/main/java/com/stop/domain/model/route/tmap/custom/TransportRoute.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ data class TransportRoute(
55
override val end: Place,
66
override val mode: MoveType,
77
override val sectionTime: Double,
8+
override val proportionOfSectionTime: Float,
89
override val start: Place,
910
val lines: List<Coordinate>,
1011
val stations: List<Station>,

โ€Ždomain/src/main/java/com/stop/domain/model/route/tmap/custom/WalkRoute.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ data class WalkRoute(
55
override val end: Place,
66
override val mode: MoveType,
77
override val sectionTime: Double,
8+
override val proportionOfSectionTime: Float,
89
override val start: Place,
910
val steps: List<Step>
1011
): Route

โ€Ždomain/src/main/java/com/stop/domain/usecase/route/GetRouteUseCaseImpl.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ internal class GetRouteUseCaseImpl @Inject constructor(
2323
val moveType = MoveType.getMoveTypeByName(leg.mode)
2424

2525
routes + when (moveType) {
26-
MoveType.SUBWAY, MoveType.BUS -> createPublicTransportRoute(leg, moveType)
27-
MoveType.WALK, MoveType.TRANSFER -> createWalkRoute(leg, moveType)
26+
MoveType.SUBWAY, MoveType.BUS -> createPublicTransportRoute(leg, moveType, itinerary.totalTime)
27+
MoveType.WALK, MoveType.TRANSFER -> createWalkRoute(leg, moveType, itinerary.totalTime)
2828
else -> return@fold routes
2929
}
3030
} catch (e: Exception) {
@@ -44,7 +44,7 @@ internal class GetRouteUseCaseImpl @Inject constructor(
4444
}
4545

4646

47-
private fun createPublicTransportRoute(leg: Leg, moveType: MoveType): TransportRoute {
47+
private fun createPublicTransportRoute(leg: Leg, moveType: MoveType, totalTime: Int): TransportRoute {
4848
return TransportRoute(
4949
distance = leg.distance,
5050
end = with(leg.end) {
@@ -58,6 +58,7 @@ internal class GetRouteUseCaseImpl @Inject constructor(
5858
},
5959
mode = moveType,
6060
sectionTime = leg.sectionTime,
61+
proportionOfSectionTime = calculateProportionOfSectionTime(leg.sectionTime, totalTime),
6162
start = with(leg.start) {
6263
Place(
6364
name = name.replace("(์ค‘)", ""),
@@ -87,14 +88,18 @@ internal class GetRouteUseCaseImpl @Inject constructor(
8788
)
8889
}
8990

91+
private fun calculateProportionOfSectionTime(sectionTime: Double, totalTime: Int): Float {
92+
return (sectionTime / totalTime * 100).toInt().toFloat() / 100
93+
}
94+
9095
private fun createCoordinates(linesString: String): List<Coordinate> {
9196
return linesString.split(" ").map {
9297
val (latitude, longitude) = it.split(",")
9398
Coordinate(latitude, longitude)
9499
}
95100
}
96101

97-
private fun createWalkRoute(leg: Leg, moveType: MoveType): WalkRoute {
102+
private fun createWalkRoute(leg: Leg, moveType: MoveType, totalTime: Int): WalkRoute {
98103
return WalkRoute(
99104
distance = leg.distance,
100105
end = with(leg.end) {
@@ -108,6 +113,7 @@ internal class GetRouteUseCaseImpl @Inject constructor(
108113
},
109114
mode = moveType,
110115
sectionTime = leg.sectionTime,
116+
proportionOfSectionTime = calculateProportionOfSectionTime(leg.sectionTime, totalTime),
111117
start = with(leg.start) {
112118
Place(
113119
name = name,

โ€Žpresentation/src/main/java/com/stop/MainActivity.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class MainActivity : AppCompatActivity() {
2525
super.onNewIntent(intent)
2626

2727
intent?.extras?.getInt("ALARM_CODE")?.let {
28-
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
28+
val navHostFragment =
29+
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
2930
val inflater = navHostFragment.navController.navInflater
3031
val graph = inflater.inflate(R.navigation.nav_graph)
3132
graph.setStartDestination(R.id.alarmStartFragment)
@@ -80,7 +81,10 @@ class MainActivity : AppCompatActivity() {
8081
if (isMoreThanOreoMr1()) {
8182
setShowWhenLocked(true)
8283
setTurnScreenOn(true)
83-
(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).requestDismissKeyguard(this, null)
84+
(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).requestDismissKeyguard(
85+
this,
86+
null
87+
)
8488
}
8589
}
8690

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

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import androidx.fragment.app.activityViewModels
9-
import androidx.navigation.findNavController
9+
import androidx.navigation.fragment.findNavController
10+
import androidx.navigation.navGraphViewModels
1011
import com.stop.R
1112
import com.stop.databinding.FragmentAlarmSettingBinding
1213
import com.stop.domain.model.alarm.AlarmUseCaseItem
13-
import com.stop.ui.route.ClickRouteViewModel
14+
import com.stop.ui.route.RouteResultViewModel
1415
import dagger.hilt.android.AndroidEntryPoint
1516
import kotlin.math.roundToInt
1617

@@ -21,7 +22,7 @@ class AlarmSettingFragment : Fragment() {
2122
private val binding get() = _binding!!
2223

2324
private val alarmSettingViewModel by activityViewModels<AlarmSettingViewModel>()
24-
private val clickRouteViewModel by activityViewModels<ClickRouteViewModel>()
25+
private val routeResultViewModel: RouteResultViewModel by navGraphViewModels(R.id.route_nav_graph)
2526

2627
override fun onCreateView(
2728
inflater: LayoutInflater, container: ViewGroup?,
@@ -44,13 +45,22 @@ class AlarmSettingFragment : Fragment() {
4445
}
4546

4647
private fun initBinding() {
48+
val itinerary = routeResultViewModel.itinerary.value ?: throw IllegalArgumentException()
49+
50+
val transportLastTimes = routeResultViewModel.lastTimes.value
51+
?: throw IllegalArgumentException()
52+
53+
val transportLastTime = transportLastTimes.filterNotNull().sortedBy {
54+
it.timeToBoard
55+
}.first()
56+
4757
binding.apply {
4858
lifecycleOwner = viewLifecycleOwner
4959
alarmViewModel = alarmSettingViewModel
50-
startPosition = clickRouteViewModel.clickRoute?.routes?.first()?.start?.name ?: "์ถœ๋ฐœ์ง€ ์—†์Œ"
51-
endPosition = clickRouteViewModel.clickRoute?.routes?.last()?.end?.name ?: "๋„์ฐฉ์ง€ ์—†์Œ"
52-
lastTime = clickRouteViewModel.lastTime
53-
walkTime = (clickRouteViewModel.clickRoute?.routes?.first()?.sectionTime?.div(60))?.roundToInt() ?: 0
60+
startPosition = itinerary.routes.first().start.name
61+
endPosition = itinerary.routes.last().end.name
62+
lastTime = transportLastTime.timeToBoard
63+
walkTime = (itinerary.routes.first().sectionTime.div(60)).roundToInt()
5464
fragment = this@AlarmSettingFragment
5565
}
5666
}
@@ -78,22 +88,34 @@ class AlarmSettingFragment : Fragment() {
7888
}
7989

8090
fun setAlarmRegisterListener() {
91+
val itinerary = routeResultViewModel.itinerary.value ?: throw IllegalArgumentException()
92+
93+
val transportLastTimes = routeResultViewModel.lastTimes.value
94+
?: throw IllegalArgumentException()
95+
96+
val transportLastTime = transportLastTimes.filterNotNull().sortedBy {
97+
it.timeToBoard
98+
}.first()
99+
81100
val alarmUseCaseItem = AlarmUseCaseItem(
82-
startPosition = clickRouteViewModel.clickRoute?.routes?.first()?.start?.name ?: "์ถœ๋ฐœ์ง€ ์—†์Œ",
83-
endPosition = clickRouteViewModel.clickRoute?.routes?.last()?.end?.name ?: "๋„์ฐฉ์ง€ ์—†์Œ",
84-
routes = clickRouteViewModel.clickRoute?.routes ?: emptyList(),
85-
lastTime = clickRouteViewModel.lastTime,
86-
walkTime = (clickRouteViewModel.clickRoute?.routes?.first()?.sectionTime?.div(60))?.roundToInt() ?: 0,
101+
startPosition = itinerary.routes.first().start.name,
102+
endPosition = itinerary.routes.last().end.name,
103+
routes = itinerary.routes,
104+
lastTime = transportLastTime.timeToBoard,
105+
walkTime = (itinerary.routes.first().sectionTime.div(60)).roundToInt(),
87106
0,
88107
ALARM_CODE,
89108
true
90109
)
91110

92111
alarmSettingViewModel.saveAlarm(alarmUseCaseItem)
93-
alarmSettingViewModel.callAlarm(clickRouteViewModel.lastTime)
94-
alarmSettingViewModel.makeAlarmWorker(clickRouteViewModel.lastTime)
112+
alarmSettingViewModel.callAlarm(transportLastTime.timeToBoard)
113+
alarmSettingViewModel.makeAlarmWorker(transportLastTime.timeToBoard)
95114

96-
binding.root.findNavController().navigate(R.id.action_alarmSetting_to_mapFragment)
115+
val navController = findNavController()
116+
navController.setGraph(R.navigation.nav_graph)
117+
navController.popBackStack(R.id.action_global_mapFragment, false)
118+
requireActivity().viewModelStore.clear()
97119
}
98120

99121
override fun onDestroyView() {

โ€Žpresentation/src/main/java/com/stop/ui/bookmark/BookMarkFragment.kt

Lines changed: 0 additions & 30 deletions
This file was deleted.

โ€Žpresentation/src/main/java/com/stop/ui/map/MapFragment.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import androidx.lifecycle.asLiveData
1212
import androidx.lifecycle.flowWithLifecycle
1313
import androidx.lifecycle.lifecycleScope
1414
import androidx.navigation.findNavController
15+
import androidx.navigation.fragment.findNavController
1516
import com.google.android.material.bottomsheet.BottomSheetBehavior
1617
import com.skt.tmap.TMapPoint
1718
import com.stop.R
19+
import com.stop.RouteNavGraphDirections
1820
import com.stop.databinding.FragmentMapBinding
1921
import com.stop.model.Location
2022
import com.stop.ui.alarmsetting.AlarmSettingViewModel
@@ -108,13 +110,17 @@ class MapFragment : Fragment(), MapHandler {
108110
}
109111

110112
binding.layoutPanel.findViewById<View>(R.id.view_panel_start).setOnClickListener {
111-
val action = MapFragmentDirections.actionMapFragmentToRouteFragment().setStart(placeSearchViewModel.panelInfo)
112-
binding.root.findNavController().navigate(action)
113+
val navController = findNavController()
114+
navController.setGraph(R.navigation.route_nav_graph)
115+
val action = RouteNavGraphDirections.actionGlobalRouteFragment().setStart(placeSearchViewModel.panelInfo)
116+
navController.navigate(action)
113117
}
114118

115119
binding.layoutPanel.findViewById<View>(R.id.view_panel_end).setOnClickListener {
116-
val action = MapFragmentDirections.actionMapFragmentToRouteFragment().setEnd(placeSearchViewModel.panelInfo)
117-
binding.root.findNavController().navigate(action)
120+
val navController = findNavController()
121+
navController.setGraph(R.navigation.route_nav_graph)
122+
val action = RouteNavGraphDirections.actionGlobalRouteFragment().setEnd(placeSearchViewModel.panelInfo)
123+
navController.navigate(action)
118124
}
119125
}
120126

โ€Žpresentation/src/main/java/com/stop/ui/placesearch/PlaceSearchFragment.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ import androidx.fragment.app.Fragment
1515
import androidx.fragment.app.activityViewModels
1616
import androidx.lifecycle.flowWithLifecycle
1717
import androidx.lifecycle.lifecycleScope
18-
import androidx.navigation.findNavController
18+
import androidx.navigation.fragment.findNavController
1919
import com.stop.R
20-
import com.stop.bindingadapter.textChangesToFlow
2120
import com.stop.databinding.FragmentPlaceSearchBinding
2221
import com.stop.domain.model.nearplace.PlaceUseCaseItem
2322
import dagger.hilt.android.AndroidEntryPoint
@@ -27,7 +26,6 @@ import kotlinx.coroutines.flow.launchIn
2726
import kotlinx.coroutines.flow.onEach
2827
import kotlinx.coroutines.launch
2928

30-
3129
@AndroidEntryPoint
3230
class PlaceSearchFragment : Fragment() {
3331

@@ -57,7 +55,6 @@ class PlaceSearchFragment : Fragment() {
5755
}
5856
}
5957

60-
@RequiresApi(Build.VERSION_CODES.O)
6158
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
6259
super.onViewCreated(view, savedInstanceState)
6360

@@ -91,19 +88,19 @@ class PlaceSearchFragment : Fragment() {
9188
placeSearchViewModel.setNearPlacesEmpty()
9289
placeSearchViewModel.insertRecentSearchPlace(placeUseCaseItem)
9390

94-
binding.root.findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
95-
91+
findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
9692
}
9793

9894
private fun buttonClick() {
9995
with(binding) {
10096
layoutRecentSearch.textViewCurrentLocation.setOnClickListener {
10197
placeSearchViewModel.setClickCurrentLocation()
102-
binding.root.findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
98+
99+
findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
103100
}
104101

105102
layoutRecentSearch.textViewSelectMap.setOnClickListener {
106-
binding.root.findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
103+
findNavController().navigate(R.id.action_placeSearchFragment_to_mapFragment)
107104
}
108105
}
109106
}

โ€Žpresentation/src/main/java/com/stop/ui/route/ClickRouteViewModel.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
ย (0)