mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-04 20:34:14 +01:00
Update span count in gallery according to breakpoint.
This commit is contained in:
committed by
Cody Henthorne
parent
74f08927f2
commit
99b1fa0ebb
+21
-2
@@ -16,6 +16,8 @@ import androidx.lifecycle.map
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import org.signal.core.models.media.Media
|
||||
import org.signal.core.ui.WindowBreakpoint
|
||||
import org.signal.core.ui.getWindowBreakpoint
|
||||
import org.signal.core.ui.permissions.Permissions
|
||||
import org.signal.core.ui.util.StorageUtil
|
||||
import org.signal.core.util.Stopwatch
|
||||
@@ -41,6 +43,10 @@ import org.signal.core.ui.R as CoreUiR
|
||||
*/
|
||||
class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
|
||||
|
||||
companion object {
|
||||
private const val SPAN_COUNT = 24
|
||||
}
|
||||
|
||||
private val viewModel: MediaGalleryViewModel by viewModels(
|
||||
factoryProducer = { MediaGalleryViewModel.Factory(null, null, MediaGalleryRepository(requireContext(), MediaRepository())) }
|
||||
)
|
||||
@@ -77,15 +83,28 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) {
|
||||
height = ViewUtil.getStatusBarHeight(view)
|
||||
}
|
||||
|
||||
binding.mediaGalleryGrid.layoutManager = object : GridLayoutManager(requireContext(), 4) {
|
||||
binding.mediaGalleryGrid.layoutManager = object : GridLayoutManager(requireContext(), SPAN_COUNT) {
|
||||
override fun canScrollVertically() = shouldEnableScrolling
|
||||
}
|
||||
|
||||
val breakpoint = resources.getWindowBreakpoint()
|
||||
val folderSpans = when (breakpoint) {
|
||||
is WindowBreakpoint.Large -> SPAN_COUNT / 4
|
||||
is WindowBreakpoint.Medium -> SPAN_COUNT / 3
|
||||
is WindowBreakpoint.Small -> SPAN_COUNT / 2
|
||||
}
|
||||
|
||||
val fileSpans = when (breakpoint) {
|
||||
is WindowBreakpoint.Large -> SPAN_COUNT / 8
|
||||
is WindowBreakpoint.Medium -> SPAN_COUNT / 6
|
||||
is WindowBreakpoint.Small -> SPAN_COUNT / 4
|
||||
}
|
||||
|
||||
(binding.mediaGalleryGrid.layoutManager as GridLayoutManager).spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
|
||||
override fun getSpanSize(position: Int): Int {
|
||||
val isFolder: Boolean = (binding.mediaGalleryGrid.adapter as MappingAdapter).getModel(position).map { it is MediaGallerySelectableItem.FolderModel }.orElse(false)
|
||||
|
||||
return if (isFolder) 2 else 1
|
||||
return if (isFolder) folderSpans else fileSpans
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||
app:layout_constraintBottom_toTopOf="@id/media_gallery_bottom_bar_barrier"
|
||||
app:layout_constraintTop_toBottomOf="@id/media_gallery_manage_container"
|
||||
app:spanCount="4"
|
||||
app:spanCount="24"
|
||||
tools:itemCount="36"
|
||||
tools:listitem="@layout/v2_media_gallery_item" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user