Skip to content

Commit

Permalink
Merge pull request #3501 from owncloud/new_arch/fix_footer_bug
Browse files Browse the repository at this point in the history
Fixed Footer Bug
  • Loading branch information
jabarros authored Jan 17, 2022
2 parents 34b6cb8 + 2e504cc commit 37a2007
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

package com.owncloud.android.presentation.adapters.filelist

import android.accounts.Account
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
Expand All @@ -29,8 +30,8 @@ import android.widget.ImageView
import android.widget.LinearLayout
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import com.owncloud.android.R
import com.owncloud.android.authentication.AccountUtils
import com.owncloud.android.databinding.GridItemBinding
Expand All @@ -48,13 +49,19 @@ import com.owncloud.android.utils.PreferenceUtils
class FileListAdapter(
private val context: Context,
private val isShowingJustFolders: Boolean,
private val layoutManager: GridLayoutManager,
private val layoutManager: StaggeredGridLayoutManager,
private val listener: FileListAdapterListener,
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

private var files = mutableListOf<Any>()
private var account = AccountUtils.getCurrentOwnCloudAccount(context)
private var storageManager: FileDataStorageManager = FileDataStorageManager(context, account, context.contentResolver)
var files = mutableListOf<Any>()
private var account: Account? = AccountUtils.getCurrentOwnCloudAccount(context)
private lateinit var storageManager: FileDataStorageManager

init {
if (account != null) {
storageManager = FileDataStorageManager(context, account!!, context.contentResolver)
}
}

fun updateFileList(filesToAdd: List<OCFile>) {
val diffUtilCallback = FileListDiffCallback(oldList = files, newList = filesToAdd)
Expand Down Expand Up @@ -242,6 +249,9 @@ class FileListAdapter(
if (viewType == ViewType.FOOTER.ordinal && !isShowingJustFolders) {
val view = holder as FooterViewHolder
val file = files[position] as OCFooterFile
(view.itemView.layoutParams as StaggeredGridLayoutManager.LayoutParams).apply {
isFullSpan = true
}
view.binding.footerText.text = file.text
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,13 @@ import androidx.appcompat.widget.SearchView
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.owncloud.android.R
import com.owncloud.android.databinding.MainFileListFragmentBinding
import com.owncloud.android.db.PreferenceManager
import com.owncloud.android.domain.files.model.FileListOption
import com.owncloud.android.domain.files.model.OCFile
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.extensions.cancel
Expand All @@ -52,7 +55,6 @@ import com.owncloud.android.presentation.ui.files.SortType
import com.owncloud.android.presentation.ui.files.ViewType
import com.owncloud.android.presentation.ui.files.createfolder.CreateFolderDialogFragment
import com.owncloud.android.presentation.viewmodels.files.FilesViewModel
import com.owncloud.android.domain.files.model.FileListOption
import com.owncloud.android.utils.ColumnQuantity
import com.owncloud.android.utils.FileStorageUtils
import org.koin.androidx.viewmodel.ext.android.viewModel
Expand All @@ -72,7 +74,7 @@ class MainFileListFragment : Fragment(), SortDialogListener, SortOptionsView.Sor
private lateinit var files: List<OCFile>

private var miniFabClicked = false
private lateinit var layoutManager: GridLayoutManager
private lateinit var layoutManager: StaggeredGridLayoutManager
private lateinit var fileListAdapter: FileListAdapter
private lateinit var viewType: ViewType

Expand Down Expand Up @@ -107,17 +109,16 @@ class MainFileListFragment : Fragment(), SortDialogListener, SortOptionsView.Sor

//Set view and footer correctly
if (mainFileListViewModel.isGridModeSetAsPreferred()) {
layoutManager = GridLayoutManager(context, ColumnQuantity(requireContext(), R.layout.grid_item).calculateNoOfColumns())
layoutManager =
StaggeredGridLayoutManager(ColumnQuantity(requireContext(), R.layout.grid_item).calculateNoOfColumns(), RecyclerView.VERTICAL)
viewType = ViewType.VIEW_TYPE_GRID
} else {
layoutManager = GridLayoutManager(context, 1)
layoutManager = StaggeredGridLayoutManager(1, RecyclerView.VERTICAL)
viewType = ViewType.VIEW_TYPE_LIST
}

binding.optionsLayout.viewTypeSelected = viewType

setFooterCorrectly(layoutManager.spanCount == 1)

//Set RecyclerView and its adapter.
binding.recyclerViewMainFileList.layoutManager = layoutManager

Expand Down Expand Up @@ -167,23 +168,20 @@ class MainFileListFragment : Fragment(), SortDialogListener, SortOptionsView.Sor
mainFileListViewModel.getFilesSharedByLinkData.observe(viewLifecycleOwner, Event.EventObserver {
it.onSuccess { data ->
updateFileListData(filesList = data ?: emptyList())
setFooterCorrectly(viewType == ViewType.VIEW_TYPE_LIST)
}
})

// Observe the action of retrieving the list of available offline files from DB.
mainFileListViewModel.getFilesAvailableOfflineData.observe(viewLifecycleOwner, Event.EventObserver {
it.onSuccess { data ->
updateFileListData(filesList = data ?: emptyList())
setFooterCorrectly(viewType == ViewType.VIEW_TYPE_LIST)
}
})

// Observe the action of retrieving the list of searched files from DB.
mainFileListViewModel.getSearchedFilesData.observe(viewLifecycleOwner, Event.EventObserver {
it.onSuccess { data ->
updateFileListData(filesList = data ?: emptyList())
setFooterCorrectly(viewType == ViewType.VIEW_TYPE_LIST)
}
})
}
Expand Down Expand Up @@ -220,22 +218,9 @@ class MainFileListFragment : Fragment(), SortDialogListener, SortOptionsView.Sor
layoutManager.spanCount = ColumnQuantity(requireContext(), R.layout.grid_item).calculateNoOfColumns()
}

setFooterCorrectly(viewType == ViewType.VIEW_TYPE_LIST)

fileListAdapter.notifyItemRangeChanged(0, fileListAdapter.itemCount)
}

private fun setFooterCorrectly(isListMode: Boolean) {
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return if (isListMode || position != files.size) {
1
} else {
ColumnQuantity(requireContext(), R.layout.grid_item).calculateNoOfColumns()
}
}
}
}

override fun onSortSelected(sortType: SortType) {
binding.optionsLayout.sortTypeSelected = sortType
Expand Down

0 comments on commit 37a2007

Please sign in to comment.