@@ -16,6 +16,7 @@ import com.simplemobiletools.commons.helpers.isRPlus
1616import com.simplemobiletools.commons.models.FileDirItem
1717import com.simplemobiletools.commons.views.Breadcrumbs
1818import com.simplemobiletools.commons.views.MyGridLayoutManager
19+ import com.simplemobiletools.commons.views.MyRecyclerView
1920import com.simplemobiletools.filemanager.pro.R
2021import com.simplemobiletools.filemanager.pro.activities.MainActivity
2122import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
@@ -24,6 +25,7 @@ import com.simplemobiletools.filemanager.pro.dialogs.CreateNewItemDialog
2425import com.simplemobiletools.filemanager.pro.extensions.config
2526import com.simplemobiletools.filemanager.pro.extensions.isPathOnRoot
2627import com.simplemobiletools.filemanager.pro.extensions.tryOpenPathIntent
28+ import com.simplemobiletools.filemanager.pro.helpers.MAX_COLUMN_COUNT
2729import com.simplemobiletools.filemanager.pro.helpers.PATH
2830import com.simplemobiletools.filemanager.pro.helpers.RootHelpers
2931import com.simplemobiletools.filemanager.pro.interfaces.ItemOperationsListener
@@ -45,6 +47,7 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
4547 private var isSearchOpen = false
4648 private var lastSearchedText = " "
4749 private var scrollStates = HashMap <String , Parcelable >()
50+ private var zoomListener: MyRecyclerView .MyZoomListener ? = null
4851
4952 private var storedItems = ArrayList <ListItem >()
5053 private var storedTextColor = 0
@@ -69,6 +72,7 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
6972 breadcrumbs.updateFontSize(context!! .getTextSize())
7073 }
7174 setupLayoutManager(false )
75+ initZoomListener()
7276 }
7377
7478 override fun onSaveInstanceState (outState : Bundle ) {
@@ -173,6 +177,7 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
173177 ItemsAdapter (activity as SimpleActivity , storedItems, this @ItemsFragment, items_list, isPickMultipleIntent, items_fastscroller) {
174178 itemClicked(it as FileDirItem )
175179 }.apply {
180+ setupZoomListener(zoomListener)
176181 items_list.adapter = this
177182 }
178183
@@ -421,12 +426,50 @@ class ItemsFragment : Fragment(), ItemOperationsListener, Breadcrumbs.Breadcrumb
421426
422427 private fun setupGridLayoutManager () {
423428 val layoutManager = mView.items_list.layoutManager as MyGridLayoutManager
424- layoutManager.spanCount = 4
429+ layoutManager.spanCount = context?.config?.fileColumnCnt ? : 3
425430 }
426431
427432 private fun setupListLayoutManager () {
428433 val layoutManager = mView.items_list.layoutManager as MyGridLayoutManager
429434 layoutManager.spanCount = 1
435+ zoomListener = null
436+ }
437+
438+ private fun initZoomListener () {
439+ if (context?.config?.viewType == VIEW_TYPE_GRID ) {
440+ val layoutManager = mView.items_list.layoutManager as MyGridLayoutManager
441+ zoomListener = object : MyRecyclerView .MyZoomListener {
442+ override fun zoomIn () {
443+ if (layoutManager.spanCount > 1 ) {
444+ reduceColumnCount()
445+ getRecyclerAdapter()?.finishActMode()
446+ }
447+ }
448+
449+ override fun zoomOut () {
450+ if (layoutManager.spanCount < MAX_COLUMN_COUNT ) {
451+ increaseColumnCount()
452+ getRecyclerAdapter()?.finishActMode()
453+ }
454+ }
455+ }
456+ } else {
457+ zoomListener = null
458+ }
459+ }
460+
461+ fun increaseColumnCount () {
462+ context?.config?.fileColumnCnt = ++ (mView.items_list.layoutManager as MyGridLayoutManager ).spanCount
463+ columnCountChanged()
464+ }
465+
466+ fun reduceColumnCount () {
467+ context?.config?.fileColumnCnt = -- (mView.items_list.layoutManager as MyGridLayoutManager ).spanCount
468+ columnCountChanged()
469+ }
470+
471+ private fun columnCountChanged () {
472+ mView.items_list.adapter?.notifyDataSetChanged()
430473 }
431474
432475 override fun breadcrumbClicked (id : Int ) {
0 commit comments