Skip to content

Commit 0cda7ad

Browse files
Lock MenuDrawer in ThreadFragment
1 parent 8f9b63a commit 0cda7ad

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

app/src/main/java/com/infomaniak/mail/ui/main/folder/TwoPaneFragment.kt

+19-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
package com.infomaniak.mail.ui.main.folder
1919

20+
import android.content.res.Configuration
2021
import android.os.Bundle
2122
import android.view.View
2223
import androidx.fragment.app.Fragment
@@ -30,13 +31,15 @@ import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
3031
import com.infomaniak.mail.R
3132
import com.infomaniak.mail.data.cache.mailboxContent.FolderController
3233
import com.infomaniak.mail.data.models.thread.Thread
34+
import com.infomaniak.mail.ui.MainActivity
3335
import com.infomaniak.mail.ui.MainViewModel
3436
import com.infomaniak.mail.ui.main.NoAnimSlidingPaneLayout
3537
import com.infomaniak.mail.ui.main.search.SearchFragment
3638
import com.infomaniak.mail.ui.main.thread.ThreadFragment
3739
import com.infomaniak.mail.utils.AttachmentIntentUtils
3840
import com.infomaniak.mail.utils.UiUtils.FULLY_SLID
3941
import com.infomaniak.mail.utils.UiUtils.progressivelyColorSystemBars
42+
import com.infomaniak.mail.utils.canDisplayBothPanes
4043
import com.infomaniak.mail.utils.safeNavigateToNewMessageActivity
4144
import com.infomaniak.mail.utils.setSystemBarsColors
4245
import javax.inject.Inject
@@ -77,6 +80,11 @@ abstract class TwoPaneFragment : Fragment() {
7780
observeThreadNavigation()
7881
}
7982

83+
override fun onConfigurationChanged(newConfig: Configuration) {
84+
super.onConfigurationChanged(newConfig)
85+
updateDrawerLockMode()
86+
}
87+
8088
private fun setupSlidingPane() = with(slidingPaneLayout) {
8189
lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
8290
addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
@@ -121,7 +129,10 @@ abstract class TwoPaneFragment : Fragment() {
121129
val isOpeningThread = threadUid != null
122130
if (isOpeningThread) {
123131
val hasOpened = slidingPaneLayout.openPaneNoAnimation()
124-
if (hasOpened) setSystemBarsColors(statusBarColor = R.color.backgroundColor, navigationBarColor = null)
132+
if (hasOpened) {
133+
updateDrawerLockMode()
134+
setSystemBarsColors(statusBarColor = R.color.backgroundColor, navigationBarColor = null)
135+
}
125136
} else {
126137
resetPanes()
127138
}
@@ -160,6 +171,7 @@ abstract class TwoPaneFragment : Fragment() {
160171
private fun resetPanes() {
161172

162173
val hasClosed = slidingPaneLayout.closePaneNoAnimation()
174+
updateDrawerLockMode()
163175

164176
if (hasClosed) {
165177
setSystemBarsColors(
@@ -172,4 +184,10 @@ abstract class TwoPaneFragment : Fragment() {
172184

173185
childFragmentManager.beginTransaction().replace(R.id.threadHostFragment, ThreadFragment()).commit()
174186
}
187+
188+
private fun updateDrawerLockMode() {
189+
if (this is ThreadListFragment) {
190+
(requireActivity() as MainActivity).setDrawerLockMode(isLocked = twoPaneViewModel.isThreadOpen && !canDisplayBothPanes())
191+
}
192+
}
175193
}

0 commit comments

Comments
 (0)