Skip to content

Commit

Permalink
Lock MenuDrawer in ThreadFragment
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinBoulongne committed Jan 23, 2024
1 parent 578429e commit 74d6a1d
Showing 1 changed file with 19 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/
package com.infomaniak.mail.ui.main.folder

import android.content.res.Configuration
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
Expand All @@ -30,13 +31,15 @@ import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
import com.infomaniak.mail.R
import com.infomaniak.mail.data.cache.mailboxContent.FolderController
import com.infomaniak.mail.data.models.thread.Thread
import com.infomaniak.mail.ui.MainActivity
import com.infomaniak.mail.ui.MainViewModel
import com.infomaniak.mail.ui.main.NoAnimSlidingPaneLayout
import com.infomaniak.mail.ui.main.search.SearchFragment
import com.infomaniak.mail.ui.main.thread.ThreadFragment
import com.infomaniak.mail.utils.AttachmentIntentUtils
import com.infomaniak.mail.utils.UiUtils.FULLY_SLID
import com.infomaniak.mail.utils.UiUtils.progressivelyColorSystemBars
import com.infomaniak.mail.utils.canDisplayBothPanes
import com.infomaniak.mail.utils.safeNavigateToNewMessageActivity
import com.infomaniak.mail.utils.updateNavigationBarColor
import javax.inject.Inject
Expand Down Expand Up @@ -77,6 +80,11 @@ abstract class TwoPaneFragment : Fragment() {
observeThreadNavigation()
}

override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
updateDrawerLockMode()
}

private fun setupSlidingPane() = with(slidingPaneLayout) {
lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
Expand Down Expand Up @@ -121,7 +129,10 @@ abstract class TwoPaneFragment : Fragment() {
val isOpeningThread = threadUid != null
if (isOpeningThread) {
val hasOpened = slidingPaneLayout.openPaneNoAnimation()
if (hasOpened) requireActivity().window.statusBarColor = requireContext().getColor(R.color.backgroundColor)
if (hasOpened) {
updateDrawerLockMode()
(requireActivity() as MainActivity).window.statusBarColor = requireContext().getColor(R.color.backgroundColor)
}
} else {
resetPanes()
}
Expand Down Expand Up @@ -160,6 +171,7 @@ abstract class TwoPaneFragment : Fragment() {
private fun resetPanes() = with(requireActivity()) {

val hasClosed = slidingPaneLayout.closePaneNoAnimation()
updateDrawerLockMode()

if (hasClosed) {
if (this@TwoPaneFragment is ThreadListFragment) window.statusBarColor = getColor(R.color.backgroundHeaderColor)
Expand All @@ -170,4 +182,10 @@ abstract class TwoPaneFragment : Fragment() {

childFragmentManager.beginTransaction().replace(R.id.threadHostFragment, ThreadFragment()).commit()
}

private fun updateDrawerLockMode() {
if (this is ThreadListFragment) {
(requireActivity() as MainActivity).setDrawerLockMode(isLocked = twoPaneViewModel.isThreadOpen && !canDisplayBothPanes())
}
}
}

0 comments on commit 74d6a1d

Please sign in to comment.