PixelDroid-App-Android/mediaEditor/src/main/java/org/pixeldroid/media_editor/photoEdit/FilterListFragment.kt

98 lines
3.1 KiB
Kotlin

package org.pixeldroid.media_editor.photoEdit
import android.graphics.Bitmap
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.LinearLayoutManager
import com.zomato.photofilters.FilterPack
import com.zomato.photofilters.imageprocessors.Filter
import com.zomato.photofilters.utils.ThumbnailItem
import com.zomato.photofilters.utils.ThumbnailsManager
import kotlinx.coroutines.launch
import org.pixeldroid.media_editor.R
import org.pixeldroid.media_editor.databinding.FragmentFilterListBinding
class FilterListFragment : Fragment() {
private lateinit var binding: FragmentFilterListBinding
private var listener : ((Filter) -> Unit)? = null
internal lateinit var adapter: ThumbnailAdapter
private lateinit var tbItemList: MutableList<ThumbnailItem>
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
binding = FragmentFilterListBinding.inflate(inflater, container, false)
tbItemList = ArrayList()
binding.recyclerView.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
adapter = ThumbnailAdapter(requireActivity(), tbItemList, this)
binding.recyclerView.adapter = adapter
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
displayImage()
}
private fun displayImage() {
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
val tbImage: Bitmap = bitmapFromUri(requireActivity().contentResolver,
PhotoEditActivity.imageUri
)
setupFilter(tbImage)
tbItemList.addAll(ThumbnailsManager.processThumbs(context))
adapter.notifyDataSetChanged()
}
}
}
private fun setupFilter(tbImage: Bitmap?) {
ThumbnailsManager.clearThumbs()
tbItemList.clear()
val tbItem = ThumbnailItem()
tbItem.image = tbImage
tbItem.filter.name = getString(R.string.normal_filter)
tbItem.filterName = tbItem.filter.name
ThumbnailsManager.addThumb(tbItem)
val filters = FilterPack.getFilterPack(context)
for (filter in filters) {
val item = ThumbnailItem()
item.image = tbImage
item.filter = filter
item.filterName = filter.name
ThumbnailsManager.addThumb(item)
}
}
fun resetSelectedFilter(){
adapter.resetSelected()
}
fun onFilterSelected(filter: Filter) {
listener?.invoke(filter)
}
fun setListener(listFragmentListener: (filter: Filter) -> Unit) {
this.listener = listFragmentListener
}
}