allow batch favorite toggling by long pressing items
This commit is contained in:
parent
e508030496
commit
40dc05602c
2 changed files with 42 additions and 0 deletions
|
@ -80,6 +80,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
|
||||||
findItem(R.id.cab_confirm_selection).isVisible = isAGetIntent && allowMultiplePicks && selectedPositions.size > 0
|
findItem(R.id.cab_confirm_selection).isVisible = isAGetIntent && allowMultiplePicks && selectedPositions.size > 0
|
||||||
|
|
||||||
checkHideBtnVisibility(this)
|
checkHideBtnVisibility(this)
|
||||||
|
checkFavoriteBtnVisibility(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +96,8 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
|
||||||
R.id.cab_edit -> editFile()
|
R.id.cab_edit -> editFile()
|
||||||
R.id.cab_hide -> toggleFileVisibility(true)
|
R.id.cab_hide -> toggleFileVisibility(true)
|
||||||
R.id.cab_unhide -> toggleFileVisibility(false)
|
R.id.cab_unhide -> toggleFileVisibility(false)
|
||||||
|
R.id.cab_add_to_favorites -> toggleFavorites(true)
|
||||||
|
R.id.cab_remove_from_favorites -> toggleFavorites(false)
|
||||||
R.id.cab_share -> shareMedia()
|
R.id.cab_share -> shareMedia()
|
||||||
R.id.cab_copy_to -> copyMoveTo(true)
|
R.id.cab_copy_to -> copyMoveTo(true)
|
||||||
R.id.cab_move_to -> copyMoveTo(false)
|
R.id.cab_move_to -> copyMoveTo(false)
|
||||||
|
@ -131,6 +134,21 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
|
||||||
menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0
|
menu.findItem(R.id.cab_unhide).isVisible = hiddenCnt > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkFavoriteBtnVisibility(menu: Menu) {
|
||||||
|
var favoriteCnt = 0
|
||||||
|
var nonFavoriteCnt = 0
|
||||||
|
selectedPositions.mapNotNull { media.getOrNull(it) }.forEach {
|
||||||
|
if (it.isFavorite) {
|
||||||
|
favoriteCnt++
|
||||||
|
} else {
|
||||||
|
nonFavoriteCnt++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.findItem(R.id.cab_add_to_favorites).isVisible = nonFavoriteCnt > 0
|
||||||
|
menu.findItem(R.id.cab_remove_from_favorites).isVisible = favoriteCnt > 0
|
||||||
|
}
|
||||||
|
|
||||||
private fun confirmSelection() {
|
private fun confirmSelection() {
|
||||||
val paths = getSelectedMedia().map { it.path } as ArrayList<String>
|
val paths = getSelectedMedia().map { it.path } as ArrayList<String>
|
||||||
listener?.selectedPaths(paths)
|
listener?.selectedPaths(paths)
|
||||||
|
@ -177,6 +195,20 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Medium>,
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun toggleFavorites(add: Boolean) {
|
||||||
|
Thread {
|
||||||
|
val mediumDao = activity.galleryDB.MediumDao()
|
||||||
|
getSelectedMedia().forEach {
|
||||||
|
it.isFavorite = add
|
||||||
|
mediumDao.updateFavorite(it.path, add)
|
||||||
|
}
|
||||||
|
activity.runOnUiThread {
|
||||||
|
listener?.refreshItems()
|
||||||
|
finishActMode()
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
|
|
||||||
private fun shareMedia() {
|
private fun shareMedia() {
|
||||||
if (selectedPositions.size == 1 && selectedPositions.first() != -1) {
|
if (selectedPositions.size == 1 && selectedPositions.first() != -1) {
|
||||||
activity.shareMedium(getSelectedMedia()[0])
|
activity.shareMedium(getSelectedMedia()[0])
|
||||||
|
|
|
@ -46,6 +46,16 @@
|
||||||
android:icon="@drawable/ic_select_all"
|
android:icon="@drawable/ic_select_all"
|
||||||
android:title="@string/select_all"
|
android:title="@string/select_all"
|
||||||
app:showAsAction="ifRoom"/>
|
app:showAsAction="ifRoom"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/cab_add_to_favorites"
|
||||||
|
android:icon="@drawable/ic_star_off"
|
||||||
|
android:title="@string/add_to_favorites"
|
||||||
|
app:showAsAction="ifRoom"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/cab_remove_from_favorites"
|
||||||
|
android:icon="@drawable/ic_star_on"
|
||||||
|
android:title="@string/remove_from_favorites"
|
||||||
|
app:showAsAction="ifRoom"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/cab_open_with"
|
android:id="@+id/cab_open_with"
|
||||||
android:title="@string/open_with"
|
android:title="@string/open_with"
|
||||||
|
|
Loading…
Reference in a new issue