remove ThumbnailMedium, make Medium itself implement ThumbnailItem
This commit is contained in:
parent
2decc73e39
commit
51182c5563
5 changed files with 29 additions and 62 deletions
|
@ -40,7 +40,6 @@ import com.simplemobiletools.gallery.dialogs.FilterMediaDialog
|
|||
import com.simplemobiletools.gallery.extensions.*
|
||||
import com.simplemobiletools.gallery.helpers.*
|
||||
import com.simplemobiletools.gallery.models.Medium
|
||||
import com.simplemobiletools.gallery.models.ThumbnailMedium
|
||||
import kotlinx.android.synthetic.main.activity_media.*
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
|
@ -319,10 +318,8 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
|||
|
||||
mGroupedMedia.clear()
|
||||
val groupedMedia = MediaFetcher(applicationContext).groupMedia(mMedia.clone() as ArrayList<Medium>, mPath)
|
||||
groupedMedia.filter { it is ThumbnailMedium }.forEach {
|
||||
it as ThumbnailMedium
|
||||
val medium = Medium(0L, it.name, it.path, it.parentPath, it.modified, it.taken, it.size, it.type, it.isFavorite)
|
||||
mGroupedMedia.add(medium)
|
||||
groupedMedia.filter { it is Medium }.forEach {
|
||||
mGroupedMedia.add(it as Medium)
|
||||
}
|
||||
|
||||
val currAdapter = media_grid.adapter
|
||||
|
@ -330,7 +327,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener {
|
|||
initZoomListener()
|
||||
val fastscroller = if (config.scrollHorizontally) media_horizontal_fastscroller else media_vertical_fastscroller
|
||||
MediaAdapter(this, groupedMedia, this, mIsGetImageIntent || mIsGetVideoIntent || mIsGetAnyIntent, mAllowPickingMultiple, media_grid, fastscroller) {
|
||||
itemClicked((it as ThumbnailMedium).path)
|
||||
itemClicked((it as Medium).path)
|
||||
}.apply {
|
||||
setupZoomListener(mZoomListener)
|
||||
media_grid.adapter = this
|
||||
|
|
|
@ -19,8 +19,8 @@ import com.simplemobiletools.gallery.R
|
|||
import com.simplemobiletools.gallery.dialogs.DeleteWithRememberDialog
|
||||
import com.simplemobiletools.gallery.extensions.*
|
||||
import com.simplemobiletools.gallery.helpers.VIEW_TYPE_LIST
|
||||
import com.simplemobiletools.gallery.models.Medium
|
||||
import com.simplemobiletools.gallery.models.ThumbnailItem
|
||||
import com.simplemobiletools.gallery.models.ThumbnailMedium
|
||||
import com.simplemobiletools.gallery.models.ThumbnailSection
|
||||
import kotlinx.android.synthetic.main.photo_video_item_grid.view.*
|
||||
import kotlinx.android.synthetic.main.thumbnail_section.view.*
|
||||
|
@ -77,15 +77,15 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val tmbItem = media.getOrNull(position) ?: return
|
||||
if (tmbItem is ThumbnailMedium) {
|
||||
if (tmbItem is Medium) {
|
||||
visibleItemPaths.add(tmbItem.path)
|
||||
}
|
||||
|
||||
val view = holder.bindView(tmbItem, !allowMultiplePicks) { itemView, adapterPosition ->
|
||||
if (tmbItem is ThumbnailMedium) {
|
||||
setupThumbnailMedium(itemView, tmbItem)
|
||||
if (tmbItem is Medium) {
|
||||
setupThumbnail(itemView, tmbItem)
|
||||
} else {
|
||||
setupThumbnailSection(itemView, tmbItem as ThumbnailSection)
|
||||
setupSection(itemView, tmbItem as ThumbnailSection)
|
||||
}
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
|
@ -137,7 +137,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}
|
||||
}
|
||||
|
||||
override fun getSelectableItemCount() = media.filter { it is ThumbnailMedium }.size
|
||||
override fun getSelectableItemCount() = media.filter { it is Medium }.size
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = !isASectionTitle(position)
|
||||
|
||||
|
@ -191,7 +191,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
|
||||
private fun showProperties() {
|
||||
if (selectedPositions.size <= 1) {
|
||||
PropertiesDialog(activity, (media[selectedPositions.first()] as ThumbnailMedium).path, config.shouldShowHidden)
|
||||
PropertiesDialog(activity, (media[selectedPositions.first()] as Medium).path, config.shouldShowHidden)
|
||||
} else {
|
||||
val paths = getSelectedPaths()
|
||||
PropertiesDialog(activity, paths, config.shouldShowHidden)
|
||||
|
@ -285,7 +285,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}
|
||||
}
|
||||
|
||||
private fun getCurrentPath() = (media[selectedPositions.first()] as ThumbnailMedium).path
|
||||
private fun getCurrentPath() = (media[selectedPositions.first()] as Medium).path
|
||||
|
||||
private fun deleteFiles() {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
|
@ -293,18 +293,18 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}
|
||||
|
||||
val fileDirItems = ArrayList<FileDirItem>(selectedPositions.size)
|
||||
val removeMedia = ArrayList<ThumbnailMedium>(selectedPositions.size)
|
||||
val removeMedia = ArrayList<Medium>(selectedPositions.size)
|
||||
|
||||
if (media.size <= selectedPositions.first()) {
|
||||
finishActMode()
|
||||
return
|
||||
}
|
||||
|
||||
val SAFPath = (media[selectedPositions.first()] as ThumbnailMedium).path
|
||||
val SAFPath = (media[selectedPositions.first()] as Medium).path
|
||||
activity.handleSAFDialog(SAFPath) {
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
val thumbnailItem = media[it]
|
||||
if (thumbnailItem is ThumbnailMedium) {
|
||||
if (thumbnailItem is Medium) {
|
||||
fileDirItems.add(FileDirItem(thumbnailItem.path, thumbnailItem.name))
|
||||
removeMedia.add(thumbnailItem)
|
||||
}
|
||||
|
@ -316,10 +316,10 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}
|
||||
}
|
||||
|
||||
private fun getSelectedMedia(): List<ThumbnailMedium> {
|
||||
val selectedMedia = ArrayList<ThumbnailMedium>(selectedPositions.size)
|
||||
private fun getSelectedMedia(): List<Medium> {
|
||||
val selectedMedia = ArrayList<Medium>(selectedPositions.size)
|
||||
selectedPositions.forEach {
|
||||
selectedMedia.add(media[it] as ThumbnailMedium)
|
||||
selectedMedia.add(media[it] as Medium)
|
||||
}
|
||||
return selectedMedia
|
||||
}
|
||||
|
@ -367,29 +367,29 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}, INSTANT_LOAD_DURATION)
|
||||
}
|
||||
|
||||
fun getItemBubbleText(position: Int, sorting: Int) = (media[position] as? ThumbnailMedium)?.getBubbleText(sorting)
|
||||
fun getItemBubbleText(position: Int, sorting: Int) = (media[position] as? Medium)?.getBubbleText(sorting)
|
||||
|
||||
private fun setupThumbnailMedium(view: View, medium: ThumbnailMedium) {
|
||||
private fun setupThumbnail(view: View, medium: Medium) {
|
||||
view.apply {
|
||||
play_outline.beVisibleIf(medium.isVideo())
|
||||
photo_name.beVisibleIf(displayFilenames || isListViewType)
|
||||
photo_name.text = medium.name
|
||||
photo_name.tag = medium.path
|
||||
|
||||
var thumbnailPath = medium.path
|
||||
if (hasOTGConnected && thumbnailPath.startsWith(OTG_PATH)) {
|
||||
thumbnailPath = thumbnailPath.getOTGPublicPath(context)
|
||||
var path = medium.path
|
||||
if (hasOTGConnected && path.startsWith(OTG_PATH)) {
|
||||
path = path.getOTGPublicPath(context)
|
||||
}
|
||||
|
||||
if (loadImageInstantly) {
|
||||
activity.loadImage(medium.type, thumbnailPath, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
|
||||
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
|
||||
} else {
|
||||
medium_thumbnail.setImageDrawable(null)
|
||||
medium_thumbnail.isHorizontalScrolling = scrollHorizontally
|
||||
delayHandler.postDelayed({
|
||||
val isVisible = visibleItemPaths.contains(medium.path)
|
||||
if (isVisible) {
|
||||
activity.loadImage(medium.type, thumbnailPath, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
|
||||
activity.loadImage(medium.type, path, medium_thumbnail, scrollHorizontally, animateGifs, cropThumbnails)
|
||||
}
|
||||
}, IMAGE_LOAD_DELAY)
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
|||
}
|
||||
}
|
||||
|
||||
private fun setupThumbnailSection(view: View, section: ThumbnailSection) {
|
||||
private fun setupSection(view: View, section: ThumbnailSection) {
|
||||
view.apply {
|
||||
thumbnail_section.text = section.title
|
||||
thumbnail_section.setTextColor(textColor)
|
||||
|
|
|
@ -14,7 +14,6 @@ import com.simplemobiletools.gallery.extensions.getOTGFolderChildren
|
|||
import com.simplemobiletools.gallery.extensions.shouldFolderBeVisible
|
||||
import com.simplemobiletools.gallery.models.Medium
|
||||
import com.simplemobiletools.gallery.models.ThumbnailItem
|
||||
import com.simplemobiletools.gallery.models.ThumbnailMedium
|
||||
import com.simplemobiletools.gallery.models.ThumbnailSection
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
@ -337,15 +336,10 @@ class MediaFetcher(val context: Context) {
|
|||
}
|
||||
|
||||
fun groupMedia(media: ArrayList<Medium>, path: String): ArrayList<ThumbnailItem> {
|
||||
val thumbnailItems = ArrayList<ThumbnailItem>()
|
||||
val mediumGroups = LinkedHashMap<String, ArrayList<Medium>>()
|
||||
val currentGrouping = context.config.getFolderGrouping(path)
|
||||
if (currentGrouping and GROUP_BY_NONE != 0) {
|
||||
media.forEach {
|
||||
val thumbnailMedium = ThumbnailMedium(it.name, it.path, it.parentPath, it.modified, it.taken, it.size, it.type, it.isFavorite)
|
||||
thumbnailItems.add(thumbnailMedium)
|
||||
}
|
||||
return thumbnailItems
|
||||
return media as ArrayList<ThumbnailItem>
|
||||
}
|
||||
|
||||
media.forEach {
|
||||
|
@ -363,12 +357,10 @@ class MediaFetcher(val context: Context) {
|
|||
mediumGroups[key] = value
|
||||
}
|
||||
|
||||
val thumbnailItems = ArrayList<ThumbnailItem>()
|
||||
for ((key, value) in mediumGroups) {
|
||||
thumbnailItems.add(ThumbnailSection(getFormattedKey(key, currentGrouping)))
|
||||
value.forEach {
|
||||
val thumbnailMedium = ThumbnailMedium(it.name, it.path, it.parentPath, it.modified, it.taken, it.size, it.type, it.isFavorite)
|
||||
thumbnailItems.add(thumbnailMedium)
|
||||
}
|
||||
thumbnailItems.addAll(value)
|
||||
}
|
||||
|
||||
return thumbnailItems
|
||||
|
|
|
@ -25,7 +25,7 @@ data class Medium(
|
|||
@ColumnInfo(name = "date_taken") var taken: Long,
|
||||
@ColumnInfo(name = "size") val size: Long,
|
||||
@ColumnInfo(name = "type") val type: Int,
|
||||
@ColumnInfo(name = "is_favorite") var isFavorite: Boolean) : Serializable {
|
||||
@ColumnInfo(name = "is_favorite") var isFavorite: Boolean) : Serializable, ThumbnailItem() {
|
||||
|
||||
companion object {
|
||||
private const val serialVersionUID = -6553149366975455L
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
package com.simplemobiletools.gallery.models
|
||||
|
||||
import com.simplemobiletools.commons.extensions.formatDate
|
||||
import com.simplemobiletools.commons.extensions.formatSize
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_MODIFIED
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_NAME
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_PATH
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_SIZE
|
||||
import com.simplemobiletools.gallery.helpers.TYPE_VIDEOS
|
||||
|
||||
data class ThumbnailMedium(val name: String, val path: String, val parentPath: String, val modified: Long, val taken: Long, val size: Long,
|
||||
val type: Int, var isFavorite: Boolean) : ThumbnailItem() {
|
||||
fun isVideo() = type == TYPE_VIDEOS
|
||||
|
||||
fun getBubbleText(sorting: Int) = when {
|
||||
sorting and SORT_BY_NAME != 0 -> name
|
||||
sorting and SORT_BY_PATH != 0 -> path
|
||||
sorting and SORT_BY_SIZE != 0 -> size.formatSize()
|
||||
sorting and SORT_BY_DATE_MODIFIED != 0 -> modified.formatDate()
|
||||
else -> taken.formatDate()
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue