From 554507f684fa51cd3c213efacaa92dbbc01f9795 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 18 Nov 2017 22:24:08 +0100 Subject: [PATCH] update the ItemsAdapter to the new RecyclerViewAdapter --- app/build.gradle | 4 +- .../activities/FavoritesActivity.kt | 4 +- .../filemanager/adapters/ItemsAdapter.kt | 341 +++++------------- .../dialogs/ChangeSortingDialog.kt | 3 +- .../filemanager/dialogs/CompressAsDialog.kt | 4 +- .../dialogs/CreateNewItemDialog.kt | 3 +- .../filemanager/dialogs/SaveAsDialog.kt | 3 +- .../filemanager/fragments/ItemsFragment.kt | 48 +-- app/src/main/res/layout/items_fragment.xml | 2 +- app/src/main/res/layout/list_item.xml | 9 +- 10 files changed, 125 insertions(+), 296 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0bc2bead..7b5f6b72 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,7 +46,7 @@ ext { } dependencies { - compile 'com.simplemobiletools:commons:2.38.6' + compile 'com.simplemobiletools:commons:2.39.10' compile 'com.bignerdranch.android:recyclerview-multiselect:0.2' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" @@ -57,7 +57,7 @@ dependencies { } buildscript { - ext.kotlin_version = '1.1.51' + ext.kotlin_version = '1.1.60' repositories { mavenCentral() } diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/activities/FavoritesActivity.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/activities/FavoritesActivity.kt index adff3d4c..5f7e500a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/activities/FavoritesActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/activities/FavoritesActivity.kt @@ -1,10 +1,10 @@ package com.simplemobiletools.filemanager.activities -import android.graphics.PorterDuff import android.os.Bundle import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.dialogs.FilePickerDialog +import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.extensions.config @@ -31,7 +31,7 @@ class FavoritesActivity : SimpleActivity() { setTextColor(config.textColor) } favorite_icon.apply { - setColorFilter(config.textColor, PorterDuff.Mode.SRC_IN) + applyColorFilter(config.textColor) setOnClickListener { config.removeFavorite(favorite) updateFavorites() diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt index c3ed56e1..ccafa48b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt @@ -5,24 +5,22 @@ import android.content.ClipboardManager import android.content.Context import android.graphics.drawable.Drawable import android.net.Uri -import android.os.Build -import android.support.v7.view.ActionMode -import android.support.v7.widget.RecyclerView import android.util.SparseArray -import android.view.* -import com.bignerdranch.android.multiselector.ModalMultiSelectorCallback -import com.bignerdranch.android.multiselector.MultiSelector -import com.bignerdranch.android.multiselector.SwappingHolder +import android.view.Menu +import android.view.View +import android.view.ViewGroup import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.bumptech.glide.request.RequestOptions +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.PropertiesDialog import com.simplemobiletools.commons.dialogs.RenameItemDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.models.FileDirItem +import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.filemanager.BuildConfig import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.activities.SimpleActivity @@ -38,53 +36,67 @@ import java.util.zip.ZipEntry import java.util.zip.ZipFile import java.util.zip.ZipOutputStream -class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList, val listener: ItemOperationsListener?, val isPickMultipleIntent: Boolean, - val itemClick: (FileDirItem) -> Unit) : RecyclerView.Adapter() { - private var textColor = activity.config.textColor +class ItemsAdapter(activity: SimpleActivity, var fileDirItems: MutableList, val listener: ItemOperationsListener?, recyclerView: MyRecyclerView, + val isPickMultipleIntent: Boolean, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { - private val multiSelector = MultiSelector() private val config = activity.config - - private var actMode: ActionMode? = null - private var itemViews = SparseArray() - private val selectedPositions = HashSet() - lateinit private var folderDrawable: Drawable lateinit private var fileDrawable: Drawable - fun toggleItemSelection(select: Boolean, pos: Int) { - if (select) { - if (itemViews[pos] != null) { - selectedPositions.add(pos) - } - } else { - selectedPositions.remove(pos) - } - - itemViews[pos]?.item_frame?.isSelected = select - - if (selectedPositions.isEmpty()) { - actMode?.finish() - return - } - - updateTitle(selectedPositions.size) - } - - private fun updateTitle(cnt: Int) { - actMode?.title = "$cnt / ${mItems.size}" - actMode?.invalidate() - } - init { + selectableItemCount = fileDirItems.count() initDrawables() } - fun updateTextColor(color: Int) { - textColor = color - initDrawables() + override fun getActionMenuId() = R.menu.cab + + override fun prepareActionMode(menu: Menu) { + menu.apply { + findItem(R.id.cab_rename).isVisible = isOneItemSelected() + findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() } + findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent + findItem(R.id.cab_copy_path).isVisible = isOneItemSelected() + findItem(R.id.cab_open_with).isVisible = isOneFileSelected() + findItem(R.id.cab_set_as).isVisible = isOneFileSelected() + } } + override fun prepareItemSelection(view: View) {} + + override fun markItemSelection(select: Boolean, view: View?) { + view?.item_frame?.isSelected = select + } + + override fun actionItemPressed(id: Int) { + when (id) { + R.id.cab_confirm_selection -> confirmSelection() + R.id.cab_rename -> displayRenameDialog() + R.id.cab_properties -> showProperties() + R.id.cab_share -> shareFiles() + R.id.cab_copy_path -> copyPath() + R.id.cab_set_as -> setAs() + R.id.cab_open_with -> openWith() + R.id.cab_copy_to -> copyMoveTo(true) + R.id.cab_move_to -> copyMoveTo(false) + R.id.cab_compress -> compressSelection() + R.id.cab_decompress -> decompressSelection() + R.id.cab_select_all -> selectAll() + R.id.cab_delete -> askConfirmDelete() + } + } + + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.list_item, parent) + + override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { + val fileDirItem = fileDirItems[position] + val view = holder.bindView(fileDirItem) { + setupView(it, fileDirItem) + } + bindViewHolder(holder, position, view) + } + + override fun getItemCount() = fileDirItems.size + private fun initDrawables() { folderDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_folder, textColor) fileDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_file, textColor) @@ -92,67 +104,9 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList confirmSelection() - R.id.cab_rename -> displayRenameDialog() - R.id.cab_properties -> showProperties() - R.id.cab_share -> shareFiles() - R.id.cab_copy_path -> copyPath() - R.id.cab_set_as -> setAs() - R.id.cab_open_with -> openWith() - R.id.cab_copy_to -> copyMoveTo(true) - R.id.cab_move_to -> copyMoveTo(false) - R.id.cab_compress -> compressSelection() - R.id.cab_decompress -> decompressSelection() - R.id.cab_select_all -> selectAll() - R.id.cab_delete -> askConfirmDelete() - else -> return false - } - return true - } - - override fun onCreateActionMode(actionMode: ActionMode?, menu: Menu?): Boolean { - super.onCreateActionMode(actionMode, menu) - actMode = actionMode - activity.menuInflater.inflate(R.menu.cab, menu) - return true - } - - override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu): Boolean { - menu.apply { - findItem(R.id.cab_rename).isVisible = isOneItemSelected() - findItem(R.id.cab_decompress).isVisible = getSelectedMedia().map { it.path }.any { it.isZipFile() } - findItem(R.id.cab_confirm_selection).isVisible = isPickMultipleIntent - findItem(R.id.cab_copy_path).isVisible = isOneItemSelected() - findItem(R.id.cab_open_with).isVisible = isOneFileSelected() - findItem(R.id.cab_set_as).isVisible = isOneFileSelected() - } - return true - } - - override fun onDestroyActionMode(actionMode: ActionMode?) { - super.onDestroyActionMode(actionMode) - selectedPositions.forEach { - itemViews[it]?.isSelected = false - } - selectedPositions.clear() - actMode = null - } - - private fun isOneItemSelected() = selectedPositions.size == 1 - - private fun isOneFileSelected() = isOneItemSelected() && !mItems[selectedPositions.first()].isDirectory - } + private fun isOneFileSelected() = isOneItemSelected() && !fileDirItems[selectedPositions.first()].isDirectory private fun confirmSelection() { val paths = getSelectedMedia().filter { !it.isDirectory }.map { it.path } as ArrayList @@ -163,17 +117,17 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList() - selectedPositions.forEach { paths.add(mItems[it].path) } + selectedPositions.forEach { paths.add(fileDirItems[it].path) } PropertiesDialog(activity, paths, config.shouldShowHidden) } } @@ -201,7 +155,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList() - selectedPositions.forEach { files.add(File(mItems[it].path)) } + selectedPositions.forEach { files.add(File(fileDirItems[it].path)) } val source = if (files[0].isFile) files[0].parent else files[0].absolutePath FilePickerDialog(activity, source, false, config.shouldShowHidden, true) { @@ -226,7 +180,7 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList(selectedPositions.size) val removeFiles = ArrayList(selectedPositions.size) - activity.handleSAFDialog(File(mItems[selectedPositions.first()].path)) { + activity.handleSAFDialog(File(fileDirItems[selectedPositions.first()].path)) { selectedPositions.sortedDescending().forEach { - val file = mItems[it] + val file = fileDirItems[it] files.add(File(file.path)) removeFiles.add(file) notifyItemRemoved(it) itemViews.put(it, null) } - mItems.removeAll(removeFiles) + fileDirItems.removeAll(removeFiles) selectedPositions.clear() listener?.deleteFiles(files) @@ -435,138 +380,48 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList { val selectedMedia = ArrayList(selectedPositions.size) - selectedPositions.forEach { selectedMedia.add(mItems[it]) } + selectedPositions.forEach { selectedMedia.add(fileDirItems[it]) } return selectedMedia } fun updateItems(newItems: MutableList) { - mItems = newItems + fileDirItems = newItems notifyDataSetChanged() - actMode?.finish() - } - - override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { - val view = LayoutInflater.from(parent?.context).inflate(R.layout.list_item, parent, false) - return ViewHolder(view, adapterListener, activity, multiSelectorMode, multiSelector, listener, itemClick) - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - itemViews.put(position, holder.bindView(mItems[position], fileDrawable, folderDrawable, textColor)) - toggleItemSelection(selectedPositions.contains(position), position) - holder.itemView.tag = holder + finishActMode() } override fun onViewRecycled(holder: ViewHolder?) { super.onViewRecycled(holder) - holder?.stopLoad() - } - - override fun getItemCount() = mItems.size - - fun selectItem(pos: Int) { - toggleItemSelection(true, pos) - } - - fun selectRange(from: Int, to: Int, min: Int, max: Int) { - if (from == to) { - (min..max).filter { it != from } - .forEach { toggleItemSelection(false, it) } - return - } - - if (to < from) { - for (i in to..from) - toggleItemSelection(true, i) - - if (min > -1 && min < to) { - (min until to).filter { it != from } - .forEach { toggleItemSelection(false, it) } - } - if (max > -1) { - for (i in from + 1..max) - toggleItemSelection(false, i) - } - } else { - for (i in from..to) - toggleItemSelection(true, i) - - if (max > -1 && max > to) { - (to + 1..max).filter { it != from } - .forEach { toggleItemSelection(false, it) } - } - - if (min > -1) { - for (i in min until from) - toggleItemSelection(false, i) - } + if (!activity.isActivityDestroyed()) { + Glide.with(activity).clear(holder?.itemView?.item_icon) } } - class ViewHolder(val view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback, - val multiSelector: MultiSelector, val listener: ItemOperationsListener?, val itemClick: (FileDirItem) -> (Unit)) : SwappingHolder(view, MultiSelector()) { - fun bindView(fileDirItem: FileDirItem, fileDrawable: Drawable, folderDrawable: Drawable, textColor: Int): View { - itemView.apply { - item_name.text = fileDirItem.name - item_name.setTextColor(textColor) - item_details.setTextColor(textColor) + private fun setupView(view: View, fileDirItem: FileDirItem) { + view.apply { + item_name.text = fileDirItem.name + item_name.setTextColor(textColor) + item_details.setTextColor(textColor) - if (fileDirItem.isDirectory) { - item_icon.setImageDrawable(folderDrawable) - item_details.text = getChildrenCnt(fileDirItem) - } else { - val options = RequestOptions() - .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - .error(fileDrawable) - .centerCrop() - - val path = fileDirItem.path - Glide.with(activity).load(path).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(item_icon) - item_details.text = fileDirItem.size.formatSize() - } - - setOnClickListener { viewClicked(fileDirItem) } - setOnLongClickListener { viewLongClicked(); true } - } - - return itemView - } - - private fun getChildrenCnt(item: FileDirItem): String { - val children = item.children - return activity.resources.getQuantityString(R.plurals.items, children, children) - } - - private fun viewClicked(fileDirItem: FileDirItem) { - if (multiSelector.isSelectable) { - val isSelected = adapterListener.getSelectedPositions().contains(adapterPosition) - adapterListener.toggleItemSelectionAdapter(!isSelected, adapterPosition) + if (fileDirItem.isDirectory) { + item_icon.setImageDrawable(folderDrawable) + item_details.text = getChildrenCnt(fileDirItem) } else { - itemClick(fileDirItem) - } - } + val options = RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .error(fileDrawable) + .centerCrop() - private fun viewLongClicked() { - if (listener != null) { - if (!multiSelector.isSelectable) { - activity.startSupportActionMode(multiSelectorCallback) - adapterListener.toggleItemSelectionAdapter(true, adapterPosition) - } - - listener.itemLongClicked(adapterPosition) - } - } - - fun stopLoad() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && !activity.isDestroyed) { - Glide.with(activity).clear(view.item_icon) + val path = fileDirItem.path + Glide.with(activity).load(path).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(item_icon) + item_details.text = fileDirItem.size.formatSize() } } } - interface MyAdapterListener { - fun toggleItemSelectionAdapter(select: Boolean, position: Int) - - fun getSelectedPositions(): HashSet + private fun getChildrenCnt(item: FileDirItem): String { + val children = item.children + return activity.resources.getQuantityString(R.plurals.items, children, children) } interface ItemOperationsListener { @@ -574,8 +429,6 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList) - fun itemLongClicked(position: Int) - fun selectedPaths(paths: ArrayList) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/ChangeSortingDialog.kt index 888fb13f..6e979df9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/ChangeSortingDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/ChangeSortingDialog.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.filemanager.dialogs import android.support.v7.app.AlertDialog import android.view.LayoutInflater +import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.filemanager.R @@ -9,7 +10,7 @@ import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.extensions.config import kotlinx.android.synthetic.main.dialog_change_sorting.view.* -class ChangeSortingDialog(val activity: SimpleActivity, val path: String = "", val callback: () -> Unit) { +class ChangeSortingDialog(val activity: BaseSimpleActivity, val path: String = "", val callback: () -> Unit) { private var currSorting = 0 private var config = activity.config private var view = LayoutInflater.from(activity).inflate(R.layout.dialog_change_sorting, null) diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CompressAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CompressAsDialog.kt index 9493a310..c396c2f3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CompressAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CompressAsDialog.kt @@ -3,15 +3,15 @@ package com.simplemobiletools.filemanager.dialogs import android.support.v7.app.AlertDialog import android.view.View import android.view.WindowManager +import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.filemanager.R -import com.simplemobiletools.filemanager.activities.SimpleActivity import com.simplemobiletools.filemanager.extensions.config import kotlinx.android.synthetic.main.dialog_compress_as.view.* import java.io.File -class CompressAsDialog(val activity: SimpleActivity, val path: String, val callback: (destination: String) -> Unit) { +class CompressAsDialog(val activity: BaseSimpleActivity, val path: String, val callback: (destination: String) -> Unit) { private val view = activity.layoutInflater.inflate(R.layout.dialog_compress_as, null) init { diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt index af911ded..a12aa9c0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.filemanager.dialogs import android.support.v7.app.AlertDialog import android.view.View import android.view.WindowManager +import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.activities.SimpleActivity @@ -10,7 +11,7 @@ import kotlinx.android.synthetic.main.dialog_create_new.view.* import java.io.File import java.io.IOException -class CreateNewItemDialog(val activity: SimpleActivity, val path: String, val callback: (success: Boolean) -> Unit) { +class CreateNewItemDialog(val activity: BaseSimpleActivity, val path: String, val callback: (success: Boolean) -> Unit) { private val view = activity.layoutInflater.inflate(R.layout.dialog_create_new, null) init { diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/SaveAsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/SaveAsDialog.kt index 346bd923..0c65722b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/SaveAsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/SaveAsDialog.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.filemanager.dialogs import android.support.v7.app.AlertDialog import android.view.LayoutInflater import android.view.WindowManager +import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.extensions.* @@ -11,7 +12,7 @@ import com.simplemobiletools.filemanager.activities.SimpleActivity import kotlinx.android.synthetic.main.dialog_save_as.view.* import java.io.File -class SaveAsDialog(val activity: SimpleActivity, var path: String, val callback: (savePath: String) -> Unit) { +class SaveAsDialog(val activity: BaseSimpleActivity, var path: String, val callback: (savePath: String) -> Unit) { init { if (path.isEmpty()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt index 6b254037..f573e9b1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt @@ -13,7 +13,6 @@ import com.simplemobiletools.commons.dialogs.StoragePickerDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.Breadcrumbs -import com.simplemobiletools.commons.views.MyScalableRecyclerView import com.simplemobiletools.filemanager.R import com.simplemobiletools.filemanager.activities.MainActivity import com.simplemobiletools.filemanager.activities.SimpleActivity @@ -132,20 +131,17 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum storedItems = items val currAdapter = items_list.adapter if (currAdapter == null) { - items_list.apply { - this.adapter = ItemsAdapter(activity as SimpleActivity, storedItems, this@ItemsFragment, isPickMultipleIntent) { - itemClicked(it) - } - - DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply { - setDrawable(context.resources.getDrawable(com.simplemobiletools.commons.R.drawable.divider)) - addItemDecoration(this) - } - - isDragSelectionEnabled = true + val adapter = ItemsAdapter(activity as SimpleActivity, storedItems, this@ItemsFragment, items_list, isPickMultipleIntent) { + itemClicked(it as FileDirItem) } + adapter.setupDragListener(true) + + DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply { + setDrawable(context.resources.getDrawable(com.simplemobiletools.commons.R.drawable.divider)) + items_list.addItemDecoration(this) + } + items_list.adapter = adapter items_fastscroller.setViews(items_list, items_swipe_refresh) - setupRecyclerViewListener() } else { (currAdapter as ItemsAdapter).updateItems(storedItems) @@ -160,28 +156,6 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum } } - private fun setupRecyclerViewListener() { - mView.items_list?.listener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener { - override fun zoomIn() { - - } - - override fun zoomOut() { - - } - - override fun selectItem(position: Int) { - getRecyclerAdapter().selectItem(position) - } - - override fun selectRange(initialSelection: Int, lastDraggedIndex: Int, minReached: Int, maxReached: Int) { - getRecyclerAdapter().selectRange(initialSelection, lastDraggedIndex, minReached, maxReached) - } - } - } - - private fun getRecyclerAdapter() = (items_list.adapter as ItemsAdapter) - fun getScrollState() = getRecyclerLayoutManager().onSaveInstanceState() private fun getRecyclerLayoutManager() = (mView.items_list.layoutManager as LinearLayoutManager) @@ -288,10 +262,6 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum } } - override fun itemLongClicked(position: Int) { - items_list.setDragSelectActive(position) - } - override fun selectedPaths(paths: ArrayList) { (activity as MainActivity).pickedPaths(paths) } diff --git a/app/src/main/res/layout/items_fragment.xml b/app/src/main/res/layout/items_fragment.xml index e39d695f..5f16d5a2 100644 --- a/app/src/main/res/layout/items_fragment.xml +++ b/app/src/main/res/layout/items_fragment.xml @@ -22,7 +22,7 @@ android:layout_height="wrap_content" android:padding="@dimen/activity_margin"/> - + tools:text="Directory"/> + android:textSize="@dimen/smaller_text_size" + tools:text="1 KB"/>