11package com.simplemobiletools.launcher.adapters
22
3- import android.view.LayoutInflater
3+ import android.view.Menu
44import android.view.View
55import android.view.ViewGroup
6- import androidx.recyclerview.widget.RecyclerView
76import com.bumptech.glide.Glide
87import com.bumptech.glide.load.engine.DiskCacheStrategy
98import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
109import com.bumptech.glide.request.transition.DrawableCrossFadeFactory
11- import com.simplemobiletools.commons.extensions.getProperTextColor
10+ import com.simplemobiletools.commons.activities.BaseSimpleActivity
11+ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
1212import com.simplemobiletools.commons.extensions.portrait
1313import com.simplemobiletools.commons.extensions.realScreenSize
14+ import com.simplemobiletools.commons.views.MyRecyclerView
1415import com.simplemobiletools.launcher.R
15- import com.simplemobiletools.launcher.activities.SimpleActivity
1616import com.simplemobiletools.launcher.models.HiddenIcon
1717import kotlinx.android.synthetic.main.item_hidden_icon.view.*
1818
1919class HiddenIconsAdapter (
20- val activity : SimpleActivity ,
20+ activity : BaseSimpleActivity ,
2121 var hiddenIcons : ArrayList <HiddenIcon >,
22- val itemClick : (Any ) -> Unit
23- ) : RecyclerView.Adapter<HiddenIconsAdapter.ViewHolder>() {
22+ recyclerView : MyRecyclerView ,
23+ itemClick : (Any ) -> Unit
24+ ) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
2425
25- private var textColor = activity.getProperTextColor()
2626 private var iconPadding = 0
2727
2828 init {
2929 calculateIconWidth()
3030 }
3131
32- override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ): ViewHolder {
33- val view = LayoutInflater .from(parent.context).inflate(R .layout.item_hidden_icon, parent, false )
34- return ViewHolder (view)
32+ override fun getActionMenuId () = R .menu.cab_hidden_icons
33+
34+ override fun prepareActionMode (menu : Menu ) {}
35+
36+ override fun actionItemPressed (id : Int ) {
37+ when (id) {
38+ R .id.cab_unhide_icon -> unHideSelection()
39+ }
3540 }
3641
42+ override fun getSelectableItemCount () = hiddenIcons.size
43+
44+ override fun getIsItemSelectable (position : Int ) = true
45+
46+ override fun getItemSelectionKey (position : Int ) = hiddenIcons.getOrNull(position)?.hashCode()
47+
48+ override fun getItemKeyPosition (key : Int ) = hiddenIcons.indexOfFirst { it.hashCode() == key }
49+
50+ override fun onActionModeCreated () {}
51+
52+ override fun onActionModeDestroyed () {}
53+
54+ override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ) = createViewHolder(R .layout.item_hidden_icon, parent)
55+
3756 override fun onBindViewHolder (holder : ViewHolder , position : Int ) {
38- holder.bindView(hiddenIcons[position])
57+ val folder = hiddenIcons[position]
58+ holder.bindView(folder, true , true ) { itemView, adapterPosition ->
59+ setupView(itemView, folder)
60+ }
61+ bindViewHolder(holder)
3962 }
4063
4164 override fun getItemCount () = hiddenIcons.size
4265
66+ private fun unHideSelection () {}
67+
4368 private fun calculateIconWidth () {
4469 val currentColumnCount = activity.resources.getInteger(
4570 if (activity.portrait) {
@@ -53,27 +78,20 @@ class HiddenIconsAdapter(
5378 iconPadding = (iconWidth * 0.1f ).toInt()
5479 }
5580
56- inner class ViewHolder (view : View ) : RecyclerView.ViewHolder(view ) {
57- fun bindView ( icon : HiddenIcon ): View {
58- itemView. apply {
59- hidden_icon_label.text = icon.title
60- hidden_icon_label.setTextColor(textColor)
61- hidden_icon.setPadding(iconPadding, iconPadding, iconPadding, 0 )
81+ private fun setupView (view : View , icon : HiddenIcon ) {
82+ view. apply {
83+ hidden_icon_holder?.isSelected = selectedKeys.contains(icon.hashCode())
84+ hidden_icon_label.text = icon.title
85+ hidden_icon_label.setTextColor(textColor)
86+ hidden_icon.setPadding(iconPadding, iconPadding, iconPadding, 0 )
6287
63- val factory = DrawableCrossFadeFactory .Builder (150 ).setCrossFadeEnabled(true ).build()
64-
65- Glide .with (activity)
66- .load(icon.drawable)
67- .diskCacheStrategy(DiskCacheStrategy .RESOURCE )
68- .transition(DrawableTransitionOptions .withCrossFade(factory))
69- .into(hidden_icon)
70-
71- setOnClickListener {
72- itemClick(icon)
73- }
74- }
88+ val factory = DrawableCrossFadeFactory .Builder (150 ).setCrossFadeEnabled(true ).build()
7589
76- return itemView
90+ Glide .with (activity)
91+ .load(icon.drawable)
92+ .diskCacheStrategy(DiskCacheStrategy .RESOURCE )
93+ .transition(DrawableTransitionOptions .withCrossFade(factory))
94+ .into(hidden_icon)
7795 }
7896 }
7997}
0 commit comments