mirror of
https://github.com/SimpleMobileTools/Simple-File-Manager.git
synced 2025-06-05 22:09:15 +02:00
adding some list/grid viewtype related fixes
This commit is contained in:
@ -33,7 +33,6 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
|||||||
private var skipItemUpdating = false
|
private var skipItemUpdating = false
|
||||||
private var isSearchOpen = false
|
private var isSearchOpen = false
|
||||||
private var lastSearchedText = ""
|
private var lastSearchedText = ""
|
||||||
private var currentViewType = VIEW_TYPE_LIST
|
|
||||||
private var scrollStates = HashMap<String, Parcelable>()
|
private var scrollStates = HashMap<String, Parcelable>()
|
||||||
private var zoomListener: MyRecyclerView.MyZoomListener? = null
|
private var zoomListener: MyRecyclerView.MyZoomListener? = null
|
||||||
|
|
||||||
@ -459,14 +458,18 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun increaseColumnCount() {
|
override fun increaseColumnCount() {
|
||||||
|
if (currentViewType == VIEW_TYPE_GRID) {
|
||||||
context?.config?.fileColumnCnt = ++(items_list.layoutManager as MyGridLayoutManager).spanCount
|
context?.config?.fileColumnCnt = ++(items_list.layoutManager as MyGridLayoutManager).spanCount
|
||||||
columnCountChanged()
|
columnCountChanged()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun reduceColumnCount() {
|
override fun reduceColumnCount() {
|
||||||
|
if (currentViewType == VIEW_TYPE_GRID) {
|
||||||
context?.config?.fileColumnCnt = --(items_list.layoutManager as MyGridLayoutManager).spanCount
|
context?.config?.fileColumnCnt = --(items_list.layoutManager as MyGridLayoutManager).spanCount
|
||||||
columnCountChanged()
|
columnCountChanged()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun columnCountChanged() {
|
private fun columnCountChanged() {
|
||||||
activity?.invalidateOptionsMenu()
|
activity?.invalidateOptionsMenu()
|
||||||
|
@ -5,6 +5,7 @@ import android.util.AttributeSet
|
|||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import com.simplemobiletools.commons.extensions.isAudioFast
|
import com.simplemobiletools.commons.extensions.isAudioFast
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
|
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
|
||||||
import com.simplemobiletools.filemanager.pro.R
|
import com.simplemobiletools.filemanager.pro.R
|
||||||
import com.simplemobiletools.filemanager.pro.activities.MainActivity
|
import com.simplemobiletools.filemanager.pro.activities.MainActivity
|
||||||
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
|
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
|
||||||
@ -12,6 +13,7 @@ import com.simplemobiletools.filemanager.pro.extensions.tryOpenPathIntent
|
|||||||
|
|
||||||
abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) {
|
abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) {
|
||||||
protected var activity: SimpleActivity? = null
|
protected var activity: SimpleActivity? = null
|
||||||
|
protected var currentViewType = VIEW_TYPE_LIST
|
||||||
|
|
||||||
var currentPath = ""
|
var currentPath = ""
|
||||||
var isGetContentIntent = false
|
var isGetContentIntent = false
|
||||||
|
@ -3,9 +3,13 @@ package com.simplemobiletools.filemanager.pro.fragments
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import com.simplemobiletools.commons.extensions.getLongValue
|
import com.simplemobiletools.commons.extensions.getLongValue
|
||||||
import com.simplemobiletools.commons.extensions.getStringValue
|
import com.simplemobiletools.commons.extensions.getStringValue
|
||||||
|
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
|
||||||
|
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
|
||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
|
import com.simplemobiletools.commons.helpers.mydebug
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
import com.simplemobiletools.commons.models.FileDirItem
|
||||||
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
||||||
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
|
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
|
||||||
@ -13,6 +17,7 @@ import com.simplemobiletools.filemanager.pro.adapters.ItemsAdapter
|
|||||||
import com.simplemobiletools.filemanager.pro.extensions.config
|
import com.simplemobiletools.filemanager.pro.extensions.config
|
||||||
import com.simplemobiletools.filemanager.pro.interfaces.ItemOperationsListener
|
import com.simplemobiletools.filemanager.pro.interfaces.ItemOperationsListener
|
||||||
import com.simplemobiletools.filemanager.pro.models.ListItem
|
import com.simplemobiletools.filemanager.pro.models.ListItem
|
||||||
|
import kotlinx.android.synthetic.main.items_fragment.view.*
|
||||||
import kotlinx.android.synthetic.main.recents_fragment.view.*
|
import kotlinx.android.synthetic.main.recents_fragment.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -30,6 +35,20 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
|||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
getRecents { recents ->
|
getRecents { recents ->
|
||||||
recents_swipe_refresh?.isRefreshing = false
|
recents_swipe_refresh?.isRefreshing = false
|
||||||
|
addItems(recents, false)
|
||||||
|
|
||||||
|
if (context != null && currentViewType != context!!.config.getFolderViewType(currentPath)) {
|
||||||
|
setupLayoutManager()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addItems(recents: ArrayList<ListItem>, forceRefresh: Boolean) {
|
||||||
|
if (!forceRefresh && recents.hashCode() == (recents_list.adapter as? ItemsAdapter)?.listItems.hashCode()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
ItemsAdapter(activity as SimpleActivity, recents, this, recents_list, isPickMultipleIntent, null, recents_swipe_refresh) {
|
ItemsAdapter(activity as SimpleActivity, recents, this, recents_list, isPickMultipleIntent, null, recents_swipe_refresh) {
|
||||||
clickedPath((it as FileDirItem).path)
|
clickedPath((it as FileDirItem).path)
|
||||||
}.apply {
|
}.apply {
|
||||||
@ -38,10 +57,42 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
|||||||
|
|
||||||
recents_list.scheduleLayoutAnimation()
|
recents_list.scheduleLayoutAnimation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun setupColors(textColor: Int, adjustedPrimaryColor: Int) {}
|
||||||
|
|
||||||
|
private fun setupLayoutManager() {
|
||||||
|
if (context!!.config.getFolderViewType(currentPath) == VIEW_TYPE_GRID) {
|
||||||
|
currentViewType = VIEW_TYPE_GRID
|
||||||
|
setupGridLayoutManager()
|
||||||
|
} else {
|
||||||
|
currentViewType = VIEW_TYPE_LIST
|
||||||
|
setupListLayoutManager()
|
||||||
|
}
|
||||||
|
|
||||||
|
val oldItems = (recents_list.adapter as? ItemsAdapter)?.listItems?.toMutableList() as ArrayList<ListItem>
|
||||||
|
recents_list.adapter = null
|
||||||
|
addItems(oldItems, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupGridLayoutManager() {
|
||||||
|
val layoutManager = recents_list.layoutManager as MyGridLayoutManager
|
||||||
|
layoutManager.spanCount = context?.config?.fileColumnCnt ?: 3
|
||||||
|
|
||||||
|
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
|
||||||
|
override fun getSpanSize(position: Int): Int {
|
||||||
|
return if (getRecyclerAdapter()?.isASectionTitle(position) == true) {
|
||||||
|
layoutManager.spanCount
|
||||||
|
} else {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setupColors(textColor: Int, adjustedPrimaryColor: Int) {}
|
private fun setupListLayoutManager() {
|
||||||
|
val layoutManager = recents_list.layoutManager as MyGridLayoutManager
|
||||||
|
layoutManager.spanCount = 1
|
||||||
|
}
|
||||||
|
|
||||||
private fun getRecents(callback: (recents: ArrayList<ListItem>) -> Unit) {
|
private fun getRecents(callback: (recents: ArrayList<ListItem>) -> Unit) {
|
||||||
val showHidden = context?.config?.shouldShowHidden ?: return
|
val showHidden = context?.config?.shouldShowHidden ?: return
|
||||||
@ -53,7 +104,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
|||||||
MediaStore.Files.FileColumns.SIZE
|
MediaStore.Files.FileColumns.SIZE
|
||||||
)
|
)
|
||||||
|
|
||||||
val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC"
|
val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC LIMIT 50"
|
||||||
val cursor = context?.contentResolver?.query(uri, projection, null, null, sortOrder)
|
val cursor = context?.contentResolver?.query(uri, projection, null, null, sortOrder)
|
||||||
val listItems = arrayListOf<ListItem>()
|
val listItems = arrayListOf<ListItem>()
|
||||||
|
|
||||||
@ -84,13 +135,18 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun increaseColumnCount() {
|
override fun increaseColumnCount() {
|
||||||
|
if (currentViewType == VIEW_TYPE_GRID) {
|
||||||
|
context?.config?.fileColumnCnt = ++(recents_list.layoutManager as MyGridLayoutManager).spanCount
|
||||||
columnCountChanged()
|
columnCountChanged()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun reduceColumnCount() {
|
override fun reduceColumnCount() {
|
||||||
|
if (currentViewType == VIEW_TYPE_GRID) {
|
||||||
context?.config?.fileColumnCnt = --(recents_list.layoutManager as MyGridLayoutManager).spanCount
|
context?.config?.fileColumnCnt = --(recents_list.layoutManager as MyGridLayoutManager).spanCount
|
||||||
columnCountChanged()
|
columnCountChanged()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun columnCountChanged() {
|
private fun columnCountChanged() {
|
||||||
activity?.invalidateOptionsMenu()
|
activity?.invalidateOptionsMenu()
|
||||||
|
Reference in New Issue
Block a user