mirror of
https://github.com/FossifyOrg/Gallery.git
synced 2024-11-26 22:47:59 +01:00
mark the currently selected filter with a white stroke
This commit is contained in:
parent
1112d5f19b
commit
e17aa8b4b8
5 changed files with 50 additions and 12 deletions
|
@ -286,7 +286,7 @@ class EditActivity : SimpleActivity(), CropImageView.OnCropImageCompleteListener
|
||||||
}
|
}
|
||||||
|
|
||||||
val filterItems = filterThumbnailsManager.processThumbs()
|
val filterItems = filterThumbnailsManager.processThumbs()
|
||||||
val adapter = FiltersAdapter(filterItems) {
|
val adapter = FiltersAdapter(applicationContext, filterItems) {
|
||||||
val newBitmap = Bitmap.createBitmap(shownBitmap)
|
val newBitmap = Bitmap.createBitmap(shownBitmap)
|
||||||
default_image_view.setImageBitmap(it.filter.processFilter(newBitmap))
|
default_image_view.setImageBitmap(it.filter.processFilter(newBitmap))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,35 +1,57 @@
|
||||||
package com.simplemobiletools.gallery.adapters
|
package com.simplemobiletools.gallery.adapters
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.simplemobiletools.gallery.R
|
import com.simplemobiletools.gallery.R
|
||||||
|
import com.simplemobiletools.gallery.interfaces.FilterAdapterListener
|
||||||
import com.simplemobiletools.gallery.models.FilterItem
|
import com.simplemobiletools.gallery.models.FilterItem
|
||||||
import kotlinx.android.synthetic.main.editor_filter_item.view.*
|
import kotlinx.android.synthetic.main.editor_filter_item.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class FiltersAdapter(val filterItems: ArrayList<FilterItem>, val itemClick: (FilterItem) -> Unit) : RecyclerView.Adapter<FiltersAdapter.ViewHolder>() {
|
class FiltersAdapter(val context: Context, val filterItems: ArrayList<FilterItem>, val itemClick: (FilterItem) -> Unit) : RecyclerView.Adapter<FiltersAdapter.ViewHolder>(),
|
||||||
|
FilterAdapterListener {
|
||||||
|
|
||||||
|
private var currentSelection = filterItems.first()
|
||||||
|
private var strokeBackground = context.resources.getDrawable(R.drawable.stroke_background)
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
holder.bindView(filterItems[position], itemClick)
|
holder.bindView(filterItems[position], strokeBackground)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.editor_filter_item, parent, false)
|
val view = LayoutInflater.from(parent.context).inflate(R.layout.editor_filter_item, parent, false)
|
||||||
return ViewHolder(view)
|
return ViewHolder(view, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = filterItems.size
|
override fun getItemCount() = filterItems.size
|
||||||
|
|
||||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
override fun getCurrentFilter() = currentSelection
|
||||||
fun bindView(filterItem: FilterItem, itemClick: (FilterItem) -> Unit): View {
|
|
||||||
|
override fun setCurrentFilter(filterItem: FilterItem) {
|
||||||
|
if (currentSelection != filterItem) {
|
||||||
|
currentSelection = filterItem
|
||||||
|
notifyDataSetChanged()
|
||||||
|
itemClick.invoke(filterItem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewHolder(view: View, val filterAdapterListener: FilterAdapterListener) : RecyclerView.ViewHolder(view) {
|
||||||
|
fun bindView(filterItem: FilterItem, strokeBackground: Drawable): View {
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
editor_filter_item_label.text = filterItem.filter.name
|
editor_filter_item_label.text = filterItem.filter.name
|
||||||
editor_filter_item_thumbnail.setImageBitmap(filterItem.bitmap)
|
editor_filter_item_thumbnail.setImageBitmap(filterItem.bitmap)
|
||||||
|
editor_filter_item_thumbnail.background = if (filterAdapterListener.getCurrentFilter() == filterItem) {
|
||||||
|
strokeBackground
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
itemClick.invoke(filterItem)
|
filterAdapterListener.setCurrentFilter(filterItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return itemView
|
return itemView
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.simplemobiletools.gallery.interfaces
|
||||||
|
|
||||||
|
import com.simplemobiletools.gallery.models.FilterItem
|
||||||
|
|
||||||
|
interface FilterAdapterListener {
|
||||||
|
fun getCurrentFilter(): FilterItem
|
||||||
|
|
||||||
|
fun setCurrentFilter(filterItem: FilterItem)
|
||||||
|
}
|
8
app/src/main/res/drawable/stroke_background.xml
Normal file
8
app/src/main/res/drawable/stroke_background.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<stroke android:width="1dp" android:color="#FFFFFFFF"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
|
@ -4,16 +4,15 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/editor_filter_item_holder"
|
android:id="@+id/editor_filter_item_holder"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:paddingLeft="@dimen/tiny_margin"
|
|
||||||
android:paddingRight="@dimen/tiny_margin"
|
|
||||||
android:paddingTop="@dimen/tiny_margin">
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/editor_filter_item_thumbnail"
|
android:id="@+id/editor_filter_item_thumbnail"
|
||||||
android:layout_width="@dimen/bottom_filters_thumbnail_height"
|
android:layout_width="@dimen/bottom_filters_thumbnail_height"
|
||||||
android:layout_height="@dimen/bottom_filters_thumbnail_height"
|
android:layout_height="@dimen/bottom_filters_thumbnail_height"
|
||||||
android:layout_above="@+id/editor_filter_item_label"/>
|
android:layout_above="@+id/editor_filter_item_label"
|
||||||
|
android:background="@drawable/stroke_background"
|
||||||
|
android:padding="1dp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/editor_filter_item_label"
|
android:id="@+id/editor_filter_item_label"
|
||||||
|
|
Loading…
Reference in a new issue