diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index ff2109764..000000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2291ac6fd..633f2b1eb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
tools:targetApi="34">
@@ -30,6 +30,14 @@
+
+
{
}
Log.i("[Contacts Loader] Load finished, found ${cursor.count} entries in cursor")
- val core = coreContext.core
- if (core.globalState == GlobalState.Shutdown || core.globalState == GlobalState.Off) {
+ val state = coreContext.core.globalState
+ if (state == GlobalState.Shutdown || state == GlobalState.Off) {
Log.w("[Contacts Loader] Core is being stopped or already destroyed, abort")
return
}
diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt
index ac0e2962b..3684b1be5 100644
--- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt
+++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt
@@ -22,7 +22,7 @@ package org.linphone.contacts
import androidx.loader.app.LoaderManager
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.core.Friend
-import org.linphone.ui.MainActivity
+import org.linphone.ui.main.MainActivity
class ContactsManager {
private val listeners = arrayListOf()
diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt
index d0bdd4c49..9a8c00f5b 100644
--- a/app/src/main/java/org/linphone/core/CoreContext.kt
+++ b/app/src/main/java/org/linphone/core/CoreContext.kt
@@ -21,6 +21,7 @@ package org.linphone.core
import android.annotation.SuppressLint
import android.content.Context
+import android.content.Intent
import android.os.Handler
import android.os.HandlerThread
import android.os.Looper
@@ -30,6 +31,7 @@ import org.linphone.BuildConfig
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.contacts.ContactsManager
import org.linphone.core.tools.Log
+import org.linphone.ui.voip.VoipActivity
class CoreContext(val context: Context) : HandlerThread("Core Thread") {
lateinit var core: Core
@@ -47,6 +49,18 @@ class CoreContext(val context: Context) : HandlerThread("Core Thread") {
override fun onGlobalStateChanged(core: Core, state: GlobalState, message: String) {
Log.i("[Context] Global state changed: $state")
}
+
+ override fun onCallStateChanged(
+ core: Core,
+ call: Call,
+ state: Call.State?,
+ message: String
+ ) {
+ Log.i("[Context] Call state changed [$state]")
+ if (state == Call.State.OutgoingProgress) {
+ showCallActivity()
+ }
+ }
}
init {
@@ -109,6 +123,67 @@ class CoreContext(val context: Context) : HandlerThread("Core Thread") {
}
}
+ fun startCall(
+ address: Address,
+ callParams: CallParams? = null,
+ forceZRTP: Boolean = false,
+ localAddress: Address? = null
+ ) {
+ if (!core.isNetworkReachable) {
+ Log.e("[Context] Network unreachable, abort outgoing call")
+ return
+ }
+
+ val params = callParams ?: core.createCallParams(null)
+ if (params == null) {
+ val call = core.inviteAddress(address)
+ Log.w("[Context] Starting call $call without params")
+ return
+ }
+
+ if (forceZRTP) {
+ params.mediaEncryption = MediaEncryption.ZRTP
+ }
+ /*if (LinphoneUtils.checkIfNetworkHasLowBandwidth(context)) {
+ Log.w("[Context] Enabling low bandwidth mode!")
+ params.isLowBandwidthEnabled = true
+ }
+ params.recordFile = LinphoneUtils.getRecordingFilePathForAddress(address)*/
+
+ if (localAddress != null) {
+ val account = core.accountList.find { account ->
+ account.params.identityAddress?.weakEqual(localAddress) ?: false
+ }
+ if (account != null) {
+ params.account = account
+ Log.i(
+ "[Context] Using account matching address ${localAddress.asStringUriOnly()} as From"
+ )
+ } else {
+ Log.e(
+ "[Context] Failed to find account matching address ${localAddress.asStringUriOnly()}"
+ )
+ }
+ }
+
+ /*if (corePreferences.sendEarlyMedia) {
+ params.isEarlyMediaSendingEnabled = true
+ }*/
+
+ val call = core.inviteAddressWithParams(address, params)
+ Log.i("[Context] Starting call $call")
+ }
+
+ private fun showCallActivity() {
+ Log.i("[Context] Starting VoIP activity")
+ val intent = Intent(context, VoipActivity::class.java)
+ // This flag is required to start an Activity from a Service context
+ intent.addFlags(
+ Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
+ )
+ context.startActivity(intent)
+ }
+
private fun computeUserAgent() {
// TODO FIXME
val deviceName: String = "Linphone6"
diff --git a/app/src/main/java/org/linphone/ui/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt
similarity index 99%
rename from app/src/main/java/org/linphone/ui/MainActivity.kt
rename to app/src/main/java/org/linphone/ui/main/MainActivity.kt
index dec864a65..31c4e3cbc 100644
--- a/app/src/main/java/org/linphone/ui/MainActivity.kt
+++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui
+package org.linphone.ui.main
import android.Manifest
import android.content.pm.PackageManager
diff --git a/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt
rename to app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt
index fb87ad467..7a27e00d3 100644
--- a/app/src/main/java/org/linphone/ui/calls/fragment/CallsFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.calls.fragment
+package org.linphone.ui.main.calls.fragment
import android.os.Bundle
import android.view.LayoutInflater
@@ -29,7 +29,7 @@ import androidx.navigation.fragment.findNavController
import androidx.slidingpanelayout.widget.SlidingPaneLayout
import org.linphone.R
import org.linphone.databinding.CallsFragmentBinding
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.SlidingPaneBackPressedCallback
class CallsFragment : GenericFragment() {
diff --git a/app/src/main/java/org/linphone/ui/calls/fragment/CallsListFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt
similarity index 93%
rename from app/src/main/java/org/linphone/ui/calls/fragment/CallsListFragment.kt
rename to app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt
index 3887359ef..0a7c50544 100644
--- a/app/src/main/java/org/linphone/ui/calls/fragment/CallsListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.calls.fragment
+package org.linphone.ui.main.calls.fragment
import android.content.res.Configuration
import android.os.Bundle
@@ -30,9 +30,9 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels
import org.linphone.R
import org.linphone.databinding.CallsListFragmentBinding
-import org.linphone.ui.MainActivity
-import org.linphone.ui.calls.viewmodel.CallsListViewModel
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.MainActivity
+import org.linphone.ui.main.calls.viewmodel.CallsListViewModel
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.setKeyboardInsetListener
class CallsListFragment : GenericFragment() {
diff --git a/app/src/main/java/org/linphone/ui/calls/fragment/CallsListMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListMenuDialogFragment.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/calls/fragment/CallsListMenuDialogFragment.kt
rename to app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListMenuDialogFragment.kt
index dcfdcbabb..58dd4a650 100644
--- a/app/src/main/java/org/linphone/ui/calls/fragment/CallsListMenuDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/CallsListMenuDialogFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.calls.fragment
+package org.linphone.ui.main.calls.fragment
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
diff --git a/app/src/main/java/org/linphone/ui/calls/fragment/StartCallFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/calls/fragment/StartCallFragment.kt
rename to app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt
index 8ec709bc8..7d84063a5 100644
--- a/app/src/main/java/org/linphone/ui/calls/fragment/StartCallFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.calls.fragment
+package org.linphone.ui.main.calls.fragment
import androidx.fragment.app.Fragment
diff --git a/app/src/main/java/org/linphone/ui/calls/viewmodel/CallsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt
similarity index 90%
rename from app/src/main/java/org/linphone/ui/calls/viewmodel/CallsListViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt
index aef8b3a2b..cb43d1c6f 100644
--- a/app/src/main/java/org/linphone/ui/calls/viewmodel/CallsListViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/CallsListViewModel.kt
@@ -17,9 +17,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.calls.viewmodel
+package org.linphone.ui.main.calls.viewmodel
-import org.linphone.ui.viewmodel.TopBarViewModel
+import org.linphone.ui.main.viewmodel.TopBarViewModel
class CallsListViewModel : TopBarViewModel() {
init {
diff --git a/app/src/main/java/org/linphone/ui/contacts/adapter/ContactsListAdapter.kt b/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/contacts/adapter/ContactsListAdapter.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt
index fda58cb80..e0fc2f9fd 100644
--- a/app/src/main/java/org/linphone/ui/contacts/adapter/ContactsListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/adapter/ContactsListAdapter.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.contacts.adapter
+package org.linphone.ui.main.contacts.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView
import org.linphone.R
import org.linphone.databinding.ContactFavouriteListCellBinding
import org.linphone.databinding.ContactListCellBinding
-import org.linphone.ui.contacts.model.ContactModel
+import org.linphone.ui.main.contacts.model.ContactModel
import org.linphone.utils.Event
class ContactsListAdapter(
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
similarity index 94%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
index b53b5af59..7c6b1edd1 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.os.Bundle
import android.view.LayoutInflater
@@ -29,9 +29,9 @@ import androidx.navigation.fragment.navArgs
import androidx.transition.ChangeBounds
import org.linphone.core.tools.Log
import org.linphone.databinding.ContactFragmentBinding
-import org.linphone.ui.contacts.model.NumberOrAddressPickerDialogModel
-import org.linphone.ui.contacts.viewmodel.ContactViewModel
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel
+import org.linphone.ui.main.contacts.viewmodel.ContactViewModel
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.DialogUtils
import org.linphone.utils.Event
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt
index b9209ce48..12614b380 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactNumberOrAddressMenuDialogFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.content.DialogInterface
import android.os.Bundle
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt
index 5abc74d78..25352d70d 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.os.Bundle
import android.view.LayoutInflater
@@ -30,7 +30,7 @@ import androidx.slidingpanelayout.widget.SlidingPaneLayout
import org.linphone.R
import org.linphone.core.tools.Log
import org.linphone.databinding.ContactsFragmentBinding
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.SlidingPaneBackPressedCallback
class ContactsFragment : GenericFragment() {
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
index 238dbd6dd..de2f89190 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.content.res.Configuration
import android.os.Bundle
@@ -32,10 +32,10 @@ import androidx.navigation.navGraphViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import org.linphone.R
import org.linphone.databinding.ContactsListFragmentBinding
-import org.linphone.ui.MainActivity
-import org.linphone.ui.contacts.adapter.ContactsListAdapter
-import org.linphone.ui.contacts.viewmodel.ContactsListViewModel
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.MainActivity
+import org.linphone.ui.main.contacts.adapter.ContactsListAdapter
+import org.linphone.ui.main.contacts.viewmodel.ContactsListViewModel
+import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.utils.Event
import org.linphone.utils.hideKeyboard
import org.linphone.utils.setKeyboardInsetListener
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListMenuDialogFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt
index 3b305eda2..8660784d5 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/ContactsListMenuDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListMenuDialogFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.content.DialogInterface
import android.os.Bundle
diff --git a/app/src/main/java/org/linphone/ui/contacts/fragment/NewContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
similarity index 94%
rename from app/src/main/java/org/linphone/ui/contacts/fragment/NewContactFragment.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
index 932855b83..a91124713 100644
--- a/app/src/main/java/org/linphone/ui/contacts/fragment/NewContactFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/NewContactFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.fragment
+package org.linphone.ui.main.contacts.fragment
import android.os.Bundle
import android.view.LayoutInflater
@@ -25,7 +25,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.navigation.fragment.findNavController
import org.linphone.databinding.NewContactFragmentBinding
-import org.linphone.ui.fragment.GenericFragment
+import org.linphone.ui.main.fragment.GenericFragment
class NewContactFragment : GenericFragment() {
private lateinit var binding: NewContactFragmentBinding
diff --git a/app/src/main/java/org/linphone/ui/contacts/model/ContactDeviceModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactDeviceModel.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/contacts/model/ContactDeviceModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/model/ContactDeviceModel.kt
index 59cab2ca5..0e0b53047 100644
--- a/app/src/main/java/org/linphone/ui/contacts/model/ContactDeviceModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactDeviceModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.model
+package org.linphone.ui.main.contacts.model
class ContactDeviceModel(
val name: String,
diff --git a/app/src/main/java/org/linphone/ui/contacts/model/ContactModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactModel.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/contacts/model/ContactModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/model/ContactModel.kt
index 836882c16..08c144d8a 100644
--- a/app/src/main/java/org/linphone/ui/contacts/model/ContactModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.model
+package org.linphone.ui.main.contacts.model
import android.content.ContentUris
import android.net.Uri
diff --git a/app/src/main/java/org/linphone/ui/contacts/model/ContactNumberOrAddressModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactNumberOrAddressModel.kt
similarity index 76%
rename from app/src/main/java/org/linphone/ui/contacts/model/ContactNumberOrAddressModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/model/ContactNumberOrAddressModel.kt
index bfe5c2778..a24471ede 100644
--- a/app/src/main/java/org/linphone/ui/contacts/model/ContactNumberOrAddressModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/model/ContactNumberOrAddressModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.model
+package org.linphone.ui.main.contacts.model
import androidx.lifecycle.MutableLiveData
import org.linphone.core.Address
@@ -31,19 +31,8 @@ class ContactNumberOrAddressModel(
) {
val selected = MutableLiveData()
- fun startCall() {
- address ?: return
- listener.onCall(address)
- }
-
- fun startVideoCall() {
- address ?: return
- listener.onVideoCall(address)
- }
-
- fun startChat(secured: Boolean) {
- address ?: return
- listener.onChat(address)
+ fun onClicked() {
+ listener.onClicked(address)
}
fun onLongPress(): Boolean {
@@ -54,11 +43,7 @@ class ContactNumberOrAddressModel(
}
interface ContactNumberOrAddressClickListener {
- fun onCall(address: Address)
-
- fun onVideoCall(address: Address)
-
- fun onChat(address: Address)
+ fun onClicked(address: Address?)
fun onLongPress(model: ContactNumberOrAddressModel)
}
diff --git a/app/src/main/java/org/linphone/ui/contacts/model/NumberOrAddressPickerDialogModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/model/NumberOrAddressPickerDialogModel.kt
similarity index 90%
rename from app/src/main/java/org/linphone/ui/contacts/model/NumberOrAddressPickerDialogModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/model/NumberOrAddressPickerDialogModel.kt
index c5f747d5b..46e129a14 100644
--- a/app/src/main/java/org/linphone/ui/contacts/model/NumberOrAddressPickerDialogModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/model/NumberOrAddressPickerDialogModel.kt
@@ -17,11 +17,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.model
+package org.linphone.ui.main.contacts.model
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
-import org.linphone.ui.contacts.viewmodel.ContactViewModel
+import org.linphone.ui.main.contacts.viewmodel.ContactViewModel
import org.linphone.utils.Event
class NumberOrAddressPickerDialogModel(viewModel: ContactViewModel) : ViewModel() {
@@ -31,6 +31,7 @@ class NumberOrAddressPickerDialogModel(viewModel: ContactViewModel) : ViewModel(
init {
sipAddressesAndPhoneNumbers.value = viewModel.sipAddressesAndPhoneNumbers.value
+ // TODO: set listener
}
fun dismiss() {
diff --git a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt
similarity index 77%
rename from app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt
index 100dead49..a274cdcee 100644
--- a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt
@@ -17,16 +17,16 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.viewmodel
+package org.linphone.ui.main.contacts.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.core.Address
-import org.linphone.ui.contacts.model.ContactDeviceModel
-import org.linphone.ui.contacts.model.ContactModel
-import org.linphone.ui.contacts.model.ContactNumberOrAddressClickListener
-import org.linphone.ui.contacts.model.ContactNumberOrAddressModel
+import org.linphone.ui.main.contacts.model.ContactDeviceModel
+import org.linphone.ui.main.contacts.model.ContactModel
+import org.linphone.ui.main.contacts.model.ContactNumberOrAddressClickListener
+import org.linphone.ui.main.contacts.model.ContactNumberOrAddressModel
import org.linphone.utils.Event
class ContactViewModel : ViewModel() {
@@ -57,16 +57,13 @@ class ContactViewModel : ViewModel() {
}
val listener = object : ContactNumberOrAddressClickListener {
- override fun onCall(address: Address) {
- // UI thread
- }
-
- override fun onVideoCall(address: Address) {
- // UI thread
- }
-
- override fun onChat(address: Address) {
+ override fun onClicked(address: Address?) {
// UI thread
+ if (address != null) {
+ coreContext.postOnCoreThread {
+ coreContext.startCall(address)
+ }
+ }
}
override fun onLongPress(model: ContactNumberOrAddressModel) {
@@ -138,16 +135,32 @@ class ContactViewModel : ViewModel() {
}
fun startAudioCall() {
- if (sipAddressesAndPhoneNumbers.value.orEmpty().size == 1) {
- // TODO
+ val numbersAndAddresses = sipAddressesAndPhoneNumbers.value.orEmpty()
+ if (numbersAndAddresses.size == 1) {
+ val address = numbersAndAddresses.first().address
+ if (address != null) {
+ coreContext.postOnCoreThread { core ->
+ val params = core.createCallParams(null)
+ params?.isVideoEnabled = false
+ coreContext.startCall(address, params)
+ }
+ }
} else {
showNumberOrAddressPickerDialogEvent.value = Event(true)
}
}
fun startVideoCall() {
- if (sipAddressesAndPhoneNumbers.value.orEmpty().size == 1) {
- // TODO
+ val numbersAndAddresses = sipAddressesAndPhoneNumbers.value.orEmpty()
+ if (numbersAndAddresses.size == 1) {
+ val address = numbersAndAddresses.first().address
+ if (address != null) {
+ coreContext.postOnCoreThread { core ->
+ val params = core.createCallParams(null)
+ params?.isVideoEnabled = true
+ coreContext.startCall(address, params)
+ }
+ }
} else {
showNumberOrAddressPickerDialogEvent.value = Event(true)
}
diff --git a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt
index 987068daa..ae70de333 100644
--- a/app/src/main/java/org/linphone/ui/contacts/viewmodel/ContactsListViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.contacts.viewmodel
+package org.linphone.ui.main.contacts.viewmodel
import androidx.lifecycle.MutableLiveData
import java.util.ArrayList
@@ -28,8 +28,8 @@ import org.linphone.core.MagicSearch
import org.linphone.core.MagicSearchListenerStub
import org.linphone.core.SearchResult
import org.linphone.core.tools.Log
-import org.linphone.ui.contacts.model.ContactModel
-import org.linphone.ui.viewmodel.TopBarViewModel
+import org.linphone.ui.main.contacts.model.ContactModel
+import org.linphone.ui.main.viewmodel.TopBarViewModel
class ContactsListViewModel : TopBarViewModel() {
val contactsList = MutableLiveData>()
diff --git a/app/src/main/java/org/linphone/ui/conversations/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt
similarity index 94%
rename from app/src/main/java/org/linphone/ui/conversations/ConversationFragment.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt
index 62d069231..a779a8402 100644
--- a/app/src/main/java/org/linphone/ui/conversations/ConversationFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/ConversationFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations
+package org.linphone.ui.main.conversations
import android.os.Bundle
import android.view.LayoutInflater
@@ -29,8 +29,8 @@ import androidx.navigation.navGraphViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import org.linphone.R
import org.linphone.databinding.ConversationFragmentBinding
-import org.linphone.ui.conversations.adapter.ChatEventLogsListAdapter
-import org.linphone.ui.conversations.viewmodel.ConversationViewModel
+import org.linphone.ui.main.conversations.adapter.ChatEventLogsListAdapter
+import org.linphone.ui.main.conversations.viewmodel.ConversationViewModel
class ConversationFragment : Fragment() {
private lateinit var binding: ConversationFragmentBinding
diff --git a/app/src/main/java/org/linphone/ui/conversations/ConversationMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/ConversationMenuDialogFragment.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/conversations/ConversationMenuDialogFragment.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/ConversationMenuDialogFragment.kt
index e49111241..99748e03c 100644
--- a/app/src/main/java/org/linphone/ui/conversations/ConversationMenuDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/ConversationMenuDialogFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations
+package org.linphone.ui.main.conversations
import android.content.DialogInterface
import android.os.Bundle
diff --git a/app/src/main/java/org/linphone/ui/conversations/ConversationsFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/conversations/ConversationsFragment.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt
index d78ce4be4..1a8cbaf67 100644
--- a/app/src/main/java/org/linphone/ui/conversations/ConversationsFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/ConversationsFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations
+package org.linphone.ui.main.conversations
import android.os.Bundle
import android.view.LayoutInflater
@@ -35,8 +35,8 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.transition.AutoTransition
import org.linphone.R
import org.linphone.databinding.ConversationsFragmentBinding
-import org.linphone.ui.conversations.adapter.ConversationsListAdapter
-import org.linphone.ui.conversations.viewmodel.ConversationsListViewModel
+import org.linphone.ui.main.conversations.adapter.ConversationsListAdapter
+import org.linphone.ui.main.conversations.viewmodel.ConversationsListViewModel
import org.linphone.utils.hideKeyboard
import org.linphone.utils.showKeyboard
diff --git a/app/src/main/java/org/linphone/ui/conversations/NewConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/conversations/NewConversationFragment.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt
index b7f0e5aaa..ff8dc25a4 100644
--- a/app/src/main/java/org/linphone/ui/conversations/NewConversationFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/NewConversationFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations
+package org.linphone.ui.main.conversations
import android.os.Bundle
import android.view.LayoutInflater
@@ -34,7 +34,7 @@ import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R
import org.linphone.contacts.ContactsSelectionAdapter
import org.linphone.databinding.NewConversationFragmentBinding
-import org.linphone.ui.conversations.viewmodel.NewConversationViewModel
+import org.linphone.ui.main.conversations.viewmodel.NewConversationViewModel
class NewConversationFragment : Fragment() {
private lateinit var binding: NewConversationFragmentBinding
diff --git a/app/src/main/java/org/linphone/ui/conversations/adapter/ChatEventLogsListAdapter.kt b/app/src/main/java/org/linphone/ui/main/conversations/adapter/ChatEventLogsListAdapter.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/conversations/adapter/ChatEventLogsListAdapter.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/adapter/ChatEventLogsListAdapter.kt
index 7af5e2b0b..a963ad1bd 100644
--- a/app/src/main/java/org/linphone/ui/conversations/adapter/ChatEventLogsListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/adapter/ChatEventLogsListAdapter.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.conversations.adapter
+package org.linphone.ui.main.conversations.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -12,9 +12,9 @@ import org.linphone.core.ChatMessage
import org.linphone.databinding.ChatBubbleIncomingBinding
import org.linphone.databinding.ChatBubbleOutgoingBinding
import org.linphone.databinding.ChatEventBinding
-import org.linphone.ui.conversations.data.ChatMessageData
-import org.linphone.ui.conversations.data.EventData
-import org.linphone.ui.conversations.data.EventLogData
+import org.linphone.ui.main.conversations.data.ChatMessageData
+import org.linphone.ui.main.conversations.data.EventData
+import org.linphone.ui.main.conversations.data.EventLogData
class ChatEventLogsListAdapter(
private val viewLifecycleOwner: LifecycleOwner
diff --git a/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt b/app/src/main/java/org/linphone/ui/main/conversations/adapter/ConversationsListAdapter.kt
similarity index 94%
rename from app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/adapter/ConversationsListAdapter.kt
index 125307092..497e37b81 100644
--- a/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/adapter/ConversationsListAdapter.kt
@@ -1,4 +1,4 @@
-package org.linphone.ui.conversations.adapter
+package org.linphone.ui.main.conversations.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -10,8 +10,8 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import org.linphone.R
import org.linphone.databinding.ChatRoomListCellBinding
-import org.linphone.ui.conversations.data.ChatRoomData
-import org.linphone.ui.conversations.data.ChatRoomDataListener
+import org.linphone.ui.main.conversations.data.ChatRoomData
+import org.linphone.ui.main.conversations.data.ChatRoomDataListener
import org.linphone.utils.Event
class ConversationsListAdapter(
diff --git a/app/src/main/java/org/linphone/ui/conversations/data/ChatMessageData.kt b/app/src/main/java/org/linphone/ui/main/conversations/data/ChatMessageData.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/conversations/data/ChatMessageData.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/data/ChatMessageData.kt
index 37d046108..119f3b2ef 100644
--- a/app/src/main/java/org/linphone/ui/conversations/data/ChatMessageData.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/data/ChatMessageData.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.data
+package org.linphone.ui.main.conversations.data
import androidx.lifecycle.MutableLiveData
import org.linphone.R
diff --git a/app/src/main/java/org/linphone/ui/conversations/data/ChatRoomData.kt b/app/src/main/java/org/linphone/ui/main/conversations/data/ChatRoomData.kt
similarity index 99%
rename from app/src/main/java/org/linphone/ui/conversations/data/ChatRoomData.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/data/ChatRoomData.kt
index 855e8c876..40782d3b4 100644
--- a/app/src/main/java/org/linphone/ui/conversations/data/ChatRoomData.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/data/ChatRoomData.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.data
+package org.linphone.ui.main.conversations.data
import androidx.lifecycle.MutableLiveData
import java.lang.StringBuilder
diff --git a/app/src/main/java/org/linphone/ui/conversations/data/EventData.kt b/app/src/main/java/org/linphone/ui/main/conversations/data/EventData.kt
similarity index 95%
rename from app/src/main/java/org/linphone/ui/conversations/data/EventData.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/data/EventData.kt
index e7a9ff641..164928b17 100644
--- a/app/src/main/java/org/linphone/ui/conversations/data/EventData.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/data/EventData.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.data
+package org.linphone.ui.main.conversations.data
import org.linphone.core.EventLog
diff --git a/app/src/main/java/org/linphone/ui/conversations/data/EventLogData.kt b/app/src/main/java/org/linphone/ui/main/conversations/data/EventLogData.kt
similarity index 96%
rename from app/src/main/java/org/linphone/ui/conversations/data/EventLogData.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/data/EventLogData.kt
index 736f9549c..8c52799da 100644
--- a/app/src/main/java/org/linphone/ui/conversations/data/EventLogData.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/data/EventLogData.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.data
+package org.linphone.ui.main.conversations.data
import org.linphone.core.EventLog
diff --git a/app/src/main/java/org/linphone/ui/conversations/view/MultiLineWrapContentWidthTextView.kt b/app/src/main/java/org/linphone/ui/main/conversations/view/MultiLineWrapContentWidthTextView.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/conversations/view/MultiLineWrapContentWidthTextView.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/view/MultiLineWrapContentWidthTextView.kt
index de5bcb632..f91068ccf 100644
--- a/app/src/main/java/org/linphone/ui/conversations/view/MultiLineWrapContentWidthTextView.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/view/MultiLineWrapContentWidthTextView.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.view
+package org.linphone.ui.main.conversations.view
import android.content.Context
import android.text.Layout
diff --git a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationViewModel.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationViewModel.kt
index 13a0b11e1..d01b5bfcc 100644
--- a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.viewmodel
+package org.linphone.ui.main.conversations.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -30,7 +30,7 @@ import org.linphone.core.ChatRoomListenerStub
import org.linphone.core.EventLog
import org.linphone.core.Factory
import org.linphone.core.tools.Log
-import org.linphone.ui.conversations.data.EventLogData
+import org.linphone.ui.main.conversations.data.EventLogData
import org.linphone.utils.LinphoneUtils
class ConversationViewModel : ViewModel() {
diff --git a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationsListViewModel.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationsListViewModel.kt
index 6ec39c850..35a94d914 100644
--- a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/ConversationsListViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.viewmodel
+package org.linphone.ui.main.conversations.viewmodel
import androidx.lifecycle.MutableLiveData
import java.util.ArrayList
@@ -28,8 +28,8 @@ import org.linphone.core.ChatRoom
import org.linphone.core.Core
import org.linphone.core.CoreListenerStub
import org.linphone.core.tools.Log
-import org.linphone.ui.conversations.data.ChatRoomData
-import org.linphone.ui.viewmodel.TopBarViewModel
+import org.linphone.ui.main.conversations.data.ChatRoomData
+import org.linphone.ui.main.viewmodel.TopBarViewModel
import org.linphone.utils.Event
import org.linphone.utils.LinphoneUtils
diff --git a/app/src/main/java/org/linphone/ui/conversations/viewmodel/NewConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/NewConversationViewModel.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/conversations/viewmodel/NewConversationViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/conversations/viewmodel/NewConversationViewModel.kt
index ecc0cfde0..39633445d 100644
--- a/app/src/main/java/org/linphone/ui/conversations/viewmodel/NewConversationViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/conversations/viewmodel/NewConversationViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.conversations.viewmodel
+package org.linphone.ui.main.conversations.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/java/org/linphone/ui/fragment/BottomNavBarFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt
similarity index 96%
rename from app/src/main/java/org/linphone/ui/fragment/BottomNavBarFragment.kt
rename to app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt
index 9194dfe33..7fa8016e2 100644
--- a/app/src/main/java/org/linphone/ui/fragment/BottomNavBarFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/fragment/BottomNavBarFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.fragment
+package org.linphone.ui.main.fragment
import android.os.Bundle
import android.view.LayoutInflater
@@ -27,7 +27,7 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import org.linphone.R
import org.linphone.databinding.BottomNavBarBinding
-import org.linphone.ui.viewmodel.SharedMainViewModel
+import org.linphone.ui.main.viewmodel.SharedMainViewModel
import org.linphone.utils.Event
class BottomNavBarFragment : Fragment() {
diff --git a/app/src/main/java/org/linphone/ui/fragment/EmptyFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/EmptyFragment.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/fragment/EmptyFragment.kt
rename to app/src/main/java/org/linphone/ui/main/fragment/EmptyFragment.kt
index cca37be49..fc3416187 100644
--- a/app/src/main/java/org/linphone/ui/fragment/EmptyFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/fragment/EmptyFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.fragment
+package org.linphone.ui.main.fragment
import android.os.Bundle
import android.view.LayoutInflater
diff --git a/app/src/main/java/org/linphone/ui/fragment/GenericFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/GenericFragment.kt
similarity index 98%
rename from app/src/main/java/org/linphone/ui/fragment/GenericFragment.kt
rename to app/src/main/java/org/linphone/ui/main/fragment/GenericFragment.kt
index 66bf5b530..ec85eec59 100644
--- a/app/src/main/java/org/linphone/ui/fragment/GenericFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/fragment/GenericFragment.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.fragment
+package org.linphone.ui.main.fragment
import android.os.Bundle
import android.view.View
@@ -28,7 +28,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import org.linphone.R
import org.linphone.core.tools.Log
-import org.linphone.ui.viewmodel.SharedMainViewModel
+import org.linphone.ui.main.viewmodel.SharedMainViewModel
abstract class GenericFragment : Fragment() {
protected lateinit var sharedViewModel: SharedMainViewModel
diff --git a/app/src/main/java/org/linphone/ui/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/viewmodel/SharedMainViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt
index f8ba0bbfc..043b6cd58 100644
--- a/app/src/main/java/org/linphone/ui/viewmodel/SharedMainViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.viewmodel
+package org.linphone.ui.main.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/java/org/linphone/ui/viewmodel/TopBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/TopBarViewModel.kt
similarity index 97%
rename from app/src/main/java/org/linphone/ui/viewmodel/TopBarViewModel.kt
rename to app/src/main/java/org/linphone/ui/main/viewmodel/TopBarViewModel.kt
index a81323763..c343a4d11 100644
--- a/app/src/main/java/org/linphone/ui/viewmodel/TopBarViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/viewmodel/TopBarViewModel.kt
@@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.linphone.ui.viewmodel
+package org.linphone.ui.main.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
diff --git a/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt
new file mode 100644
index 000000000..42e670081
--- /dev/null
+++ b/app/src/main/java/org/linphone/ui/voip/VoipActivity.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.ui.voip
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.core.view.WindowCompat
+import androidx.databinding.DataBindingUtil
+import androidx.lifecycle.ViewModelProvider
+import org.linphone.LinphoneApplication
+import org.linphone.R
+import org.linphone.databinding.VoipActivityBinding
+import org.linphone.ui.voip.viewmodel.CallsViewModel
+
+class VoipActivity : AppCompatActivity() {
+ private lateinit var binding: VoipActivityBinding
+
+ private lateinit var callViewModel: CallsViewModel
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ WindowCompat.setDecorFitsSystemWindows(window, true)
+ super.onCreate(savedInstanceState)
+
+ val inCallBlackColor = ContextCompat.getColor(
+ this,
+ R.color.in_call_black
+ )
+ window.statusBarColor = inCallBlackColor
+ window.navigationBarColor = inCallBlackColor
+
+ while (!LinphoneApplication.coreContext.isReady()) {
+ Thread.sleep(20)
+ }
+
+ binding = DataBindingUtil.setContentView(this, R.layout.voip_activity)
+ binding.lifecycleOwner = this
+
+ callViewModel = run {
+ ViewModelProvider(this)[CallsViewModel::class.java]
+ }
+
+ callViewModel.noMoreCallEvent.observe(this) {
+ it.consume {
+ finish()
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/org/linphone/ui/voip/fragment/OutgoingCallFragment.kt b/app/src/main/java/org/linphone/ui/voip/fragment/OutgoingCallFragment.kt
new file mode 100644
index 000000000..5f4fd8713
--- /dev/null
+++ b/app/src/main/java/org/linphone/ui/voip/fragment/OutgoingCallFragment.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.ui.voip.fragment
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.lifecycle.ViewModelProvider
+import org.linphone.databinding.VoipOutgoingCallFragmentBinding
+import org.linphone.ui.main.fragment.GenericFragment
+import org.linphone.ui.voip.viewmodel.CallViewModel
+
+class OutgoingCallFragment : GenericFragment() {
+ private lateinit var binding: VoipOutgoingCallFragmentBinding
+
+ private lateinit var callViewModel: CallViewModel
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ binding = VoipOutgoingCallFragmentBinding.inflate(layoutInflater)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ callViewModel = requireActivity().run {
+ ViewModelProvider(this)[CallViewModel::class.java]
+ }
+
+ binding.lifecycleOwner = viewLifecycleOwner
+ binding.viewModel = callViewModel
+
+ binding.chronometer.start()
+ }
+}
diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/CallViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallViewModel.kt
new file mode 100644
index 000000000..eba3ed160
--- /dev/null
+++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallViewModel.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.ui.voip.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.core.Call
+import org.linphone.core.tools.Log
+
+class CallViewModel() : ViewModel() {
+ companion object {
+ const val TAG = "[Call ViewModel]"
+ }
+
+ val videoEnabled = MutableLiveData()
+
+ private lateinit var call: Call
+
+ init {
+ videoEnabled.value = false
+
+ coreContext.postOnCoreThread { core ->
+ val currentCall = core.currentCall ?: core.calls.firstOrNull()
+
+ if (currentCall != null) {
+ call = currentCall
+ Log.i("$TAG Found call [$call]")
+
+ if (call.state == Call.State.StreamsRunning) {
+ videoEnabled.postValue(call.currentParams.isVideoEnabled)
+ } else {
+ videoEnabled.postValue(call.params.isVideoEnabled)
+ }
+ } else {
+ Log.e("$TAG Failed to find outgoing call!")
+ }
+ }
+ }
+
+ fun hangUp() {
+ // UI thread
+ coreContext.postOnCoreThread {
+ Log.i("$TAG Terminating call [$call]")
+ call.terminate()
+ }
+ }
+}
diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt
new file mode 100644
index 000000000..075dffec8
--- /dev/null
+++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/CallsViewModel.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2010-2023 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.ui.voip.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.core.Core
+import org.linphone.core.CoreListenerStub
+import org.linphone.core.tools.Log
+import org.linphone.utils.Event
+
+class CallsViewModel : ViewModel() {
+ val noMoreCallEvent: MutableLiveData> by lazy {
+ MutableLiveData>()
+ }
+
+ private val coreListener = object : CoreListenerStub() {
+ override fun onLastCallEnded(core: Core) {
+ // Core thread
+ Log.i("[Calls ViewModel] No more call, leaving VoIP activity")
+ noMoreCallEvent.postValue(Event(true))
+ }
+ }
+
+ init {
+ coreContext.postOnCoreThread { core ->
+ core.addListener(coreListener)
+ }
+ }
+
+ override fun onCleared() {
+ super.onCleared()
+
+ coreContext.postOnCoreThread { core ->
+ core.removeListener(coreListener)
+ }
+ }
+}
diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt
index badf43472..65720cbe8 100644
--- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt
+++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt
@@ -42,8 +42,8 @@ import org.linphone.BR
import org.linphone.R
import org.linphone.contacts.ContactData
import org.linphone.core.ConsolidatedPresence
-import org.linphone.ui.MainActivity
-import org.linphone.ui.contacts.model.ContactModel
+import org.linphone.ui.main.MainActivity
+import org.linphone.ui.main.contacts.model.ContactModel
/**
* This file contains all the data binding necessary for the app
diff --git a/app/src/main/java/org/linphone/utils/DialogUtils.kt b/app/src/main/java/org/linphone/utils/DialogUtils.kt
index 997623a8c..4ed77c9e4 100644
--- a/app/src/main/java/org/linphone/utils/DialogUtils.kt
+++ b/app/src/main/java/org/linphone/utils/DialogUtils.kt
@@ -30,7 +30,7 @@ import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import org.linphone.R
import org.linphone.databinding.DialogPickNumberOrAddressBinding
-import org.linphone.ui.contacts.model.NumberOrAddressPickerDialogModel
+import org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel
class DialogUtils {
companion object {
diff --git a/app/src/main/res/drawable/camera_disabled.xml b/app/src/main/res/drawable/camera_disabled.xml
new file mode 100644
index 000000000..103ae4fac
--- /dev/null
+++ b/app/src/main/res/drawable/camera_disabled.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/camera_enabled.xml b/app/src/main/res/drawable/camera_enabled.xml
new file mode 100644
index 000000000..d88e947d4
--- /dev/null
+++ b/app/src/main/res/drawable/camera_enabled.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/hang_up.xml b/app/src/main/res/drawable/hang_up.xml
new file mode 100644
index 000000000..d3843b2c2
--- /dev/null
+++ b/app/src/main/res/drawable/hang_up.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/in_call_button_background.xml b/app/src/main/res/drawable/in_call_button_background.xml
new file mode 100644
index 000000000..9db05d647
--- /dev/null
+++ b/app/src/main/res/drawable/in_call_button_background.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/in_call_camera_button.xml b/app/src/main/res/drawable/in_call_camera_button.xml
new file mode 100644
index 000000000..664b13771
--- /dev/null
+++ b/app/src/main/res/drawable/in_call_camera_button.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/microphone.xml b/app/src/main/res/drawable/microphone.xml
new file mode 100644
index 000000000..b7f6a5398
--- /dev/null
+++ b/app/src/main/res/drawable/microphone.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/outgoing_call.xml b/app/src/main/res/drawable/outgoing_call.xml
new file mode 100644
index 000000000..5f9b587a3
--- /dev/null
+++ b/app/src/main/res/drawable/outgoing_call.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/shape_hang_up_button_background.xml b/app/src/main/res/drawable/shape_hang_up_button_background.xml
new file mode 100644
index 000000000..126936545
--- /dev/null
+++ b/app/src/main/res/drawable/shape_hang_up_button_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_round_in_call_button_background.xml b/app/src/main/res/drawable/shape_round_in_call_button_background.xml
new file mode 100644
index 000000000..30b2406c1
--- /dev/null
+++ b/app/src/main/res/drawable/shape_round_in_call_button_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_round_in_call_disabled_button_background.xml b/app/src/main/res/drawable/shape_round_in_call_disabled_button_background.xml
new file mode 100644
index 000000000..1076b3193
--- /dev/null
+++ b/app/src/main/res/drawable/shape_round_in_call_disabled_button_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_round_in_call_gray_background.xml b/app/src/main/res/drawable/shape_round_in_call_gray_background.xml
new file mode 100644
index 000000000..d4c1aa060
--- /dev/null
+++ b/app/src/main/res/drawable/shape_round_in_call_gray_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/speaker.xml b/app/src/main/res/drawable/speaker.xml
new file mode 100644
index 000000000..1101a5c00
--- /dev/null
+++ b/app/src/main/res/drawable/speaker.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/switch_camera.xml b/app/src/main/res/drawable/switch_camera.xml
new file mode 100644
index 000000000..b58ba194f
--- /dev/null
+++ b/app/src/main/res/drawable/switch_camera.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-land/calls_list_fragment.xml b/app/src/main/res/layout-land/calls_list_fragment.xml
index a6f3e3dbd..eaf904c59 100644
--- a/app/src/main/res/layout-land/calls_list_fragment.xml
+++ b/app/src/main/res/layout-land/calls_list_fragment.xml
@@ -16,7 +16,7 @@
type="View.OnClickListener" />
+ type="org.linphone.ui.main.calls.viewmodel.CallsListViewModel" />
+ type="org.linphone.ui.main.contacts.viewmodel.ContactsListViewModel" />
+ type="org.linphone.ui.main.calls.viewmodel.CallsListViewModel" />
+ type="org.linphone.ui.main.conversations.data.ChatMessageData" />
-
+ type="org.linphone.ui.main.conversations.data.ChatMessageData" />
-
+ type="org.linphone.ui.main.conversations.data.EventData" />
+ type="org.linphone.ui.main.conversations.data.ChatRoomData" />
+ type="org.linphone.ui.main.contacts.model.ContactDeviceModel" />
+ type="org.linphone.ui.main.contacts.model.ContactModel" />
diff --git a/app/src/main/res/layout/contact_fragment.xml b/app/src/main/res/layout/contact_fragment.xml
index 8896933d2..e413ce968 100644
--- a/app/src/main/res/layout/contact_fragment.xml
+++ b/app/src/main/res/layout/contact_fragment.xml
@@ -11,7 +11,7 @@
type="View.OnClickListener" />
+ type="org.linphone.ui.main.contacts.viewmodel.ContactViewModel" />
+ type="org.linphone.ui.main.contacts.model.ContactModel" />
diff --git a/app/src/main/res/layout/contact_number_address_list_cell.xml b/app/src/main/res/layout/contact_number_address_list_cell.xml
index daf4c18dc..ccd169aaa 100644
--- a/app/src/main/res/layout/contact_number_address_list_cell.xml
+++ b/app/src/main/res/layout/contact_number_address_list_cell.xml
@@ -8,10 +8,11 @@
+ type="org.linphone.ui.main.contacts.model.ContactNumberOrAddressModel" />
+ type="org.linphone.ui.main.contacts.viewmodel.ContactsListViewModel" />
+ type="org.linphone.ui.main.conversations.viewmodel.ConversationViewModel" />
+ type="org.linphone.ui.main.conversations.viewmodel.ConversationsListViewModel" />
+ type="org.linphone.ui.main.contacts.model.ContactNumberOrAddressModel" />
+ type="org.linphone.ui.main.contacts.model.NumberOrAddressPickerDialogModel" />
-
-
-
-
+ tools:context=".ui.main.MainActivity">
+ android:layout_gravity="start">
diff --git a/app/src/main/res/layout/new_contact_fragment.xml b/app/src/main/res/layout/new_contact_fragment.xml
index 77e9711d6..6037033bb 100644
--- a/app/src/main/res/layout/new_contact_fragment.xml
+++ b/app/src/main/res/layout/new_contact_fragment.xml
@@ -47,13 +47,12 @@
diff --git a/app/src/main/res/layout/new_conversation_fragment.xml b/app/src/main/res/layout/new_conversation_fragment.xml
index cb515d262..2497d7768 100644
--- a/app/src/main/res/layout/new_conversation_fragment.xml
+++ b/app/src/main/res/layout/new_conversation_fragment.xml
@@ -10,7 +10,7 @@
type="View.OnClickListener" />
+ type="org.linphone.ui.main.conversations.viewmodel.NewConversationViewModel" />
+ type="org.linphone.ui.main.viewmodel.TopBarViewModel" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/voip_call_bottom_bar.xml b/app/src/main/res/layout/voip_call_bottom_bar.xml
new file mode 100644
index 000000000..125017e42
--- /dev/null
+++ b/app/src/main/res/layout/voip_call_bottom_bar.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/voip_outgoing_call_fragment.xml b/app/src/main/res/layout/voip_outgoing_call_fragment.xml
new file mode 100644
index 000000000..bea8fc4d0
--- /dev/null
+++ b/app/src/main/res/layout/voip_outgoing_call_fragment.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/calls_left_nav_graph.xml b/app/src/main/res/navigation/calls_left_nav_graph.xml
index b14239118..25fa88e09 100644
--- a/app/src/main/res/navigation/calls_left_nav_graph.xml
+++ b/app/src/main/res/navigation/calls_left_nav_graph.xml
@@ -7,7 +7,7 @@
diff --git a/app/src/main/res/navigation/calls_right_nav_graph.xml b/app/src/main/res/navigation/calls_right_nav_graph.xml
index ff131a814..3f8799ac5 100644
--- a/app/src/main/res/navigation/calls_right_nav_graph.xml
+++ b/app/src/main/res/navigation/calls_right_nav_graph.xml
@@ -7,7 +7,7 @@
diff --git a/app/src/main/res/navigation/contact_left_nav_graph.xml b/app/src/main/res/navigation/contact_left_nav_graph.xml
index 8104de5d8..b1f02d8ea 100644
--- a/app/src/main/res/navigation/contact_left_nav_graph.xml
+++ b/app/src/main/res/navigation/contact_left_nav_graph.xml
@@ -8,14 +8,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 53d47839f..83ab811e1 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,6 +1,6 @@
-