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

View File

@ -197,10 +197,13 @@ class MainActivity : AppCompatActivity() {
getString(R.string.peer_not_verified))
}
"green" -> {
val unverifyDialog = AlertDialog.Builder(this)
unverifyDialog.setTitle(getString(R.string.info))
unverifyDialog.setMessage(getString(R.string.call_is_secure))
unverifyDialog.setPositiveButton(getString(R.string.unverify)) { dialog, _ ->
val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.info)
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], "")
if (calls.size > 0) {
if (Api.cmd_exec("zrtp_unverify " + calls[0].zid) != 0) {
@ -213,10 +216,10 @@ class MainActivity : AppCompatActivity() {
}
dialog.dismiss()
}
unverifyDialog.setNegativeButton(getString(R.string.no)) { dialog, _ ->
builder.setNegativeButton(getString(R.string.no)) { dialog, _ ->
dialog.dismiss()
}
unverifyDialog.create().show()
builder.create().show()
}
}
}
@ -585,17 +588,16 @@ class MainActivity : AppCompatActivity() {
if (event == "stopped") {
Log.d("Baresip", "Handling service event 'stopped' with param '${params[0]}'")
if (params[0] != "") {
val alertDialog = AlertDialog.Builder(this).create()
alertDialog.setTitle(getString(R.string.notice))
alertDialog.setMessage(getString(R.string.start_failed))
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.ok)
) { dialog, _ ->
val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
titleView.text = getString(R.string.notice)
val builder = AlertDialog.Builder(this)
builder.setCustomTitle(titleView)
builder.setMessage(getString(R.string.start_failed))
builder.setNeutralButton(getString(R.string.ok)) { dialog, _ ->
dialog.dismiss()
//quitTimer.cancel()
//finishAndRemoveTask()
//System.exit(0)
}
alertDialog.show()
builder.create().show()
} else {
quitTimer.cancel()
finishAndRemoveTask()
@ -679,11 +681,14 @@ class MainActivity : AppCompatActivity() {
Log.w("Baresip", "Call $callp to be verified is not found")
return
}
val verifyDialog = AlertDialog.Builder(this@MainActivity)
verifyDialog.setTitle(getString(R.string.verify))
verifyDialog.setMessage(String.format(getString(R.string.verify_sas),
val inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val titleView = inflater.inflate(R.layout.alert_title, null) as TextView
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]))
verifyDialog.setPositiveButton(getString(R.string.yes)) { dialog, _ ->
builder.setPositiveButton(getString(R.string.yes)) { dialog, _ ->
val security: Int
if (Api.cmd_exec("zrtp_verify ${ev[3]}") != 0) {
Log.e("Baresip", "Command 'zrtp_verify ${ev[3]}' failed")
@ -700,7 +705,7 @@ class MainActivity : AppCompatActivity() {
dialog.dismiss()
}
}
verifyDialog.setNegativeButton(getString(R.string.no)) { dialog, _ ->
builder.setNegativeButton(getString(R.string.no)) { dialog, _ ->
call.security = R.drawable.box_yellow
call.zid = ev[3]
if (aor == aorSpinner.tag) {
@ -710,7 +715,7 @@ class MainActivity : AppCompatActivity() {
}
dialog.dismiss()
}
if (!isFinishing()) verifyDialog.create().show()
if (!isFinishing()) builder.create().show()
}
"call verified", "call secure" -> {
val callp = params[1]
@ -1011,19 +1016,20 @@ class MainActivity : AppCompatActivity() {
private fun askPassword(title: String, ua: UserAgent? = null) {
val builder = AlertDialog.Builder(this)
builder.setTitle(title)
val viewInflated = LayoutInflater.from(this)
val layout = LayoutInflater.from(this)
.inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup,
false)
val input = viewInflated.findViewById(R.id.password) as EditText
val checkBox = viewInflated.findViewById(R.id.checkbox) as CheckBox
val titleView = layout.findViewById(R.id.title) as TextView
titleView.text = title
val input = layout.findViewById(R.id.password) as EditText
val checkBox = layout.findViewById(R.id.checkbox) as CheckBox
checkBox.setOnCheckedChangeListener { _, isChecked ->
if (isChecked)
input.transformationMethod = HideReturnsTransformationMethod()
else
input.transformationMethod = PasswordTransformationMethod()
}
builder.setView(viewInflated)
builder.setView(layout)
builder.setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
var password = input.text.toString().trim()
@ -1055,19 +1061,20 @@ class MainActivity : AppCompatActivity() {
(Utils.paramValue(params, "auth_pass") == "")) {
val aor = account.substringAfter("<").substringBefore(">")
val builder = AlertDialog.Builder(this)
builder.setTitle(String.format(getString(R.string.account_password), Utils.plainAor(aor)))
val viewInflated = LayoutInflater.from(this)
val layout = LayoutInflater.from(this)
.inflate(R.layout.password_dialog, findViewById(android.R.id.content) as ViewGroup,
false)
val input = viewInflated.findViewById(R.id.password) as EditText
val checkBox = viewInflated.findViewById(R.id.checkbox) as CheckBox
val titleView = layout.findViewById(R.id.title) as TextView
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 ->
if (isChecked)
input.transformationMethod = HideReturnsTransformationMethod()
else
input.transformationMethod = PasswordTransformationMethod()
}
builder.setView(viewInflated)
builder.setView(layout)
builder.setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
val password = input.text.toString().trim()

View File

@ -1,9 +1,9 @@
package com.tutpro.baresip
import android.annotation.SuppressLint
import android.app.Activity
import android.app.ActivityManager
import android.content.Context
import androidx.appcompat.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
@ -12,18 +12,20 @@ import android.graphics.Color
import android.net.LinkAddress
import android.net.LinkProperties
import android.os.Bundle
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import android.text.Editable
import android.text.TextWatcher
import kotlin.collections.ArrayList
import kotlin.Exception
import android.view.LayoutInflater
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import java.io.*
import java.security.SecureRandom
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.SecretKeyFactory
@ -31,6 +33,8 @@ import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.PBEKeySpec
import javax.crypto.spec.SecretKeySpec
import kotlin.collections.ArrayList
object Utils {
fun getNameValue(string: String, name: String): ArrayList<String> {
@ -50,9 +54,12 @@ object Utils {
return result
}
@SuppressLint("InflateParams")
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)
builder.setTitle(title)
builder.setCustomTitle(titleView)
.setMessage(message)
.setPositiveButton(R.string.ok)
{ dialog, _ ->

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>

View File

@ -1,12 +1,22 @@
<?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_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
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:padding="?dialogPreferredPadding" >
<EditText
android:id="@+id/password"
@ -26,4 +36,4 @@
</com.google.android.material.textfield.TextInputLayout>
</FrameLayout>
</LinearLayout>