add an activity for displaying hidden folders

This commit is contained in:
tibbi
2017-12-29 16:46:13 +01:00
parent 27e14b8fac
commit 4240849151
32 changed files with 189 additions and 20 deletions

View File

@ -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()
}
}
}

View File

@ -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) {
}
}
}

View File

@ -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()

View File

@ -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 {

View File

@ -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
}