@@ -34,16 +34,16 @@ class MainCalendarFragment : BaseFragment<FragmentMainCalendarBinding>(R.layout.
34
34
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
35
35
super .onViewCreated(view, savedInstanceState)
36
36
37
- mainCalendarViewModel.fetchCalendarList()
38
37
setupCalendarView()
39
38
setupDataBinding()
39
+ collectScheduleList()
40
+ collectCalendarSet()
41
+ collectCalendarList()
40
42
setupToolbar()
41
43
setupMonthCalendar()
42
44
collectFabClickEvent()
43
- collectCalendarList()
44
- collectCheckPointList()
45
- collectScheduleList()
46
45
collectDaySecondClickListener()
46
+ mainCalendarViewModel.fetchCalendarList()
47
47
collectCalendarDesignObject()
48
48
}
49
49
@@ -57,72 +57,6 @@ class MainCalendarFragment : BaseFragment<FragmentMainCalendarBinding>(R.layout.
57
57
binding.mainCalendarViewModel = mainCalendarViewModel
58
58
}
59
59
60
- private fun setupToolbar () {
61
- binding.toolbarMainCalendar.setupWithNavController(navController, binding.layoutDrawer)
62
- setupOnMenuItemClickListener()
63
- setupAddDrawerListener()
64
- }
65
-
66
- private fun setupAddDrawerListener () = with (binding) {
67
- val drawerHeaderBinding = DrawerHeaderBinding .bind(navView.getHeaderView(FIRST_HEADER ))
68
- layoutDrawer.addDrawerListener(object : DrawerLayout .DrawerListener {
69
- override fun onDrawerSlide (drawerView : View , slideOffset : Float ) {
70
- val menuItemOrder = this @MainCalendarFragment.mainCalendarViewModel.menuItemOrder.value
71
- if (binding.navView.menu.isEmpty()) return
72
- binding.navView.menu[menuItemOrder].isChecked = true
73
- drawerHeaderBinding.tvDrawerHeaderTitle.text = binding.navView.menu[menuItemOrder].title
74
- }
75
-
76
- override fun onDrawerOpened (drawerView : View ) {}
77
- override fun onDrawerClosed (drawerView : View ) {}
78
- override fun onDrawerStateChanged (newState : Int ) {}
79
- })
80
- }
81
-
82
- private fun setupOnMenuItemClickListener () {
83
- binding.toolbarMainCalendar.setOnMenuItemClickListener { item ->
84
- when (item.itemId) {
85
- R .id.menu_main_calendar_calendar -> {
86
- isMonthCalendar = ! isMonthCalendar
87
- setupCalendarView()
88
- }
89
- R .id.menu_main_calendar_search -> navigateToSearchSchedule()
90
- else -> return @setOnMenuItemClickListener false
91
- }
92
- true
93
- }
94
- }
95
-
96
- private fun navigateToSearchSchedule () {
97
- val action = MainCalendarFragmentDirections .toSearchSchedule()
98
- navController.navigate(action)
99
- }
100
-
101
- private fun setupMonthCalendar () {
102
- // TODO: 2021-11-16 이벤트를 발행하는 부분을 xml로 이동시킬 수 있으면 좋을듯
103
- binding.calendarMonth.setOnDaySecondClickListener { date, _ ->
104
- mainCalendarViewModel.emitDaySecondClickEvent(date)
105
- }
106
- }
107
-
108
- private fun collectFabClickEvent () {
109
- sharedCollect(mainCalendarViewModel.fabClickEvent) { calendarId ->
110
- val action = MainCalendarFragmentDirections .toSaveSchedule(calendarId, 0 )
111
- navController.navigate(action)
112
- }
113
- }
114
-
115
- private fun collectCalendarList () {
116
- stateCollect(mainCalendarViewModel.calendarList) { calendarList ->
117
- setupNavigationView(calendarList)
118
-
119
- val menuItemOrder = mainCalendarViewModel.menuItemOrder.value
120
- if (calendarList.isEmpty()) return @stateCollect
121
- val calendar = calendarList[menuItemOrder]
122
- mainCalendarViewModel.setCalendar(calendar)
123
- }
124
- }
125
-
126
60
private fun setupNavigationView (calendarList : List <Calendar >) {
127
61
val menu = binding.navView.menu
128
62
menu.clear()
@@ -133,7 +67,6 @@ class MainCalendarFragment : BaseFragment<FragmentMainCalendarBinding>(R.layout.
133
67
.setCheckable(true )
134
68
.setOnMenuItemClickListener {
135
69
mainCalendarViewModel.setMenuItemOrder(index)
136
- // TODO: 2021-11-11 item에 맞는 캘린더 뷰로 변경
137
70
mainCalendarViewModel.setCalendar(calendar)
138
71
binding.layoutDrawer.closeDrawer(GravityCompat .START )
139
72
true
@@ -158,6 +91,7 @@ class MainCalendarFragment : BaseFragment<FragmentMainCalendarBinding>(R.layout.
158
91
manageMenu.add(getString(R .string.drawer_theme_setting))
159
92
.setIcon(R .drawable.ic_palette)
160
93
.setOnMenuItemClickListener {
94
+ // TODO: 2021-11-11 테마 설정 화면으로 이동
161
95
val action = MainCalendarFragmentDirections .toThemeFragment()
162
96
navController.navigate(action)
163
97
true
@@ -176,19 +110,85 @@ class MainCalendarFragment : BaseFragment<FragmentMainCalendarBinding>(R.layout.
176
110
binding.layoutDrawer.closeDrawer(GravityCompat .START )
177
111
}
178
112
179
- private fun collectCheckPointList () {
180
- stateCollect(mainCalendarViewModel.checkPointList) { checkPointList ->
181
- // TODO: 2021-11-10 CheckPoint 날짜 읽어서 뷰 나누기
182
- }
183
- }
184
-
185
113
private fun collectScheduleList () {
186
114
stateCollect(mainCalendarViewModel.scheduleList) { scheduleList ->
187
115
binding.calendarMonth.setSchedules(scheduleList)
188
116
binding.calendarYear.setSchedules(scheduleList)
189
117
}
190
118
}
191
119
120
+ private fun collectCalendarSet () {
121
+ stateCollect(mainCalendarViewModel.calendarSetList) { calendarSetList ->
122
+ binding.calendarMonth.setCalendarSetList(calendarSetList)
123
+ }
124
+ }
125
+
126
+ private fun collectCalendarList () {
127
+ stateCollect(mainCalendarViewModel.calendarList) { calendarList ->
128
+ setupNavigationView(calendarList)
129
+
130
+ val menuItemOrder = mainCalendarViewModel.menuItemOrder.value
131
+ if (calendarList.isEmpty()) return @stateCollect
132
+ val calendar = calendarList[menuItemOrder]
133
+ mainCalendarViewModel.setCalendar(calendar)
134
+ }
135
+ }
136
+
137
+ private fun setupToolbar () {
138
+ binding.toolbarMainCalendar.setupWithNavController(navController, binding.layoutDrawer)
139
+ setupOnMenuItemClickListener()
140
+ setupAddDrawerListener()
141
+ }
142
+
143
+ private fun setupAddDrawerListener () = with (binding) {
144
+ val drawerHeaderBinding = DrawerHeaderBinding .bind(navView.getHeaderView(FIRST_HEADER ))
145
+ layoutDrawer.addDrawerListener(object : DrawerLayout .DrawerListener {
146
+ override fun onDrawerSlide (drawerView : View , slideOffset : Float ) {
147
+ val menuItemOrder = this @MainCalendarFragment.mainCalendarViewModel.menuItemOrder.value
148
+ if (binding.navView.menu.isEmpty()) return
149
+ binding.navView.menu[menuItemOrder].isChecked = true
150
+ drawerHeaderBinding.tvDrawerHeaderTitle.text = binding.navView.menu[menuItemOrder].title
151
+ }
152
+
153
+ override fun onDrawerOpened (drawerView : View ) {}
154
+ override fun onDrawerClosed (drawerView : View ) {}
155
+ override fun onDrawerStateChanged (newState : Int ) {}
156
+ })
157
+ }
158
+
159
+ private fun setupOnMenuItemClickListener () {
160
+ binding.toolbarMainCalendar.setOnMenuItemClickListener { item ->
161
+ when (item.itemId) {
162
+ R .id.menu_main_calendar_calendar -> {
163
+ isMonthCalendar = ! isMonthCalendar
164
+ setupCalendarView()
165
+ }
166
+ R .id.menu_main_calendar_search -> navigateToSearchSchedule()
167
+ else -> return @setOnMenuItemClickListener false
168
+ }
169
+ true
170
+ }
171
+ }
172
+
173
+ private fun navigateToSearchSchedule () {
174
+ val action = MainCalendarFragmentDirections .toSearchSchedule()
175
+ navController.navigate(action)
176
+ }
177
+
178
+ private fun setupMonthCalendar () {
179
+ // TODO: 2021-11-16 이벤트를 발행하는 부분을 xml로 이동시킬 수 있으면 좋을듯
180
+ binding.calendarMonth.setOnDaySecondClickListener { date, _ ->
181
+ mainCalendarViewModel.emitDaySecondClickEvent(date)
182
+ }
183
+ }
184
+
185
+ private fun collectFabClickEvent () {
186
+ sharedCollect(mainCalendarViewModel.fabClickEvent) { calendarId ->
187
+ val action = MainCalendarFragmentDirections .toSaveSchedule(calendarId, 0 )
188
+ navController.navigate(action)
189
+ }
190
+ }
191
+
192
192
private fun collectDaySecondClickListener () {
193
193
// TODO: 2021-11-16 현재 flow 확장함수가 StateFlow와 SharedFlow만 받기 때문에 라이프사이클 처리를 명시해주고 있는데 개선이 필요해보임.
194
194
viewLifecycleOwner.lifecycleScope.launch {
0 commit comments