recreate the directory adapter if something thumbnail style related changes

This commit is contained in:
tibbi 2020-11-08 21:30:26 +01:00
parent e37fe3ab37
commit c2ee93e039
2 changed files with 20 additions and 12 deletions

View file

@ -84,6 +84,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private var mStoredScrollHorizontally = true
private var mStoredTextColor = 0
private var mStoredPrimaryColor = 0
private var mStoredStyleString = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -189,6 +190,11 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
directories_horizontal_fastscroller.updatePrimaryColor()
}
val styleString = "${config.folderStyle}${config.showFolderMediaCount}${config.limitFolderTitle}"
if (mStoredStyleString != styleString) {
setupAdapter(mDirs, forceRecreate = true)
}
directories_horizontal_fastscroller.updateBubbleColors()
directories_vertical_fastscroller.updateBubbleColors()
directories_refresh_layout.isEnabled = config.enablePullToRefresh
@ -329,6 +335,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
mStoredScrollHorizontally = scrollHorizontally
mStoredTextColor = textColor
mStoredPrimaryColor = primaryColor
mStoredStyleString = "$folderStyle$showFolderMediaCount$limitFolderTitle"
}
}
@ -1141,13 +1148,13 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
directories_grid.beVisibleIf(directories_empty_placeholder.isGone())
}
private fun setupAdapter(dirs: ArrayList<Directory>, textToSearch: String = "") {
private fun setupAdapter(dirs: ArrayList<Directory>, textToSearch: String = "", forceRecreate: Boolean = false) {
val currAdapter = directories_grid.adapter
val distinctDirs = dirs.distinctBy { it.path.getDistinctPath() }.toMutableList() as ArrayList<Directory>
val sortedDirs = getSortedDirectories(distinctDirs)
var dirsToShow = getDirsToShow(sortedDirs, mDirs, mCurrentPathPrefix).clone() as ArrayList<Directory>
if (currAdapter == null) {
if (currAdapter == null || forceRecreate) {
initZoomListener()
val fastscroller = if (config.scrollHorizontally) directories_horizontal_fastscroller else directories_vertical_fastscroller
DirectoryAdapter(this, dirsToShow, this, directories_grid, isPickIntent(intent) || isGetAnyContentIntent(intent), fastscroller) {

View file

@ -48,13 +48,16 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
private val isListViewType = config.viewTypeFolders == VIEW_TYPE_LIST
private var pinnedFolders = config.pinnedFolders
private var scrollHorizontally = config.scrollHorizontally
private var showMediaCount = config.showFolderMediaCount
private var animateGifs = config.animateGifs
private var cropThumbnails = config.cropThumbnails
private var groupDirectSubfolders = config.groupDirectSubfolders
private var currentDirectoriesHash = dirs.hashCode()
private var lockedFolderPaths = ArrayList<String>()
private var showMediaCount = config.showFolderMediaCount
private var folderStyle = config.folderStyle
private var limitFolderTitle = config.limitFolderTitle
init {
setupDragListener(true)
fillLockedFolders()
@ -63,12 +66,10 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
override fun getActionMenuId() = R.menu.cab_directories
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layoutType = if (isListViewType) {
R.layout.directory_item_list
} else if (config.folderStyle == FOLDER_STYLE_SQUARE) {
R.layout.directory_item_grid_square
} else {
R.layout.directory_item_grid_rounded_corners
val layoutType = when {
isListViewType -> R.layout.directory_item_list
folderStyle == FOLDER_STYLE_SQUARE -> R.layout.directory_item_grid_square
else -> R.layout.directory_item_grid_rounded_corners
}
return createViewHolder(layoutType, parent)
@ -679,7 +680,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
dir_check.background?.applyColorFilter(primaryColor)
}
if (scrollHorizontally && !isListViewType && config.folderStyle == FOLDER_STYLE_ROUNDED_CORNERS) {
if (scrollHorizontally && !isListViewType && folderStyle == FOLDER_STYLE_ROUNDED_CORNERS) {
(dir_thumbnail.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.ABOVE, dir_name.id)
val photoCntParams = (photo_cnt.layoutParams as RelativeLayout.LayoutParams)
@ -705,7 +706,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
dir_lock.beGone()
val roundedCorners = when {
isListViewType -> ROUNDED_CORNERS_SMALL
config.folderStyle == FOLDER_STYLE_SQUARE -> ROUNDED_CORNERS_NONE
folderStyle == FOLDER_STYLE_SQUARE -> ROUNDED_CORNERS_NONE
else -> ROUNDED_CORNERS_BIG
}
@ -721,7 +722,7 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
photo_cnt.text = directory.subfoldersMediaCount.toString()
photo_cnt.beVisibleIf(showMediaCount == FOLDER_MEDIA_CNT_LINE)
if (config.limitFolderTitle) {
if (limitFolderTitle) {
dir_name.setSingleLine()
dir_name.ellipsize = TextUtils.TruncateAt.MIDDLE
}