Skip to content

Commit

Permalink
Toolbar Done button visibility. (esafirm#347)
Browse files Browse the repository at this point in the history
* Added a new variable in ImagePickerConfig.kt Whether to show Done button always or not.

* Code cleanup
  • Loading branch information
dilip786 authored and Sarthak Mishra committed Sep 1, 2023
1 parent 3531a74 commit e8aa180
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class ImagePickerConfig(
var excludedImages: List<File> = emptyList(),
override var savePath: ImagePickerSavePath = ImagePickerSavePath.DEFAULT,
override var returnMode: ReturnMode = ReturnMode.NONE,
override var isSaveImage: Boolean = true
override var isSaveImage: Boolean = true,
var showDoneButtonAlways: Boolean = false
) : BaseConfig(), Parcelable {

@Transient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ class ImagePickerFragment : Fragment(), ImagePickerView {
* Get all selected images then return image to caller activity
*/
fun onDone() {
presenter.onDoneSelectImages(recyclerViewManager!!.selectedImages)
presenter.onDoneSelectImages(recyclerViewManager!!.selectedImages,config)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,16 @@ internal class ImagePickerPresenter(
})
}

fun onDoneSelectImages(selectedImages: List<Image>?) {
if (selectedImages == null || selectedImages.isEmpty()) return
fun onDoneSelectImages(selectedImages: List<Image>?,config: ImagePickerConfig) {

if(config.showDoneButtonAlways && selectedImages?.size==0){
runOnUi {
finishPickImages(emptyList())
}
}

if (selectedImages == null || selectedImages.isEmpty())
return

runOnUi {
finishPickImages(selectedImages.filter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.esafirm.imagepicker.R
import com.esafirm.imagepicker.adapter.FolderPickerAdapter
import com.esafirm.imagepicker.adapter.ImagePickerAdapter
import com.esafirm.imagepicker.features.ImagePickerComponentsHolder
import com.esafirm.imagepicker.features.ImagePickerConfig
import com.esafirm.imagepicker.features.ImagePickerMode
import com.esafirm.imagepicker.features.IpCons
import com.esafirm.imagepicker.features.ReturnMode
import com.esafirm.imagepicker.features.*
import com.esafirm.imagepicker.helper.ConfigUtils
import com.esafirm.imagepicker.listeners.OnFolderClickListener
import com.esafirm.imagepicker.listeners.OnImageClickListener
Expand Down Expand Up @@ -188,7 +184,7 @@ class RecyclerViewManager(

val isShowDoneButton: Boolean
get() = (!isDisplayingFolderView
&& imageAdapter.selectedImages.isNotEmpty()
&& config.returnMode !== ReturnMode.ALL && config.returnMode !== ReturnMode.GALLERY_ONLY)
&& (imageAdapter.selectedImages.isNotEmpty() || config.showDoneButtonAlways)
&& config.returnMode !== ReturnMode.ALL && config.returnMode !== ReturnMode.GALLERY_ONLY)

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import com.esafirm.imagepicker.features.common.BaseConfig
object ConfigUtils {
fun checkConfig(config: ImagePickerConfig): ImagePickerConfig {
check(!(config.mode != ImagePickerMode.SINGLE
&& (config.returnMode === ReturnMode.GALLERY_ONLY
|| config.returnMode === ReturnMode.ALL))) { "ReturnMode.GALLERY_ONLY and ReturnMode.ALL is only applicable in Single Mode!" }
&& (config.returnMode === ReturnMode.GALLERY_ONLY
|| config.returnMode === ReturnMode.ALL))) { "ReturnMode.GALLERY_ONLY and ReturnMode.ALL is only applicable in Single Mode!" }
return config
}

Expand Down
1 change: 1 addition & 0 deletions sample/src/main/java/com/esafirm/sample/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ class MainActivity : AppCompatActivity() {
folderTitle = "Folder" // folder selection title
imageTitle = "Tap to select" // image selection title
doneButtonText = "DONE" // done button text
showDoneButtonAlways = true // Show done button always or not
limit = 10 // max images can be selected (99 by default)
isShowCamera = true // show camera or not (true by default)
savePath = ImagePickerSavePath("Camera") // captured image directory name ("Camera" folder by default)
Expand Down

0 comments on commit e8aa180

Please sign in to comment.