move pinned items to front

This commit is contained in:
tibbi 2016-12-05 21:48:49 +01:00
parent 0857391189
commit 411ae47136
2 changed files with 31 additions and 5 deletions

View file

@ -35,6 +35,7 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
val multiSelector = MultiSelector()
val views = ArrayList<View>()
val config = Config.newInstance(activity)
var pinnedFolders = config.pinnedFolders
companion object {
var actMode: ActionMode? = null
@ -174,11 +175,17 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
}
private fun pinFolder() {
config.addPinnedFolders(getSelectedPaths())
pinnedFolders = config.pinnedFolders
listener?.refreshItems()
notifyDataSetChanged()
}
private fun unpinFolder() {
config.removePinnedFolders(getSelectedPaths())
pinnedFolders = config.pinnedFolders
listener?.refreshItems()
notifyDataSetChanged()
}
private fun displayCopyDialog() {
@ -233,15 +240,18 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
views.add(holder.bindView(activity, multiSelectorMode, multiSelector, dirs[position], position))
val dir = dirs[position]
views.add(holder.bindView(activity, multiSelectorMode, multiSelector, dir, position, pinnedFolders.contains(dir.path)))
}
override fun getItemCount() = dirs.size
class ViewHolder(view: View, val itemClick: (Directory) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
fun bindView(activity: SimpleActivity, multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, directory: Directory, pos: Int): View {
fun bindView(activity: SimpleActivity, multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, directory: Directory, pos: Int, isPinned: Boolean)
: View {
itemView.dir_name.text = directory.name
itemView.photo_cnt.text = directory.mediaCnt.toString()
itemView.dir_pin.visibility = if (isPinned) View.VISIBLE else View.GONE
toggleItemSelection(itemView, markedItems.contains(pos), pos)
val tmb = directory.thumbnail

View file

@ -80,10 +80,26 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va
}
context.scanFiles(invalidFiles) {}
val dirs = ArrayList(directories.values)
var dirs = ArrayList(directories.values)
filterDirectories(dirs)
Directory.sorting = mConfig.directorySorting
dirs.sort()
dirs = movePinnedToFront(dirs)
return dirs
}
private fun movePinnedToFront(dirs: ArrayList<Directory>): ArrayList<Directory> {
if (dirs.isEmpty())
return dirs
val foundFolders = ArrayList<Directory>()
val pinnedFolders = mConfig.pinnedFolders
dirs.forEach { if (pinnedFolders.contains(it.path)) foundFolders.add(it) }
dirs.removeAll(foundFolders)
dirs.addAll(0, foundFolders)
return dirs
}