mirror of
				https://github.com/SimpleMobileTools/Simple-Launcher.git
				synced 2025-06-05 21:59:15 +02:00 
			
		
		
		
	rewrite hidden icons adapter so that we can unhide icons
This commit is contained in:
		| @@ -46,8 +46,7 @@ class HiddenIconsActivity : SimpleActivity() { | ||||
|             } | ||||
|  | ||||
|             runOnUiThread { | ||||
|                 HiddenIconsAdapter(this, hiddenIcons) { | ||||
|  | ||||
|                 HiddenIconsAdapter(this, hiddenIcons, manage_hidden_icons_list) { | ||||
|                 }.apply { | ||||
|                     manage_hidden_icons_list.adapter = this | ||||
|                 } | ||||
|   | ||||
| @@ -1,45 +1,70 @@ | ||||
| package com.simplemobiletools.launcher.adapters | ||||
|  | ||||
| import android.view.LayoutInflater | ||||
| import android.view.Menu | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| 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.transition.DrawableCrossFadeFactory | ||||
| import com.simplemobiletools.commons.extensions.getProperTextColor | ||||
| import com.simplemobiletools.commons.activities.BaseSimpleActivity | ||||
| import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter | ||||
| import com.simplemobiletools.commons.extensions.portrait | ||||
| import com.simplemobiletools.commons.extensions.realScreenSize | ||||
| import com.simplemobiletools.commons.views.MyRecyclerView | ||||
| import com.simplemobiletools.launcher.R | ||||
| import com.simplemobiletools.launcher.activities.SimpleActivity | ||||
| import com.simplemobiletools.launcher.models.HiddenIcon | ||||
| import kotlinx.android.synthetic.main.item_hidden_icon.view.* | ||||
|  | ||||
| class HiddenIconsAdapter( | ||||
|     val activity: SimpleActivity, | ||||
|     activity: BaseSimpleActivity, | ||||
|     var hiddenIcons: ArrayList<HiddenIcon>, | ||||
|     val itemClick: (Any) -> Unit | ||||
| ) : RecyclerView.Adapter<HiddenIconsAdapter.ViewHolder>() { | ||||
|     recyclerView: MyRecyclerView, | ||||
|     itemClick: (Any) -> Unit | ||||
| ) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { | ||||
|  | ||||
|     private var textColor = activity.getProperTextColor() | ||||
|     private var iconPadding = 0 | ||||
|  | ||||
|     init { | ||||
|         calculateIconWidth() | ||||
|     } | ||||
|  | ||||
|     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { | ||||
|         val view = LayoutInflater.from(parent.context).inflate(R.layout.item_hidden_icon, parent, false) | ||||
|         return ViewHolder(view) | ||||
|     override fun getActionMenuId() = R.menu.cab_hidden_icons | ||||
|  | ||||
|     override fun prepareActionMode(menu: Menu) {} | ||||
|  | ||||
|     override fun actionItemPressed(id: Int) { | ||||
|         when (id) { | ||||
|             R.id.cab_unhide_icon -> unHideSelection() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getSelectableItemCount() = hiddenIcons.size | ||||
|  | ||||
|     override fun getIsItemSelectable(position: Int) = true | ||||
|  | ||||
|     override fun getItemSelectionKey(position: Int) = hiddenIcons.getOrNull(position)?.hashCode() | ||||
|  | ||||
|     override fun getItemKeyPosition(key: Int) = hiddenIcons.indexOfFirst { it.hashCode() == key } | ||||
|  | ||||
|     override fun onActionModeCreated() {} | ||||
|  | ||||
|     override fun onActionModeDestroyed() {} | ||||
|  | ||||
|     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_hidden_icon, parent) | ||||
|  | ||||
|     override fun onBindViewHolder(holder: ViewHolder, position: Int) { | ||||
|         holder.bindView(hiddenIcons[position]) | ||||
|         val folder = hiddenIcons[position] | ||||
|         holder.bindView(folder, true, true) { itemView, adapterPosition -> | ||||
|             setupView(itemView, folder) | ||||
|         } | ||||
|         bindViewHolder(holder) | ||||
|     } | ||||
|  | ||||
|     override fun getItemCount() = hiddenIcons.size | ||||
|  | ||||
|     private fun unHideSelection() {} | ||||
|  | ||||
|     private fun calculateIconWidth() { | ||||
|         val currentColumnCount = activity.resources.getInteger( | ||||
|             if (activity.portrait) { | ||||
| @@ -53,27 +78,20 @@ class HiddenIconsAdapter( | ||||
|         iconPadding = (iconWidth * 0.1f).toInt() | ||||
|     } | ||||
|  | ||||
|     inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { | ||||
|         fun bindView(icon: HiddenIcon): View { | ||||
|             itemView.apply { | ||||
|                 hidden_icon_label.text = icon.title | ||||
|                 hidden_icon_label.setTextColor(textColor) | ||||
|                 hidden_icon.setPadding(iconPadding, iconPadding, iconPadding, 0) | ||||
|     private fun setupView(view: View, icon: HiddenIcon) { | ||||
|         view.apply { | ||||
|             hidden_icon_holder?.isSelected = selectedKeys.contains(icon.hashCode()) | ||||
|             hidden_icon_label.text = icon.title | ||||
|             hidden_icon_label.setTextColor(textColor) | ||||
|             hidden_icon.setPadding(iconPadding, iconPadding, iconPadding, 0) | ||||
|  | ||||
|                 val factory = DrawableCrossFadeFactory.Builder(150).setCrossFadeEnabled(true).build() | ||||
|             val factory = DrawableCrossFadeFactory.Builder(150).setCrossFadeEnabled(true).build() | ||||
|  | ||||
|                 Glide.with(activity) | ||||
|                     .load(icon.drawable) | ||||
|                     .diskCacheStrategy(DiskCacheStrategy.RESOURCE) | ||||
|                     .transition(DrawableTransitionOptions.withCrossFade(factory)) | ||||
|                     .into(hidden_icon) | ||||
|  | ||||
|                 setOnClickListener { | ||||
|                     itemClick(icon) | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return itemView | ||||
|             Glide.with(activity) | ||||
|                 .load(icon.drawable) | ||||
|                 .diskCacheStrategy(DiskCacheStrategy.RESOURCE) | ||||
|                 .transition(DrawableTransitionOptions.withCrossFade(factory)) | ||||
|                 .into(hidden_icon) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             android:background="@color/color_primary" | ||||
|             app:title="@string/manage_hidden_icons" | ||||
|             app:title="@string/hidden_icons" | ||||
|             app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" /> | ||||
|  | ||||
|     </com.google.android.material.appbar.AppBarLayout> | ||||
|   | ||||
| @@ -6,6 +6,7 @@ | ||||
|     android:background="?attr/selectableItemBackground" | ||||
|     android:clickable="true" | ||||
|     android:focusable="true" | ||||
|     android:foreground="@drawable/selector" | ||||
|     android:paddingStart="@dimen/small_margin" | ||||
|     android:paddingTop="@dimen/medium_margin" | ||||
|     android:paddingEnd="@dimen/small_margin" | ||||
|   | ||||
							
								
								
									
										9
									
								
								app/src/main/res/menu/cab_hidden_icons.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/src/main/res/menu/cab_hidden_icons.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
|     <item | ||||
|         android:id="@+id/cab_unhide_icon" | ||||
|         android:icon="@drawable/ic_unhide_vector" | ||||
|         android:title="@string/unhide" | ||||
|         app:showAsAction="always" /> | ||||
| </menu> | ||||
		Reference in New Issue
	
	Block a user