move pinned items to front
This commit is contained in:
parent
0857391189
commit
411ae47136
2 changed files with 31 additions and 5 deletions
|
@ -35,6 +35,7 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
|
||||||
val multiSelector = MultiSelector()
|
val multiSelector = MultiSelector()
|
||||||
val views = ArrayList<View>()
|
val views = ArrayList<View>()
|
||||||
val config = Config.newInstance(activity)
|
val config = Config.newInstance(activity)
|
||||||
|
var pinnedFolders = config.pinnedFolders
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
var actMode: ActionMode? = null
|
var actMode: ActionMode? = null
|
||||||
|
@ -174,11 +175,17 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun pinFolder() {
|
private fun pinFolder() {
|
||||||
|
config.addPinnedFolders(getSelectedPaths())
|
||||||
|
pinnedFolders = config.pinnedFolders
|
||||||
|
listener?.refreshItems()
|
||||||
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun unpinFolder() {
|
private fun unpinFolder() {
|
||||||
|
config.removePinnedFolders(getSelectedPaths())
|
||||||
|
pinnedFolders = config.pinnedFolders
|
||||||
|
listener?.refreshItems()
|
||||||
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun displayCopyDialog() {
|
private fun displayCopyDialog() {
|
||||||
|
@ -233,15 +240,18 @@ class DirectoryAdapter(val activity: SimpleActivity, val dirs: MutableList<Direc
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
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
|
override fun getItemCount() = dirs.size
|
||||||
|
|
||||||
class ViewHolder(view: View, val itemClick: (Directory) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
|
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.dir_name.text = directory.name
|
||||||
itemView.photo_cnt.text = directory.mediaCnt.toString()
|
itemView.photo_cnt.text = directory.mediaCnt.toString()
|
||||||
|
itemView.dir_pin.visibility = if (isPinned) View.VISIBLE else View.GONE
|
||||||
toggleItemSelection(itemView, markedItems.contains(pos), pos)
|
toggleItemSelection(itemView, markedItems.contains(pos), pos)
|
||||||
|
|
||||||
val tmb = directory.thumbnail
|
val tmb = directory.thumbnail
|
||||||
|
|
|
@ -80,10 +80,26 @@ class GetDirectoriesAsynctask(val context: Context, val isPickVideo: Boolean, va
|
||||||
}
|
}
|
||||||
|
|
||||||
context.scanFiles(invalidFiles) {}
|
context.scanFiles(invalidFiles) {}
|
||||||
val dirs = ArrayList(directories.values)
|
var dirs = ArrayList(directories.values)
|
||||||
filterDirectories(dirs)
|
filterDirectories(dirs)
|
||||||
Directory.sorting = mConfig.directorySorting
|
Directory.sorting = mConfig.directorySorting
|
||||||
dirs.sort()
|
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
|
return dirs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue