diff --git a/app/build.gradle b/app/build.gradle index eee6d8f1b..ec07b39eb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,6 +105,7 @@ dependencies { implementation platform('com.google.firebase:firebase-bom:32.2.3') implementation 'com.google.firebase:firebase-messaging' + //noinspection GradleDynamicVersion implementation 'org.linphone:linphone-sdk-android:5.3+' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c03ae9398..62986a0b8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,11 @@ + + + @@ -41,8 +46,7 @@ + android:exported="true"> diff --git a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt index 3d4f14aab..faa7af7c4 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt @@ -28,13 +28,13 @@ import org.linphone.core.tools.Log class NotificationBroadcastReceiver : BroadcastReceiver() { companion object { - private const val TAG = "[NotificationBroadcastReceiver]" + private const val TAG = "[Notification Broadcast Receiver]" } override fun onReceive(context: Context, intent: Intent) { val notificationId = intent.getIntExtra(NotificationsManager.INTENT_NOTIF_ID, 0) 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) { @@ -45,14 +45,14 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { private fun handleCallIntent(intent: Intent) { val callId = intent.getStringExtra(NotificationsManager.INTENT_CALL_ID) 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 } coreContext.postOnCoreThread { core -> val call = core.getCallByCallid(callId) 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 { if (intent.action == NotificationsManager.INTENT_ANSWER_CALL_NOTIF_ACTION) { coreContext.answerCall(call) diff --git a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt index 2f978553f..5b3a0a26e 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/model/CallLogModel.kt @@ -22,8 +22,6 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { val avatarModel: ContactAvatarModel - val isOutgoing = MutableLiveData() - @IntegerRes val iconResId = MutableLiveData() @@ -34,8 +32,6 @@ class CallLogModel @WorkerThread constructor(private val callLog: CallLog) { var friendExists: Boolean = false init { - isOutgoing.postValue(callLog.dir == Dir.Outgoing) - val timestamp = timestamp val displayedDate = if (TimestampUtils.isToday(timestamp)) { TimestampUtils.timeToString(timestamp) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt index 135e22365..c66f62e0c 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt @@ -134,11 +134,11 @@ class ContactViewModel @UiThread constructor() : ViewModel() { val organization = friend.organization if (!organization.isNullOrEmpty()) { - company.postValue(organization) + company.postValue(organization!!) } val jobTitle = friend.jobTitle if (!jobTitle.isNullOrEmpty()) { - title.postValue(jobTitle) + title.postValue(jobTitle!!) } val addressesAndNumbers = friend.getListOfSipAddressesAndPhoneNumbers(listener) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index 3241485fa..28c9c628e 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -79,8 +79,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() applyFilter( currentFilter, if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "", - MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt(), - MagicSearch.Aggregation.Friend + MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt() ) } } @@ -180,8 +179,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() applyFilter( filter, if (limitSearchToLinphoneAccounts) corePreferences.defaultDomain else "", - MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt(), - MagicSearch.Aggregation.Friend + MagicSearch.Source.Friends.toInt() or MagicSearch.Source.LdapServers.toInt() ) } } @@ -217,8 +215,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() private fun applyFilter( filter: String, domain: String, - sources: Int, - aggregation: MagicSearch.Aggregation + sources: Int ) { if (previousFilter.isNotEmpty() && ( previousFilter.length > filter.length || @@ -237,7 +234,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractTopBarViewModel() filter, domain, sources, - aggregation + MagicSearch.Aggregation.Friend ) } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt index 1833ade73..e4e6394d1 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt @@ -53,9 +53,6 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } - init { - } - @UiThread override fun onCleared() { coreContext.postOnCoreThread { diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt index d5bf913f6..8f7d1d5d0 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt @@ -37,10 +37,6 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } - val navigateToConversationsEvent: MutableLiveData> by lazy { - MutableLiveData>() - } - val navigateToCallsEvent: MutableLiveData> by lazy { MutableLiveData>() } diff --git a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt index 2916370b5..b0e752f9a 100644 --- a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt +++ b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt @@ -34,7 +34,6 @@ import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController -import androidx.navigation.fragment.findNavController import androidx.window.layout.FoldingFeature import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowLayoutInfo diff --git a/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt b/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt index f1677fe84..a9a934fb1 100644 --- a/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt @@ -19,6 +19,7 @@ */ package org.linphone.ui.voip.fragment +import android.annotation.SuppressLint import android.os.Bundle import android.os.SystemClock import android.view.LayoutInflater @@ -186,6 +187,7 @@ class ActiveCallFragment : GenericCallFragment() { }) } + @SuppressLint("ClickableViewAccessibility") override fun onResume() { super.onResume() @@ -196,6 +198,7 @@ class ActiveCallFragment : GenericCallFragment() { } } + @SuppressLint("ClickableViewAccessibility") override fun onPause() { super.onPause() binding.localPreviewVideoSurface.setOnTouchListener(null) diff --git a/app/src/main/java/org/linphone/ui/voip/model/ZrtpSasConfirmationDialogModel.kt b/app/src/main/java/org/linphone/ui/voip/model/ZrtpSasConfirmationDialogModel.kt index 748b2552d..94c4043ca 100644 --- a/app/src/main/java/org/linphone/ui/voip/model/ZrtpSasConfirmationDialogModel.kt +++ b/app/src/main/java/org/linphone/ui/voip/model/ZrtpSasConfirmationDialogModel.kt @@ -27,7 +27,7 @@ import org.linphone.core.tools.Log import org.linphone.utils.Event class ZrtpSasConfirmationDialogModel @UiThread constructor( - private val authTokenToRead: String, + authTokenToRead: String, private val authTokenToListen: String ) : ViewModel() { companion object { diff --git a/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt b/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt index b8b8036ce..590366deb 100644 --- a/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt +++ b/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt @@ -37,6 +37,7 @@ import org.linphone.ui.assistant.AssistantActivity import org.linphone.ui.welcome.fragment.WelcomePage1Fragment import org.linphone.ui.welcome.fragment.WelcomePage2Fragment import org.linphone.ui.welcome.fragment.WelcomePage3Fragment +import org.linphone.utils.AppUtils class WelcomeActivity : AppCompatActivity() { companion object { @@ -112,10 +113,10 @@ class WelcomeActivity : AppCompatActivity() { override fun onPageSelected(position: Int) { Log.i("$TAG Current page is [$position]") if (position == PAGES - 1) { - binding.next.text = "Start" + binding.next.text = AppUtils.getString(R.string.start) binding.skip.visibility = View.INVISIBLE } else { - binding.next.text = "Next" + binding.next.text = AppUtils.getString(R.string.next) binding.skip.visibility = View.VISIBLE } } diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index 506fb4c4a..a97d57834 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -36,7 +36,6 @@ import androidx.annotation.ColorRes import androidx.annotation.UiThread import androidx.appcompat.widget.AppCompatEditText import androidx.appcompat.widget.AppCompatTextView -import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat 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") fun focusNextOnInput(editText: EditText, enabled: Boolean) { if (!enabled) return diff --git a/app/src/main/java/org/linphone/utils/FileUtils.kt b/app/src/main/java/org/linphone/utils/FileUtils.kt index 1b1a7fafd..27da4e78b 100644 --- a/app/src/main/java/org/linphone/utils/FileUtils.kt +++ b/app/src/main/java/org/linphone/utils/FileUtils.kt @@ -136,14 +136,17 @@ class FileUtils { try { withContext(Dispatchers.IO) { FileOutputStream(to).use { outputStream -> - val inputStream = FileInputStream( - coreContext.context.contentResolver.openFileDescriptor(from, "r")?.fileDescriptor + val fileDescriptor = coreContext.context.contentResolver.openFileDescriptor( + from, + "r" ) + val inputStream = FileInputStream(fileDescriptor?.fileDescriptor) val buffer = ByteArray(4096) var bytesRead: Int while (inputStream.read(buffer).also { bytesRead = it } >= 0) { outputStream.write(buffer, 0, bytesRead) } + fileDescriptor?.close() } } return true diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 7207340e4..e7ca8d065 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -19,13 +19,16 @@ */ package org.linphone.utils +import android.Manifest import android.bluetooth.BluetoothAdapter import android.content.Context +import android.content.pm.PackageManager import android.os.Build import android.provider.Settings import androidx.annotation.AnyThread import androidx.annotation.IntegerRes import androidx.annotation.WorkerThread +import androidx.core.app.ActivityCompat import androidx.emoji2.text.EmojiCompat import java.util.Locale 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.Dir import org.linphone.core.Call.Status -import org.linphone.core.ChatRoom import org.linphone.core.tools.Log 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 fun getDeviceName(context: Context): String { var name = Settings.Global.getString( @@ -166,8 +154,14 @@ class LinphoneUtils { Settings.Global.DEVICE_NAME ) if (name == null) { - val adapter = BluetoothAdapter.getDefaultAdapter() - name = adapter?.name + if (ActivityCompat.checkSelfPermission( + context, + Manifest.permission.BLUETOOTH_CONNECT + ) == PackageManager.PERMISSION_GRANTED + ) { + val adapter = BluetoothAdapter.getDefaultAdapter() + name = adapter?.name + } } if (name == null) { name = Settings.Secure.getString( diff --git a/app/src/main/java/org/linphone/utils/TimestampUtils.kt b/app/src/main/java/org/linphone/utils/TimestampUtils.kt index f9de688a3..f6f1747e6 100644 --- a/app/src/main/java/org/linphone/utils/TimestampUtils.kt +++ b/app/src/main/java/org/linphone/utils/TimestampUtils.kt @@ -44,23 +44,6 @@ class TimestampUtils { 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 fun dateToString(date: Long, timestampInSecs: Boolean = true): String { val dateFormat: Format = android.text.format.DateFormat.getDateFormat( @@ -77,22 +60,6 @@ class TimestampUtils { 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 fun timeToString(time: Long, timestampInSecs: Boolean = true): String { val use24hFormat = android.text.format.DateFormat.is24HourFormat( @@ -119,21 +86,6 @@ class TimestampUtils { 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 private fun isSameYear(timestamp: Long, timestampInSecs: Boolean = true): Boolean { val cal = Calendar.getInstance() diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d114..000000000 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/group_avatar.xml b/app/src/main/res/drawable/group_avatar.xml deleted file mode 100644 index 6e3f0c8d5..000000000 --- a/app/src/main/res/drawable/group_avatar.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9cb..000000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/imdn_delivered.xml b/app/src/main/res/drawable/imdn_delivered.xml deleted file mode 100644 index 5bbffa5a5..000000000 --- a/app/src/main/res/drawable/imdn_delivered.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/imdn_read.xml b/app/src/main/res/drawable/imdn_read.xml deleted file mode 100644 index fb9925687..000000000 --- a/app/src/main/res/drawable/imdn_read.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/imdn_sent.xml b/app/src/main/res/drawable/imdn_sent.xml deleted file mode 100644 index 2fc80f60e..000000000 --- a/app/src/main/res/drawable/imdn_sent.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/info.xml b/app/src/main/res/drawable/info.xml deleted file mode 100644 index 779c5996c..000000000 --- a/app/src/main/res/drawable/info.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/list.xml b/app/src/main/res/drawable/list.xml deleted file mode 100644 index 4a35bedf5..000000000 --- a/app/src/main/res/drawable/list.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/shape_conversation_cell_unread_count_background.xml b/app/src/main/res/drawable/shape_conversation_cell_unread_count_background.xml deleted file mode 100644 index 410653ffe..000000000 --- a/app/src/main/res/drawable/shape_conversation_cell_unread_count_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/shape_gray_background.xml b/app/src/main/res/drawable/shape_gray_background.xml deleted file mode 100644 index 54695a07c..000000000 --- a/app/src/main/res/drawable/shape_gray_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_received_message_bubble_background.xml b/app/src/main/res/drawable/shape_received_message_bubble_background.xml deleted file mode 100644 index 59dfa50a1..000000000 --- a/app/src/main/res/drawable/shape_received_message_bubble_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_sent_message_bubble_background.xml b/app/src/main/res/drawable/shape_sent_message_bubble_background.xml deleted file mode 100644 index b371c9e06..000000000 --- a/app/src/main/res/drawable/shape_sent_message_bubble_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_toast_background.xml b/app/src/main/res/drawable/shape_toast_background.xml deleted file mode 100644 index 3906225f0..000000000 --- a/app/src/main/res/drawable/shape_toast_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/voice_message.xml b/app/src/main/res/drawable/voice_message.xml deleted file mode 100644 index 17ba14020..000000000 --- a/app/src/main/res/drawable/voice_message.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/layout-land/welcome_page_1.xml b/app/src/main/res/layout-land/welcome_page_1.xml index 57cf422f5..ebe500512 100644 --- a/app/src/main/res/layout-land/welcome_page_1.xml +++ b/app/src/main/res/layout-land/welcome_page_1.xml @@ -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:textColor="@color/gray_9" android:textSize="14sp" - android:gravity="left" + android:gravity="start" app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/app/src/main/res/layout-land/welcome_page_2.xml b/app/src/main/res/layout-land/welcome_page_2.xml index 6362376c9..bd20d2c46 100644 --- a/app/src/main/res/layout-land/welcome_page_2.xml +++ b/app/src/main/res/layout-land/welcome_page_2.xml @@ -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:textColor="@color/gray_9" android:textSize="14sp" - android:gravity="left" + android:gravity="start" app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/app/src/main/res/layout-land/welcome_page_3.xml b/app/src/main/res/layout-land/welcome_page_3.xml index bdb535213..9f528113e 100644 --- a/app/src/main/res/layout-land/welcome_page_3.xml +++ b/app/src/main/res/layout-land/welcome_page_3.xml @@ -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:textColor="@color/gray_9" android:textSize="14sp" - android:gravity="left" + android:gravity="start" app:layout_constraintTop_toBottomOf="@id/page_title" app:layout_constraintStart_toStartOf="@id/page_title" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/app/src/main/res/layout/assistant_country_picker_cell.xml b/app/src/main/res/layout/assistant_country_picker_cell.xml index 0340845ef..d003a8e68 100644 --- a/app/src/main/res/layout/assistant_country_picker_cell.xml +++ b/app/src/main/res/layout/assistant_country_picker_cell.xml @@ -17,6 +17,7 @@ android:id="@+id/country_prefix" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="5dp" /> + android:paddingStart="5dp" + android:paddingEnd="5dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/assistant_country_picker_fragment.xml b/app/src/main/res/layout/assistant_country_picker_fragment.xml index da53fc54b..b35553d6a 100644 --- a/app/src/main/res/layout/assistant_country_picker_fragment.xml +++ b/app/src/main/res/layout/assistant_country_picker_fragment.xml @@ -36,7 +36,7 @@ android:layout_margin="10dp"> @@ -57,7 +57,7 @@ android:onClick="@{() -> searchCountry.setText(``)}" android:layout_width="30dp" android:layout_height="30dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:paddingLeft="5dp" android:paddingRight="5dp" @@ -81,7 +81,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/cancel" - android:gravity="right" /> + android:gravity="end" /> diff --git a/app/src/main/res/layout/assistant_login_fragment.xml b/app/src/main/res/layout/assistant_login_fragment.xml index db053e78d..d38a78c1e 100644 --- a/app/src/main/res/layout/assistant_login_fragment.xml +++ b/app/src/main/res/layout/assistant_login_fragment.xml @@ -1,7 +1,6 @@ + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/assistant_qr_code_scanner_fragment.xml b/app/src/main/res/layout/assistant_qr_code_scanner_fragment.xml index 3cb37546b..baec24a00 100644 --- a/app/src/main/res/layout/assistant_qr_code_scanner_fragment.xml +++ b/app/src/main/res/layout/assistant_qr_code_scanner_fragment.xml @@ -1,7 +1,6 @@ + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/assistant_register_fragment.xml b/app/src/main/res/layout/assistant_register_fragment.xml index f86e197b1..1573a3f0b 100644 --- a/app/src/main/res/layout/assistant_register_fragment.xml +++ b/app/src/main/res/layout/assistant_register_fragment.xml @@ -171,7 +171,8 @@ android:drawablePadding="10dp" app:layout_constraintTop_toTopOf="@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" /> + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/assistant_third_party_sip_account_warning_fragment.xml b/app/src/main/res/layout/assistant_third_party_sip_account_warning_fragment.xml index 4380054e7..4241b4f2f 100644 --- a/app/src/main/res/layout/assistant_third_party_sip_account_warning_fragment.xml +++ b/app/src/main/res/layout/assistant_third_party_sip_account_warning_fragment.xml @@ -1,7 +1,6 @@ + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/call_fragment.xml b/app/src/main/res/layout/call_fragment.xml index 51d6affaa..9202e7451 100644 --- a/app/src/main/res/layout/call_fragment.xml +++ b/app/src/main/res/layout/call_fragment.xml @@ -1,7 +1,6 @@ + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/call_popup_menu.xml b/app/src/main/res/layout/call_popup_menu.xml index f8824369b..8d08cbe06 100644 --- a/app/src/main/res/layout/call_popup_menu.xml +++ b/app/src/main/res/layout/call_popup_menu.xml @@ -38,7 +38,7 @@ android:layout_marginTop="20dp" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" - android:gravity="left|center_vertical" + android:gravity="start|center_vertical" android:text="@string/menu_add_address_to_contacts" android:textSize="14sp" android:textColor="@color/gray_1" @@ -61,7 +61,7 @@ android:layout_marginTop="20dp" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" - android:gravity="left|center_vertical" + android:gravity="start|center_vertical" android:text="@string/menu_see_existing_contact" android:textSize="14sp" android:textColor="@color/gray_1" @@ -82,7 +82,7 @@ android:layout_marginTop="15dp" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" - android:gravity="left|center_vertical" + android:gravity="start|center_vertical" android:text="@string/menu_copy_sip_address" android:textSize="14sp" android:textColor="@color/gray_1" @@ -104,7 +104,7 @@ android:layout_marginBottom="20dp" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" - android:gravity="left|center_vertical" + android:gravity="start|center_vertical" android:text="@string/menu_delete_history" android:textSize="14sp" android:textColor="@color/red_danger" diff --git a/app/src/main/res/layout/contact_fragment.xml b/app/src/main/res/layout/contact_fragment.xml index 93e1ca83a..30d946ab2 100644 --- a/app/src/main/res/layout/contact_fragment.xml +++ b/app/src/main/res/layout/contact_fragment.xml @@ -1,7 +1,6 @@ + xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/layout/drawer_menu.xml b/app/src/main/res/layout/drawer_menu.xml index 351dbb330..0b4366571 100644 --- a/app/src/main/res/layout/drawer_menu.xml +++ b/app/src/main/res/layout/drawer_menu.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/empty_fragment.xml b/app/src/main/res/layout/empty_fragment.xml index f1e8f3c96..2b5a61afd 100644 --- a/app/src/main/res/layout/empty_fragment.xml +++ b/app/src/main/res/layout/empty_fragment.xml @@ -1,7 +1,6 @@ + xmlns:android="http://schemas.android.com/apk/res/android"> diff --git a/app/src/main/res/layout/voip_audio_devices_menu.xml b/app/src/main/res/layout/voip_audio_devices_menu.xml index 98f66775a..5ab80e08c 100644 --- a/app/src/main/res/layout/voip_audio_devices_menu.xml +++ b/app/src/main/res/layout/voip_audio_devices_menu.xml @@ -1,6 +1,5 @@ - + diff --git a/app/src/main/res/layout/voip_call_extra_actions.xml b/app/src/main/res/layout/voip_call_extra_actions.xml index 0b36255c6..051c982ee 100644 --- a/app/src/main/res/layout/voip_call_extra_actions.xml +++ b/app/src/main/res/layout/voip_call_extra_actions.xml @@ -131,7 +131,7 @@ style="@style/in_call_extra_action_label_style" android:layout_width="0dp" android:layout_height="wrap_content" - android:text="Transfer" + android:text="@string/voip_action_call_transfer" app:layout_constraintTop_toBottomOf="@id/transfer" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/new_call_label"/> @@ -141,7 +141,7 @@ style="@style/in_call_extra_action_label_style" android:layout_width="0dp" 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_constraintStart_toEndOf="@id/transfer_label" app:layout_constraintEnd_toStartOf="@id/calls_list_label" /> @@ -151,7 +151,7 @@ style="@style/in_call_extra_action_label_style" android:layout_width="0dp" 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_constraintStart_toEndOf="@id/new_call_label" app:layout_constraintEnd_toStartOf="@id/dialer_label" /> @@ -161,7 +161,7 @@ style="@style/in_call_extra_action_label_style" android:layout_width="0dp" android:layout_height="wrap_content" - android:text="Dialer" + android:text="@string/voip_action_show_dialer" app:layout_constraintTop_toBottomOf="@id/dialer" app:layout_constraintStart_toEndOf="@id/calls_list_label" app:layout_constraintEnd_toEndOf="parent" /> @@ -172,7 +172,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:paddingBottom="15dp" - android:text="Messages" + android:text="@string/voip_action_show_messages" app:layout_constraintTop_toBottomOf="@id/chat" app:layout_constraintStart_toStartOf="@id/transfer_label" app:layout_constraintEnd_toEndOf="@id/transfer_label" /> @@ -183,7 +183,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:paddingBottom="15dp" - android:text="Pause call" + android:text="@string/voip_action_pause_call" app:layout_constraintTop_toBottomOf="@id/pause_call" app:layout_constraintStart_toStartOf="@id/new_call_label" app:layout_constraintEnd_toEndOf="@id/new_call_label" /> @@ -194,7 +194,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:paddingBottom="15dp" - android:text="Record" + android:text="@string/voip_action_record_call" app:layout_constraintTop_toBottomOf="@id/record_call" app:layout_constraintStart_toStartOf="@id/calls_list_label" app:layout_constraintEnd_toEndOf="@id/calls_list_label" /> diff --git a/app/src/main/res/layout/voip_call_main_actions.xml b/app/src/main/res/layout/voip_call_main_actions.xml index af9504f5d..67a8425fe 100644 --- a/app/src/main/res/layout/voip_call_main_actions.xml +++ b/app/src/main/res/layout/voip_call_main_actions.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/voip_incoming_call_bottom_bar.xml b/app/src/main/res/layout/voip_incoming_call_bottom_bar.xml index 37dc9e611..2bfa65b9d 100644 --- a/app/src/main/res/layout/voip_incoming_call_bottom_bar.xml +++ b/app/src/main/res/layout/voip_incoming_call_bottom_bar.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/main/res/mipmap-anydpi/ic_launcher.xml diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml similarity index 100% rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi/ic_launcher_round.xml diff --git a/app/src/main/res/navigation/calls_nav_graph.xml b/app/src/main/res/navigation/calls_nav_graph.xml index a0bad162e..2b9c229c0 100644 --- a/app/src/main/res/navigation/calls_nav_graph.xml +++ b/app/src/main/res/navigation/calls_nav_graph.xml @@ -1,4 +1,5 @@ + + + +