Code cleanup

This commit is contained in:
Sylvain Berfini 2023-09-11 17:09:51 +02:00
parent e3022f42ab
commit 036301e34f
58 changed files with 85 additions and 486 deletions

View file

@ -105,6 +105,7 @@ dependencies {
implementation platform('com.google.firebase:firebase-bom:32.2.3') implementation platform('com.google.firebase:firebase-bom:32.2.3')
implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-messaging'
//noinspection GradleDynamicVersion
implementation 'org.linphone:linphone-sdk-android:5.3+' implementation 'org.linphone:linphone-sdk-android:5.3+'
} }

View file

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
@ -41,8 +46,7 @@
<activity <activity
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
android:windowSoftInputMode="adjustResize" android:windowSoftInputMode="adjustResize"
android:exported="true" android:exported="true">
android:label="@string/app_name">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View file

@ -34,7 +34,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
val notificationId = intent.getIntExtra(NotificationsManager.INTENT_NOTIF_ID, 0) val notificationId = intent.getIntExtra(NotificationsManager.INTENT_NOTIF_ID, 0)
Log.i( Log.i(
"[Notification Broadcast Receiver] Got notification broadcast for ID [$notificationId]" "$TAG Got notification broadcast for ID [$notificationId]"
) )
if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION || intent.action == NotificationsManager.INTENT_HANGUP_CALL_NOTIF_ACTION) { if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION || intent.action == NotificationsManager.INTENT_HANGUP_CALL_NOTIF_ACTION) {
@ -45,14 +45,14 @@ class NotificationBroadcastReceiver : BroadcastReceiver() {
private fun handleCallIntent(intent: Intent) { private fun handleCallIntent(intent: Intent) {
val callId = intent.getStringExtra(NotificationsManager.INTENT_CALL_ID) val callId = intent.getStringExtra(NotificationsManager.INTENT_CALL_ID)
if (callId == null) { if (callId == null) {
Log.e("[Notification Broadcast Receiver] Remote SIP address is null for notification") Log.e("$TAG Remote SIP address is null for notification")
return return
} }
coreContext.postOnCoreThread { core -> coreContext.postOnCoreThread { core ->
val call = core.getCallByCallid(callId) val call = core.getCallByCallid(callId)
if (call == null) { if (call == null) {
Log.e("[Notification Broadcast Receiver] Couldn't find call from ID [$callId]") Log.e("$TAG Couldn't find call from ID [$callId]")
} else { } else {
if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION) { if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION) {
coreContext.answerCall(call) coreContext.answerCall(call)

View file

@ -22,8 +22,6 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) {
val avatarModel: ContactAvatarModel val avatarModel: ContactAvatarModel
val isOutgoing = MutableLiveData<Boolean>()
@IntegerRes @IntegerRes
val iconResId = MutableLiveData<Int>() val iconResId = MutableLiveData<Int>()
@ -34,8 +32,6 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) {
var friendExists: Boolean = false var friendExists: Boolean = false
init { init {
isOutgoing.postValue(callLog.dir == Dir.Outgoing)
val timestamp = timestamp val timestamp = timestamp
val displayedDate = if (TimestampUtils.isToday(timestamp)) { val displayedDate = if (TimestampUtils.isToday(timestamp)) {
TimestampUtils.timeToString(timestamp) TimestampUtils.timeToString(timestamp)

View file

@ -134,11 +134,11 @@ class ContactViewModel @UiThread constructor() : ViewModel() {
val organization = friend.organization val organization = friend.organization
if (!organization.isNullOrEmpty()) { if (!organization.isNullOrEmpty()) {
company.postValue(organization) company.postValue(organization!!)
} }
val jobTitle = friend.jobTitle val jobTitle = friend.jobTitle
if (!jobTitle.isNullOrEmpty()) { if (!jobTitle.isNullOrEmpty()) {
title.postValue(jobTitle) title.postValue(jobTitle!!)
} }
val addressesAndNumbers = friend.getListOfSipAddressesAndPhoneNumbers(listener) val addressesAndNumbers = friend.getListOfSipAddressesAndPhoneNumbers(listener)

View file

@ -79,8 +79,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
applyFilter( applyFilter(
currentFilter, currentFilter,
if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "", if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "",
MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt(), MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt()
MagicSearch.Aggregation.Friend
) )
} }
} }
@ -180,8 +179,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
applyFilter( applyFilter(
filter, filter,
if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "", if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "",
MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt(), MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt()
MagicSearch.Aggregation.Friend
) )
} }
} }
@ -217,8 +215,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
private fun applyFilter( private fun applyFilter(
filter: String, filter: String,
domain: String, domain: String,
sources: Int, sources: Int
aggregation: MagicSearch.Aggregation
) { ) {
if (previousFilter.isNotEmpty() && ( if (previousFilter.isNotEmpty() && (
previousFilter.length > filter.length || previousFilter.length > filter.length ||
@ -237,7 +234,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel()
filter, filter,
domain, domain,
sources, sources,
aggregation MagicSearch.Aggregation.Friend
) )
} }

View file

@ -53,9 +53,6 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() {
MutableLiveData<Event<String>>() MutableLiveData<Event<String>>()
} }
init {
}
@UiThread @UiThread
override fun onCleared() { override fun onCleared() {
coreContext.postOnCoreThread { coreContext.postOnCoreThread {

View file

@ -37,10 +37,6 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() {
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val navigateToConversationsEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
val navigateToCallsEvent: MutableLiveData<Event<Boolean>> by lazy { val navigateToCallsEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }

View file

@ -34,7 +34,6 @@ import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.window.layout.FoldingFeature import androidx.window.layout.FoldingFeature
import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowInfoTracker
import androidx.window.layout.WindowLayoutInfo import androidx.window.layout.WindowLayoutInfo

View file

@ -19,6 +19,7 @@
*/ */
package org.linphone.ui.voip.fragment package org.linphone.ui.voip.fragment
import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.os.SystemClock import android.os.SystemClock
import android.view.LayoutInflater import android.view.LayoutInflater
@ -186,6 +187,7 @@ class ActiveCallFragment : GenericCallFragment() {
}) })
} }
@SuppressLint("ClickableViewAccessibility")
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
@ -196,6 +198,7 @@ class ActiveCallFragment : GenericCallFragment() {
} }
} }
@SuppressLint("ClickableViewAccessibility")
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
binding.localPreviewVideoSurface.setOnTouchListener(null) binding.localPreviewVideoSurface.setOnTouchListener(null)

View file

@ -27,7 +27,7 @@ import org.linphone.core.tools.Log
import org.linphone.utils.Event import org.linphone.utils.Event
class ZrtpSasConfirmationDialogModel @UiThread constructor( class ZrtpSasConfirmationDialogModel @UiThread constructor(
private val authTokenToRead: String, authTokenToRead: String,
private val authTokenToListen: String private val authTokenToListen: String
) : ViewModel() { ) : ViewModel() {
companion object { companion object {

View file

@ -37,6 +37,7 @@ import org.linphone.ui.assistant.AssistantActivity
import org.linphone.ui.welcome.fragment.WelcomePage1Fragment import org.linphone.ui.welcome.fragment.WelcomePage1Fragment
import org.linphone.ui.welcome.fragment.WelcomePage2Fragment import org.linphone.ui.welcome.fragment.WelcomePage2Fragment
import org.linphone.ui.welcome.fragment.WelcomePage3Fragment import org.linphone.ui.welcome.fragment.WelcomePage3Fragment
import org.linphone.utils.AppUtils
class WelcomeActivity : AppCompatActivity() { class WelcomeActivity : AppCompatActivity() {
companion object { companion object {
@ -112,10 +113,10 @@ class WelcomeActivity : AppCompatActivity() {
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
Log.i("$TAG Current page is [$position]") Log.i("$TAG Current page is [$position]")
if (position == PAGES - 1) { if (position == PAGES - 1) {
binding.next.text = "Start" binding.next.text = AppUtils.getString(R.string.start)
binding.skip.visibility = View.INVISIBLE binding.skip.visibility = View.INVISIBLE
} else { } else {
binding.next.text = "Next" binding.next.text = AppUtils.getString(R.string.next)
binding.skip.visibility = View.VISIBLE binding.skip.visibility = View.VISIBLE
} }
} }

View file

@ -36,7 +36,6 @@ import androidx.annotation.ColorRes
import androidx.annotation.UiThread import androidx.annotation.UiThread
import androidx.appcompat.widget.AppCompatEditText import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatTextView import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
@ -308,14 +307,6 @@ fun AppCompatEditText.editTextSetting(lambda: () -> Unit) {
}) })
} }
@BindingAdapter("android:layout_marginBottom")
fun setConstraintLayoutBottomMargin(view: View, margins: Float) {
val params = view.layoutParams as ConstraintLayout.LayoutParams
val m = margins.toInt()
params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, m)
view.layoutParams = params
}
@BindingAdapter("focusNextOnInput") @BindingAdapter("focusNextOnInput")
fun focusNextOnInput(editText: EditText, enabled: Boolean) { fun focusNextOnInput(editText: EditText, enabled: Boolean) {
if (!enabled) return if (!enabled) return

View file

@ -136,14 +136,17 @@ class FileUtils {
try { try {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
FileOutputStream(to).use { outputStream -> FileOutputStream(to).use { outputStream ->
val inputStream = FileInputStream( val fileDescriptor = coreContext.context.contentResolver.openFileDescriptor(
coreContext.context.contentResolver.openFileDescriptor(from, "r")?.fileDescriptor from,
"r"
) )
val inputStream = FileInputStream(fileDescriptor?.fileDescriptor)
val buffer = ByteArray(4096) val buffer = ByteArray(4096)
var bytesRead: Int var bytesRead: Int
while (inputStream.read(buffer).also { bytesRead = it } >= 0) { while (inputStream.read(buffer).also { bytesRead = it } >= 0) {
outputStream.write(buffer, 0, bytesRead) outputStream.write(buffer, 0, bytesRead)
} }
fileDescriptor?.close()
} }
} }
return true return true

View file

@ -19,13 +19,16 @@
*/ */
package org.linphone.utils package org.linphone.utils
import android.Manifest
import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothAdapter
import android.content.Context import android.content.Context
import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import android.provider.Settings import android.provider.Settings
import androidx.annotation.AnyThread import androidx.annotation.AnyThread
import androidx.annotation.IntegerRes import androidx.annotation.IntegerRes
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread
import androidx.core.app.ActivityCompat
import androidx.emoji2.text.EmojiCompat import androidx.emoji2.text.EmojiCompat
import java.util.Locale import java.util.Locale
import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.coreContext
@ -35,7 +38,6 @@ import org.linphone.core.Address
import org.linphone.core.Call import org.linphone.core.Call
import org.linphone.core.Call.Dir import org.linphone.core.Call.Dir
import org.linphone.core.Call.Status import org.linphone.core.Call.Status
import org.linphone.core.ChatRoom
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
class LinphoneUtils { class LinphoneUtils {
@ -145,20 +147,6 @@ class LinphoneUtils {
} }
} }
@WorkerThread
private fun getChatRoomId(localAddress: Address, remoteAddress: Address): String {
val localSipUri = localAddress.clone()
localSipUri.clean()
val remoteSipUri = remoteAddress.clone()
remoteSipUri.clean()
return "${localSipUri.asStringUriOnly()}~${remoteSipUri.asStringUriOnly()}"
}
@WorkerThread
fun getChatRoomId(chatRoom: ChatRoom): String {
return getChatRoomId(chatRoom.localAddress, chatRoom.peerAddress)
}
@AnyThread @AnyThread
fun getDeviceName(context: Context): String { fun getDeviceName(context: Context): String {
var name = Settings.Global.getString( var name = Settings.Global.getString(
@ -166,9 +154,15 @@ class LinphoneUtils {
Settings.Global.DEVICE_NAME Settings.Global.DEVICE_NAME
) )
if (name == null) { if (name == null) {
if (ActivityCompat.checkSelfPermission(
context,
Manifest.permission.BLUETOOTH_CONNECT
) == PackageManager.PERMISSION_GRANTED
) {
val adapter = BluetoothAdapter.getDefaultAdapter() val adapter = BluetoothAdapter.getDefaultAdapter()
name = adapter?.name name = adapter?.name
} }
}
if (name == null) { if (name == null) {
name = Settings.Secure.getString( name = Settings.Secure.getString(
context.contentResolver, context.contentResolver,

View file

@ -44,23 +44,6 @@ class TimestampUtils {
return isSameDay(cal, yesterday) return isSameDay(cal, yesterday)
} }
@AnyThread
fun isSameDay(timestamp1: Long, timestamp2: Long, timestampInSecs: Boolean = true): Boolean {
val cal1 = Calendar.getInstance()
cal1.timeInMillis = if (timestampInSecs) timestamp1 * 1000 else timestamp1
val cal2 = Calendar.getInstance()
cal2.timeInMillis = if (timestampInSecs) timestamp2 * 1000 else timestamp2
return isSameDay(cal1, cal2)
}
@AnyThread
fun isSameDay(
cal1: Date,
cal2: Date
): Boolean {
return isSameDay(cal1.time, cal2.time, false)
}
@AnyThread @AnyThread
fun dateToString(date: Long, timestampInSecs: Boolean = true): String { fun dateToString(date: Long, timestampInSecs: Boolean = true): String {
val dateFormat: Format = android.text.format.DateFormat.getDateFormat( val dateFormat: Format = android.text.format.DateFormat.getDateFormat(
@ -77,22 +60,6 @@ class TimestampUtils {
return dateFormatter.format(calendar.time) return dateFormatter.format(calendar.time)
} }
@AnyThread
fun timeToString(hour: Int, minutes: Int): String {
val use24hFormat = android.text.format.DateFormat.is24HourFormat(
coreContext.context
)
val calendar = Calendar.getInstance()
calendar.set(Calendar.HOUR_OF_DAY, hour)
calendar.set(Calendar.MINUTE, minutes)
return if (use24hFormat) {
SimpleDateFormat("HH'h'mm", Locale.getDefault()).format(calendar.time)
} else {
SimpleDateFormat("h:mm a", Locale.getDefault()).format(calendar.time)
}
}
@AnyThread @AnyThread
fun timeToString(time: Long, timestampInSecs: Boolean = true): String { fun timeToString(time: Long, timestampInSecs: Boolean = true): String {
val use24hFormat = android.text.format.DateFormat.is24HourFormat( val use24hFormat = android.text.format.DateFormat.is24HourFormat(
@ -119,21 +86,6 @@ class TimestampUtils {
return dateFormat.format(cal.time) return dateFormat.format(cal.time)
} }
@AnyThread
fun durationToString(hours: Int, minutes: Int): String {
val calendar = Calendar.getInstance()
calendar.set(Calendar.HOUR_OF_DAY, hours)
calendar.set(Calendar.MINUTE, minutes)
val pattern = when {
hours == 0 -> "mm'min'"
hours < 10 && minutes == 0 -> "H'h'"
hours < 10 && minutes > 0 -> "H'h'mm"
hours >= 10 && minutes == 0 -> "HH'h'"
else -> "HH'h'mm"
}
return SimpleDateFormat(pattern, Locale.getDefault()).format(calendar.time)
}
@AnyThread @AnyThread
private fun isSameYear(timestamp: Long, timestampInSecs: Boolean = true): Boolean { private fun isSameYear(timestamp: Long, timestampInSecs: Boolean = true): Boolean {
val cal = Calendar.getInstance() val cal = Calendar.getInstance()

View file

@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View file

@ -1,21 +0,0 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="vector"
android:width="38dp"
android:height="36dp"
android:viewportWidth="38"
android:viewportHeight="36">
<group android:name="group">
<path
android:name="path"
android:pathData="M 25 0 C 21.554 0 18.245 1.371 15.808 3.808 C 13.371 6.245 12 9.554 12 13 C 12 16.446 13.371 19.755 15.808 22.192 C 18.245 24.629 21.554 26 25 26 C 28.446 26 31.755 24.629 34.192 22.192 C 36.629 19.755 38 16.446 38 13 C 38 9.554 36.629 6.245 34.192 3.808 C 31.755 1.371 28.446 0 25 0 Z"
android:fillColor="#6C7A87"
android:strokeWidth="1"/>
<path
android:name="path_1"
android:pathData="M 13 11 C 9.819 11 6.764 12.265 4.515 14.515 C 2.265 16.764 1 19.819 1 23 C 1 26.181 2.265 29.236 4.515 31.485 C 6.764 33.735 9.819 35 13 35 C 16.181 35 19.236 33.735 21.485 31.485 C 23.735 29.236 25 26.181 25 23 C 25 19.819 23.735 16.764 21.485 14.515 C 19.236 12.265 16.181 11 13 11 Z"
android:fillColor="#6C7A87"
android:strokeColor="#fafeff"
android:strokeWidth="2"/>
</group>
</vector>

View file

@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View file

@ -1,13 +0,0 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="vector"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:name="path"
android:pathData="M 5 7.586 L 9.596 2.99 L 10.303 3.696 L 5 9 L 1.818 5.818 L 2.525 5.111 L 5 7.586 Z"
android:fillColor="#fe5e00"
android:strokeWidth="1"/>
</vector>

View file

@ -1,13 +0,0 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="vector"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:name="path"
android:pathData="M 5.801 6.88 L 6.507 7.586 L 10.74 3.353 L 11.447 4.06 L 6.507 9 L 3.325 5.818 L 4.032 5.111 L 5.095 6.173 L 5.801 6.879 L 5.801 6.88 Z M 5.802 5.466 L 8.278 2.989 L 8.983 3.694 L 6.507 6.171 L 5.802 5.466 Z M 4.388 8.293 L 3.682 9 L 0.5 5.818 L 1.207 5.111 L 1.913 5.817 L 1.913 5.818 L 4.388 8.293 Z"
android:fillColor="#FF5E00"
android:strokeWidth="1"/>
</vector>

View file

@ -1,13 +0,0 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="vector"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:name="path"
android:pathData="M 10 2 L 2 2 C 1.45 2 1 2.45 1 3 L 1 9 C 1 9.55 1.45 10 2 10 L 6.5 10 L 6.5 9 L 2 9 L 2 4 L 6 6.5 L 10 4 L 10 6.5 L 11 6.5 L 11 3 C 11 2.45 10.55 2 10 2 Z M 6 5.5 L 2 3 L 10 3 L 6 5.5 Z M 9.5 7.5 L 11.5 9.5 L 9.5 11.5 L 9.5 10 L 7.5 10 L 7.5 9 L 9.5 9 L 9.5 7.5 Z"
android:fillColor="#6c7a87"
android:strokeWidth="1"/>
</vector>

View file

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="256"
android:viewportHeight="256">
<path
android:pathData="M128,24A104,104 0,1 0,232 128,104.11 104.11,0 0,0 128,24ZM128,216a88,88 0,1 1,88 -88A88.1,88.1 0,0 1,128 216ZM144,176a8,8 0,0 1,-8 8,16 16,0 0,1 -16,-16L120,128a8,8 0,0 1,0 -16,16 16,0 0,1 16,16v40A8,8 0,0 1,144 176ZM112,84a12,12 0,1 1,12 12A12,12 0,0 1,112 84Z"
android:fillColor="#4e6074"/>
</vector>

View file

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="256"
android:viewportHeight="256">
<path
android:pathData="M224,128a8,8 0,0 1,-8 8H40a8,8 0,0 1,0 -16H216A8,8 0,0 1,224 128ZM40,72H216a8,8 0,0 0,0 -16H40a8,8 0,0 0,0 16ZM216,184H40a8,8 0,0 0,0 16H216a8,8 0,0 0,0 -16Z"
android:fillColor="#4e6074"/>
</vector>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/primary_color"/>
<size android:width="14dp" android:height="14dp"/>
</shape>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topLeftRadius="30dp" android:topRightRadius="30dp" />
<solid android:color="@color/gray_7"/>
</shape>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topRightRadius="16dp" android:bottomLeftRadius="16dp" android:bottomRightRadius="16dp" />
<solid android:color="@color/gray_incoming_message"/>
</shape>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topLeftRadius="16dp" android:topRightRadius="16dp" android:bottomLeftRadius="16dp" />
<solid android:color="@color/blue_outgoing_message"/>
</shape>

View file

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="50dp" />
<solid android:color="@color/white"/>
</shape>

View file

@ -1,31 +0,0 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="vector"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group android:name="group_1">
<path
android:name="path_2"
android:pathData="M 12 22 L 12 18.839"
android:fillColor="#000"
android:fillAlpha="0"
android:strokeColor="#6c7a87"
android:strokeWidth="1"/>
<path
android:name="path_3"
android:pathData="M 12 14.848 C 9.757 14.848 7.938 13.022 7.938 10.768 L 7.938 6.081 C 7.938 3.827 9.757 2 12 2 C 14.244 2 16.062 3.827 16.062 6.081 L 16.062 10.768 C 16.062 13.022 14.244 14.848 12 14.848 Z"
android:fillColor="#000"
android:fillAlpha="0"
android:strokeColor="#6c7a87"
android:strokeWidth="1"/>
<path
android:name="path_4"
android:pathData="M 20 10.801 C 20 15.239 16.419 18.838 11.999 18.838 C 7.581 18.838 4 15.239 4 10.801"
android:fillColor="#000"
android:fillAlpha="0"
android:strokeColor="#6c7a87"
android:strokeWidth="1"/>
</group>
</vector>

View file

@ -63,7 +63,7 @@
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo." android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo."
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:textSize="14sp" android:textSize="14sp"
android:gravity="left" android:gravity="start"
app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintTop_toBottomOf="@id/page_title"
app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -63,7 +63,7 @@
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo." android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo."
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:textSize="14sp" android:textSize="14sp"
android:gravity="left" android:gravity="start"
app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintTop_toBottomOf="@id/page_title"
app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -63,7 +63,7 @@
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo." android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas commodo augue ut dictum. Fusce egestas tellus ut velit pulvinar commodo."
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:textSize="14sp" android:textSize="14sp"
android:gravity="left" android:gravity="start"
app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintTop_toBottomOf="@id/page_title"
app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -17,6 +17,7 @@
android:id="@+id/country_prefix" android:id="@+id/country_prefix"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingLeft="5dp" /> android:paddingStart="5dp"
android:paddingEnd="5dp" />
</LinearLayout> </LinearLayout>

View file

@ -36,7 +36,7 @@
android:layout_margin="10dp"> android:layout_margin="10dp">
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:layout_toLeftOf="@id/clear_field" android:layout_toStartOf="@id/clear_field"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/assistant_country_picker_hint"> android:hint="@string/assistant_country_picker_hint">
@ -57,7 +57,7 @@
android:onClick="@{() -> searchCountry.setText(``)}" android:onClick="@{() -> searchCountry.setText(``)}"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_alignParentRight="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:paddingLeft="5dp" android:paddingLeft="5dp"
android:paddingRight="5dp" android:paddingRight="5dp"
@ -81,7 +81,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/cancel" android:text="@string/cancel"
android:gravity="right" /> android:gravity="end" />
</LinearLayout> </LinearLayout>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -171,7 +171,8 @@
android:drawablePadding="10dp" android:drawablePadding="10dp"
app:layout_constraintTop_toTopOf="@id/phone_number" app:layout_constraintTop_toTopOf="@id/phone_number"
app:layout_constraintBottom_toBottomOf="@id/phone_number" app:layout_constraintBottom_toBottomOf="@id/phone_number"
app:layout_constraintStart_toStartOf="@id/username" /> app:layout_constraintStart_toStartOf="@id/username"
bind:ignore="RtlSymmetry" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600" style="@style/default_text_style_600"

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -38,7 +38,7 @@
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:gravity="left|center_vertical" android:gravity="start|center_vertical"
android:text="@string/menu_add_address_to_contacts" android:text="@string/menu_add_address_to_contacts"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_1" android:textColor="@color/gray_1"
@ -61,7 +61,7 @@
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:gravity="left|center_vertical" android:gravity="start|center_vertical"
android:text="@string/menu_see_existing_contact" android:text="@string/menu_see_existing_contact"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_1" android:textColor="@color/gray_1"
@ -82,7 +82,7 @@
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:gravity="left|center_vertical" android:gravity="start|center_vertical"
android:text="@string/menu_copy_sip_address" android:text="@string/menu_copy_sip_address"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_1" android:textColor="@color/gray_1"
@ -104,7 +104,7 @@
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:gravity="left|center_vertical" android:gravity="start|center_vertical"
android:text="@string/menu_delete_history" android:text="@string/menu_delete_history"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/red_danger" android:textColor="@color/red_danger"

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:bind="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>

View file

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout <layout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto" <layout xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />

View file

@ -131,7 +131,7 @@
style="@style/in_call_extra_action_label_style" style="@style/in_call_extra_action_label_style"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Transfer" android:text="@string/voip_action_call_transfer"
app:layout_constraintTop_toBottomOf="@id/transfer" app:layout_constraintTop_toBottomOf="@id/transfer"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/new_call_label"/> app:layout_constraintEnd_toStartOf="@id/new_call_label"/>
@ -141,7 +141,7 @@
style="@style/in_call_extra_action_label_style" style="@style/in_call_extra_action_label_style"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="New call" android:text="@string/voip_action_start_new_call"
app:layout_constraintTop_toBottomOf="@id/new_call" app:layout_constraintTop_toBottomOf="@id/new_call"
app:layout_constraintStart_toEndOf="@id/transfer_label" app:layout_constraintStart_toEndOf="@id/transfer_label"
app:layout_constraintEnd_toStartOf="@id/calls_list_label" /> app:layout_constraintEnd_toStartOf="@id/calls_list_label" />
@ -151,7 +151,7 @@
style="@style/in_call_extra_action_label_style" style="@style/in_call_extra_action_label_style"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Call list" android:text="@string/voip_action_go_to_calls_list"
app:layout_constraintTop_toBottomOf="@id/calls_list" app:layout_constraintTop_toBottomOf="@id/calls_list"
app:layout_constraintStart_toEndOf="@id/new_call_label" app:layout_constraintStart_toEndOf="@id/new_call_label"
app:layout_constraintEnd_toStartOf="@id/dialer_label" /> app:layout_constraintEnd_toStartOf="@id/dialer_label" />
@ -161,7 +161,7 @@
style="@style/in_call_extra_action_label_style" style="@style/in_call_extra_action_label_style"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Dialer" android:text="@string/voip_action_show_dialer"
app:layout_constraintTop_toBottomOf="@id/dialer" app:layout_constraintTop_toBottomOf="@id/dialer"
app:layout_constraintStart_toEndOf="@id/calls_list_label" app:layout_constraintStart_toEndOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
@ -172,7 +172,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="15dp" android:paddingBottom="15dp"
android:text="Messages" android:text="@string/voip_action_show_messages"
app:layout_constraintTop_toBottomOf="@id/chat" app:layout_constraintTop_toBottomOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/transfer_label" app:layout_constraintStart_toStartOf="@id/transfer_label"
app:layout_constraintEnd_toEndOf="@id/transfer_label" /> app:layout_constraintEnd_toEndOf="@id/transfer_label" />
@ -183,7 +183,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="15dp" android:paddingBottom="15dp"
android:text="Pause call" android:text="@string/voip_action_pause_call"
app:layout_constraintTop_toBottomOf="@id/pause_call" app:layout_constraintTop_toBottomOf="@id/pause_call"
app:layout_constraintStart_toStartOf="@id/new_call_label" app:layout_constraintStart_toStartOf="@id/new_call_label"
app:layout_constraintEnd_toEndOf="@id/new_call_label" /> app:layout_constraintEnd_toEndOf="@id/new_call_label" />
@ -194,7 +194,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="15dp" android:paddingBottom="15dp"
android:text="Record" android:text="@string/voip_action_record_call"
app:layout_constraintTop_toBottomOf="@id/record_call" app:layout_constraintTop_toBottomOf="@id/record_call"
app:layout_constraintStart_toStartOf="@id/calls_list_label" app:layout_constraintStart_toStartOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="@id/calls_list_label" /> app:layout_constraintEnd_toEndOf="@id/calls_list_label" />

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--suppress ALL -->
<navigation xmlns:android="http://schemas.android.com/apk/res/android" <navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--suppress ALL -->
<navigation xmlns:android="http://schemas.android.com/apk/res/android" <navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--suppress ALL -->
<navigation xmlns:android="http://schemas.android.com/apk/res/android" <navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"

View file

@ -1,4 +1,4 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources>
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="Theme.Linphone" parent="Theme.Material3.DayNight.NoActionBar"> <style name="Theme.Linphone" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Primary brand color. --> <!-- Primary brand color. -->

View file

@ -10,9 +10,7 @@
<color name="white">#FFFFFF</color> <color name="white">#FFFFFF</color>
<color name="red_danger">#DD5F5F</color> <color name="red_danger">#DD5F5F</color>
<color name="green_online">#4FAE80</color> <color name="green_online">#4FAE80</color>
<color name="blue_filter">#09C5F4</color>
<color name="blue_outgoing_message">#DFECF2</color> <color name="blue_outgoing_message">#DFECF2</color>
<color name="gray_incoming_message">#F4F4F7</color>
<color name="blue_trusted">#4AA8FF</color> <color name="blue_trusted">#4AA8FF</color>
<color name="orange_away">#FFA645</color> <color name="orange_away">#FFA645</color>
<color name="gray_offline">#E1E1E1</color> <color name="gray_offline">#E1E1E1</color>

View file

@ -23,14 +23,12 @@
<string name="phone_number">Phone number</string> <string name="phone_number">Phone number</string>
<string name="or">or</string> <string name="or">or</string>
<string name="next">next</string> <string name="next">next</string>
<string name="start">Start</string>
<string name="notification_channel_call_name">&appName; active calls notifications</string> <string name="notification_channel_call_name">&appName; active calls notifications</string>
<string name="notification_channel_incoming_call_name">&appName; incoming calls notifications</string> <string name="notification_channel_incoming_call_name">&appName; incoming calls notifications</string>
<string name="notification_channel_service_name">&appName; service notification</string> <string name="notification_channel_service_name">&appName; service notification</string>
<string name="incoming_call_notification_hangup_action_label">Hangup</string>
<string name="incoming_call_notification_answer_action_label">Answer</string>
<string name="bottom_navigation_contacts_label">Contacts</string> <string name="bottom_navigation_contacts_label">Contacts</string>
<string name="bottom_navigation_calls_label">Calls</string> <string name="bottom_navigation_calls_label">Calls</string>
<string name="bottom_navigation_conversations_label">Conversations</string> <string name="bottom_navigation_conversations_label">Conversations</string>
@ -40,7 +38,7 @@
<string name="dialog_accept">Accept</string> <string name="dialog_accept">Accept</string>
<string name="dialog_cancel">Cancel</string> <string name="dialog_cancel">Cancel</string>
<string name="dialog_continue">Continue</string> <string name="dialog_continue">Continue</string>
<string name="dialog_ok">Ok</string> <string name="dialog_ok">OK</string>
<string name="dialog_call">Call</string> <string name="dialog_call">Call</string>
<string name="dialog_delete">Delete</string> <string name="dialog_delete">Delete</string>
<string name="dialog_do_not_show_anymore">Do not show this dialog anymore</string> <string name="dialog_do_not_show_anymore">Do not show this dialog anymore</string>
@ -163,6 +161,15 @@
<string name="operation_in_progress_overlay">Operation in progress, please wait</string> <string name="operation_in_progress_overlay">Operation in progress, please wait</string>
<string name="voip_action_call_transfer">Transfer</string>
<string name="voip_action_start_new_call">New call</string>
<string name="voip_action_go_to_calls_list">Calls list</string>
<string name="voip_action_show_dialer">Dialer</string>
<string name="voip_action_show_messages">Messages</string>
<string name="voip_action_pause_call">Pause</string>
<string name="voip_action_resume_call">Pause</string>
<string name="voip_action_record_call">Record</string>
<!-- Keep <u></u> in following strings translations! --> <!-- Keep <u></u> in following strings translations! -->
<string name="welcome_carousel_skip"><u>Skip</u></string> <string name="welcome_carousel_skip"><u>Skip</u></string>
<string name="assistant_forgotten_password"><u>Forgotten password?</u></string> <string name="assistant_forgotten_password"><u>Forgotten password?</u></string>

View file

@ -1,4 +1,4 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources>
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="Theme.Linphone" parent="Theme.Material3.DayNight.NoActionBar"> <style name="Theme.Linphone" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Primary brand color. --> <!-- Primary brand color. -->