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.
*/
override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
var image=images[position]
holder.image.setImageDrawable (null)
if (context.contentResolver.getType(image.uri) == null) {
@ -174,9 +175,11 @@ class ImageAdapter(
// inside map, so it will fetch the image from the map and load in the holder
} else {
val actionableImages: List<Image> = ArrayList(actionableImagesMap.values)
image = actionableImages[position]
Glide.with(holder.image).load(image.uri)
.thumbnail(0.3f).into(holder.image)
if(actionableImages.size > position) {
image = actionableImages[position]
Glide.with(holder.image).load(image.uri)
.thumbnail(0.3f).into(holder.image)
}
}
// If switch is turned off, it just fetches the image from all images without any
@ -364,6 +367,48 @@ class ImageAdapter(
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.
*
@ -511,4 +556,4 @@ class ImageAdapter(
return images[position].date
}
}
}

View file

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

View file

@ -339,6 +339,19 @@ class ImageFragment : CommonsDaggerSupportFragment(), RefreshUIListener, PassDat
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
* the adapter
@ -371,4 +384,4 @@ class ImageFragment : CommonsDaggerSupportFragment(), RefreshUIListener, PassDat
}
}
}
}

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>