diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 725570566..71102cd00 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -106,26 +106,31 @@
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val keyboard = windowInsets.getInsets(WindowInsetsCompat.Type.ime())
+ v.updatePadding(
+ insets.left,
+ insets.top,
+ insets.right,
+ max(insets.bottom, keyboard.bottom)
+ )
+ WindowInsetsCompat.CONSUMED
+ }
+
coreContext.postOnCoreThread { core ->
if (core.accountList.isEmpty()) {
Log.i("$TAG No account configured, disabling back gesture")
diff --git a/app/src/main/java/org/linphone/ui/call/CallActivity.kt b/app/src/main/java/org/linphone/ui/call/CallActivity.kt
index 5e2272130..d651e26a7 100644
--- a/app/src/main/java/org/linphone/ui/call/CallActivity.kt
+++ b/app/src/main/java/org/linphone/ui/call/CallActivity.kt
@@ -24,13 +24,17 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Resources
+import android.graphics.Color
import android.os.Bundle
import android.os.PowerManager
+import androidx.activity.SystemBarStyle
+import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.UiThread
-import androidx.core.view.WindowCompat
+import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
+import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
@@ -39,6 +43,7 @@ import androidx.window.layout.FoldingFeature
import androidx.window.layout.WindowInfoTracker
import androidx.window.layout.WindowLayoutInfo
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import kotlin.math.max
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.linphone.LinphoneApplication.Companion.coreContext
@@ -116,8 +121,30 @@ class CallActivity : GenericActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge(
+ statusBarStyle = SystemBarStyle.auto(Color.TRANSPARENT, Color.TRANSPARENT) {
+ true // Force dark mode
+ }
+ )
super.onCreate(savedInstanceState)
+ binding = DataBindingUtil.setContentView(this, R.layout.call_activity)
+ binding.lifecycleOwner = this
+ setUpToastsArea(binding.toastsArea)
+
+ ViewCompat.setOnApplyWindowInsetsListener(binding.otherCallsTopBar.root) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.updatePadding(0, insets.top, 0, 0)
+ WindowInsetsCompat.CONSUMED
+ }
+
+ ViewCompat.setOnApplyWindowInsetsListener(binding.callNavContainer) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val keyboard = windowInsets.getInsets(WindowInsetsCompat.Type.ime())
+ v.updatePadding(insets.left, 0, insets.right, max(insets.bottom, keyboard.bottom))
+ WindowInsetsCompat.CONSUMED
+ }
+
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
if (!powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
Log.w("$TAG PROXIMITY_SCREEN_OFF_WAKE_LOCK isn't supported on this device!")
@@ -128,11 +155,6 @@ class CallActivity : GenericActivity() {
"$packageName;proximity_sensor"
)
- binding = DataBindingUtil.setContentView(this, R.layout.call_activity)
- binding.lifecycleOwner = this
-
- setUpToastsArea(binding.toastsArea)
-
lifecycleScope.launch(Dispatchers.Main) {
WindowInfoTracker
.getOrCreate(this@CallActivity)
@@ -269,17 +291,6 @@ class CallActivity : GenericActivity() {
}
}
- callsViewModel.changeSystemTopBarColorToMultipleCallsEvent.observe(this) {
- it.consume { useInCallColor ->
- val color = if (useInCallColor) {
- getColor(R.color.success_500)
- } else {
- getColor(R.color.main1_500)
- }
- window.statusBarColor = color
- }
- }
-
sharedViewModel.toggleFullScreenEvent.observe(this) {
it.consume { hide ->
hideUI(hide)
@@ -442,7 +453,6 @@ class CallActivity : GenericActivity() {
Log.i("$TAG Switching full screen mode to ${if (hide) "ON" else "OFF"}")
val windowInsetsCompat = WindowInsetsControllerCompat(window, window.decorView)
if (hide) {
- WindowCompat.setDecorFitsSystemWindows(window, false)
windowInsetsCompat.let {
it.hide(WindowInsetsCompat.Type.systemBars())
it.systemBarsBehavior =
@@ -450,7 +460,6 @@ class CallActivity : GenericActivity() {
}
} else {
windowInsetsCompat.show(WindowInsetsCompat.Type.systemBars())
- WindowCompat.setDecorFitsSystemWindows(window, true)
}
}
diff --git a/app/src/main/java/org/linphone/ui/call/fragment/AudioDevicesMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/AudioDevicesMenuDialogFragment.kt
index 7816fe9d9..6d3ebdc7f 100644
--- a/app/src/main/java/org/linphone/ui/call/fragment/AudioDevicesMenuDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/call/fragment/AudioDevicesMenuDialogFragment.kt
@@ -29,7 +29,6 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import org.linphone.R
import org.linphone.databinding.CallAudioDevicesBottomSheetBinding
import org.linphone.ui.call.model.AudioDeviceModel
@@ -57,9 +56,6 @@ class AudioDevicesMenuDialogFragment(
// Makes sure all menu entries are visible,
// required for landscape mode (otherwise only first item is visible)
dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
-
- // Force this navigation bar color
- dialog.window?.navigationBarColor = requireContext().getColor(R.color.gray_600)
return dialog
}
diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CallsViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CallsViewModel.kt
index 6c3b80096..d2d8fe85b 100644
--- a/app/src/main/java/org/linphone/ui/call/viewmodel/CallsViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CallsViewModel.kt
@@ -63,10 +63,6 @@ class CallsViewModel @UiThread constructor() : GenericViewModel() {
MutableLiveData>()
}
- val changeSystemTopBarColorToMultipleCallsEvent: MutableLiveData> by lazy {
- MutableLiveData>()
- }
-
private val coreListener = object : CoreListenerStub() {
@WorkerThread
override fun onCallStateChanged(
@@ -270,9 +266,6 @@ class CallsViewModel @UiThread constructor() : GenericViewModel() {
)
callsTopBarStatus.postValue("") // TODO: improve ?
}
-
- Log.i("$TAG At least one other call, asking activity to change status bar color")
- changeSystemTopBarColorToMultipleCallsEvent.postValue(Event(true))
} else {
if (core.callsNb == 1) {
callsTopBarIcon.postValue(R.drawable.phone)
@@ -291,11 +284,6 @@ class CallsViewModel @UiThread constructor() : GenericViewModel() {
}
callsTopBarStatus.postValue(LinphoneUtils.callStateToString(call.state))
}
-
- Log.i(
- "$TAG No more than one call, asking activity to change status bar color back to primary"
- )
- changeSystemTopBarColorToMultipleCallsEvent.postValue(Event(false))
}
}
}
diff --git a/app/src/main/java/org/linphone/ui/file_viewer/FileViewerActivity.kt b/app/src/main/java/org/linphone/ui/file_viewer/FileViewerActivity.kt
index 85f617cb1..77186f8b6 100644
--- a/app/src/main/java/org/linphone/ui/file_viewer/FileViewerActivity.kt
+++ b/app/src/main/java/org/linphone/ui/file_viewer/FileViewerActivity.kt
@@ -5,6 +5,7 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.DisplayMetrics
+import androidx.activity.enableEdgeToEdge
import androidx.annotation.UiThread
import androidx.core.content.FileProvider
import androidx.databinding.DataBindingUtil
@@ -42,8 +43,8 @@ class FileViewerActivity : GenericActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
- window.navigationBarColor = getColor(R.color.gray_900)
binding = DataBindingUtil.setContentView(this, R.layout.file_viewer_activity)
binding.lifecycleOwner = this
diff --git a/app/src/main/java/org/linphone/ui/file_viewer/MediaViewerActivity.kt b/app/src/main/java/org/linphone/ui/file_viewer/MediaViewerActivity.kt
index 21c8d91a2..a57c8db0e 100644
--- a/app/src/main/java/org/linphone/ui/file_viewer/MediaViewerActivity.kt
+++ b/app/src/main/java/org/linphone/ui/file_viewer/MediaViewerActivity.kt
@@ -3,8 +3,12 @@ package org.linphone.ui.file_viewer
import android.content.Intent
import android.net.Uri
import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
import androidx.annotation.UiThread
import androidx.core.content.FileProvider
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
@@ -49,13 +53,19 @@ class MediaViewerActivity : GenericActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
- window.navigationBarColor = getColor(R.color.gray_900)
binding = DataBindingUtil.setContentView(this, R.layout.file_media_viewer_activity)
binding.lifecycleOwner = this
setUpToastsArea(binding.toastsArea)
+ ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.updatePadding(insets.left, insets.top, insets.right, insets.bottom)
+ WindowInsetsCompat.CONSUMED
+ }
+
viewModel = ViewModelProvider(this)[MediaListViewModel::class.java]
binding.viewModel = viewModel
diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt
index 73f79cdb8..bc658112b 100644
--- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt
+++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt
@@ -25,15 +25,22 @@ import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
+import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.os.Parcelable
import android.view.Gravity
+import android.view.ViewGroup
import android.view.ViewTreeObserver
+import androidx.activity.SystemBarStyle
+import androidx.activity.enableEdgeToEdge
import androidx.annotation.UiThread
import androidx.car.app.connection.CarConnection
import androidx.core.os.bundleOf
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
@@ -41,6 +48,7 @@ import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.NavOptions
import androidx.navigation.findNavController
+import kotlin.math.max
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
@@ -103,13 +111,42 @@ class MainActivity : GenericActivity() {
// Must be done before the setContentView
installSplashScreen()
+ enableEdgeToEdge(
+ statusBarStyle = SystemBarStyle.auto(Color.TRANSPARENT, Color.TRANSPARENT) {
+ true // Force dark mode to always have white icons in status bar
+ }
+ )
+
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.main_activity)
binding.lifecycleOwner = this
-
setUpToastsArea(binding.toastsArea)
+ ViewCompat.setOnApplyWindowInsetsListener(binding.inCallTopBar.root) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.updatePadding(0, insets.top, 0, 0)
+ WindowInsetsCompat.CONSUMED
+ }
+
+ ViewCompat.setOnApplyWindowInsetsListener(binding.mainNavContainer) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val keyboard = windowInsets.getInsets(WindowInsetsCompat.Type.ime())
+ v.updatePadding(insets.left, 0, insets.right, max(insets.bottom, keyboard.bottom))
+ WindowInsetsCompat.CONSUMED
+ }
+
+ ViewCompat.setOnApplyWindowInsetsListener(binding.drawerMenuContent) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val mlp = v.layoutParams as ViewGroup.MarginLayoutParams
+ mlp.leftMargin = insets.left
+ mlp.topMargin = insets.top
+ mlp.rightMargin = insets.right
+ mlp.bottomMargin = insets.bottom
+ v.layoutParams = mlp
+ WindowInsetsCompat.CONSUMED
+ }
+
while (!coreContext.isReady()) {
Thread.sleep(50)
}
@@ -123,23 +160,6 @@ class MainActivity : GenericActivity() {
ViewModelProvider(this)[SharedMainViewModel::class.java]
}
- viewModel.changeSystemTopBarColorEvent.observe(this) {
- it.consume { mode ->
- window.statusBarColor = when (mode) {
- MainViewModel.SINGLE_CALL, MainViewModel.MULTIPLE_CALLS -> {
- getColor(R.color.success_500)
- }
- MainViewModel.NETWORK_NOT_REACHABLE, MainViewModel.NON_DEFAULT_ACCOUNT_NOT_CONNECTED -> {
- getColor(R.color.danger_500)
- }
- MainViewModel.NON_DEFAULT_ACCOUNT_NOTIFICATIONS -> {
- getColor(R.color.main2_500)
- }
- else -> getColor(R.color.main1_500)
- }
- }
- }
-
viewModel.goBackToCallEvent.observe(this) {
it.consume {
coreContext.showCallActivity()
@@ -333,7 +353,7 @@ class MainActivity : GenericActivity() {
}
fun findNavController(): NavController {
- return findNavController(R.id.main_nav_host_fragment)
+ return findNavController(R.id.main_nav_container)
}
fun loadContacts() {
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt
index 7bf1cd67d..5b85e010c 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt
@@ -299,8 +299,8 @@ class ConversationsListFragment : AbstractMainFragment() {
setViewModel(listViewModel)
initViews(
binding.slidingPaneLayout,
- binding.topBar.search,
- binding.bottomNavBar.root,
+ binding.topBar,
+ binding.bottomNavBar,
R.id.conversationsListFragment
)
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/EndToEndEncryptionDetailsDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/EndToEndEncryptionDetailsDialogFragment.kt
index 55f5f7441..482491b0d 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/EndToEndEncryptionDetailsDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/EndToEndEncryptionDetailsDialogFragment.kt
@@ -29,7 +29,6 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import org.linphone.R
import org.linphone.databinding.ChatConversationE2eDetailsBottomSheetBinding
@UiThread
@@ -55,9 +54,6 @@ class EndToEndEncryptionDetailsDialogFragment(
// Makes sure all menu entries are visible,
// required for landscape mode (otherwise only first item is visible)
dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
-
- // Force this navigation bar color
- dialog.window?.navigationBarColor = requireContext().getColor(R.color.gray_600)
return dialog
}
diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/UnsafeConversationDetailsDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/UnsafeConversationDetailsDialogFragment.kt
index 30de06821..597120f99 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/UnsafeConversationDetailsDialogFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/UnsafeConversationDetailsDialogFragment.kt
@@ -29,7 +29,6 @@ import androidx.annotation.UiThread
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import org.linphone.R
import org.linphone.databinding.ChatConversationUnsafeDetailsBottomSheetBinding
@UiThread
@@ -55,9 +54,6 @@ class UnsafeConversationDetailsDialogFragment(
// Makes sure all menu entries are visible,
// required for landscape mode (otherwise only first item is visible)
dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
-
- // Force this navigation bar color
- dialog.window?.navigationBarColor = requireContext().getColor(R.color.gray_600)
return dialog
}
diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
index bf454c040..1700b92b0 100644
--- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactsListFragment.kt
@@ -206,8 +206,8 @@ class ContactsListFragment : AbstractMainFragment() {
setViewModel(listViewModel)
initViews(
binding.slidingPaneLayout,
- binding.topBar.search,
- binding.bottomNavBar.root,
+ binding.topBar,
+ binding.bottomNavBar,
R.id.contactsListFragment
)
}
diff --git a/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt
index 179b59bf3..827ce3322 100644
--- a/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt
@@ -32,6 +32,8 @@ import androidx.slidingpanelayout.widget.SlidingPaneLayout
import com.google.android.material.textfield.TextInputLayout
import org.linphone.R
import org.linphone.core.tools.Log
+import org.linphone.databinding.BottomNavBarBinding
+import org.linphone.databinding.TopBarBinding
import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.chat.fragment.ConversationsListFragmentDirections
import org.linphone.ui.main.contacts.fragment.ContactsListFragmentDirections
@@ -142,13 +144,13 @@ abstract class AbstractMainFragment : GenericMainFragment() {
fun initViews(
slidingPane: SlidingPaneLayout,
- searchBar: TextInputLayout,
- navBar: View,
+ topBar: TopBarBinding,
+ navBar: BottomNavBarBinding,
@IdRes fragmentId: Int
) {
initSlidingPane(slidingPane)
- initSearchBar(searchBar)
- initBottomNavBar(navBar)
+ initSearchBar(topBar.search)
+ initBottomNavBar(navBar.root)
initNavigation(fragmentId)
}
diff --git a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt
index 80244bbb0..fe664d75f 100644
--- a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt
@@ -25,6 +25,7 @@ import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams
import android.widget.PopupWindow
import androidx.annotation.UiThread
import androidx.databinding.DataBindingUtil
diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt
index 8798edbe3..5e54d7a2e 100644
--- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt
@@ -243,8 +243,8 @@ class HistoryListFragment : AbstractMainFragment() {
setViewModel(listViewModel)
initViews(
binding.slidingPaneLayout,
- binding.topBar.search,
- binding.bottomNavBar.root,
+ binding.topBar,
+ binding.bottomNavBar,
R.id.historyListFragment
)
}
diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingWaitingRoomFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingWaitingRoomFragment.kt
index 745dbc964..b195c494b 100644
--- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingWaitingRoomFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingWaitingRoomFragment.kt
@@ -69,8 +69,6 @@ class MeetingWaitingRoomFragment : GenericMainFragment() {
private var bottomSheetDialog: BottomSheetDialogFragment? = null
- private var navBarDefaultColor: Int = -1
-
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -88,8 +86,6 @@ class MeetingWaitingRoomFragment : GenericMainFragment() {
postponeEnterTransition()
super.onViewCreated(view, savedInstanceState)
- navBarDefaultColor = requireActivity().window.navigationBarColor
-
binding.lifecycleOwner = viewLifecycleOwner
viewModel = ViewModelProvider(this)[MeetingWaitingRoomViewModel::class.java]
@@ -153,9 +149,6 @@ class MeetingWaitingRoomFragment : GenericMainFragment() {
}
override fun onResume() {
- // Force this navigation bar color
- requireActivity().window.navigationBarColor = requireContext().getColor(R.color.gray_900)
-
super.onResume()
if (isCameraPermissionGranted()) {
@@ -180,13 +173,6 @@ class MeetingWaitingRoomFragment : GenericMainFragment() {
super.onPause()
}
- override fun onDestroy() {
- // Reset default navigation bar color
- requireActivity().window.navigationBarColor = navBarDefaultColor
-
- super.onDestroy()
- }
-
private fun isCameraPermissionGranted(): Boolean {
val granted = ContextCompat.checkSelfPermission(
requireContext(),
diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt
index 8a7782b9f..b82ed7341 100644
--- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt
@@ -205,8 +205,8 @@ class MeetingsListFragment : AbstractMainFragment() {
setViewModel(listViewModel)
initViews(
binding.slidingPaneLayout,
- binding.topBar.search,
- binding.bottomNavBar.root,
+ binding.topBar,
+ binding.bottomNavBar,
R.id.meetingsListFragment
)
}
diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt
index 3b8fb4a6e..086b03206 100644
--- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt
@@ -76,10 +76,6 @@ class MainViewModel @UiThread constructor() : ViewModel() {
MutableLiveData>()
}
- val changeSystemTopBarColorEvent: MutableLiveData> by lazy {
- MutableLiveData>()
- }
-
val goBackToCallEvent: MutableLiveData> by lazy {
MutableLiveData>()
}
@@ -449,7 +445,6 @@ class MainViewModel @UiThread constructor() : ViewModel() {
if (maxedPriorityAlert == null) {
Log.i("$TAG No alert to display")
showAlert.postValue(false)
- changeSystemTopBarColorEvent.postValue(Event(NONE))
maxAlertLevel.postValue(NONE)
} else {
val type = maxedPriorityAlert.first
@@ -470,8 +465,7 @@ class MainViewModel @UiThread constructor() : ViewModel() {
alertLabel.postValue(label)
if (showAlert.value == true) {
- Log.i("$TAG Alert top-bar is already visible, updating color if needed")
- changeSystemTopBarColorEvent.postValue(Event(type))
+ Log.i("$TAG Alert top-bar is already visible")
} else {
Log.i("$TAG Alert top-bar is currently invisible, starting job to display it")
coreContext.postOnMainThread {
@@ -481,7 +475,6 @@ class MainViewModel @UiThread constructor() : ViewModel() {
delay(delayMs)
withContext(Dispatchers.Main) {
showAlert.value = true
- changeSystemTopBarColorEvent.value = Event(type)
}
}
}
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 1dba5e4c9..8dddeaa27 100644
--- a/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt
+++ b/app/src/main/java/org/linphone/ui/welcome/WelcomeActivity.kt
@@ -23,6 +23,10 @@ import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.activity.addCallback
+import androidx.activity.enableEdgeToEdge
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
@@ -51,6 +55,7 @@ class WelcomeActivity : GenericActivity() {
private val pageChangedCallback = PageChangedCallback()
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
// Disable back gesture / button
@@ -59,6 +64,12 @@ class WelcomeActivity : GenericActivity() {
binding = DataBindingUtil.setContentView(this, R.layout.welcome_activity)
binding.lifecycleOwner = this
+ ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.updatePadding(insets.left, insets.top, insets.right, insets.bottom)
+ WindowInsetsCompat.CONSUMED
+ }
+
viewPager = binding.pager
val pagerAdapter = ScreenSlidePagerAdapter(this)
viewPager.adapter = pagerAdapter
diff --git a/app/src/main/res/layout/call_activity.xml b/app/src/main/res/layout/call_activity.xml
index 53e2fe6a6..937629afe 100644
--- a/app/src/main/res/layout/call_activity.xml
+++ b/app/src/main/res/layout/call_activity.xml
@@ -28,7 +28,7 @@
layout="@layout/call_activity_other_calls_top_bar"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:visibility="@{callsViewModel.callsCount > 1 || callsViewModel.showTopBar ? View.VISIBLE : View.GONE, default=gone}"
+ android:visibility="@{callViewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:viewModel="@{callsViewModel}"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/call_activity_other_calls_top_bar.xml b/app/src/main/res/layout/call_activity_other_calls_top_bar.xml
index 470830395..c1940276b 100644
--- a/app/src/main/res/layout/call_activity_other_calls_top_bar.xml
+++ b/app/src/main/res/layout/call_activity_other_calls_top_bar.xml
@@ -13,7 +13,8 @@
diff --git a/app/src/main/res/layout/main_activity_notification_top_bar.xml b/app/src/main/res/layout/main_activity_notification_top_bar.xml
index eb5e44a4f..7660015e9 100644
--- a/app/src/main/res/layout/main_activity_notification_top_bar.xml
+++ b/app/src/main/res/layout/main_activity_notification_top_bar.xml
@@ -13,7 +13,8 @@
diff --git a/app/src/main/res/values-night-v33/themes.xml b/app/src/main/res/values-night-v33/themes.xml
index c11068bc4..8148be937 100644
--- a/app/src/main/res/values-night-v33/themes.xml
+++ b/app/src/main/res/values-night-v33/themes.xml
@@ -1,6 +1,5 @@
-
\ No newline at end of file