diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 39f0a441..da0bb60d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -54,6 +54,8 @@
+
+
diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt
new file mode 100644
index 00000000..bfd42b69
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt
@@ -0,0 +1,151 @@
+package com.simplemobiletools.filemanager.pro.activities
+
+import android.app.SearchManager
+import android.content.Context
+import android.os.Bundle
+import android.view.Menu
+import android.view.MenuItem
+import androidx.appcompat.widget.SearchView
+import androidx.core.view.MenuItemCompat
+import com.simplemobiletools.commons.extensions.handleHiddenFolderPasswordProtection
+import com.simplemobiletools.commons.extensions.toast
+import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
+import com.simplemobiletools.filemanager.pro.R
+import com.simplemobiletools.filemanager.pro.dialogs.ChangeSortingDialog
+import com.simplemobiletools.filemanager.pro.dialogs.ChangeViewTypeDialog
+import com.simplemobiletools.filemanager.pro.extensions.config
+import com.simplemobiletools.filemanager.pro.helpers.*
+
+class MimeTypesActivity : SimpleActivity() {
+ private var isSearchOpen = false
+ private var searchMenuItem: MenuItem? = null
+ private var currentMimeType = ""
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_mimetypes)
+ currentMimeType = intent.getStringExtra(SHOW_MIMETYPE) ?: return
+ title = getString(
+ when (currentMimeType) {
+ IMAGES -> R.string.images
+ VIDEOS -> R.string.videos
+ AUDIO -> R.string.audio
+ DOCUMENTS -> R.string.documents
+ ARCHIVES -> R.string.archives
+ OTHERS -> R.string.others
+ else -> {
+ toast(R.string.unknown_error_occurred)
+ finish()
+ return
+ }
+ }
+ )
+ }
+
+ override fun onCreateOptionsMenu(menu: Menu): Boolean {
+ menuInflater.inflate(R.menu.menu, menu)
+ setupSearch(menu)
+ updateMenuItemColors(menu)
+ return true
+ }
+
+ override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
+ val currentViewType = config.getFolderViewType(currentMimeType)
+
+ menu!!.apply {
+ findItem(R.id.add_favorite).isVisible = false
+ findItem(R.id.remove_favorite).isVisible = false
+ findItem(R.id.go_to_favorite).isVisible = false
+
+ findItem(R.id.toggle_filename).isVisible = currentViewType == VIEW_TYPE_GRID
+ findItem(R.id.go_home).isVisible = false
+ findItem(R.id.set_as_home).isVisible = false
+ findItem(R.id.settings).isVisible = false
+ findItem(R.id.about).isVisible = false
+
+ findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden
+ findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden
+
+ findItem(R.id.increase_column_count).isVisible = currentViewType == VIEW_TYPE_GRID && config.fileColumnCnt < MAX_COLUMN_COUNT
+ findItem(R.id.reduce_column_count).isVisible = currentViewType == VIEW_TYPE_GRID && config.fileColumnCnt > 1
+ }
+
+ return true
+ }
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ when (item.itemId) {
+ R.id.sort -> showSortingDialog()
+ R.id.toggle_filename -> toggleFilenameVisibility()
+ R.id.change_view_type -> changeViewType()
+ R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden()
+ R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden()
+ R.id.increase_column_count -> increaseColumnCount()
+ R.id.reduce_column_count -> reduceColumnCount()
+ else -> return super.onOptionsItemSelected(item)
+ }
+ return true
+ }
+
+ private fun setupSearch(menu: Menu) {
+ val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
+ searchMenuItem = menu.findItem(R.id.search)
+ (searchMenuItem!!.actionView as SearchView).apply {
+ setSearchableInfo(searchManager.getSearchableInfo(componentName))
+ isSubmitButtonEnabled = false
+ queryHint = getString(R.string.search)
+ setOnQueryTextListener(object : SearchView.OnQueryTextListener {
+ override fun onQueryTextSubmit(query: String) = false
+
+ override fun onQueryTextChange(newText: String): Boolean {
+ if (isSearchOpen) {
+ }
+ return true
+ }
+ })
+ }
+
+ MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
+ override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
+ isSearchOpen = true
+ return true
+ }
+
+ override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
+ isSearchOpen = false
+ return true
+ }
+ })
+ }
+
+ private fun showSortingDialog() {
+ ChangeSortingDialog(this, currentMimeType) {
+ }
+ }
+
+ private fun toggleFilenameVisibility() {
+ config.displayFilenames = !config.displayFilenames
+ }
+
+ private fun increaseColumnCount() {}
+
+ private fun reduceColumnCount() {}
+
+ private fun changeViewType() {
+ ChangeViewTypeDialog(this, currentMimeType, true) { }
+ }
+
+ private fun tryToggleTemporarilyShowHidden() {
+ if (config.temporarilyShowHidden) {
+ toggleTemporarilyShowHidden(false)
+ } else {
+ handleHiddenFolderPasswordProtection {
+ toggleTemporarilyShowHidden(true)
+ }
+ }
+ }
+
+ private fun toggleTemporarilyShowHidden(show: Boolean) {
+ config.temporarilyShowHidden = show
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/StorageFragment.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/StorageFragment.kt
index 8cee5733..c704f236 100644
--- a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/StorageFragment.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/StorageFragment.kt
@@ -12,20 +12,15 @@ import androidx.appcompat.app.AppCompatActivity
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.filemanager.pro.R
+import com.simplemobiletools.filemanager.pro.activities.MimeTypesActivity
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
import com.simplemobiletools.filemanager.pro.extensions.formatSizeThousand
+import com.simplemobiletools.filemanager.pro.helpers.*
import kotlinx.android.synthetic.main.storage_fragment.view.*
import java.util.*
import kotlin.collections.HashMap
class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) {
- private val IMAGES = "images"
- private val VIDEOS = "videos"
- private val AUDIO = "audio"
- private val DOCUMENTS = "documents"
- private val ARCHIVES = "archives"
- private val OTHERS = "others"
-
private val SIZE_DIVIDER = 100000
// what else should we count as an audio except "audio/*" mimetype
@@ -96,12 +91,12 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
}
}
- images_holder.setOnClickListener { }
- videos_holder.setOnClickListener { }
- audio_holder.setOnClickListener { }
- documents_holder.setOnClickListener { }
- archives_holder.setOnClickListener { }
- others_holder.setOnClickListener { }
+ images_holder.setOnClickListener { launchMimetypeActivity(IMAGES) }
+ videos_holder.setOnClickListener { launchMimetypeActivity(VIDEOS) }
+ audio_holder.setOnClickListener { launchMimetypeActivity(AUDIO) }
+ documents_holder.setOnClickListener { launchMimetypeActivity(DOCUMENTS) }
+ archives_holder.setOnClickListener { launchMimetypeActivity(ARCHIVES) }
+ others_holder.setOnClickListener { launchMimetypeActivity(OTHERS) }
}
override fun refreshFragment() {}
@@ -137,6 +132,13 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
others_progressbar.trackColor = pinkColor.adjustAlpha(0.3f)
}
+ private fun launchMimetypeActivity(mimetype: String) {
+ Intent(context, MimeTypesActivity::class.java).apply {
+ putExtra(SHOW_MIMETYPE, mimetype)
+ context.startActivity(this)
+ }
+ }
+
private fun getSizesByMimeType(): HashMap {
val uri = MediaStore.Files.getContentUri("external")
val projection = arrayOf(
diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/helpers/Constants.kt
index 72f7acb7..df113a02 100644
--- a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/helpers/Constants.kt
@@ -33,3 +33,11 @@ const val OPEN_AS_OTHER = 5
const val ALL_TABS_MASK = TAB_FILES or TAB_RECENT_FILES or TAB_STORAGE_ANALYSIS
val tabsList = arrayListOf(TAB_FILES, TAB_RECENT_FILES, TAB_STORAGE_ANALYSIS)
+
+const val IMAGES = "images"
+const val VIDEOS = "videos"
+const val AUDIO = "audio"
+const val DOCUMENTS = "documents"
+const val ARCHIVES = "archives"
+const val OTHERS = "others"
+const val SHOW_MIMETYPE = "show_mimetype"
diff --git a/app/src/main/res/layout/activity_mimetypes.xml b/app/src/main/res/layout/activity_mimetypes.xml
new file mode 100644
index 00000000..2a71c40f
--- /dev/null
+++ b/app/src/main/res/layout/activity_mimetypes.xml
@@ -0,0 +1,10 @@
+
+