properly handle Date Taken value at file copy/move
This commit is contained in:
parent
7f73b9259e
commit
1030021ca1
5 changed files with 25 additions and 8 deletions
|
@ -62,7 +62,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:5.17.9'
|
implementation 'com.simplemobiletools:commons:5.17.12'
|
||||||
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
||||||
implementation 'androidx.multidex:multidex:2.0.1'
|
implementation 'androidx.multidex:multidex:2.0.1'
|
||||||
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
||||||
|
|
|
@ -576,7 +576,11 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
|
|
||||||
val fileDirItems = arrayListOf(FileDirItem(currPath, currPath.getFilenameFromPath()))
|
val fileDirItems = arrayListOf(FileDirItem(currPath, currPath.getFilenameFromPath()))
|
||||||
tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
||||||
fixDateTaken(arrayListOf(currPath), false)
|
val newPath = "$it/${currPath.getFilenameFromPath()}"
|
||||||
|
rescanPaths(arrayListOf(newPath)) {
|
||||||
|
fixDateTaken(arrayListOf(newPath), false)
|
||||||
|
}
|
||||||
|
|
||||||
config.tempFolderPath = ""
|
config.tempFolderPath = ""
|
||||||
if (!isCopyOperation) {
|
if (!isCopyOperation) {
|
||||||
refreshViewPager()
|
refreshViewPager()
|
||||||
|
|
|
@ -442,7 +442,12 @@ class DirectoryAdapter(activity: BaseSimpleActivity, var dirs: ArrayList<Directo
|
||||||
|
|
||||||
val fileDirItems = paths.map { FileDirItem(it, it.getFilenameFromPath()) } as ArrayList<FileDirItem>
|
val fileDirItems = paths.map { FileDirItem(it, it.getFilenameFromPath()) } as ArrayList<FileDirItem>
|
||||||
activity.tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
activity.tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
||||||
activity.fixDateTaken(paths, false)
|
val destinationPath = it
|
||||||
|
val newPaths = fileDirItems.map { "$destinationPath/${it.name}" }.toMutableList() as java.util.ArrayList<String>
|
||||||
|
activity.rescanPaths(newPaths) {
|
||||||
|
activity.fixDateTaken(newPaths, false)
|
||||||
|
}
|
||||||
|
|
||||||
config.tempFolderPath = ""
|
config.tempFolderPath = ""
|
||||||
listener?.refreshItems()
|
listener?.refreshItems()
|
||||||
finishActMode()
|
finishActMode()
|
||||||
|
|
|
@ -326,13 +326,18 @@ class MediaAdapter(activity: BaseSimpleActivity, var media: MutableList<Thumbnai
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
activity.tryCopyMoveFilesTo(fileDirItems, isCopyOperation) {
|
||||||
|
val destinationPath = it
|
||||||
config.tempFolderPath = ""
|
config.tempFolderPath = ""
|
||||||
activity.applicationContext.rescanFolderMedia(it)
|
activity.applicationContext.rescanFolderMedia(destinationPath)
|
||||||
activity.applicationContext.rescanFolderMedia(fileDirItems.first().getParentPath())
|
activity.applicationContext.rescanFolderMedia(fileDirItems.first().getParentPath())
|
||||||
activity.fixDateTaken(paths, false)
|
|
||||||
|
val newPaths = fileDirItems.map { "$destinationPath/${it.name}" }.toMutableList() as ArrayList<String>
|
||||||
|
activity.rescanPaths(newPaths) {
|
||||||
|
activity.fixDateTaken(newPaths, false)
|
||||||
|
}
|
||||||
if (!isCopyOperation) {
|
if (!isCopyOperation) {
|
||||||
listener?.refreshItems()
|
listener?.refreshItems()
|
||||||
activity.updateFavoritePaths(fileDirItems, it)
|
activity.updateFavoritePaths(fileDirItems, destinationPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -292,9 +292,11 @@ fun BaseSimpleActivity.restoreRecycleBinPaths(paths: ArrayList<String>, mediumDa
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rescanPaths(newPaths) {
|
||||||
fixDateTaken(newPaths, false)
|
fixDateTaken(newPaths, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) {
|
fun BaseSimpleActivity.emptyTheRecycleBin(callback: (() -> Unit)? = null) {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
|
@ -356,7 +358,8 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, showToasts: Boolean, callbac
|
||||||
var didUpdateFile = false
|
var didUpdateFile = false
|
||||||
val operations = ArrayList<ContentProviderOperation>()
|
val operations = ArrayList<ContentProviderOperation>()
|
||||||
val mediumDao = galleryDB.MediumDao()
|
val mediumDao = galleryDB.MediumDao()
|
||||||
rescanPaths(paths) {
|
|
||||||
|
ensureBackgroundThread {
|
||||||
for (path in paths) {
|
for (path in paths) {
|
||||||
val dateTime = ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME_ORIGINAL)
|
val dateTime = ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME_ORIGINAL)
|
||||||
?: ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME) ?: continue
|
?: ExifInterface(path).getAttribute(ExifInterface.TAG_DATETIME) ?: continue
|
||||||
|
|
Loading…
Reference in a new issue