mirror of
https://github.com/FossifyOrg/Gallery.git
synced 2024-11-30 08:18:00 +01:00
recheck every 3 seconds if some media changed at folders view
This commit is contained in:
parent
ddb6310937
commit
2cc9d1051c
2 changed files with 37 additions and 0 deletions
|
@ -7,6 +7,7 @@ import android.content.pm.PackageManager
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Handler
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.support.v4.app.ActivityCompat
|
import android.support.v4.app.ActivityCompat
|
||||||
import android.support.v7.widget.GridLayoutManager
|
import android.support.v7.widget.GridLayoutManager
|
||||||
|
@ -32,6 +33,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
private val STORAGE_PERMISSION = 1
|
private val STORAGE_PERMISSION = 1
|
||||||
private val PICK_MEDIA = 2
|
private val PICK_MEDIA = 2
|
||||||
private val PICK_WALLPAPER = 3
|
private val PICK_WALLPAPER = 3
|
||||||
|
private val LAST_MEDIA_CHECK_PERIOD = 3000L
|
||||||
|
|
||||||
lateinit var mDirs: ArrayList<Directory>
|
lateinit var mDirs: ArrayList<Directory>
|
||||||
|
|
||||||
|
@ -46,6 +48,8 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
private var mStoredAnimateGifs = true
|
private var mStoredAnimateGifs = true
|
||||||
private var mStoredCropThumbnails = true
|
private var mStoredCropThumbnails = true
|
||||||
private var mLoadedInitialPhotos = false
|
private var mLoadedInitialPhotos = false
|
||||||
|
private var mLastMediaModified = 0
|
||||||
|
private var mLastMediaHandler = Handler()
|
||||||
|
|
||||||
private var mCurrAsyncTask: GetDirectoriesAsynctask? = null
|
private var mCurrAsyncTask: GetDirectoriesAsynctask? = null
|
||||||
|
|
||||||
|
@ -119,6 +123,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
mStoredAnimateGifs = config.animateGifs
|
mStoredAnimateGifs = config.animateGifs
|
||||||
mStoredCropThumbnails = config.cropThumbnails
|
mStoredCropThumbnails = config.cropThumbnails
|
||||||
MyScalableRecyclerView.mListener = null
|
MyScalableRecyclerView.mListener = null
|
||||||
|
mLastMediaHandler.removeCallbacksAndMessages(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
|
@ -321,9 +326,11 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun gotDirectories(dirs: ArrayList<Directory>) {
|
private fun gotDirectories(dirs: ArrayList<Directory>) {
|
||||||
|
mLastMediaModified = getLastMediaModified()
|
||||||
directories_refresh_layout.isRefreshing = false
|
directories_refresh_layout.isRefreshing = false
|
||||||
mIsGettingDirs = false
|
mIsGettingDirs = false
|
||||||
|
|
||||||
|
checkLastMediaChanged()
|
||||||
if (dirs.hashCode() == mDirs.hashCode())
|
if (dirs.hashCode() == mDirs.hashCode())
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -352,6 +359,19 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener {
|
||||||
directories_fastscroller.setViews(directories_grid, directories_refresh_layout)
|
directories_fastscroller.setViews(directories_grid, directories_refresh_layout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkLastMediaChanged() {
|
||||||
|
mLastMediaHandler.removeCallbacksAndMessages(null)
|
||||||
|
mLastMediaHandler.postDelayed({
|
||||||
|
val lastModified = getLastMediaModified()
|
||||||
|
if (mLastMediaModified != lastModified) {
|
||||||
|
getDirectories()
|
||||||
|
mLastMediaModified = lastModified
|
||||||
|
} else {
|
||||||
|
checkLastMediaChanged()
|
||||||
|
}
|
||||||
|
}, LAST_MEDIA_CHECK_PERIOD)
|
||||||
|
}
|
||||||
|
|
||||||
override fun refreshItems() {
|
override fun refreshItems() {
|
||||||
getDirectories()
|
getDirectories()
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,3 +194,20 @@ fun Context.getNoMediaFolders(): ArrayList<String> {
|
||||||
|
|
||||||
return folders
|
return folders
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun Context.getLastMediaModified(): Int {
|
||||||
|
val uri = MediaStore.Files.getContentUri("external")
|
||||||
|
val projection = arrayOf(MediaStore.Images.Media._ID, MediaStore.Images.Media.DATE_MODIFIED)
|
||||||
|
val order = "${MediaStore.Images.Media.DATE_MODIFIED} DESC"
|
||||||
|
var cursor: Cursor? = null
|
||||||
|
try {
|
||||||
|
cursor = contentResolver.query(uri, projection, null, null, order)
|
||||||
|
if (cursor?.moveToFirst() == true) {
|
||||||
|
return cursor.getIntValue(MediaStore.Images.Media.DATE_MODIFIED)
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
cursor?.close()
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue