Skip to content

Commit dac597f

Browse files
committed
feat : 알람 설정 화면 완성
1 parent 1e6f9ca commit dac597f

File tree

4 files changed

+152
-10
lines changed

4 files changed

+152
-10
lines changed

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

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,19 @@ import android.view.LayoutInflater
77
import android.view.View
88
import android.view.ViewGroup
99
import androidx.fragment.app.Fragment
10+
import androidx.fragment.app.viewModels
1011
import com.stop.R
1112
import com.stop.databinding.FragmentAlarmSettingBinding
13+
import dagger.hilt.android.AndroidEntryPoint
1214

15+
@AndroidEntryPoint
1316
class AlarmSettingFragment : Fragment() {
17+
1418
private var _binding: FragmentAlarmSettingBinding? = null
1519
private val binding get() = _binding!!
1620

21+
private val alarmSettingViewModel by viewModels<AlarmSettingViewModel>()
22+
1723
override fun onCreateView(
1824
inflater: LayoutInflater, container: ViewGroup?,
1925
savedInstanceState: Bundle?
@@ -26,9 +32,26 @@ class AlarmSettingFragment : Fragment() {
2632
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2733
super.onViewCreated(view, savedInstanceState)
2834

35+
initBinding()
36+
initView()
2937
buttonClick()
30-
binding.numberPickerAlarmTime.minValue = 0
31-
binding.numberPickerAlarmTime.maxValue = 60
38+
}
39+
40+
private fun initBinding(){
41+
binding.apply {
42+
lifecycleOwner = viewLifecycleOwner
43+
viewModel = alarmSettingViewModel
44+
}
45+
}
46+
47+
private fun initView() {
48+
with(binding){
49+
textViewLastTime.text = getString(R.string.last_transport_arrival_time, 23, 30)
50+
textViewWalk.text = getString(R.string.last_transport_walking_time, 10)
51+
52+
numberPickerAlarmTime.minValue = 0
53+
numberPickerAlarmTime.maxValue = 60
54+
}
3255
}
3356

3457
private fun buttonClick() {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.stop.ui.alarmsetting
2+
3+
import androidx.lifecycle.MutableLiveData
4+
import androidx.lifecycle.ViewModel
5+
import dagger.hilt.android.lifecycle.HiltViewModel
6+
import javax.inject.Inject
7+
8+
@HiltViewModel
9+
class AlarmSettingViewModel @Inject constructor() : ViewModel() {
10+
11+
val alarmTime = MutableLiveData(0)
12+
13+
}

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

Lines changed: 105 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
xmlns:app="http://schemas.android.com/apk/res-auto"
44
xmlns:tools="http://schemas.android.com/tools">
55

6+
<data>
7+
8+
<variable
9+
name="viewModel"
10+
type="com.stop.ui.alarmsetting.AlarmSettingViewModel" />
11+
12+
</data>
13+
614
<androidx.constraintlayout.widget.ConstraintLayout
715
android:layout_width="match_parent"
816
android:layout_height="match_parent"
@@ -27,12 +35,12 @@
2735
android:layout_width="0dp"
2836
android:layout_height="wrap_content"
2937
android:layout_marginTop="16dp"
30-
android:text="막차가 23시30분에 도착할 예정이에요!!"
3138
android:textColor="@color/black"
3239
android:textSize="18sp"
3340
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
3441
app:layout_constraintStart_toStartOf="@id/guide_line_start"
35-
app:layout_constraintTop_toTopOf="parent" />
42+
app:layout_constraintTop_toTopOf="parent"
43+
tools:text="막차가 23시30분에 도착할 예정이에요!!" />
3644

3745
<androidx.cardview.widget.CardView
3846
android:id="@+id/card_view_route"
@@ -111,34 +119,123 @@
111119
android:id="@+id/text_view_walk"
112120
android:layout_width="0dp"
113121
android:layout_height="wrap_content"
114-
android:text="막차까지 도보 시간이 10분 소요될것으로 예상되요!!"
115122
android:textColor="@color/black"
116123
android:textSize="18sp"
117124
app:layout_constraintBottom_toBottomOf="@id/image_view_walk"
118125
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
119126
app:layout_constraintStart_toEndOf="@id/image_view_walk"
120-
app:layout_constraintTop_toTopOf="@id/image_view_walk" />
127+
app:layout_constraintTop_toTopOf="@id/image_view_walk"
128+
tools:text="막차까지 도보 시간이 10분 소요될것으로 예상돼요!!" />
121129

122130
<NumberPicker
123131
android:id="@+id/number_picker_alarm_time"
124132
android:layout_width="wrap_content"
125133
android:layout_height="wrap_content"
126134
android:layout_marginTop="24dp"
135+
android:value="@={viewModel.alarmTime}"
127136
app:layout_constraintEnd_toEndOf="@id/guide_line_end"
128137
app:layout_constraintStart_toStartOf="@id/guide_line_start"
129138
app:layout_constraintTop_toBottomOf="@id/image_view_walk" />
130139

131140
<TextView
141+
android:id="@+id/text_view_alarm_time"
132142
android:layout_width="0dp"
133143
android:layout_height="wrap_content"
144+
android:layout_marginEnd="12dp"
145+
android:text="@{@string/alarm_time_text(viewModel.alarmTime)}"
146+
android:textColor="@color/black"
134147
android:textSize="16sp"
148+
app:layout_constraintBottom_toBottomOf="@id/number_picker_alarm_time"
149+
app:layout_constraintEnd_toStartOf="@id/number_picker_alarm_time"
150+
app:layout_constraintStart_toStartOf="@id/guide_line_start"
151+
app:layout_constraintTop_toTopOf="@id/number_picker_alarm_time"
152+
tools:text="알람이 10분전에 울리도록 설정하시겠습니까?" />
153+
154+
<TextView
155+
android:id="@+id/text_view_alarm_method"
156+
android:layout_width="wrap_content"
157+
android:layout_height="wrap_content"
158+
android:layout_marginTop="8dp"
159+
android:layout_marginEnd="12dp"
160+
android:text="@string/alarm_method_text"
135161
android:textColor="@color/black"
162+
android:textSize="16sp"
163+
app:layout_constraintBottom_toBottomOf="@id/toggle_group_alarm"
164+
app:layout_constraintEnd_toStartOf="@id/toggle_group_alarm"
165+
app:layout_constraintHorizontal_chainStyle="packed"
166+
app:layout_constraintStart_toStartOf="@id/guide_line_start"
167+
app:layout_constraintTop_toTopOf="@id/toggle_group_alarm" />
168+
169+
<com.google.android.material.button.MaterialButtonToggleGroup
170+
android:id="@+id/toggle_group_alarm"
171+
android:layout_width="wrap_content"
172+
android:layout_height="wrap_content"
173+
android:layout_marginStart="12dp"
174+
android:layout_marginBottom="9dp"
175+
app:layout_constraintBottom_toTopOf="@id/toggle_group_mission"
176+
app:layout_constraintEnd_toEndOf="parent"
177+
app:layout_constraintStart_toEndOf="@id/text_view_alarm_method"
178+
app:layout_constraintTop_toBottomOf="@id/number_picker_alarm_time"
179+
app:layout_constraintVertical_chainStyle="packed"
180+
app:singleSelection="true">
181+
182+
<com.google.android.material.button.MaterialButton
183+
android:id="@+id/button_sound"
184+
style="?attr/materialButtonOutlinedStyle"
185+
android:layout_width="wrap_content"
186+
android:layout_height="wrap_content"
187+
android:text="@string/sound_text" />
188+
189+
<com.google.android.material.button.MaterialButton
190+
android:id="@+id/button_wave"
191+
style="?attr/materialButtonOutlinedStyle"
192+
android:layout_width="wrap_content"
193+
android:layout_height="wrap_content"
194+
android:text="@string/wave_text" />
195+
196+
</com.google.android.material.button.MaterialButtonToggleGroup>
197+
198+
<TextView
199+
android:id="@+id/text_view_mission_toggle"
200+
android:layout_width="wrap_content"
201+
android:layout_height="wrap_content"
136202
android:layout_marginEnd="12dp"
203+
android:text="@string/mission_toggle_text"
204+
android:textColor="@color/black"
205+
android:textSize="16sp"
206+
app:layout_constraintBottom_toBottomOf="@id/toggle_group_mission"
207+
app:layout_constraintEnd_toStartOf="@id/toggle_group_mission"
208+
app:layout_constraintHorizontal_chainStyle="packed"
137209
app:layout_constraintStart_toStartOf="@id/guide_line_start"
138-
app:layout_constraintEnd_toStartOf="@id/number_picker_alarm_time"
139-
app:layout_constraintTop_toTopOf="@id/number_picker_alarm_time"
140-
tools:text="알람이 10분전에 울리도록 설정하시겠습니까?"
141-
app:layout_constraintBottom_toBottomOf="@id/number_picker_alarm_time"/>
210+
app:layout_constraintTop_toTopOf="@id/toggle_group_mission" />
211+
212+
<com.google.android.material.button.MaterialButtonToggleGroup
213+
android:id="@+id/toggle_group_mission"
214+
android:layout_width="wrap_content"
215+
android:layout_height="wrap_content"
216+
android:layout_marginStart="12dp"
217+
android:layout_marginTop="9dp"
218+
app:layout_constraintBottom_toBottomOf="parent"
219+
app:layout_constraintEnd_toEndOf="parent"
220+
app:layout_constraintStart_toEndOf="@id/text_view_mission_toggle"
221+
app:layout_constraintTop_toBottomOf="@id/toggle_group_alarm"
222+
app:singleSelection="true">
223+
224+
<com.google.android.material.button.MaterialButton
225+
android:id="@+id/button_mission_on"
226+
style="?attr/materialButtonOutlinedStyle"
227+
android:layout_width="wrap_content"
228+
android:layout_height="wrap_content"
229+
android:text="@string/on_text" />
230+
231+
<com.google.android.material.button.MaterialButton
232+
android:id="@+id/button_mission_off"
233+
style="?attr/materialButtonOutlinedStyle"
234+
android:layout_width="wrap_content"
235+
android:layout_height="wrap_content"
236+
android:text="@string/off_text" />
237+
238+
</com.google.android.material.button.MaterialButtonToggleGroup>
142239

143240
</androidx.constraintlayout.widget.ConstraintLayout>
144241

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,13 @@
99
<string name="distance_km">%1$skm</string>
1010
<string name="location_address_search_text">장소, 주소 검색</string>
1111
<string name="route_text">경로</string>
12+
<string name="alarm_method_text">알람 방식</string>
13+
<string name="wave_text">진동</string>
14+
<string name="sound_text">소리</string>
15+
<string name="mission_toggle_text">미션 여부</string>
16+
<string name="on_text">ON</string>
17+
<string name="off_text">OFF</string>
18+
<string name="last_transport_arrival_time">막차가 %1$d시 %2$d분에 도착할 예정이에요!!</string>
19+
<string name="last_transport_walking_time">막차까지 도보 시간이 %1$d분 소요될것으로 예상돼요!!</string>
20+
<string name="alarm_time_text">알람이 %1$d분 전에 울리도록 설정하시겠습니까?</string>
1221
</resources>

0 commit comments

Comments
 (0)