2020-04-23 18:49:32 +02:00
|
|
|
package com.h.pixeldroid
|
|
|
|
|
2020-05-08 11:42:41 +02:00
|
|
|
import android.Manifest
|
2020-04-23 18:49:32 +02:00
|
|
|
import android.graphics.Color
|
|
|
|
import android.graphics.drawable.ColorDrawable
|
|
|
|
import android.graphics.drawable.Drawable
|
|
|
|
import android.os.Bundle
|
|
|
|
import androidx.fragment.app.Fragment
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
2020-04-30 20:01:35 +02:00
|
|
|
import android.widget.FrameLayout
|
2020-04-23 18:49:32 +02:00
|
|
|
import android.widget.ImageView
|
2020-04-30 20:01:35 +02:00
|
|
|
import android.widget.PopupMenu
|
2020-05-08 11:42:41 +02:00
|
|
|
import android.widget.Toast
|
2020-04-23 18:49:32 +02:00
|
|
|
import com.bumptech.glide.Glide
|
|
|
|
import com.bumptech.glide.RequestBuilder
|
|
|
|
import com.h.pixeldroid.utils.ImageConverter
|
2020-04-30 20:01:35 +02:00
|
|
|
import com.h.pixeldroid.utils.ImageUtils
|
2020-05-08 11:42:41 +02:00
|
|
|
import com.karumi.dexter.Dexter
|
|
|
|
import com.karumi.dexter.listener.PermissionDeniedResponse
|
|
|
|
import com.karumi.dexter.listener.PermissionGrantedResponse
|
|
|
|
import com.karumi.dexter.listener.single.BasePermissionListener
|
2020-04-23 18:49:32 +02:00
|
|
|
import kotlinx.android.synthetic.main.post_fragment.view.*
|
|
|
|
import java.io.Serializable
|
|
|
|
|
|
|
|
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
|
|
|
private const val IMG_URL = "imgurl"
|
|
|
|
private const val RQST_BLDR = "rqstbldr"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A simple [Fragment] subclass.
|
|
|
|
* Use the [ImageFragment.newInstance] factory method to
|
|
|
|
* create an instance of this fragment.
|
|
|
|
*/
|
|
|
|
class ImageFragment : Fragment() {
|
|
|
|
private lateinit var imgUrl: String
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
arguments?.let {
|
|
|
|
imgUrl = it.getString(IMG_URL)!!
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateView(
|
|
|
|
inflater: LayoutInflater, container: ViewGroup?,
|
|
|
|
savedInstanceState: Bundle?
|
|
|
|
): View? {
|
2020-04-30 20:01:35 +02:00
|
|
|
val view = inflater.inflate(R.layout.fragment_image, container, false)
|
2020-04-23 18:49:32 +02:00
|
|
|
|
2020-04-30 20:01:35 +02:00
|
|
|
view.findViewById<ImageView>(R.id.imageImageView).setOnLongClickListener {
|
|
|
|
PopupMenu(view.context, it).apply {
|
|
|
|
setOnMenuItemClickListener { item ->
|
|
|
|
when (item.itemId) {
|
|
|
|
R.id.image_popup_menu_save_to_gallery -> {
|
2020-05-08 11:42:41 +02:00
|
|
|
Dexter.withContext(view.context)
|
|
|
|
.withPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
|
|
|
.withListener(object: BasePermissionListener() {
|
|
|
|
override fun onPermissionDenied(p0: PermissionDeniedResponse?) {
|
|
|
|
Toast.makeText(view.context, "You need to grant write permission to download pictures!", Toast.LENGTH_SHORT).show()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onPermissionGranted(p0: PermissionGrantedResponse?) {
|
|
|
|
ImageUtils.downloadImage(requireActivity(), imgUrl)
|
|
|
|
}
|
|
|
|
}).check()
|
2020-04-30 20:01:35 +02:00
|
|
|
true
|
|
|
|
}
|
2020-05-01 09:01:13 +02:00
|
|
|
R.id.image_popup_menu_share_picture -> {
|
2020-05-08 11:42:41 +02:00
|
|
|
Dexter.withContext(view.context)
|
|
|
|
.withPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
|
|
|
.withListener(object: BasePermissionListener() {
|
|
|
|
override fun onPermissionDenied(p0: PermissionDeniedResponse?) {
|
|
|
|
Toast.makeText(view.context, "You need to grant write permission to share pictures!", Toast.LENGTH_SHORT).show()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onPermissionGranted(p0: PermissionGrantedResponse?) {
|
|
|
|
ImageUtils.downloadImage(requireActivity(), imgUrl, share = true)
|
|
|
|
}
|
|
|
|
}).check()
|
2020-05-01 09:01:13 +02:00
|
|
|
true
|
|
|
|
}
|
2020-04-30 20:01:35 +02:00
|
|
|
else -> false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
inflate(R.menu.image_popup_menu)
|
|
|
|
show()
|
|
|
|
}
|
|
|
|
true
|
|
|
|
}
|
2020-04-23 18:49:32 +02:00
|
|
|
// Inflate the layout for this fragment
|
2020-04-30 20:01:35 +02:00
|
|
|
return view
|
2020-04-23 18:49:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
//Load the image into to view
|
|
|
|
val imageView : ImageView = view.findViewById(R.id.imageImageView)!!
|
|
|
|
val picRequest = Glide.with(this)
|
|
|
|
.asDrawable().fitCenter()
|
|
|
|
.placeholder(ColorDrawable(Color.GRAY))
|
|
|
|
|
|
|
|
picRequest.load(imgUrl).into(imageView)
|
2020-04-30 20:01:35 +02:00
|
|
|
|
2020-04-23 18:49:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
/**
|
|
|
|
* Use this factory method to create a new instance of
|
|
|
|
* this fragment using the provided parameters.
|
|
|
|
*
|
|
|
|
* @param imageUrl the url of the image we want to create a fragment for
|
|
|
|
* @return A new instance of fragment ImageFragment.
|
|
|
|
*/
|
|
|
|
@JvmStatic
|
|
|
|
fun newInstance(imageUrl: String) =
|
|
|
|
ImageFragment().apply {
|
|
|
|
arguments = Bundle().apply {
|
|
|
|
putString(IMG_URL, imageUrl)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|