Loading commons/src/main/kotlin/com/simplemobiletools/commons/adapters/FilepickerItemsAdapter.kt +50 −53 Original line number Diff line number Diff line package com.simplemobiletools.commons.adapters import android.content.Context import android.graphics.drawable.Drawable import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.Menu import android.view.View import android.view.ViewGroup import com.bumptech.glide.Glide import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade import com.bumptech.glide.request.RequestOptions import com.simplemobiletools.commons.R import com.simplemobiletools.commons.extensions.baseConfig import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.formatSize import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.isActivityDestroyed import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.MyRecyclerView import kotlinx.android.synthetic.main.filepicker_list_item.view.* class FilepickerItemsAdapter(val context: Context, private val mItems: List<FileDirItem>, val itemClick: (FileDirItem) -> Unit) : RecyclerView.Adapter<FilepickerItemsAdapter.ViewHolder>() { class FilepickerItemsAdapter(activity: BaseSimpleActivity, val fileDirItems: List<FileDirItem>, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { companion object { lateinit var folderDrawable: Drawable lateinit var fileDrawable: Drawable var textColor = 0 } private val folderDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_folder, textColor) private val fileDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_file, textColor) init { textColor = context.baseConfig.textColor folderDrawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_folder, textColor) folderDrawable.alpha = 180 fileDrawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_file, textColor) fileDrawable.alpha = 180 selectableItemCount = fileDirItems.size } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent?.context).inflate(R.layout.filepicker_list_item, parent, false) return ViewHolder(context, view, itemClick) } override fun getActionMenuId() = 0 override fun prepareItemSelection(view: View) {} override fun markItemSelection(select: Boolean, view: View?) {} override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bindView(mItems[position]) override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.filepicker_list_item, parent) override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { val fileDirItem = fileDirItems[position] val view = holder.bindView(fileDirItem, false) { itemView, layoutPosition -> setupView(itemView, fileDirItem) } bindViewHolder(holder, position, view) } override fun onViewRecycled(holder: ViewHolder?) { override fun getItemCount() = fileDirItems.size override fun prepareActionMode(menu: Menu) {} override fun actionItemPressed(id: Int) {} override fun onViewRecycled(holder: MyRecyclerViewAdapter.ViewHolder?) { super.onViewRecycled(holder) holder?.stopLoad() if (!activity.isActivityDestroyed()) { Glide.with(activity).clear(holder?.itemView?.list_item_icon) } } override fun getItemCount() = mItems.size class ViewHolder(val context: Context, val view: View, val itemClick: (FileDirItem) -> (Unit)) : RecyclerView.ViewHolder(view) { fun bindView(fileDirItem: FileDirItem) { itemView.apply { private fun setupView(view: View, fileDirItem: FileDirItem) { view.apply { list_item_name.text = fileDirItem.name list_item_name.setTextColor(textColor) Loading @@ -66,20 +72,11 @@ class FilepickerItemsAdapter(val context: Context, private val mItems: List<File } list_item_details.setTextColor(textColor) setOnClickListener { itemClick(fileDirItem) } } } private fun getChildrenCnt(item: FileDirItem): String { val children = item.children return context.resources.getQuantityString(R.plurals.items, children, children) } fun stopLoad() { try { Glide.with(context).clear(view.list_item_icon) } catch (ignored: Exception) { } } return activity.resources.getQuantityString(R.plurals.items, children, children) } } commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FilePickerDialog.kt +3 −10 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package com.simplemobiletools.commons.dialogs import android.os.Environment import android.os.Parcelable import android.support.v7.app.AlertDialog import android.support.v7.widget.DividerItemDecoration import android.support.v7.widget.LinearLayoutManager import android.view.KeyEvent import android.view.LayoutInflater Loading Loading @@ -111,8 +110,8 @@ class FilePickerDialog(val activity: BaseSimpleActivity, items = items.sortedWith(compareBy({ !it.isDirectory }, { it.name.toLowerCase() })) val adapter = FilepickerItemsAdapter(activity, items) { if (it.isDirectory) { val adapter = FilepickerItemsAdapter(activity, items, mDialogView.filepicker_list) { if ((it as FileDirItem).isDirectory) { currPath = it.path updateItems() } else if (pickFile) { Loading @@ -120,18 +119,12 @@ class FilePickerDialog(val activity: BaseSimpleActivity, verifyPath() } } adapter.addVerticalDividers(true) val layoutManager = mDialogView.filepicker_list.layoutManager as LinearLayoutManager mScrollStates.put(mPrevPath.trimEnd('/'), layoutManager.onSaveInstanceState()) mDialogView.apply { if (filepicker_list.adapter == null) { DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply { setDrawable(context.resources.getDrawable(R.drawable.divider)) filepicker_list.addItemDecoration(this) } } filepicker_list.adapter = adapter filepicker_breadcrumbs.setBreadcrumb(currPath) filepicker_fastscroller.setViews(filepicker_list) Loading commons/src/main/res/layout/dialog_filepicker.xml +1 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ android:paddingRight="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin"/> <android.support.v7.widget.RecyclerView <com.simplemobiletools.commons.views.MyRecyclerView android:id="@+id/filepicker_list" android:layout_width="match_parent" android:layout_height="match_parent" Loading Loading @@ -49,7 +49,6 @@ android:background="@drawable/fastscroller_handle_vertical"/> </com.simplemobiletools.commons.views.FastScroller> </RelativeLayout> <com.simplemobiletools.commons.views.MyFloatingActionButton Loading commons/src/main/res/layout/filepicker_list_item.xml +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:clickable="true" android:focusable="true" android:paddingEnd="@dimen/activity_margin" android:paddingRight="@dimen/activity_margin"> Loading Loading
commons/src/main/kotlin/com/simplemobiletools/commons/adapters/FilepickerItemsAdapter.kt +50 −53 Original line number Diff line number Diff line package com.simplemobiletools.commons.adapters import android.content.Context import android.graphics.drawable.Drawable import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.Menu import android.view.View import android.view.ViewGroup import com.bumptech.glide.Glide import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade import com.bumptech.glide.request.RequestOptions import com.simplemobiletools.commons.R import com.simplemobiletools.commons.extensions.baseConfig import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.formatSize import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.isActivityDestroyed import com.simplemobiletools.commons.models.FileDirItem import com.simplemobiletools.commons.views.MyRecyclerView import kotlinx.android.synthetic.main.filepicker_list_item.view.* class FilepickerItemsAdapter(val context: Context, private val mItems: List<FileDirItem>, val itemClick: (FileDirItem) -> Unit) : RecyclerView.Adapter<FilepickerItemsAdapter.ViewHolder>() { class FilepickerItemsAdapter(activity: BaseSimpleActivity, val fileDirItems: List<FileDirItem>, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { companion object { lateinit var folderDrawable: Drawable lateinit var fileDrawable: Drawable var textColor = 0 } private val folderDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_folder, textColor) private val fileDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_file, textColor) init { textColor = context.baseConfig.textColor folderDrawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_folder, textColor) folderDrawable.alpha = 180 fileDrawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_file, textColor) fileDrawable.alpha = 180 selectableItemCount = fileDirItems.size } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent?.context).inflate(R.layout.filepicker_list_item, parent, false) return ViewHolder(context, view, itemClick) } override fun getActionMenuId() = 0 override fun prepareItemSelection(view: View) {} override fun markItemSelection(select: Boolean, view: View?) {} override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bindView(mItems[position]) override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.filepicker_list_item, parent) override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) { val fileDirItem = fileDirItems[position] val view = holder.bindView(fileDirItem, false) { itemView, layoutPosition -> setupView(itemView, fileDirItem) } bindViewHolder(holder, position, view) } override fun onViewRecycled(holder: ViewHolder?) { override fun getItemCount() = fileDirItems.size override fun prepareActionMode(menu: Menu) {} override fun actionItemPressed(id: Int) {} override fun onViewRecycled(holder: MyRecyclerViewAdapter.ViewHolder?) { super.onViewRecycled(holder) holder?.stopLoad() if (!activity.isActivityDestroyed()) { Glide.with(activity).clear(holder?.itemView?.list_item_icon) } } override fun getItemCount() = mItems.size class ViewHolder(val context: Context, val view: View, val itemClick: (FileDirItem) -> (Unit)) : RecyclerView.ViewHolder(view) { fun bindView(fileDirItem: FileDirItem) { itemView.apply { private fun setupView(view: View, fileDirItem: FileDirItem) { view.apply { list_item_name.text = fileDirItem.name list_item_name.setTextColor(textColor) Loading @@ -66,20 +72,11 @@ class FilepickerItemsAdapter(val context: Context, private val mItems: List<File } list_item_details.setTextColor(textColor) setOnClickListener { itemClick(fileDirItem) } } } private fun getChildrenCnt(item: FileDirItem): String { val children = item.children return context.resources.getQuantityString(R.plurals.items, children, children) } fun stopLoad() { try { Glide.with(context).clear(view.list_item_icon) } catch (ignored: Exception) { } } return activity.resources.getQuantityString(R.plurals.items, children, children) } }
commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FilePickerDialog.kt +3 −10 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package com.simplemobiletools.commons.dialogs import android.os.Environment import android.os.Parcelable import android.support.v7.app.AlertDialog import android.support.v7.widget.DividerItemDecoration import android.support.v7.widget.LinearLayoutManager import android.view.KeyEvent import android.view.LayoutInflater Loading Loading @@ -111,8 +110,8 @@ class FilePickerDialog(val activity: BaseSimpleActivity, items = items.sortedWith(compareBy({ !it.isDirectory }, { it.name.toLowerCase() })) val adapter = FilepickerItemsAdapter(activity, items) { if (it.isDirectory) { val adapter = FilepickerItemsAdapter(activity, items, mDialogView.filepicker_list) { if ((it as FileDirItem).isDirectory) { currPath = it.path updateItems() } else if (pickFile) { Loading @@ -120,18 +119,12 @@ class FilePickerDialog(val activity: BaseSimpleActivity, verifyPath() } } adapter.addVerticalDividers(true) val layoutManager = mDialogView.filepicker_list.layoutManager as LinearLayoutManager mScrollStates.put(mPrevPath.trimEnd('/'), layoutManager.onSaveInstanceState()) mDialogView.apply { if (filepicker_list.adapter == null) { DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply { setDrawable(context.resources.getDrawable(R.drawable.divider)) filepicker_list.addItemDecoration(this) } } filepicker_list.adapter = adapter filepicker_breadcrumbs.setBreadcrumb(currPath) filepicker_fastscroller.setViews(filepicker_list) Loading
commons/src/main/res/layout/dialog_filepicker.xml +1 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ android:paddingRight="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin"/> <android.support.v7.widget.RecyclerView <com.simplemobiletools.commons.views.MyRecyclerView android:id="@+id/filepicker_list" android:layout_width="match_parent" android:layout_height="match_parent" Loading Loading @@ -49,7 +49,6 @@ android:background="@drawable/fastscroller_handle_vertical"/> </com.simplemobiletools.commons.views.FastScroller> </RelativeLayout> <com.simplemobiletools.commons.views.MyFloatingActionButton Loading
commons/src/main/res/layout/filepicker_list_item.xml +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" android:clickable="true" android:focusable="true" android:paddingEnd="@dimen/activity_margin" android:paddingRight="@dimen/activity_margin"> Loading