Added possibility to nickname accounts

This commit is contained in:
Juha Heinanen
2022-06-18 18:30:58 +03:00
parent 2a3dcf6a28
commit 76b66b0f93
10 changed files with 98 additions and 15 deletions

View File

@ -8,6 +8,7 @@ import java.net.URLDecoder
class Account(val accp: Long) {
var nickName = ""
var displayName = Api.account_display_name(accp)
val aor = Api.account_aor(accp)
var luri = Api.account_luri(accp)
@ -59,16 +60,13 @@ class Account(val accp: Long) {
}
val extra = Api.account_extra(accp)
if (Utils.paramExists(extra, "nickname"))
nickName = Utils.paramValue(extra,"nickname")
callHistory = Utils.paramValue(extra,"call_history") == ""
countryCode = if (Utils.paramExists(extra, "country_code"))
Utils.paramValue(extra,"country_code")
else
""
telProvider = if (Utils.paramExists(extra, "tel_provider"))
URLDecoder.decode(Utils.paramValue(extra,"tel_provider"), "UTF-8")
else
Utils.aorDomain(aor)
if (Utils.paramExists(extra, "country_code"))
countryCode = Utils.paramValue(extra,"country_code")
if (Utils.paramExists(extra, "tel_provider"))
telProvider = URLDecoder.decode(Utils.paramValue(extra,"tel_provider"), "UTF-8")
}
fun print() : String {
@ -128,6 +126,9 @@ class Account(val accp: Long) {
var extra = ""
if (nickName != "")
extra += ";nickname=$nickName"
if (!callHistory)
extra += ";call_history=no"
@ -240,5 +241,12 @@ class Account(val accp: Long) {
return (ap.isNotEmpty()) && (ap.length <= 64) &&
Regex("^[ -~]*\$").matches(ap) && !ap.contains('"')
}
fun uniqueNickName(nickName: String): Boolean {
for (ua in BaresipService.uas)
if (ua.account.nickName == nickName)
return false
return true
}
}
}

View File

@ -27,6 +27,7 @@ class AccountActivity : AppCompatActivity() {
private lateinit var acc: Account
private lateinit var ua: UserAgent
private lateinit var uri: TextView
private lateinit var nickName: EditText
private lateinit var displayName: EditText
private lateinit var aor: String
private lateinit var authUser: EditText
@ -70,6 +71,7 @@ class AccountActivity : AppCompatActivity() {
supportActionBar?.setDisplayHomeAsUpEnabled(true)
uri = binding.Uri
nickName = binding.NickName
displayName = binding.DisplayName
authUser = binding.AuthUser
authPass = binding.AuthPass
@ -99,7 +101,10 @@ class AccountActivity : AppCompatActivity() {
if (intent.getBooleanExtra("new", false))
initAccountFromConfig(this)
title = aor.split(":")[1]
title = if (acc.nickName != "")
acc.nickName
else
aor.split(":")[1]
initLayoutFromAccount(acc)
@ -202,6 +207,7 @@ class AccountActivity : AppCompatActivity() {
private fun initLayoutFromAccount(acc: Account) {
uri.text = acc.luri
nickName.setText(acc.nickName)
displayName.setText(acc.displayName)
authUser.setText(acc.authUser)
@ -346,6 +352,26 @@ class AccountActivity : AppCompatActivity() {
when (item.itemId) {
R.id.checkIcon -> {
val nn = nickName.text.toString().trim()
if (nn != acc.nickName) {
if (Account.checkDisplayName(nn)) {
if (nn == "" || Account.uniqueNickName(nn)) {
acc.nickName = nn
Log.d(TAG, "New nickname is ${acc.nickName}")
save = true
} else {
Utils.alertView(this, getString(R.string.notice),
String.format(getString(R.string.non_unique_account_nickname), nn))
return false
}
} else {
Utils.alertView(this, getString(R.string.notice),
String.format(getString(R.string.invalid_account_nickname), nn))
return false
}
}
val dn = displayName.text.toString().trim()
if (dn != acc.displayName) {
if (Account.checkDisplayName(dn)) {
@ -649,6 +675,10 @@ class AccountActivity : AppCompatActivity() {
}
private fun bindTitles() {
binding.NickNameTitle.setOnClickListener{
Utils.alertView(this, getString(R.string.nickname),
getString(R.string.account_nickname_help))
}
binding.DisplayNameTitle.setOnClickListener{
Utils.alertView(this, getString(R.string.display_name),
getString(R.string.display_name_help))

View File

@ -171,7 +171,7 @@ class AccountsActivity : AppCompatActivity() {
accounts = accounts + a.print() + "\n"
}
Utils.putFileContents(BaresipService.filesPath + "/accounts", accounts.toByteArray())
// Log.d(TAG, "Saved accounts '${accounts}' to '${BaresipService.filesPath}/accounts'")
Log.d(TAG, "Saved accounts '${accounts}' to '${BaresipService.filesPath}/accounts'")
}
fun noAccounts(): Boolean {

View File

@ -35,7 +35,11 @@ class CallsActivity : AppCompatActivity() {
account = ua.account
val headerView = binding.account
val headerText = "${getString(R.string.account)} ${aor.split(":")[1]}"
val headerText = getString(R.string.account) + " " +
if (account.nickName != "")
account.nickName
else
aor.split(":")[1]
headerView.text = headerText
val listView = binding.calls

View File

@ -71,7 +71,11 @@ class ChatActivity : AppCompatActivity() {
title = String.format(getString(R.string.chat_with), chatPeer)
val headerView = binding.account
val headerText = "${getString(R.string.account)} ${aor.substringAfter(":")}"
val headerText = getString(R.string.account) + " " +
if (ua.account.nickName != "")
ua.account.nickName
else
aor.split(":")[1]
headerView.text = headerText
listView = binding.messages

View File

@ -38,7 +38,11 @@ class ChatsActivity: AppCompatActivity() {
account = UserAgent.ofAor(aor)!!.account
val headerView = binding.account
val headerText = "${getString(R.string.account)} ${aor.split(":")[1]}"
val headerText = getString(R.string.account) + " " +
if (account.nickName != "")
account.nickName
else
aor.split(":")[1]
headerView.text = headerText
uaMessages = uaMessages(aor)

View File

@ -42,7 +42,10 @@ class UaSpinnerAdapter(cxt: Context, private val uas: ArrayList<UserAgent>) :
}
val ua = uas[position]
viewHolder.textView.text = ua.account.aor.split(":")[1]
viewHolder.textView.text = if (ua.account.nickName != "")
ua.account.nickName
else
ua.account.aor.split(":")[1]
viewHolder.textView.textSize = 17f
if (BaresipService.uas.size > 1 && ua.calls().isNotEmpty())
viewHolder.textView.setTypeface(null, Typeface.BOLD)

View File

@ -26,6 +26,24 @@
android:text="" >
</TextView>
<TextView
android:id="@+id/NickNameTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/account_nickname" >
</TextView>
<EditText
android:id="@+id/NickName"
android:layout_height="wrap_content"
android:hint="@string/nickname"
android:inputType="textPersonName|textCapWords"
android:textSize="18sp"
android:autofillHints="name"
android:layout_width="fill_parent">
</EditText>
<TextView
android:id="@+id/DisplayNameTitle"
android:layout_width="wrap_content"

View File

@ -92,6 +92,12 @@
</string>
<!-- Account Activity -->
<string name="account">Tili</string>
<string name="account_nickname">Tilin lempinimi</string>
<string name="account_nickname_help">Lempinimi (jos annettu) millä tämä tili identifioidaan
baresip sovelluksessa.</string>
<string name="nickname">Tilin lempinimi</string>
<string name="invalid_account_nickname">Virheellinen tilin lempinimi \'%1$s\'</string>
<string name="non_unique_account_nickname">Lempinimi \'%1$s\' on jo olemassa</string>
<string name="display_name">Tilin käyttäjän nimi</string>
<string name="your_name">Tilin käyttäjän nimi</string>
<string name="display_name_help">Tilin käyttäjän nimi, joka esiintyy

View File

@ -101,6 +101,12 @@
</string>
<!-- Account Activity -->
<string name="account">Account</string>
<string name="account_nickname">Account Nickname</string>
<string name="account_nickname_help">Nickname (if any) used to identify this account within
baresip app.</string>
<string name="nickname">Nickname of Account</string>
<string name="invalid_account_nickname">Invalid Account Nickname \'%1$s\'</string>
<string name="non_unique_account_nickname">Nickname \'%1$s\' already exists</string>
<string name="display_name">Display Name</string>
<string name="your_name">Your Name</string>
<string name="display_name_help">Name (if any) used in From URI of outbound requests.</string>