mirror of
https://github.com/SimpleMobileTools/Simple-Gallery.git
synced 2025-06-05 21:59:19 +02:00
add an activity for displaying hidden folders
This commit is contained in:
@ -15,15 +15,17 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_manage_folders)
|
||||
updateExcludedFolders()
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun updateExcludedFolders() {
|
||||
private fun updateFolders() {
|
||||
val folders = ArrayList<String>()
|
||||
config.excludedFolders.mapTo(folders, { it })
|
||||
manage_folders_placeholder.text = getString(R.string.excluded_activity_placeholder)
|
||||
manage_folders_placeholder.beVisibleIf(folders.isEmpty())
|
||||
manage_folders_placeholder.setTextColor(config.textColor)
|
||||
manage_folders_placeholder.apply {
|
||||
text = getString(R.string.excluded_activity_placeholder)
|
||||
beVisibleIf(folders.isEmpty())
|
||||
setTextColor(config.textColor)
|
||||
}
|
||||
|
||||
val adapter = ManageFoldersAdapter(this, folders, true, this, manage_folders_list) {}
|
||||
adapter.setupDragListener(true)
|
||||
@ -31,26 +33,26 @@ class ExcludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_excluded_folders, menu)
|
||||
menuInflater.inflate(R.menu.menu_add_folder, menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.add_folder -> addExcludedFolder()
|
||||
R.id.add_folder -> addFolder()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun refreshItems() {
|
||||
updateExcludedFolders()
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun addExcludedFolder() {
|
||||
private fun addFolder() {
|
||||
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) {
|
||||
config.addExcludedFolder(it)
|
||||
updateExcludedFolders()
|
||||
updateFolders()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,52 @@
|
||||
package com.simplemobiletools.gallery.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
|
||||
import com.simplemobiletools.gallery.R
|
||||
import com.simplemobiletools.gallery.extensions.config
|
||||
import com.simplemobiletools.gallery.extensions.getNoMediaFolders
|
||||
import kotlinx.android.synthetic.main.activity_manage_folders.*
|
||||
|
||||
class HiddenFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_manage_folders)
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun updateFolders() {
|
||||
val folders = getNoMediaFolders()
|
||||
manage_folders_placeholder.apply {
|
||||
text = getString(R.string.hidden_folders_placeholder)
|
||||
beVisibleIf(folders.isEmpty())
|
||||
setTextColor(config.textColor)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_add_folder, menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.add_folder -> addFolder()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun refreshItems() {
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun addFolder() {
|
||||
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -16,15 +16,17 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_manage_folders)
|
||||
updateIncludedFolders()
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun updateIncludedFolders() {
|
||||
private fun updateFolders() {
|
||||
val folders = ArrayList<String>()
|
||||
config.includedFolders.mapTo(folders, { it })
|
||||
manage_folders_placeholder.text = getString(R.string.included_activity_placeholder)
|
||||
manage_folders_placeholder.beVisibleIf(folders.isEmpty())
|
||||
manage_folders_placeholder.setTextColor(config.textColor)
|
||||
manage_folders_placeholder.apply {
|
||||
text = getString(R.string.included_activity_placeholder)
|
||||
beVisibleIf(folders.isEmpty())
|
||||
setTextColor(config.textColor)
|
||||
}
|
||||
|
||||
val adapter = ManageFoldersAdapter(this, folders, false, this, manage_folders_list) {}
|
||||
adapter.setupDragListener(true)
|
||||
@ -32,26 +34,26 @@ class IncludedFoldersActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_included_folders, menu)
|
||||
menuInflater.inflate(R.menu.menu_add_folder, menu)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.add_folder -> addIncludedFolder()
|
||||
R.id.add_folder -> addFolder()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun refreshItems() {
|
||||
updateIncludedFolders()
|
||||
updateFolders()
|
||||
}
|
||||
|
||||
private fun addIncludedFolder() {
|
||||
private fun addFolder() {
|
||||
FilePickerDialog(this, pickFile = false, showHidden = config.shouldShowHidden) {
|
||||
config.addIncludedFolder(it)
|
||||
updateIncludedFolders()
|
||||
updateFolders()
|
||||
Thread {
|
||||
scanPath(it)
|
||||
}.start()
|
||||
|
@ -38,6 +38,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupUseEnglish()
|
||||
setupManageIncludedFolders()
|
||||
setupManageExcludedFolders()
|
||||
setupManageHiddenFolders()
|
||||
setupShowHiddenFolders()
|
||||
setupAutoplayVideos()
|
||||
setupLoopVideos()
|
||||
@ -89,6 +90,12 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupManageHiddenFolders() {
|
||||
settings_manage_hidden_folders_holder.setOnClickListener {
|
||||
startActivity(Intent(this, HiddenFoldersActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupShowHiddenFolders() {
|
||||
settings_show_hidden_folders.isChecked = config.showHiddenMedia
|
||||
settings_show_hidden_folders_holder.setOnClickListener {
|
||||
|
@ -3,14 +3,19 @@ package com.simplemobiletools.gallery.extensions
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
import android.database.Cursor
|
||||
import android.graphics.Point
|
||||
import android.media.AudioManager
|
||||
import android.os.Build
|
||||
import android.provider.MediaStore
|
||||
import android.view.WindowManager
|
||||
import com.simplemobiletools.commons.extensions.getStringValue
|
||||
import com.simplemobiletools.commons.extensions.humanizePath
|
||||
import com.simplemobiletools.gallery.activities.SettingsActivity
|
||||
import com.simplemobiletools.gallery.helpers.Config
|
||||
import com.simplemobiletools.gallery.helpers.NOMEDIA
|
||||
import com.simplemobiletools.gallery.models.Directory
|
||||
import java.io.File
|
||||
|
||||
val Context.portrait get() = resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
|
||||
val Context.audioManager get() = getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
@ -73,3 +78,32 @@ fun Context.getSortedDirectories(source: ArrayList<Directory>): ArrayList<Direct
|
||||
dirs.sort()
|
||||
return movePinnedDirectoriesToFront(dirs)
|
||||
}
|
||||
|
||||
fun Context.getNoMediaFolders(): ArrayList<String> {
|
||||
val folders = ArrayList<String>()
|
||||
|
||||
val uri = MediaStore.Files.getContentUri("external")
|
||||
val projection = arrayOf(MediaStore.Files.FileColumns.DATA)
|
||||
val selection = "${MediaStore.Files.FileColumns.MEDIA_TYPE} = ? AND ${MediaStore.Files.FileColumns.TITLE} LIKE ?"
|
||||
val selectionArgs = arrayOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
|
||||
val sortOrder = MediaStore.Files.FileColumns.DATA
|
||||
|
||||
var cursor: Cursor? = null
|
||||
|
||||
try {
|
||||
cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
|
||||
if (cursor?.moveToFirst() == true) {
|
||||
do {
|
||||
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA) ?: continue
|
||||
val noMediaFile = File(path)
|
||||
if (noMediaFile.exists()) {
|
||||
folders.add("${noMediaFile.parent}/")
|
||||
}
|
||||
} while (cursor.moveToNext())
|
||||
}
|
||||
} finally {
|
||||
cursor?.close()
|
||||
}
|
||||
|
||||
return folders
|
||||
}
|
||||
|
Reference in New Issue
Block a user