Merge branch 'theme'

This commit is contained in:
Juha Heinanen
2022-02-20 14:07:13 +02:00
14 changed files with 125 additions and 116 deletions
@@ -2,7 +2,6 @@ package com.tutpro.baresip
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.opengl.Visibility
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@@ -3,13 +3,13 @@ package com.tutpro.baresip
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.TextView import android.widget.TextView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.util.* import java.util.*
@@ -53,10 +53,8 @@ class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<A
} }
viewHolder.actionView.setOnClickListener { viewHolder.actionView.setOnClickListener {
val titleView = View.inflate(cxt, R.layout.alert_title, null) as TextView with (MaterialAlertDialogBuilder(cxt, R.style.AlertDialogTheme)) {
titleView.text = cxt.getString(R.string.confirmation) setTitle(R.string.confirmation)
with (AlertDialog.Builder(cxt, R.style.AlertDialog)) {
setCustomTitle(titleView)
setMessage(String.format(cxt.getString(R.string.delete_account), setMessage(String.format(cxt.getString(R.string.delete_account),
viewHolder.aorView.text)) viewHolder.aorView.text))
setPositiveButton(cxt.getText(R.string.delete)) { dialog, _ -> setPositiveButton(cxt.getText(R.string.delete)) { dialog, _ ->
@@ -69,7 +67,7 @@ class AccountListAdapter(private val cxt: Context, private val rows: ArrayList<A
this@AccountListAdapter.notifyDataSetChanged() this@AccountListAdapter.notifyDataSetChanged()
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(cxt.getText(R.string.cancel)) { dialog, _ -> setNeutralButton(cxt.getText(R.string.cancel)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -3,13 +3,13 @@ package com.tutpro.baresip
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.widget.* import android.widget.*
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.tutpro.baresip.databinding.ActivityAccountsBinding import com.tutpro.baresip.databinding.ActivityAccountsBinding
import java.util.ArrayList import java.util.ArrayList
@@ -98,7 +98,7 @@ class AccountsActivity : AppCompatActivity() {
val message = getString(R.string.account) + " " + Utils.plainAor(ua.account.aor) val message = getString(R.string.account) + " " + Utils.plainAor(ua.account.aor)
messageView.text = message messageView.text = message
val input = layout.findViewById(R.id.password) as EditText val input = layout.findViewById(R.id.password) as EditText
with (AlertDialog.Builder(this)) { with (MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
setView(layout) setView(layout)
setPositiveButton(android.R.string.ok) { dialog, _ -> setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
@@ -110,7 +110,7 @@ class AccountsActivity : AppCompatActivity() {
} }
setAuthPass(ua, password) setAuthPass(ua, password)
} }
setNegativeButton(android.R.string.cancel) { dialog, _ -> setNeutralButton(android.R.string.cancel) { dialog, _ ->
dialog.cancel() dialog.cancel()
} }
show() show()
@@ -5,14 +5,12 @@ import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.SystemClock import android.os.SystemClock
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import android.widget.AdapterView import android.widget.AdapterView
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.tutpro.baresip.databinding.ActivityCallsBinding import com.tutpro.baresip.databinding.ActivityCallsBinding
import java.util.* import java.util.*
@@ -75,7 +73,8 @@ class CallsActivity : AppCompatActivity() {
} }
if (SystemClock.elapsedRealtime() - lastClick > 1000) { if (SystemClock.elapsedRealtime() - lastClick > 1000) {
lastClick = SystemClock.elapsedRealtime() lastClick = SystemClock.elapsedRealtime()
with (AlertDialog.Builder(this@CallsActivity, R.style.Theme_AppCompat)) { with (MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme)) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.calls_call_message_question), setMessage(String.format(getString(R.string.calls_call_message_question),
peerName)) peerName))
setNeutralButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
@@ -119,18 +118,20 @@ class CallsActivity : AppCompatActivity() {
getString(R.string.calls_calls) getString(R.string.calls_calls)
else else
getString(R.string.calls_call) getString(R.string.calls_call)
val builder = AlertDialog.Builder(this@CallsActivity, R.style.Theme_AppCompat) val builder = MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme)
if (peerName.startsWith("sip:")) if (peerName.startsWith("sip:"))
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.calls_add_delete_question), setMessage(String.format(getString(R.string.calls_add_delete_question),
Utils.friendlyUri(peerName, Utils.aorDomain(aor)), callText)) Utils.friendlyUri(peerName, Utils.aorDomain(aor)), callText))
setNeutralButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
setNegativeButton(getString(R.string.add_contact), dialogClickListener)
setPositiveButton(String.format(getString(R.string.delete), callText), dialogClickListener) setPositiveButton(String.format(getString(R.string.delete), callText), dialogClickListener)
setNegativeButton(getString(R.string.add_contact), dialogClickListener)
show() show()
} }
else else
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.calls_delete_question), setMessage(String.format(getString(R.string.calls_delete_question),
Utils.friendlyUri(peerName, Utils.aorDomain(aor)), callText)) Utils.friendlyUri(peerName, Utils.aorDomain(aor)), callText))
setNeutralButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
@@ -152,10 +153,8 @@ class CallsActivity : AppCompatActivity() {
when (item.itemId) { when (item.itemId) {
R.id.delete_history -> { R.id.delete_history -> {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with (MaterialAlertDialogBuilder(this@CallsActivity, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.confirmation) setTitle(R.string.confirmation)
with (AlertDialog.Builder(this@CallsActivity)) {
setCustomTitle(titleView)
setMessage(String.format(getString(R.string.delete_history_alert), setMessage(String.format(getString(R.string.delete_history_alert),
aor.substringAfter(":"))) aor.substringAfter(":")))
setPositiveButton(getText(R.string.delete)) { dialog, _ -> setPositiveButton(getText(R.string.delete)) { dialog, _ ->
@@ -165,7 +164,7 @@ class CallsActivity : AppCompatActivity() {
clAdapter.notifyDataSetChanged() clAdapter.notifyDataSetChanged()
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getText(R.string.cancel)) { dialog, _ -> setNeutralButton(getText(R.string.cancel)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -4,7 +4,6 @@ import android.app.Activity
import android.content.* import android.content.*
import android.os.Bundle import android.os.Bundle
import android.os.SystemClock import android.os.SystemClock
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@@ -13,6 +12,7 @@ import android.view.WindowManager
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.* import android.widget.*
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.tutpro.baresip.databinding.ActivityChatBinding import com.tutpro.baresip.databinding.ActivityChatBinding
class ChatActivity : AppCompatActivity() { class ChatActivity : AppCompatActivity() {
@@ -111,9 +111,10 @@ class ChatActivity : AppCompatActivity() {
} }
} }
} }
val builder = AlertDialog.Builder(this@ChatActivity, R.style.Theme_AppCompat) val builder = MaterialAlertDialogBuilder(this@ChatActivity, R.style.AlertDialogTheme)
if (Contact.contactName(peerUri) == peerUri) if (Contact.contactName(peerUri) == peerUri)
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.long_message_question), setMessage(String.format(getString(R.string.long_message_question),
chatPeer)) chatPeer))
setNeutralButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
@@ -123,6 +124,7 @@ class ChatActivity : AppCompatActivity() {
} }
else else
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(getText(R.string.short_message_question)) setMessage(getText(R.string.short_message_question))
setNeutralButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
setNegativeButton(getString(R.string.delete), dialogClickListener) setNegativeButton(getString(R.string.delete), dialogClickListener)
@@ -5,11 +5,10 @@ import android.content.*
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import android.widget.* import android.widget.*
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.tutpro.baresip.databinding.ActivityChatsBinding import com.tutpro.baresip.databinding.ActivityChatsBinding
import java.util.* import java.util.*
@@ -94,10 +93,11 @@ class ChatsActivity: AppCompatActivity() {
} }
} }
val builder = AlertDialog.Builder(this@ChatsActivity, R.style.Theme_AppCompat) val builder = MaterialAlertDialogBuilder(this@ChatsActivity, R.style.AlertDialogTheme)
val peer = Contact.contactName(uaMessages[pos].peerUri) val peer = Contact.contactName(uaMessages[pos].peerUri)
if (peer.startsWith("sip:")) if (peer.startsWith("sip:"))
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.long_chat_question), setMessage(String.format(getString(R.string.long_chat_question),
Utils.friendlyUri(peer, Utils.aorDomain(aor)))) Utils.friendlyUri(peer, Utils.aorDomain(aor))))
setNeutralButton(getText(R.string.cancel), dialogClickListener) setNeutralButton(getText(R.string.cancel), dialogClickListener)
@@ -107,6 +107,7 @@ class ChatsActivity: AppCompatActivity() {
} }
else else
with (builder) { with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(getString(R.string.short_chat_question), peer)) setMessage(String.format(getString(R.string.short_chat_question), peer))
setNeutralButton(getText(R.string.cancel), dialogClickListener) setNeutralButton(getText(R.string.cancel), dialogClickListener)
setNegativeButton(getText(R.string.delete), dialogClickListener) setNegativeButton(getText(R.string.delete), dialogClickListener)
@@ -178,10 +179,8 @@ class ChatsActivity: AppCompatActivity() {
when (item.itemId) { when (item.itemId) {
R.id.delete_chats -> { R.id.delete_chats -> {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with (MaterialAlertDialogBuilder(this@ChatsActivity, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.confirmation) setTitle(R.string.confirmation)
with (AlertDialog.Builder(this@ChatsActivity)) {
setCustomTitle(titleView)
setMessage(String.format(getString(R.string.delete_chats_alert), setMessage(String.format(getString(R.string.delete_chats_alert),
aor.substringAfter(":"))) aor.substringAfter(":")))
setPositiveButton(getText(R.string.delete)) { dialog, _ -> setPositiveButton(getText(R.string.delete)) { dialog, _ ->
@@ -192,7 +191,7 @@ class ChatsActivity: AppCompatActivity() {
UserAgent.ofAor(aor)!!.account.unreadMessages = false UserAgent.ofAor(aor)!!.account.unreadMessages = false
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getText(R.string.cancel)) { dialog, _ -> setNeutralButton(getText(R.string.cancel)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -16,10 +16,10 @@ import android.view.View
import android.widget.* import android.widget.*
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.tutpro.baresip.Utils.copyInputStreamToFile import com.tutpro.baresip.Utils.copyInputStreamToFile
import com.tutpro.baresip.Utils.showSnackBar import com.tutpro.baresip.Utils.showSnackBar
@@ -342,10 +342,8 @@ class ConfigActivity : AppCompatActivity() {
reset.setOnCheckedChangeListener { _, isChecked -> reset.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) { if (isChecked) {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this@ConfigActivity, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.confirmation) setTitle(R.string.confirmation)
with(AlertDialog.Builder(this@ConfigActivity)) {
setCustomTitle(titleView)
setMessage(getString(R.string.reset_config_alert)) setMessage(getString(R.string.reset_config_alert))
setPositiveButton(getText(R.string.reset)) { dialog, _ -> setPositiveButton(getText(R.string.reset)) { dialog, _ ->
Config.reset(this@ConfigActivity) Config.reset(this@ConfigActivity)
@@ -354,7 +352,7 @@ class ConfigActivity : AppCompatActivity() {
done() done()
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getText(R.string.cancel)) { dialog, _ -> setNeutralButton(getText(R.string.cancel)) { dialog, _ ->
reset.isChecked = false reset.isChecked = false
dialog.dismiss() dialog.dismiss()
} }
@@ -377,7 +375,7 @@ class ConfigActivity : AppCompatActivity() {
contactsMode = oldContactsMode contactsMode = oldContactsMode
contactsSpinner.setSelection(contactsModeKeys.indexOf(oldContactsMode)) contactsSpinner.setSelection(contactsModeKeys.indexOf(oldContactsMode))
Snackbar.make(layout, getString(R.string.no_android_contacts), Snackbar.LENGTH_LONG) Snackbar.make(layout, getString(R.string.no_android_contacts), Snackbar.LENGTH_LONG)
.setAction(getString(R.string.ok), {}) .setAction(getString(R.string.ok)) {}
.show() .show()
} }
} }
@@ -14,8 +14,8 @@ import android.widget.ArrayAdapter
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat.startActivity import androidx.core.content.ContextCompat.startActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
@@ -95,7 +95,8 @@ class ContactListAdapter(private val ctx: Context, private val rows: ArrayList<C
} }
if (SystemClock.elapsedRealtime() - lastClick > 1000) { if (SystemClock.elapsedRealtime() - lastClick > 1000) {
lastClick = SystemClock.elapsedRealtime() lastClick = SystemClock.elapsedRealtime()
with(AlertDialog.Builder(ctx, R.style.Theme_AppCompat)) { with(MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme)) {
setTitle(R.string.confirmation)
setMessage(String.format(ctx.getString(R.string.contact_action_question), setMessage(String.format(ctx.getString(R.string.contact_action_question),
contact.name)) contact.name))
setNeutralButton(ctx.getText(R.string.cancel), dialogClickListener) setNeutralButton(ctx.getText(R.string.cancel), dialogClickListener)
@@ -185,16 +186,14 @@ class ContactListAdapter(private val ctx: Context, private val rows: ArrayList<C
} }
} }
} }
val titleView = View.inflate(ctx, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme)) {
titleView.text = ctx.getString(R.string.confirmation) setTitle(R.string.confirmation)
with(AlertDialog.Builder(ctx)) {
setCustomTitle(titleView)
setMessage(String.format(ctx.getString(R.string.contact_delete_question), setMessage(String.format(ctx.getString(R.string.contact_delete_question),
when (contact) { when (contact) {
is Contact.BaresipContact -> contact.name is Contact.BaresipContact -> contact.name
is Contact.AndroidContact -> contact.name is Contact.AndroidContact -> contact.name
})) }))
setNegativeButton(ctx.getText(R.string.cancel), dialogClickListener) setNeutralButton(ctx.getText(R.string.cancel), dialogClickListener)
setPositiveButton(ctx.getText(R.string.delete), dialogClickListener) setPositiveButton(ctx.getText(R.string.delete), dialogClickListener)
show() show()
} }
@@ -24,7 +24,6 @@ import android.os.*
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
@@ -40,6 +39,7 @@ import kotlin.collections.ArrayList
import kotlin.system.exitProcess import kotlin.system.exitProcess
import android.content.IntentFilter import android.content.IntentFilter
import androidx.core.net.toUri import androidx.core.net.toUri
import com.google.android.material.dialog.MaterialAlertDialogBuilder
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
@@ -297,10 +297,8 @@ class MainActivity : AppCompatActivity() {
getString(R.string.peer_not_verified)) getString(R.string.peer_not_verified))
} }
"green" -> { "green" -> {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.info) setTitle(R.string.info)
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.call_is_secure)) setMessage(getString(R.string.call_is_secure))
setPositiveButton(getString(R.string.unverify)) { dialog, _ -> setPositiveButton(getString(R.string.unverify)) { dialog, _ ->
val calls = Call.uaCalls(UserAgent.uas()[aorSpinner.selectedItemPosition], "") val calls = Call.uaCalls(UserAgent.uas()[aorSpinner.selectedItemPosition], "")
@@ -314,7 +312,7 @@ class MainActivity : AppCompatActivity() {
} }
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getString(R.string.no)) { dialog, _ -> setNeutralButton(getString(R.string.no)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -443,13 +441,11 @@ class MainActivity : AppCompatActivity() {
} }
} }
} }
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.voicemail_messages) setTitle(R.string.voicemail_messages)
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(acc.vmMessages(this@MainActivity)) setMessage(acc.vmMessages(this@MainActivity))
setPositiveButton(getString(R.string.listen), dialogClickListener) setPositiveButton(getString(R.string.listen), dialogClickListener)
setNegativeButton(getString(R.string.cancel), dialogClickListener) setNeutralButton(getString(R.string.cancel), dialogClickListener)
show() show()
} }
} }
@@ -519,16 +515,14 @@ class MainActivity : AppCompatActivity() {
configRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { configRequest = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if ((it.data != null) && it.data!!.hasExtra("restart")) { if ((it.data != null) && it.data!!.hasExtra("restart")) {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.restart_request) setTitle(R.string.restart_request)
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.config_restart)) setMessage(getString(R.string.config_restart))
setPositiveButton(getText(R.string.restart)) { dialog, _ -> setPositiveButton(getText(R.string.restart)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
quitRestart(true) quitRestart(true)
} }
setNegativeButton(getText(R.string.cancel)) { dialog, _ -> setNeutralButton(getText(R.string.cancel)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -957,16 +951,7 @@ class MainActivity : AppCompatActivity() {
if (event == "stopped") { if (event == "stopped") {
Log.d(TAG, "Handling service event 'stopped' with param '${params[0]}'") Log.d(TAG, "Handling service event 'stopped' with param '${params[0]}'")
if (params[0] != "") { if (params[0] != "") {
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView Utils.alertView(this, getString(R.string.notice), getString(R.string.start_failed))
titleView.text = getString(R.string.notice)
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.start_failed))
setNeutralButton(getString(R.string.ok)) { dialog, _ ->
dialog.dismiss()
}
show()
}
} else { } else {
quitTimer.cancel() quitTimer.cancel()
finishAndRemoveTask() finishAndRemoveTask()
@@ -1036,10 +1021,8 @@ class MainActivity : AppCompatActivity() {
handleNextEvent("Call $callp to be verified is not found") handleNextEvent("Call $callp to be verified is not found")
return return
} }
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.verify) setTitle(R.string.verify)
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(String.format(getString(R.string.verify_sas), setMessage(String.format(getString(R.string.verify_sas),
ev[1], ev[2])) ev[1], ev[2]))
setPositiveButton(getString(R.string.yes)) { dialog, _ -> setPositiveButton(getString(R.string.yes)) { dialog, _ ->
@@ -1058,7 +1041,7 @@ class MainActivity : AppCompatActivity() {
dialog.dismiss() dialog.dismiss()
} }
} }
setNegativeButton(getString(R.string.no)) { dialog, _ -> setNeutralButton(getString(R.string.no)) { dialog, _ ->
call.security = R.drawable.box_yellow call.security = R.drawable.box_yellow
call.zid = ev[3] call.zid = ev[3]
if (aor == aorSpinner.tag) { if (aor == aorSpinner.tag) {
@@ -1101,11 +1084,9 @@ class MainActivity : AppCompatActivity() {
return return
} }
val call = Call.ofCallp(callp)!! val call = Call.ofCallp(callp)!!
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.transfer_request)
val target = Utils.friendlyUri(Contact.contactName(ev[1]), Utils.aorDomain(aor)) val target = Utils.friendlyUri(Contact.contactName(ev[1]), Utils.aorDomain(aor))
with(AlertDialog.Builder(this)) { with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
setCustomTitle(titleView) setTitle(R.string.transfer_request)
setMessage(String.format(getString(R.string.transfer_request_query), setMessage(String.format(getString(R.string.transfer_request_query),
target)) target))
setPositiveButton(getString(R.string.yes)) { dialog, _ -> setPositiveButton(getString(R.string.yes)) { dialog, _ ->
@@ -1113,7 +1094,7 @@ class MainActivity : AppCompatActivity() {
acceptTransfer(ua, call, ev[1]) acceptTransfer(ua, call, ev[1])
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getString(R.string.no)) { dialog, _ -> setNeutralButton(getString(R.string.no)) { dialog, _ ->
if (call in Call.calls()) if (call in Call.calls())
call.notifySipfrag(603, "Decline") call.notifySipfrag(603, "Decline")
dialog.dismiss() dialog.dismiss()
@@ -1404,7 +1385,7 @@ class MainActivity : AppCompatActivity() {
Contact.contactNames())) Contact.contactNames()))
transferUri.threshold = 2 transferUri.threshold = 2
transferUri.requestFocus() transferUri.requestFocus()
val builder = AlertDialog.Builder(this) val builder = MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)
with(builder) { with(builder) {
setView(layout) setView(layout)
setPositiveButton(R.string.transfer) { dialog, _ -> setPositiveButton(R.string.transfer) { dialog, _ ->
@@ -1430,7 +1411,7 @@ class MainActivity : AppCompatActivity() {
} }
} }
} }
setNegativeButton(android.R.string.cancel) { dialog, _ -> setNeutralButton(android.R.string.cancel) { dialog, _ ->
imm.hideSoftInputFromWindow(transferUri.windowToken, 0) imm.hideSoftInputFromWindow(transferUri.windowToken, 0)
dialog.cancel() dialog.cancel()
} }
@@ -1455,7 +1436,7 @@ class MainActivity : AppCompatActivity() {
val input = layout.findViewById(R.id.password) as EditText val input = layout.findViewById(R.id.password) as EditText
input.requestFocus() input.requestFocus()
val context = this val context = this
with (AlertDialog.Builder(this, R.style.AlertDialog)) { with (MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
setView(layout) setView(layout)
setPositiveButton(android.R.string.ok) { dialog, _ -> setPositiveButton(android.R.string.ok) { dialog, _ ->
imm.hideSoftInputFromWindow(input.windowToken, 0) imm.hideSoftInputFromWindow(input.windowToken, 0)
@@ -1475,7 +1456,7 @@ class MainActivity : AppCompatActivity() {
AccountsActivity.setAuthPass(ua!!, password) AccountsActivity.setAuthPass(ua!!, password)
} }
} }
setNegativeButton(android.R.string.cancel) { dialog, _ -> setNeutralButton(android.R.string.cancel) { dialog, _ ->
imm.hideSoftInputFromWindow(input.windowToken, 0) imm.hideSoftInputFromWindow(input.windowToken, 0)
dialog.cancel() dialog.cancel()
} }
@@ -1503,7 +1484,7 @@ class MainActivity : AppCompatActivity() {
val input = layout.findViewById(R.id.password) as EditText val input = layout.findViewById(R.id.password) as EditText
input.requestFocus() input.requestFocus()
val context = this val context = this
with (AlertDialog.Builder(this, R.style.AlertDialog)) { with (MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
setView(layout) setView(layout)
setPositiveButton(android.R.string.ok) { dialog, _ -> setPositiveButton(android.R.string.ok) { dialog, _ ->
imm.hideSoftInputFromWindow(input.windowToken, 0) imm.hideSoftInputFromWindow(input.windowToken, 0)
@@ -1517,7 +1498,7 @@ class MainActivity : AppCompatActivity() {
} }
askPasswords(accounts) askPasswords(accounts)
} }
setNegativeButton(android.R.string.cancel) { dialog, _ -> setNeutralButton(android.R.string.cancel) { dialog, _ ->
imm.hideSoftInputFromWindow(input.windowToken, 0) imm.hideSoftInputFromWindow(input.windowToken, 0)
dialog.cancel() dialog.cancel()
aorPasswords[aor] = "" aorPasswords[aor] = ""
@@ -1602,16 +1583,14 @@ class MainActivity : AppCompatActivity() {
return return
} }
Utils.deleteFile(File(zipFilePath)) Utils.deleteFile(File(zipFilePath))
val titleView = View.inflate(this, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)) {
titleView.text = getString(R.string.info) setTitle(getString(R.string.info))
with(AlertDialog.Builder(this)) {
setCustomTitle(titleView)
setMessage(getString(R.string.restored)) setMessage(getString(R.string.restored))
setPositiveButton(getText(R.string.restart)) { dialog, _ -> setPositiveButton(getText(R.string.restart)) { dialog, _ ->
quitRestart(true) quitRestart(true)
dialog.dismiss() dialog.dismiss()
} }
setNegativeButton(getText(R.string.cancel)) { dialog, _ -> setNeutralButton(getText(R.string.cancel)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
show() show()
@@ -1710,14 +1689,14 @@ class MainActivity : AppCompatActivity() {
Utils.alertView(this, getString(R.string.notice), Utils.alertView(this, getString(R.string.notice),
getString(R.string.no_telephony_providers)) getString(R.string.no_telephony_providers))
} else { } else {
val builder = AlertDialog.Builder(this) val builder = MaterialAlertDialogBuilder(this, R.style.AlertDialogTheme)
with(builder) { with(builder) {
setTitle(getString(R.string.choose_telephony_provider_account)) setTitle(getString(R.string.choose_telephony_provider_account))
setItems(telAccounts) { _, which -> setItems(telAccounts) { _, which ->
spinToAor("sip:${telAccounts[which]}") spinToAor("sip:${telAccounts[which]}")
makeCall() makeCall()
} }
setPositiveButton("Cancel") { _: DialogInterface, _: Int -> } setNeutralButton("Cancel") { _: DialogInterface, _: Int -> }
show() show()
} }
} }
@@ -27,10 +27,10 @@ import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import java.io.* import java.io.*
import java.lang.reflect.Method import java.lang.reflect.Method
@@ -70,10 +70,8 @@ object Utils {
} }
fun alertView(context: Context, title: String, message: String, action: () -> (Unit) = {}) { fun alertView(context: Context, title: String, message: String, action: () -> (Unit) = {}) {
val titleView = View.inflate(context, R.layout.alert_title, null) as TextView with(MaterialAlertDialogBuilder(context, R.style.AlertDialogTheme)) {
titleView.text = title setTitle(title)
with(AlertDialog.Builder(context, R.style.AlertDialog)) {
setCustomTitle(titleView)
setMessage(message) setMessage(message)
setPositiveButton(R.string.ok) { dialog, _ -> setPositiveButton(R.string.ok) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
-1
View File
@@ -7,4 +7,3 @@
android:background="@color/colorPrimary" android:background="@color/colorPrimary"
android:textColor="@color/colorWhite" > android:textColor="@color/colorWhite" >
</TextView> </TextView>
@@ -8,15 +8,24 @@
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding" android:paddingTop="?dialogPreferredPadding"
android:paddingStart="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding"
android:textSize="20sp" android:textSize="20sp"
android:background="@color/colorPrimary" android:textColor="@color/colorPrimary" />
android:textColor="@color/colorWhite" />
<TextView
android:id="@+id/transferDestination"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding"
android:textSize="16sp"
android:text="@string/transfer_destination"
android:textColor="@color/colorStrong" />
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingStart="?dialogPreferredPadding" android:paddingStart="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding" > android:paddingEnd="?dialogPreferredPadding" >
@@ -25,8 +34,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:importantForAutofill="no" android:importantForAutofill="no"
android:textSize="18sp"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:hint="@string/transfer_destination" android:labelFor="@id/transferUri"
android:inputType="textEmailAddress" /> android:inputType="textEmailAddress" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
+6 -4
View File
@@ -15,17 +15,19 @@
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding" android:paddingTop="?dialogPreferredPadding"
android:paddingStart="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding"
android:textSize="20sp" android:textSize="20sp"
android:textColor="@color/colorWhite" android:textColor="@color/colorPrimary" />
android:background="@color/colorPrimary" />
<TextView <TextView
android:id="@+id/message" android:id="@+id/message"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="15dp" android:paddingTop="15dp"
android:textSize="15sp" android:paddingBottom="15dp"
android:textSize="16sp"
android:paddingStart="?dialogPreferredPadding" android:paddingStart="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding" /> android:paddingEnd="?dialogPreferredPadding" />
+34 -7
View File
@@ -1,10 +1,11 @@
<resources> <resources>
<style name="AppTheme" parent="Theme.AppCompat.DayNight"> <style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item> <item name="colorAccent">@color/colorAccent</item>
<item name="actionBarTheme">@style/ActionBar</item> <item name="actionBarTheme">@style/ActionBar</item>
<item name="actionOverflowMenuStyle">@style/Spinner</item>
<item name="android:dropDownListViewStyle">@style/Spinner</item> <item name="android:dropDownListViewStyle">@style/Spinner</item>
</style> </style>
@@ -13,7 +14,7 @@
<item name="windowNoTitle">true</item> <item name="windowNoTitle">true</item>
</style> </style>
<style name="ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <style name="ActionBar" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar">
<item name="android:colorBackground">@color/colorSecondaryDark</item> <item name="android:colorBackground">@color/colorSecondaryDark</item>
<item name="android:textColor">@color/colorLight</item> <item name="android:textColor">@color/colorLight</item>
<item name="android:textColorPrimary">@color/colorLight</item> <item name="android:textColorPrimary">@color/colorLight</item>
@@ -21,17 +22,43 @@
</style> </style>
<style name="Spinner" parent="Widget.AppCompat.ListView.DropDown"> <style name="Spinner" parent="Widget.AppCompat.ListView.DropDown">
<item name="android:popupBackground">@color/colorSecondaryDark</item>
<item name="android:textColor">@color/colorLight</item>
<item name="android:dividerHeight">1dp</item> <item name="android:dividerHeight">1dp</item>
<item name="android:divider">@color/colorSpinnerDivider</item> <item name="android:divider">@color/colorSpinnerDivider</item>
</style> </style>
<style name="AlertDialog" parent="Theme.AppCompat.DayNight.Dialog.Alert"> <style name="AlertDialogTheme">
<item name="colorAccent">@color/colorAccent</item> <item name="buttonBarPositiveButtonStyle">@style/Alert.Button.Positive</item>
<item name="android:textColorPrimary">@color/colorAlertText</item> <item name="buttonBarNegativeButtonStyle">@style/Alert.Button.Positive</item>
<item name="buttonBarNeutralButtonStyle">@style/Alert.Button.Neutral</item>
<item name="materialAlertDialogBodyTextStyle">@style/Alert.Message</item>
<item name="materialAlertDialogTitleTextStyle">@style/Alert.Title</item>
<item name="android:textSize">14sp</item>
</style> </style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar" /> <style name="Alert.Button.Positive" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="rippleColor">@color/colorAccent</item>
<item name="android:textSize">14sp</item>
<item name="android:textAllCaps">true</item>
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight" /> <style name="Alert.Button.Neutral" parent="Widget.MaterialComponents.Button.TextButton">
<item name="backgroundTint">@android:color/transparent</item>
<item name="rippleColor">@color/colorAccent</item>
<item name="android:textColor">@color/colorGray</item>
<item name="android:textSize">14sp</item>
</style>
<style name="Alert.Title" parent="@style/MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:textSize">20sp</item>
</style>
<style name="Alert.Message" parent="@style/MaterialAlertDialog.MaterialComponents.Body.Text">
<item name="android:textColor">@color/colorStrong</item>
<item name="android:textSize">16sp</item>
</style>
</resources> </resources>