17
17
*/
18
18
package com.infomaniak.mail.ui.main.folder
19
19
20
+ import android.content.res.Configuration
20
21
import android.os.Bundle
21
22
import android.view.View
22
23
import androidx.fragment.app.Fragment
@@ -30,13 +31,15 @@ import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
30
31
import com.infomaniak.mail.R
31
32
import com.infomaniak.mail.data.cache.mailboxContent.FolderController
32
33
import com.infomaniak.mail.data.models.thread.Thread
34
+ import com.infomaniak.mail.ui.MainActivity
33
35
import com.infomaniak.mail.ui.MainViewModel
34
36
import com.infomaniak.mail.ui.main.NoAnimSlidingPaneLayout
35
37
import com.infomaniak.mail.ui.main.search.SearchFragment
36
38
import com.infomaniak.mail.ui.main.thread.ThreadFragment
37
39
import com.infomaniak.mail.utils.AttachmentIntentUtils
38
40
import com.infomaniak.mail.utils.UiUtils.FULLY_SLID
39
41
import com.infomaniak.mail.utils.UiUtils.progressivelyColorSystemBars
42
+ import com.infomaniak.mail.utils.canDisplayBothPanes
40
43
import com.infomaniak.mail.utils.safeNavigateToNewMessageActivity
41
44
import com.infomaniak.mail.utils.setSystemBarsColors
42
45
import javax.inject.Inject
@@ -77,6 +80,11 @@ abstract class TwoPaneFragment : Fragment() {
77
80
observeThreadNavigation()
78
81
}
79
82
83
+ override fun onConfigurationChanged (newConfig : Configuration ) {
84
+ super .onConfigurationChanged(newConfig)
85
+ updateDrawerLockMode()
86
+ }
87
+
80
88
private fun setupSlidingPane () = with (slidingPaneLayout) {
81
89
lockMode = SlidingPaneLayout .LOCK_MODE_LOCKED
82
90
addPanelSlideListener(object : SlidingPaneLayout .PanelSlideListener {
@@ -121,7 +129,10 @@ abstract class TwoPaneFragment : Fragment() {
121
129
val isOpeningThread = threadUid != null
122
130
if (isOpeningThread) {
123
131
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
+ }
125
136
} else {
126
137
resetPanes()
127
138
}
@@ -160,6 +171,7 @@ abstract class TwoPaneFragment : Fragment() {
160
171
private fun resetPanes () {
161
172
162
173
val hasClosed = slidingPaneLayout.closePaneNoAnimation()
174
+ updateDrawerLockMode()
163
175
164
176
if (hasClosed) {
165
177
setSystemBarsColors(
@@ -172,4 +184,10 @@ abstract class TwoPaneFragment : Fragment() {
172
184
173
185
childFragmentManager.beginTransaction().replace(R .id.threadHostFragment, ThreadFragment ()).commit()
174
186
}
187
+
188
+ private fun updateDrawerLockMode () {
189
+ if (this is ThreadListFragment ) {
190
+ (requireActivity() as MainActivity ).setDrawerLockMode(isLocked = twoPaneViewModel.isThreadOpen && ! canDisplayBothPanes())
191
+ }
192
+ }
175
193
}
0 commit comments