Fix Custom image selector (#5576)

* Custom Image Selector Fix

* Custom Image Selector Fix

* code cleanup

* fixes

* Renamed yue-hant

* added java docs

* fix
This commit is contained in:
Shashank Kumar 2024-03-16 18:45:21 +05:30 committed by GitHub
parent f73c9dc4d3
commit 3e5424e18d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 68 additions and 17 deletions

View file

@ -119,6 +119,7 @@ class ImageAdapter(
* Bind View holder, load image, selected view, click listeners. * Bind View holder, load image, selected view, click listeners.
*/ */
override fun onBindViewHolder(holder: ImageViewHolder, position: Int) { override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
var image=images[position] var image=images[position]
holder.image.setImageDrawable (null) holder.image.setImageDrawable (null)
if (context.contentResolver.getType(image.uri) == null) { if (context.contentResolver.getType(image.uri) == null) {
@ -174,10 +175,12 @@ class ImageAdapter(
// inside map, so it will fetch the image from the map and load in the holder // inside map, so it will fetch the image from the map and load in the holder
} else { } else {
val actionableImages: List<Image> = ArrayList(actionableImagesMap.values) val actionableImages: List<Image> = ArrayList(actionableImagesMap.values)
if(actionableImages.size > position) {
image = actionableImages[position] image = actionableImages[position]
Glide.with(holder.image).load(image.uri) Glide.with(holder.image).load(image.uri)
.thumbnail(0.3f).into(holder.image) .thumbnail(0.3f).into(holder.image)
} }
}
// If switch is turned off, it just fetches the image from all images without any // If switch is turned off, it just fetches the image from all images without any
// further operations // further operations
@ -364,6 +367,48 @@ class ImageAdapter(
notifyDataSetChanged() notifyDataSetChanged()
} }
/**
* Clear selected images and empty the list.
*/
fun clearSelectedImages(){
numberOfSelectedImagesMarkedAsNotForUpload = 0
selectedImages.clear()
selectedImages = arrayListOf()
}
/**
* Remove image from actionable images map.
*/
fun removeImageFromActionableImageMap(image: Image) {
val sharedPreferences: SharedPreferences =
context.getSharedPreferences(CUSTOM_SELECTOR_PREFERENCE_KEY, 0)
val showAlreadyActionedImages =
sharedPreferences.getBoolean(SHOW_ALREADY_ACTIONED_IMAGES_PREFERENCE_KEY, true)
if(showAlreadyActionedImages) {
refresh(allImages, allImages)
} else {
val iterator = actionableImagesMap.entries.iterator()
var index = 0
while (iterator.hasNext()) {
val entry = iterator.next()
if (entry.value == image) {
imagePositionAsPerIncreasingOrder -= 2
iterator.remove()
alreadyAddedPositions.removeAt(alreadyAddedPositions.size - 1)
notifyItemRemoved(index)
notifyItemRangeChanged(index, itemCount )
break
}
index++
}
}
}
/** /**
* Returns the total number of items in the data set held by the adapter. * Returns the total number of items in the data set held by the adapter.
* *

View file

@ -276,8 +276,10 @@ class CustomSelectorActivity : BaseActivity(), FolderClickListener, ImageSelectL
imageSHA1 imageSHA1
) )
) )
} imageFragment!!.removeImage(it)
}
imageFragment!!.clearSelectedImages()
// if all images is already marked as not for upload, delete all images from // if all images is already marked as not for upload, delete all images from
// not for upload table // not for upload table
} else { } else {
@ -290,9 +292,9 @@ class CustomSelectorActivity : BaseActivity(), FolderClickListener, ImageSelectL
) )
notForUploadStatusDao.deleteNotForUploadWithImageSHA1(imageSHA1) notForUploadStatusDao.deleteNotForUploadWithImageSHA1(imageSHA1)
} }
imageFragment!!.refresh()
} }
imageFragment!!.refresh()
imageFragment!!.dismissMarkUnmarkProgressDialog() imageFragment!!.dismissMarkUnmarkProgressDialog()
val bottomLayout: ConstraintLayout = findViewById(R.id.bottom_layout) val bottomLayout: ConstraintLayout = findViewById(R.id.bottom_layout)

View file

@ -339,6 +339,19 @@ class ImageFragment : CommonsDaggerSupportFragment(), RefreshUIListener, PassDat
imageAdapter.refresh(filteredImages, allImages) imageAdapter.refresh(filteredImages, allImages)
} }
/**
* Removes the image from the actionable image map
*/
fun removeImage(image : Image){
imageAdapter.removeImageFromActionableImageMap(image)
}
/**
* Clears the selected images
*/
fun clearSelectedImages() {
imageAdapter.clearSelectedImages()
}
/** /**
* Passes selected images and other information from Activity to Fragment and connects it with * Passes selected images and other information from Activity to Fragment and connects it with
* the adapter * the adapter

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Authors:
* Winston Sung
-->
<resources>
<string name="crash_dialog_title">同享壞咗</string>
<string name="crash_dialog_text">哎呀。出咗錯!</string>
<string name="crash_dialog_ok_toast">多謝你!</string>
</resources>