store MediumDao and DirectoryDao globally in Main and Media activities

This commit is contained in:
tibbi 2018-07-29 21:54:27 +02:00
parent 264ffa7422
commit e1214b4d47
2 changed files with 32 additions and 21 deletions

View file

@ -33,6 +33,7 @@ import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.helpers.* import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.interfaces.DirectoryDao import com.simplemobiletools.gallery.interfaces.DirectoryDao
import com.simplemobiletools.gallery.interfaces.DirectoryOperationsListener import com.simplemobiletools.gallery.interfaces.DirectoryOperationsListener
import com.simplemobiletools.gallery.interfaces.MediumDao
import com.simplemobiletools.gallery.models.AlbumCover import com.simplemobiletools.gallery.models.AlbumCover
import com.simplemobiletools.gallery.models.Directory import com.simplemobiletools.gallery.models.Directory
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
@ -73,11 +74,17 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mStoredPrimaryColor = 0 private var mStoredPrimaryColor = 0
private lateinit var mMediumDao: MediumDao
private lateinit var mDirectoryDao: DirectoryDao
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
appLaunched(BuildConfig.APPLICATION_ID) appLaunched(BuildConfig.APPLICATION_ID)
mMediumDao = galleryDB.MediumDao()
mDirectoryDao = galleryDB.DirectoryDao()
config.temporarilyShowHidden = false config.temporarilyShowHidden = false
config.tempSkipDeleteConfirmation = false config.tempSkipDeleteConfirmation = false
mIsPickImageIntent = isPickImageIntent(intent) mIsPickImageIntent = isPickImageIntent(intent)
@ -435,9 +442,8 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} }
Thread { Thread {
val directoryDao = galleryDB.DirectoryDao()
folders.filter { !it.exists() }.forEach { folders.filter { !it.exists() }.forEach {
directoryDao.deleteDirPath(it.absolutePath) mDirectoryDao.deleteDirPath(it.absolutePath)
} }
}.start() }.start()
} }
@ -693,8 +699,6 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
val albumCovers = config.parseAlbumCovers() val albumCovers = config.parseAlbumCovers()
val includedFolders = config.includedFolders val includedFolders = config.includedFolders
val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0 val isSortingAscending = config.directorySorting and SORT_DESCENDING == 0
val mediumDao = galleryDB.MediumDao()
val directoryDao = galleryDB.DirectoryDao()
val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0 val getProperDateTaken = config.directorySorting and SORT_BY_DATE_TAKEN != 0
val favoritePaths = getFavoritePaths() val favoritePaths = getFavoritePaths()
@ -731,14 +735,14 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
// update directories and media files in the local db, delete invalid items // update directories and media files in the local db, delete invalid items
updateDBDirectory(directory) updateDBDirectory(directory)
if (!directory.isRecycleBin()) { if (!directory.isRecycleBin()) {
mediumDao.insertAll(curMedia) mMediumDao.insertAll(curMedia)
} }
getCachedMedia(directory.path, getVideosOnly, getImagesOnly) { getCachedMedia(directory.path, getVideosOnly, getImagesOnly) {
it.forEach { it.forEach {
if (!curMedia.contains(it)) { if (!curMedia.contains(it)) {
val path = (it as? Medium)?.path val path = (it as? Medium)?.path
if (path != null) { if (path != null) {
mediumDao.deleteMediumPath(path) mMediumDao.deleteMediumPath(path)
} }
} }
} }
@ -782,9 +786,9 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, isSortingAscending) val newDir = createDirectoryFromMedia(folder, newMedia, albumCovers, hiddenString, includedFolders, isSortingAscending)
dirs.add(newDir) dirs.add(newDir)
showSortedDirs(dirs) showSortedDirs(dirs)
directoryDao.insert(newDir) mDirectoryDao.insert(newDir)
if (folder != RECYCLE_BIN) { if (folder != RECYCLE_BIN) {
mediumDao.insertAll(newMedia) mMediumDao.insertAll(newMedia)
} }
} }
@ -795,7 +799,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
directories_refresh_layout.isRefreshing = false directories_refresh_layout.isRefreshing = false
checkPlaceholderVisibility(dirs) checkPlaceholderVisibility(dirs)
} }
checkInvalidDirectories(dirs, directoryDao) checkInvalidDirectories(dirs)
val everShownFolders = config.everShownFolders as HashSet val everShownFolders = config.everShownFolders as HashSet
dirs.mapTo(everShownFolders) { it.path } dirs.mapTo(everShownFolders) { it.path }
@ -895,7 +899,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
} }
} }
private fun checkInvalidDirectories(dirs: ArrayList<Directory>, directoryDao: DirectoryDao) { private fun checkInvalidDirectories(dirs: ArrayList<Directory>) {
val invalidDirs = ArrayList<Directory>() val invalidDirs = ArrayList<Directory>()
dirs.filter { !it.areFavorites() && !it.isRecycleBin() }.forEach { dirs.filter { !it.areFavorites() && !it.isRecycleBin() }.forEach {
if (!getDoesFilePathExist(it.path)) { if (!getDoesFilePathExist(it.path)) {
@ -918,7 +922,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
if (config.useRecycleBin) { if (config.useRecycleBin) {
val binFolder = dirs.firstOrNull { it.path == RECYCLE_BIN } val binFolder = dirs.firstOrNull { it.path == RECYCLE_BIN }
if (binFolder != null && galleryDB.MediumDao().getDeletedMedia().isEmpty()) { if (binFolder != null && mMediumDao.getDeletedMedia().isEmpty()) {
invalidDirs.add(binFolder) invalidDirs.add(binFolder)
} }
} }
@ -927,7 +931,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
dirs.removeAll(invalidDirs) dirs.removeAll(invalidDirs)
showSortedDirs(dirs) showSortedDirs(dirs)
invalidDirs.forEach { invalidDirs.forEach {
directoryDao.deleteDirPath(it.path) mDirectoryDao.deleteDirPath(it.path)
} }
} }
} }
@ -971,11 +975,10 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private fun checkRecycleBinItems() { private fun checkRecycleBinItems() {
if (config.useRecycleBin) { if (config.useRecycleBin) {
Thread { Thread {
val mediumDao = galleryDB.MediumDao() val deletedMedia = mMediumDao.getDeletedMedia()
val deletedMedia = mediumDao.getDeletedMedia()
deletedMedia.forEach { deletedMedia.forEach {
if (System.currentTimeMillis() > it.deletedTS + MONTH_MILLISECONDS) { if (System.currentTimeMillis() > it.deletedTS + MONTH_MILLISECONDS) {
mediumDao.deleteMediumPath(it.path) mMediumDao.deleteMediumPath(it.path)
} }
} }
}.start() }.start()

View file

@ -39,7 +39,9 @@ import com.simplemobiletools.gallery.dialogs.ExcludeFolderDialog
import com.simplemobiletools.gallery.dialogs.FilterMediaDialog import com.simplemobiletools.gallery.dialogs.FilterMediaDialog
import com.simplemobiletools.gallery.extensions.* import com.simplemobiletools.gallery.extensions.*
import com.simplemobiletools.gallery.helpers.* import com.simplemobiletools.gallery.helpers.*
import com.simplemobiletools.gallery.interfaces.DirectoryDao
import com.simplemobiletools.gallery.interfaces.MediaOperationsListener import com.simplemobiletools.gallery.interfaces.MediaOperationsListener
import com.simplemobiletools.gallery.interfaces.MediumDao
import com.simplemobiletools.gallery.models.Medium import com.simplemobiletools.gallery.models.Medium
import com.simplemobiletools.gallery.models.ThumbnailItem import com.simplemobiletools.gallery.models.ThumbnailItem
import com.simplemobiletools.gallery.models.ThumbnailSection import com.simplemobiletools.gallery.models.ThumbnailSection
@ -75,6 +77,9 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mStoredPrimaryColor = 0 private var mStoredPrimaryColor = 0
private lateinit var mMediumDao: MediumDao
private lateinit var mDirectoryDao: DirectoryDao
companion object { companion object {
var mMedia = ArrayList<ThumbnailItem>() var mMedia = ArrayList<ThumbnailItem>()
} }
@ -82,6 +87,10 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_media) setContentView(R.layout.activity_media)
mMediumDao = galleryDB.MediumDao()
mDirectoryDao = galleryDB.DirectoryDao()
intent.apply { intent.apply {
mIsGetImageIntent = getBooleanExtra(GET_IMAGE_INTENT, false) mIsGetImageIntent = getBooleanExtra(GET_IMAGE_INTENT, false)
mIsGetVideoIntent = getBooleanExtra(GET_VIDEO_INTENT, false) mIsGetVideoIntent = getBooleanExtra(GET_VIDEO_INTENT, false)
@ -447,7 +456,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
val paths = mMedia.filter { it is Medium }.map { (it as Medium).path } as ArrayList<String> val paths = mMedia.filter { it is Medium }.map { (it as Medium).path } as ArrayList<String>
restoreRecycleBinPaths(paths) { restoreRecycleBinPaths(paths) {
Thread { Thread {
galleryDB.DirectoryDao().deleteDirPath(RECYCLE_BIN) mDirectoryDao.deleteDirPath(RECYCLE_BIN)
}.start() }.start()
finish() finish()
} }
@ -575,7 +584,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
if (mPath == FAVORITES) { if (mPath == FAVORITES) {
Thread { Thread {
galleryDB.DirectoryDao().deleteDirPath(FAVORITES) mDirectoryDao.deleteDirPath(FAVORITES)
}.start() }.start()
} }
@ -588,7 +597,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
private fun deleteDBDirectory() { private fun deleteDBDirectory() {
Thread { Thread {
galleryDB.DirectoryDao().deleteDirPath(mPath) mDirectoryDao.deleteDirPath(mPath)
}.start() }.start()
} }
@ -815,7 +824,7 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
mLatestMediaDateId = getLatestMediaByDateId() mLatestMediaDateId = getLatestMediaByDateId()
if (!isFromCache) { if (!isFromCache) {
val mediaToInsert = (mMedia).filter { it is Medium && it.deletedTS == 0L }.map { it as Medium } val mediaToInsert = (mMedia).filter { it is Medium && it.deletedTS == 0L }.map { it as Medium }
galleryDB.MediumDao().insertAll(mediaToInsert) mMediumDao.insertAll(mediaToInsert)
} }
} }
@ -847,11 +856,10 @@ class MediaActivity : SimpleActivity(), MediaOperationsListener {
mMedia.removeAll { filtered.map { it.path }.contains((it as? Medium)?.path) } mMedia.removeAll { filtered.map { it.path }.contains((it as? Medium)?.path) }
Thread { Thread {
val mediumDao = galleryDB.MediumDao()
val useRecycleBin = config.useRecycleBin val useRecycleBin = config.useRecycleBin
filtered.forEach { filtered.forEach {
if (!useRecycleBin) { if (!useRecycleBin) {
mediumDao.deleteMediumPath(it.path) mMediumDao.deleteMediumPath(it.path)
} }
} }
}.start() }.start()