Dialog improvements.

This commit is contained in:
Juha Heinanen
2020-06-05 18:05:29 +03:00
parent 7e8a8e69db
commit c5d5b54671
4 changed files with 77 additions and 43 deletions
@@ -197,10 +197,13 @@ class MainActivity : AppCompatActivity() {
getString(R.string.peer_not_verified)) getString(R.string.peer_not_verified))
} }
"green" -> { "green" -> {
val unverifyDialog = AlertDialog.Builder(this) val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
unverifyDialog.setTitle(getString(R.string.info)) val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
unverifyDialog.setMessage(getString(R.string.call_is_secure)) titleView.text = getString(R.string.info)
unverifyDialog.setPositiveButton(getString(R.string.unverify)) { dialog, _ -> val builder = AlertDialog.Builder(this)
builder.setCustomTitle(titleView)
builder.setMessage(getString(R.string.call_is_secure))
builder.setPositiveButton(getString(R.string.unverify)) { dialog, _ ->
val calls = Call.uaCalls(UserAgent.uas()[aorSpinner.selectedItemPosition], "") val calls = Call.uaCalls(UserAgent.uas()[aorSpinner.selectedItemPosition], "")
if (calls.size > 0) { if (calls.size > 0) {
if (Api.cmd_exec("zrtp_unverify " + calls[0].zid) != 0) { if (Api.cmd_exec("zrtp_unverify " + calls[0].zid) != 0) {
@@ -213,10 +216,10 @@ class MainActivity : AppCompatActivity() {
} }
dialog.dismiss() dialog.dismiss()
} }
unverifyDialog.setNegativeButton(getString(R.string.no)) { dialog, _ -> builder.setNegativeButton(getString(R.string.no)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
} }
unverifyDialog.create().show() builder.create().show()
} }
} }
} }
@@ -585,17 +588,16 @@ class MainActivity : AppCompatActivity() {
if (event == "stopped") { if (event == "stopped") {
Log.d("Baresip", "Handling service event 'stopped' with param '${params[0]}'") Log.d("Baresip", "Handling service event 'stopped' with param '${params[0]}'")
if (params[0] != "") { if (params[0] != "") {
val alertDialog = AlertDialog.Builder(this).create() val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
alertDialog.setTitle(getString(R.string.notice)) val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
alertDialog.setMessage(getString(R.string.start_failed)) titleView.text = getString(R.string.notice)
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.ok) val builder = AlertDialog.Builder(this)
) { dialog, _ -> builder.setCustomTitle(titleView)
builder.setMessage(getString(R.string.start_failed))
builder.setNeutralButton(getString(R.string.ok)) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
//quitTimer.cancel()
//finishAndRemoveTask()
//System.exit(0)
} }
alertDialog.show() builder.create().show()
} else { } else {
quitTimer.cancel() quitTimer.cancel()
finishAndRemoveTask() finishAndRemoveTask()
@@ -679,11 +681,14 @@ class MainActivity : AppCompatActivity() {
Log.w("Baresip", "Call $callp to be verified is not found") Log.w("Baresip", "Call $callp to be verified is not found")
return return
} }
val verifyDialog = AlertDialog.Builder(this@MainActivity) val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
verifyDialog.setTitle(getString(R.string.verify)) val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
verifyDialog.setMessage(String.format(getString(R.string.verify_sas), titleView.text = getString(R.string.verify)
val builder = AlertDialog.Builder(this)
builder.setCustomTitle(titleView)
builder.setMessage(String.format(getString(R.string.verify_sas),
ev[1], ev[2])) ev[1], ev[2]))
verifyDialog.setPositiveButton(getString(R.string.yes)) { dialog, _ -> builder.setPositiveButton(getString(R.string.yes)) { dialog, _ ->
val security: Int val security: Int
if (Api.cmd_exec("zrtp_verify ${ev[3]}") != 0) { if (Api.cmd_exec("zrtp_verify ${ev[3]}") != 0) {
Log.e("Baresip", "Command 'zrtp_verify ${ev[3]}' failed") Log.e("Baresip", "Command 'zrtp_verify ${ev[3]}' failed")
@@ -700,7 +705,7 @@ class MainActivity : AppCompatActivity() {
dialog.dismiss() dialog.dismiss()
} }
} }
verifyDialog.setNegativeButton(getString(R.string.no)) { dialog, _ -> builder.setNegativeButton(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) {
@@ -710,7 +715,7 @@ class MainActivity : AppCompatActivity() {
} }
dialog.dismiss() dialog.dismiss()
} }
if (!isFinishing()) verifyDialog.create().show() if (!isFinishing()) builder.create().show()
} }
"call verified", "call secure" -> { "call verified", "call secure" -> {
val callp = params[1] val callp = params[1]
@@ -1011,19 +1016,20 @@ class MainActivity : AppCompatActivity() {
private fun askPassword(title: String, ua: UserAgent? = null) { private fun askPassword(title: String, ua: UserAgent? = null) {
val builder = AlertDialog.Builder(this) val builder = AlertDialog.Builder(this)
builder.setTitle(title) val layout = LayoutInflater.from(this)
val viewInflated = LayoutInflater.from(this)
.inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup, .inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup,
false) false)
val input = viewInflated.findViewById(R.id.password) as EditText val titleView = layout.findViewById(R.id.title) as TextView
val checkBox = viewInflated.findViewById(R.id.checkbox) as CheckBox titleView.text = title
val input = layout.findViewById(R.id.password) as EditText
val checkBox = layout.findViewById(R.id.checkbox) as CheckBox
checkBox.setOnCheckedChangeListener { _, isChecked -> checkBox.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) if (isChecked)
input.transformationMethod = HideReturnsTransformationMethod() input.transformationMethod = HideReturnsTransformationMethod()
else else
input.transformationMethod = PasswordTransformationMethod() input.transformationMethod = PasswordTransformationMethod()
} }
builder.setView(viewInflated) builder.setView(layout)
builder.setPositiveButton(android.R.string.ok) { dialog, _ -> builder.setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
var password = input.text.toString().trim() var password = input.text.toString().trim()
@@ -1055,19 +1061,20 @@ class MainActivity : AppCompatActivity() {
(Utils.paramValue(params, "auth_pass") == "")) { (Utils.paramValue(params, "auth_pass") == "")) {
val aor = account.substringAfter("<").substringBefore(">") val aor = account.substringAfter("<").substringBefore(">")
val builder = AlertDialog.Builder(this) val builder = AlertDialog.Builder(this)
builder.setTitle(String.format(getString(R.string.account_password), Utils.plainAor(aor))) val layout = LayoutInflater.from(this)
val viewInflated = LayoutInflater.from(this)
.inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup, .inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup,
false) false)
val input = viewInflated.findViewById(R.id.password) as EditText val titleView = layout.findViewById(R.id.title) as TextView
val checkBox = viewInflated.findViewById(R.id.checkbox) as CheckBox titleView.text = String.format(getString(R.string.account_password), Utils.plainAor(aor))
val input = layout.findViewById(R.id.password) as EditText
val checkBox = layout.findViewById(R.id.checkbox) as CheckBox
checkBox.setOnCheckedChangeListener { _, isChecked -> checkBox.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) if (isChecked)
input.transformationMethod = HideReturnsTransformationMethod() input.transformationMethod = HideReturnsTransformationMethod()
else else
input.transformationMethod = PasswordTransformationMethod() input.transformationMethod = PasswordTransformationMethod()
} }
builder.setView(viewInflated) builder.setView(layout)
builder.setPositiveButton(android.R.string.ok) { dialog, _ -> builder.setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss() dialog.dismiss()
val password = input.text.toString().trim() val password = input.text.toString().trim()
@@ -1,9 +1,9 @@
package com.tutpro.baresip package com.tutpro.baresip
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.ActivityManager import android.app.ActivityManager
import android.content.Context import android.content.Context
import androidx.appcompat.app.AlertDialog
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.Bitmap import android.graphics.Bitmap
@@ -12,18 +12,20 @@ import android.graphics.Color
import android.net.LinkAddress import android.net.LinkAddress
import android.net.LinkProperties import android.net.LinkProperties
import android.os.Bundle import android.os.Bundle
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
import android.view.LayoutInflater
import kotlin.collections.ArrayList import android.widget.TextView
import kotlin.Exception import androidx.appcompat.app.AlertDialog
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import java.io.* import java.io.*
import java.security.SecureRandom import java.security.SecureRandom
import java.util.* import java.util.*
import java.util.zip.* import java.util.zip.ZipEntry
import java.util.zip.ZipFile
import java.util.zip.ZipOutputStream
import javax.crypto.Cipher import javax.crypto.Cipher
import javax.crypto.SecretKeyFactory import javax.crypto.SecretKeyFactory
@@ -31,6 +33,8 @@ import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.PBEKeySpec import javax.crypto.spec.PBEKeySpec
import javax.crypto.spec.SecretKeySpec import javax.crypto.spec.SecretKeySpec
import kotlin.collections.ArrayList
object Utils { object Utils {
fun getNameValue(string: String, name: String): ArrayList<String> { fun getNameValue(string: String, name: String): ArrayList<String> {
@@ -50,9 +54,12 @@ object Utils {
return result return result
} }
@SuppressLint("InflateParams")
fun alertView(context: Context, title: String, message: String, action: () -> (Unit) = {}) { fun alertView(context: Context, title: String, message: String, action: () -> (Unit) = {}) {
val titleView = LayoutInflater.from(context).inflate(R.layout.alert_title, null) as TextView
titleView.text = title
val builder = AlertDialog.Builder(context) val builder = AlertDialog.Builder(context)
builder.setTitle(title) builder.setCustomTitle(titleView)
.setMessage(message) .setMessage(message)
.setPositiveButton(R.string.ok) .setPositiveButton(R.string.ok)
{ dialog, _ -> { dialog, _ ->
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding"
android:textSize="20sp"
android:background="@color/colorPrimary"
android:textColor="@color/colorWhite" >
</TextView>
+14 -4
View File
@@ -1,12 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="20dp" > android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding"
android:textSize="20sp"
android:background="@color/colorPrimary"
android:textColor="@color/colorWhite" />
<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:padding="?dialogPreferredPadding" >
<EditText <EditText
android:id="@+id/password" android:id="@+id/password"
@@ -26,4 +36,4 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
</FrameLayout> </LinearLayout>