Use horizontal scroll view for call control buttons

This commit is contained in:
Juha Heinanen
2021-07-09 19:01:21 +03:00
parent d82c9e70d5
commit 9f02bc791c
2 changed files with 76 additions and 84 deletions
@@ -47,6 +47,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var hangupButton: ImageButton private lateinit var hangupButton: ImageButton
private lateinit var answerButton: ImageButton private lateinit var answerButton: ImageButton
private lateinit var rejectButton: ImageButton private lateinit var rejectButton: ImageButton
private lateinit var callControl: HorizontalScrollView
private lateinit var holdButton: ImageButton private lateinit var holdButton: ImageButton
private lateinit var micButton: ImageButton private lateinit var micButton: ImageButton
private lateinit var transferButton: ImageButton private lateinit var transferButton: ImageButton
@@ -124,6 +125,7 @@ class MainActivity : AppCompatActivity() {
hangupButton = binding.hangupButton hangupButton = binding.hangupButton
answerButton = binding.answerButton answerButton = binding.answerButton
rejectButton = binding.rejectButton rejectButton = binding.rejectButton
callControl = binding.callControl
holdButton = binding.holdButton holdButton = binding.holdButton
micButton = binding.micButton micButton = binding.micButton
transferButton = binding.transferButton transferButton = binding.transferButton
@@ -1604,6 +1606,7 @@ class MainActivity : AppCompatActivity() {
private fun showCall(ua: UserAgent) { private fun showCall(ua: UserAgent) {
if (Call.uaCalls(ua, "").size == 0) { if (Call.uaCalls(ua, "").size == 0) {
swipeRefresh.isEnabled = true
callTitle.text = getString(R.string.outgoing_call_to_dots) callTitle.text = getString(R.string.outgoing_call_to_dots)
if (ua.account.resumeUri != "") if (ua.account.resumeUri != "")
callUri.setText(ua.account.resumeUri) callUri.setText(ua.account.resumeUri)
@@ -1621,14 +1624,11 @@ class MainActivity : AppCompatActivity() {
hangupButton.visibility = View.INVISIBLE hangupButton.visibility = View.INVISIBLE
answerButton.visibility = View.INVISIBLE answerButton.visibility = View.INVISIBLE
rejectButton.visibility = View.INVISIBLE rejectButton.visibility = View.INVISIBLE
holdButton.visibility = View.INVISIBLE callControl.visibility = View.INVISIBLE
micButton.visibility = View.INVISIBLE
transferButton.visibility = View.INVISIBLE
dtmf.visibility = View.INVISIBLE
dialpadButton.isEnabled = true dialpadButton.isEnabled = true
infoButton.visibility = View.INVISIBLE
volumeControlStream = AudioManager.STREAM_VOICE_CALL volumeControlStream = AudioManager.STREAM_VOICE_CALL
} else { } else {
swipeRefresh.isEnabled = false
val call = Call.uaCalls(ua, "")[0] val call = Call.uaCalls(ua, "")[0]
callUri.isFocusable = false callUri.isFocusable = false
imm.hideSoftInputFromWindow(callUri.windowToken, 0) imm.hideSoftInputFromWindow(callUri.windowToken, 0)
@@ -1643,12 +1643,8 @@ class MainActivity : AppCompatActivity() {
hangupButton.isEnabled = true hangupButton.isEnabled = true
answerButton.visibility = View.INVISIBLE answerButton.visibility = View.INVISIBLE
rejectButton.visibility = View.INVISIBLE rejectButton.visibility = View.INVISIBLE
holdButton.visibility = View.INVISIBLE callControl.visibility = View.INVISIBLE
micButton.visibility = View.INVISIBLE
transferButton.visibility = View.INVISIBLE
dtmf.visibility = View.INVISIBLE
dialpadButton.isEnabled = false dialpadButton.isEnabled = false
infoButton.visibility = View.INVISIBLE
volumeControlStream = AudioManager.STREAM_VOICE_CALL volumeControlStream = AudioManager.STREAM_VOICE_CALL
} }
"incoming" -> { "incoming" -> {
@@ -1663,12 +1659,8 @@ class MainActivity : AppCompatActivity() {
answerButton.isEnabled = true answerButton.isEnabled = true
rejectButton.visibility = View.VISIBLE rejectButton.visibility = View.VISIBLE
rejectButton.isEnabled = true rejectButton.isEnabled = true
holdButton.visibility = View.INVISIBLE callControl.visibility = View.INVISIBLE
micButton.visibility = View.INVISIBLE
transferButton.visibility = View.INVISIBLE
dtmf.visibility = View.INVISIBLE
dialpadButton.isEnabled = false dialpadButton.isEnabled = false
infoButton.visibility = View.INVISIBLE
volumeControlStream = AudioManager.STREAM_RING volumeControlStream = AudioManager.STREAM_RING
} }
"connected" -> { "connected" -> {
@@ -1698,15 +1690,15 @@ class MainActivity : AppCompatActivity() {
hangupButton.isEnabled = true hangupButton.isEnabled = true
answerButton.visibility = View.INVISIBLE answerButton.visibility = View.INVISIBLE
rejectButton.visibility = View.INVISIBLE rejectButton.visibility = View.INVISIBLE
callControl.post(Runnable {
callControl.scrollTo(holdButton.left, holdButton.top)
})
callControl.visibility = View.VISIBLE
if (call.onhold) { if (call.onhold) {
holdButton.setImageResource(R.drawable.play) holdButton.setImageResource(R.drawable.play)
} else { } else {
holdButton.setImageResource(R.drawable.pause) holdButton.setImageResource(R.drawable.pause)
} }
holdButton.visibility = View.VISIBLE
micButton.visibility = View.VISIBLE
transferButton.visibility = View.VISIBLE
dtmf.visibility = View.VISIBLE
dtmf.isEnabled = true dtmf.isEnabled = true
dtmf.requestFocus() dtmf.requestFocus()
if (resources.configuration.orientation == ORIENTATION_PORTRAIT) if (resources.configuration.orientation == ORIENTATION_PORTRAIT)
@@ -1718,7 +1710,6 @@ class MainActivity : AppCompatActivity() {
dialpadButton.setImageResource(R.drawable.dialpad_on) dialpadButton.setImageResource(R.drawable.dialpad_on)
dialpadButton.tag = "on" dialpadButton.tag = "on"
dialpadButton.isEnabled = false dialpadButton.isEnabled = false
infoButton.visibility = View.VISIBLE
infoButton.isEnabled = true infoButton.isEnabled = true
volumeControlStream = AudioManager.STREAM_VOICE_CALL volumeControlStream = AudioManager.STREAM_VOICE_CALL
} }
+27 -26
View File
@@ -146,6 +146,18 @@
android:contentDescription="@string/reject" > android:contentDescription="@string/reject" >
</ImageButton> </ImageButton>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="70dp"
android:visibility="invisible"
android:id="@+id/callControl" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageButton <ImageButton
android:id="@+id/holdButton" android:id="@+id/holdButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -153,9 +165,7 @@
android:padding="0dp" android:padding="0dp"
android:src="@drawable/pause" android:src="@drawable/pause"
android:background="@null" android:background="@null"
android:layout_marginStart="70dp"
android:clickable="false" android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/hold" > android:contentDescription="@string/hold" >
</ImageButton> </ImageButton>
@@ -166,9 +176,8 @@
android:padding="0dp" android:padding="0dp"
android:src="@drawable/mic" android:src="@drawable/mic"
android:background="@null" android:background="@null"
android:layout_marginStart="130dp" android:layout_marginStart="60dp"
android:clickable="false" android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/mic" > android:contentDescription="@string/mic" >
</ImageButton> </ImageButton>
@@ -179,46 +188,38 @@
android:padding="0dp" android:padding="0dp"
android:src="@drawable/call_transfer" android:src="@drawable/call_transfer"
android:background="@null" android:background="@null"
android:layout_marginStart="195dp" android:layout_marginStart="120dp"
android:clickable="false" android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_transfer" > android:contentDescription="@string/call_transfer" >
</ImageButton> </ImageButton>
<EditText
android:id="@+id/dtmf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="180dp"
android:hint="@string/dtmf"
android:importantForAutofill="no"
android:inputType="phone"
android:textSize="20sp" >
</EditText>
<ImageButton <ImageButton
android:id="@+id/info" android:id="@+id/info"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="0dp" android:padding="0dp"
android:layout_alignParentEnd="true" android:layout_marginStart="250dp"
android:src="@drawable/info" android:src="@drawable/info"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:background="@null" android:background="@null"
android:clickable="false" android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_info" > android:contentDescription="@string/call_info" >
</ImageButton> </ImageButton>
</RelativeLayout> </RelativeLayout>
<RelativeLayout </HorizontalScrollView>
android:id="@+id/dtmfRow"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/callRow" >
<EditText
android:id="@+id/dtmf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:hint="@string/dtmf"
android:importantForAutofill="no"
android:inputType="phone"
android:textSize="20sp"
android:visibility="invisible" >
</EditText>
</RelativeLayout> </RelativeLayout>