@@ -9,16 +9,17 @@ import android.media.ToneGenerator
9
9
import android.media.ToneGenerator.*
10
10
import android.os.Bundle
11
11
import android.os.SystemClock
12
+ import android.view.LayoutInflater
12
13
import android.view.View
14
+ import android.view.ViewGroup
13
15
import androidx.fragment.app.Fragment
14
16
import androidx.lifecycle.ViewModelProvider
15
17
import com.davidmiguel.numberkeyboard.NumberKeyboard
16
18
import com.davidmiguel.numberkeyboard.NumberKeyboardListener
17
19
import com.telnyx.webrtc.sdk.R
20
+ import com.telnyx.webrtc.sdk.databinding.FragmentCallInstanceBinding
18
21
import com.telnyx.webrtc.sdk.model.SocketMethod
19
22
import com.telnyx.webrtc.sdk.verto.receive.*
20
- import kotlinx.android.synthetic.main.activity_main.*
21
- import kotlinx.android.synthetic.main.fragment_call_instance.*
22
23
import java.util.*
23
24
24
25
@@ -32,11 +33,24 @@ lateinit var mainViewModel: MainViewModel
32
33
* Use the [CallInstanceFragment.newInstance] factory method to
33
34
* create an instance of this fragment.
34
35
*/
35
- class CallInstanceFragment : Fragment (R .layout.fragment_call_instance ), NumberKeyboardListener {
36
+ class CallInstanceFragment : Fragment (), NumberKeyboardListener {
36
37
private var callId: UUID ? = null
38
+ private var _binding : FragmentCallInstanceBinding ? = null
39
+
40
+ private val binding get() = _binding !!
37
41
38
42
private val toneGenerator = ToneGenerator (AudioManager .STREAM_NOTIFICATION , 100 )
39
43
44
+ override fun onCreateView (
45
+ inflater : LayoutInflater ,
46
+ container : ViewGroup ? ,
47
+ savedInstanceState : Bundle ?
48
+ ): View {
49
+ _binding = FragmentCallInstanceBinding .inflate(inflater, container, false )
50
+ val view = binding.root
51
+ return view
52
+ }
53
+
40
54
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
41
55
super .onViewCreated(view, savedInstanceState)
42
56
arguments?.let {
@@ -53,63 +67,75 @@ class CallInstanceFragment : Fragment(R.layout.fragment_call_instance), NumberKe
53
67
private fun setUpOngoingCallButtons () {
54
68
55
69
// Handle call option observers
56
- mainViewModel.getCallState()?.observe(this .viewLifecycleOwner, { value ->
57
- requireActivity().call_state_text_value.text = value.name
58
- })
59
- mainViewModel.getIsMuteStatus()?.observe(this .viewLifecycleOwner, { value ->
60
- if (! value) {
61
- mute_button_id.setImageResource(R .drawable.ic_mic_off)
62
- } else {
63
- mute_button_id.setImageResource(R .drawable.ic_mic)
70
+ mainViewModel.getCallState()?.observe(this .viewLifecycleOwner) { value ->
71
+ (requireActivity() as MainActivity ).callStateTextValue?.text = value.name
72
+ }
73
+ mainViewModel.getIsMuteStatus()?.observe(this .viewLifecycleOwner) { value ->
74
+ binding.apply {
75
+ if (! value) {
76
+ muteButtonId.setImageResource(R .drawable.ic_mic_off)
77
+ } else {
78
+ muteButtonId.setImageResource(R .drawable.ic_mic)
79
+ }
64
80
}
65
- })
81
+ }
66
82
67
- mainViewModel.getIsOnHoldStatus()?.observe(this .viewLifecycleOwner, { value ->
68
- if (! value) {
69
- hold_button_id.setImageResource(R .drawable.ic_hold)
70
- } else {
71
- hold_button_id.setImageResource(R .drawable.ic_play)
83
+ mainViewModel.getIsOnHoldStatus()?.observe(this .viewLifecycleOwner) { value ->
84
+ binding.apply {
85
+ if (! value) {
86
+ holdButtonId.setImageResource(R .drawable.ic_hold)
87
+ } else {
88
+ holdButtonId.setImageResource(R .drawable.ic_play)
89
+ }
72
90
}
73
- })
91
+ }
74
92
75
- mainViewModel.getIsOnLoudSpeakerStatus()?.observe(this .viewLifecycleOwner, { value ->
76
- if (! value) {
77
- loud_speaker_button_id.setImageResource(R .drawable.ic_loud_speaker_off)
78
- } else {
79
- loud_speaker_button_id.setImageResource(R .drawable.ic_loud_speaker)
93
+ mainViewModel.getIsOnLoudSpeakerStatus()?.observe(this .viewLifecycleOwner) { value ->
94
+ binding.apply {
95
+ if (! value) {
96
+ loudSpeakerButtonId.setImageResource(R .drawable.ic_loud_speaker_off)
97
+ } else {
98
+ loudSpeakerButtonId.setImageResource(R .drawable.ic_loud_speaker)
99
+ }
80
100
}
81
- })
101
+ }
82
102
83
103
onTimerStart()
84
104
85
- end_call_id.setOnClickListener {
86
- onEndCall()
87
- }
88
- mute_button_id.setOnClickListener {
89
- mainViewModel.onMuteUnmutePressed()
90
- }
91
- hold_button_id.setOnClickListener {
92
- mainViewModel.onHoldUnholdPressed(callId!! )
93
- }
94
- loud_speaker_button_id.setOnClickListener {
95
- mainViewModel.onLoudSpeakerPressed()
96
- }
97
- dial_pad_button_id.setOnClickListener {
98
- dialpad_section_id.visibility = View .VISIBLE
99
- val numberKeyboard = view?.findViewById<NumberKeyboard >(R .id.dialpad_id)
100
- numberKeyboard?.setListener(this )
105
+ binding.apply {
106
+ endCallId.setOnClickListener {
107
+ onEndCall()
108
+ }
109
+ muteButtonId.setOnClickListener {
110
+ mainViewModel.onMuteUnmutePressed()
111
+ }
112
+ holdButtonId.setOnClickListener {
113
+ mainViewModel.onHoldUnholdPressed(callId!! )
114
+ }
115
+ loudSpeakerButtonId.setOnClickListener {
116
+ mainViewModel.onLoudSpeakerPressed()
117
+ }
118
+ dialPadButtonId.setOnClickListener {
119
+ dialpadSectionId.root.visibility = View .VISIBLE
120
+ val numberKeyboard = view?.findViewById<NumberKeyboard >(R .id.dialpad_id)
121
+ numberKeyboard?.setListener(this @CallInstanceFragment)
122
+ }
101
123
}
124
+
125
+
102
126
}
103
127
104
128
private fun onEndCall () {
105
129
mainViewModel.endCall(callId!! )
106
- call_timer_id .stop()
130
+ binding.callTimerId .stop()
107
131
parentFragmentManager.beginTransaction().remove(this @CallInstanceFragment).commit();
108
132
}
109
133
110
134
private fun onTimerStart () {
111
- call_timer_id.base = SystemClock .elapsedRealtime()
112
- call_timer_id.start()
135
+ binding.apply {
136
+ callTimerId.base = SystemClock .elapsedRealtime()
137
+ callTimerId.start()
138
+ }
113
139
}
114
140
115
141
private fun observeSocketResponses () {
@@ -204,6 +230,6 @@ class CallInstanceFragment : Fragment(R.layout.fragment_call_instance), NumberKe
204
230
}
205
231
206
232
override fun onRightAuxButtonClicked () {
207
- dialpad_section_id .visibility = View .INVISIBLE
233
+ binding.dialpadSectionId.root .visibility = View .INVISIBLE
208
234
}
209
235
}
0 commit comments