Added possibility to re-register selected account by swipe gesture

This commit is contained in:
Juha Heinanen
2020-08-30 10:27:25 +03:00
parent 9b58b49662
commit ae5fd15d32
3 changed files with 252 additions and 230 deletions

View File

@ -21,7 +21,7 @@ import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import java.io.File
class MainActivity : AppCompatActivity() {
@ -54,6 +54,7 @@ class MainActivity : AppCompatActivity() {
internal lateinit var quitTimer: CountDownTimer
internal lateinit var stopState: String
internal lateinit var speakerIcon: MenuItem
internal lateinit var swipeRefresh: SwipeRefreshLayout
internal var restart = false
internal var atStartup = false
@ -91,6 +92,7 @@ class MainActivity : AppCompatActivity() {
messagesButton = findViewById(R.id.messagesButton) as ImageButton
callsButton = findViewById(R.id.callsButton) as ImageButton
dialpadButton = findViewById(R.id.dialpadButton) as ImageButton
swipeRefresh = findViewById(R.id.swipeRefresh) as SwipeRefreshLayout
imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
@ -205,7 +207,7 @@ class MainActivity : AppCompatActivity() {
"green" -> {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.info)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.call_is_secure))
setPositiveButton(getString(R.string.unverify)) { dialog, _ ->
@ -381,7 +383,7 @@ class MainActivity : AppCompatActivity() {
}
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.voicemail_messages)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(acc.vmMessages(this@MainActivity))
setPositiveButton(getString(R.string.listen), dialogClickListener)
@ -438,6 +440,17 @@ class MainActivity : AppCompatActivity() {
}
}
swipeRefresh.setOnRefreshListener {
if (UserAgent.uas().size > 0) {
if (aorSpinner.selectedItemPosition == -1)
aorSpinner.setSelection(0)
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
if (ua.account.regint > 0)
Api.ua_register(ua.uap)
}
swipeRefresh.isRefreshing = false
}
baresipService = Intent(this@MainActivity, BaresipService::class.java)
atStartup = intent.hasExtra("onStartup")
@ -602,7 +615,7 @@ class MainActivity : AppCompatActivity() {
if (params[0] != "") {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.notice)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.start_failed))
setNeutralButton(getString(R.string.ok)) { dialog, _ ->
@ -695,7 +708,7 @@ class MainActivity : AppCompatActivity() {
}
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.verify)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(String.format(getString(R.string.verify_sas),
ev[1], ev[2]))
@ -757,7 +770,7 @@ class MainActivity : AppCompatActivity() {
titleView.text = getString(R.string.transfer_request)
val target = Utils.friendlyUri(ContactsActivity.contactName(ev[1]),
Utils.aorDomain(aor))
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(String.format(getString(R.string.transfer_request_query),
target))
@ -912,7 +925,7 @@ class MainActivity : AppCompatActivity() {
R.id.backup -> {
if (Utils.requestPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE,
BACKUP_PERMISSION_REQUEST_CODE))
askPassword(getString(R.string.encrypt_password))
askPassword(getString(R.string.encrypt_password))
}
R.id.restore -> {
@ -962,14 +975,14 @@ class MainActivity : AppCompatActivity() {
CONTACTS_CODE -> {
callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item,
Contact.contacts().map{Contact -> Contact.name}))
Contact.contacts().map { Contact -> Contact.name }))
}
CONFIG_CODE -> {
if ((data != null) && data.hasExtra("restart")) {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.restart_request)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.config_restart))
setPositiveButton(getText(R.string.restart)) { dialog, _ ->
@ -994,7 +1007,8 @@ class MainActivity : AppCompatActivity() {
updateIcons(Account.ofAor(activityAor)!!)
}
ABOUT_CODE -> { }
ABOUT_CODE -> {
}
}
}
@ -1052,7 +1066,7 @@ class MainActivity : AppCompatActivity() {
transferUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item,
Contact.contacts().map { Contact -> Contact.name }))
transferUri.threshold = 2
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setView(layout)
setPositiveButton(R.string.transfer) { dialog, _ ->
dialog.dismiss()
@ -1105,7 +1119,7 @@ class MainActivity : AppCompatActivity() {
input.transformationMethod = PasswordTransformationMethod()
}
val context = this
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setView(layout)
setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
@ -1155,7 +1169,7 @@ class MainActivity : AppCompatActivity() {
input.transformationMethod = PasswordTransformationMethod()
}
val context = this
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setView(layout)
setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
@ -1249,7 +1263,7 @@ class MainActivity : AppCompatActivity() {
Utils.deleteFile(File(zipFilePath))
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.info)
with (AlertDialog.Builder(this)) {
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.restored))
setPositiveButton(getText(R.string.restart)) { dialog, _ ->
@ -1349,7 +1363,7 @@ class MainActivity : AppCompatActivity() {
callUri.isFocusableInTouchMode = true
imm.hideSoftInputFromWindow(callUri.windowToken, 0)
callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item,
Contact.contacts().map{Contact -> Contact.name}))
Contact.contacts().map { Contact -> Contact.name }))
securityButton.visibility = View.INVISIBLE
callButton.visibility = View.VISIBLE
callButton.isEnabled = true

View File

@ -6,247 +6,254 @@
android:layout_marginBottom="10dp"
tools:context=".MainActivity">
<ScrollView
android:id="@+id/scrollView"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/mainActivityLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<Spinner
android:id="@+id/AoRList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_dropdown"
android:spinnerMode="dropdown"/>
<TextView
android:id="@+id/callTitle"
<RelativeLayout
android:id="@+id/mainActivityLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/AoRList"
android:paddingTop="16dp"
android:paddingStart="3dp"
android:paddingEnd="0dp"
android:textSize="20sp"
android:textColor="@android:color/black"
android:text="@string/outgoing_call_to_dots" >
</TextView>
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<LinearLayout
android:id="@+id/uriRow"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/callTitle"
android:paddingBottom="10dp" >
<Spinner
android:id="@+id/AoRList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_dropdown"
android:spinnerMode="dropdown"/>
<AutoCompleteTextView
android:id="@+id/callUri"
<TextView
android:id="@+id/callTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:inputType="textEmailAddress"
android:layout_below="@id/AoRList"
android:paddingTop="16dp"
android:paddingStart="3dp"
android:paddingEnd="0dp"
android:textSize="20sp"
android:hint="@string/callee" >
<!-- <requestFocus /> -->
</AutoCompleteTextView>
android:textColor="@android:color/black"
android:text="@string/outgoing_call_to_dots" >
</TextView>
<LinearLayout
android:id="@+id/uriRow"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/callTitle"
android:paddingBottom="10dp" >
<AutoCompleteTextView
android:id="@+id/callUri"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight = "1"
android:inputType="textEmailAddress"
android:textSize="20sp"
android:hint="@string/callee" >
<!-- <requestFocus /> -->
</AutoCompleteTextView>
<ImageButton
android:id="@+id/securityButton"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_weight = "0"
android:layout_gravity = "center_vertical"
android:visibility="invisible"
android:contentDescription="@string/app_name" >
</ImageButton>
</LinearLayout>
<ImageButton
android:id="@+id/securityButton"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_weight = "0"
android:layout_gravity = "center_vertical"
android:visibility="invisible"
android:contentDescription="@string/app_name" >
android:id="@+id/callButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/call_green"
android:contentDescription="@string/call" >
</ImageButton>
</LinearLayout>
<ImageButton
android:id="@+id/hangupButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/hangup"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/hangup" >
</ImageButton>
<ImageButton
android:id="@+id/callButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/call_green"
android:contentDescription="@string/call" >
</ImageButton>
<ImageButton
android:id="@+id/answerButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="10dp"
android:background="@null"
android:src="@drawable/call_green"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/answer" >
</ImageButton>
<ImageButton
android:id="@+id/hangupButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/hangup"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/hangup" >
</ImageButton>
<ImageButton
android:id="@+id/rejectButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/hangup"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/reject" >
</ImageButton>
<ImageButton
android:id="@+id/answerButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="10dp"
android:background="@null"
android:src="@drawable/call_green"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/answer" >
</ImageButton>
<ImageButton
android:id="@+id/holdButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:src="@drawable/pause"
android:background="@null"
android:layout_marginStart="70dp"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/hold" >
</ImageButton>
<ImageButton
android:id="@+id/rejectButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:background="@null"
android:src="@drawable/hangup"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/reject" >
</ImageButton>
<ImageButton
android:id="@+id/transferButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:src="@drawable/call_transfer"
android:background="@null"
android:layout_marginStart="140dp"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_transfer" >
</ImageButton>
<ImageButton
android:id="@+id/holdButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:src="@drawable/pause"
android:background="@null"
android:layout_marginStart="70dp"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/hold" >
</ImageButton>
<EditText
android:id="@+id/dtmf"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:layout_marginStart="210dp"
android:inputType="phone"
android:textSize="20sp"
android:hint="@string/dtmf"
android:visibility="invisible"
android:importantForAutofill="no" >
</EditText>
<ImageButton
android:id="@+id/transferButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:src="@drawable/call_transfer"
android:background="@null"
android:layout_marginStart="140dp"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_transfer" >
</ImageButton>
<ImageButton
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:layout_alignParentEnd="true"
android:src="@drawable/info"
android:layout_marginTop="6dp"
android:background="@null"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_info" >
</ImageButton>
<EditText
android:id="@+id/dtmf"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:layout_marginStart="210dp"
android:inputType="phone"
android:textSize="20sp"
android:hint="@string/dtmf"
android:visibility="invisible"
android:importantForAutofill="no" >
</EditText>
</RelativeLayout>
<ImageButton
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/uriRow"
android:padding="0dp"
android:layout_alignParentEnd="true"
android:src="@drawable/info"
android:layout_marginTop="6dp"
android:background="@null"
android:clickable="false"
android:visibility="invisible"
android:contentDescription="@string/call_info" >
</ImageButton>
</ScrollView>
</RelativeLayout>
<ImageButton
android:id="@+id/voicemailButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/voicemail"
android:layout_toStartOf="@id/contactsButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:visibility="invisible"
android:contentDescription="@string/voicemail" >
</ImageButton>
</ScrollView>
<ImageButton
android:id="@+id/contactsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/contacts"
android:layout_toStartOf="@id/messagesButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:contentDescription="@string/contacts" >
</ImageButton>
<ImageButton
android:id="@+id/voicemailButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/voicemail"
android:layout_toStartOf="@id/contactsButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:visibility="invisible"
android:contentDescription="@string/voicemail" >
</ImageButton>
<ImageButton
android:id="@+id/messagesButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/messages"
android:layout_toStartOf="@id/callsButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:contentDescription="@string/messages" >
</ImageButton>
<ImageButton
android:id="@+id/contactsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/contacts"
android:layout_toStartOf="@id/messagesButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:contentDescription="@string/contacts" >
</ImageButton>
<ImageButton
android:id="@+id/callsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/dialpadButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:padding="0dp"
android:background="@null"
android:src="@drawable/calls"
android:contentDescription="@string/call_history" >
</ImageButton>
<ImageButton
android:id="@+id/messagesButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/messages"
android:layout_toStartOf="@id/callsButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:contentDescription="@string/messages" >
</ImageButton>
<ImageButton
android:id="@+id/dialpadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="2dp"
android:layout_alignParentEnd="true"
android:background="@null"
android:src="@drawable/dialpad_off"
android:contentDescription="@string/dialpad" >
</ImageButton>
<ImageButton
android:id="@+id/callsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/dialpadButton"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:padding="0dp"
android:background="@null"
android:src="@drawable/calls"
android:contentDescription="@string/call_history" >
</ImageButton>
<ImageButton
android:id="@+id/dialpadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="2dp"
android:layout_alignParentEnd="true"
android:background="@null"
android:src="@drawable/dialpad_off"
android:contentDescription="@string/dialpad" >
</ImageButton>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout>