Skip to content

Commit 591c4c5

Browse files
committed
adding an initial implementation of Mimetypes activity
1 parent b30fa5e commit 591c4c5

File tree

5 files changed

+186
-13
lines changed

5 files changed

+186
-13
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
</intent-filter>
5555
</activity>
5656

57+
<activity android:name=".activities.MimeTypesActivity" />
58+
5759
<activity
5860
android:name=".activities.ReadTextActivity"
5961
android:label="@string/file_editor">
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
package com.simplemobiletools.filemanager.pro.activities
2+
3+
import android.app.SearchManager
4+
import android.content.Context
5+
import android.os.Bundle
6+
import android.view.Menu
7+
import android.view.MenuItem
8+
import androidx.appcompat.widget.SearchView
9+
import androidx.core.view.MenuItemCompat
10+
import com.simplemobiletools.commons.extensions.handleHiddenFolderPasswordProtection
11+
import com.simplemobiletools.commons.extensions.toast
12+
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
13+
import com.simplemobiletools.filemanager.pro.R
14+
import com.simplemobiletools.filemanager.pro.dialogs.ChangeSortingDialog
15+
import com.simplemobiletools.filemanager.pro.dialogs.ChangeViewTypeDialog
16+
import com.simplemobiletools.filemanager.pro.extensions.config
17+
import com.simplemobiletools.filemanager.pro.helpers.*
18+
19+
class MimeTypesActivity : SimpleActivity() {
20+
private var isSearchOpen = false
21+
private var searchMenuItem: MenuItem? = null
22+
private var currentMimeType = ""
23+
24+
override fun onCreate(savedInstanceState: Bundle?) {
25+
super.onCreate(savedInstanceState)
26+
setContentView(R.layout.activity_mimetypes)
27+
currentMimeType = intent.getStringExtra(SHOW_MIMETYPE) ?: return
28+
title = getString(
29+
when (currentMimeType) {
30+
IMAGES -> R.string.images
31+
VIDEOS -> R.string.videos
32+
AUDIO -> R.string.audio
33+
DOCUMENTS -> R.string.documents
34+
ARCHIVES -> R.string.archives
35+
OTHERS -> R.string.others
36+
else -> {
37+
toast(R.string.unknown_error_occurred)
38+
finish()
39+
return
40+
}
41+
}
42+
)
43+
}
44+
45+
override fun onCreateOptionsMenu(menu: Menu): Boolean {
46+
menuInflater.inflate(R.menu.menu, menu)
47+
setupSearch(menu)
48+
updateMenuItemColors(menu)
49+
return true
50+
}
51+
52+
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
53+
val currentViewType = config.getFolderViewType(currentMimeType)
54+
55+
menu!!.apply {
56+
findItem(R.id.add_favorite).isVisible = false
57+
findItem(R.id.remove_favorite).isVisible = false
58+
findItem(R.id.go_to_favorite).isVisible = false
59+
60+
findItem(R.id.toggle_filename).isVisible = currentViewType == VIEW_TYPE_GRID
61+
findItem(R.id.go_home).isVisible = false
62+
findItem(R.id.set_as_home).isVisible = false
63+
findItem(R.id.settings).isVisible = false
64+
findItem(R.id.about).isVisible = false
65+
66+
findItem(R.id.temporarily_show_hidden).isVisible = !config.shouldShowHidden
67+
findItem(R.id.stop_showing_hidden).isVisible = config.temporarilyShowHidden
68+
69+
findItem(R.id.increase_column_count).isVisible = currentViewType == VIEW_TYPE_GRID && config.fileColumnCnt < MAX_COLUMN_COUNT
70+
findItem(R.id.reduce_column_count).isVisible = currentViewType == VIEW_TYPE_GRID && config.fileColumnCnt > 1
71+
}
72+
73+
return true
74+
}
75+
76+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
77+
when (item.itemId) {
78+
R.id.sort -> showSortingDialog()
79+
R.id.toggle_filename -> toggleFilenameVisibility()
80+
R.id.change_view_type -> changeViewType()
81+
R.id.temporarily_show_hidden -> tryToggleTemporarilyShowHidden()
82+
R.id.stop_showing_hidden -> tryToggleTemporarilyShowHidden()
83+
R.id.increase_column_count -> increaseColumnCount()
84+
R.id.reduce_column_count -> reduceColumnCount()
85+
else -> return super.onOptionsItemSelected(item)
86+
}
87+
return true
88+
}
89+
90+
private fun setupSearch(menu: Menu) {
91+
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
92+
searchMenuItem = menu.findItem(R.id.search)
93+
(searchMenuItem!!.actionView as SearchView).apply {
94+
setSearchableInfo(searchManager.getSearchableInfo(componentName))
95+
isSubmitButtonEnabled = false
96+
queryHint = getString(R.string.search)
97+
setOnQueryTextListener(object : SearchView.OnQueryTextListener {
98+
override fun onQueryTextSubmit(query: String) = false
99+
100+
override fun onQueryTextChange(newText: String): Boolean {
101+
if (isSearchOpen) {
102+
}
103+
return true
104+
}
105+
})
106+
}
107+
108+
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
109+
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
110+
isSearchOpen = true
111+
return true
112+
}
113+
114+
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
115+
isSearchOpen = false
116+
return true
117+
}
118+
})
119+
}
120+
121+
private fun showSortingDialog() {
122+
ChangeSortingDialog(this, currentMimeType) {
123+
}
124+
}
125+
126+
private fun toggleFilenameVisibility() {
127+
config.displayFilenames = !config.displayFilenames
128+
}
129+
130+
private fun increaseColumnCount() {}
131+
132+
private fun reduceColumnCount() {}
133+
134+
private fun changeViewType() {
135+
ChangeViewTypeDialog(this, currentMimeType, true) { }
136+
}
137+
138+
private fun tryToggleTemporarilyShowHidden() {
139+
if (config.temporarilyShowHidden) {
140+
toggleTemporarilyShowHidden(false)
141+
} else {
142+
handleHiddenFolderPasswordProtection {
143+
toggleTemporarilyShowHidden(true)
144+
}
145+
}
146+
}
147+
148+
private fun toggleTemporarilyShowHidden(show: Boolean) {
149+
config.temporarilyShowHidden = show
150+
}
151+
}

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/fragments/StorageFragment.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,15 @@ import androidx.appcompat.app.AppCompatActivity
1212
import com.simplemobiletools.commons.extensions.*
1313
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1414
import com.simplemobiletools.filemanager.pro.R
15+
import com.simplemobiletools.filemanager.pro.activities.MimeTypesActivity
1516
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
1617
import com.simplemobiletools.filemanager.pro.extensions.formatSizeThousand
18+
import com.simplemobiletools.filemanager.pro.helpers.*
1719
import kotlinx.android.synthetic.main.storage_fragment.view.*
1820
import java.util.*
1921
import kotlin.collections.HashMap
2022

2123
class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) {
22-
private val IMAGES = "images"
23-
private val VIDEOS = "videos"
24-
private val AUDIO = "audio"
25-
private val DOCUMENTS = "documents"
26-
private val ARCHIVES = "archives"
27-
private val OTHERS = "others"
28-
2924
private val SIZE_DIVIDER = 100000
3025

3126
// what else should we count as an audio except "audio/*" mimetype
@@ -96,12 +91,12 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
9691
}
9792
}
9893

99-
images_holder.setOnClickListener { }
100-
videos_holder.setOnClickListener { }
101-
audio_holder.setOnClickListener { }
102-
documents_holder.setOnClickListener { }
103-
archives_holder.setOnClickListener { }
104-
others_holder.setOnClickListener { }
94+
images_holder.setOnClickListener { launchMimetypeActivity(IMAGES) }
95+
videos_holder.setOnClickListener { launchMimetypeActivity(VIDEOS) }
96+
audio_holder.setOnClickListener { launchMimetypeActivity(AUDIO) }
97+
documents_holder.setOnClickListener { launchMimetypeActivity(DOCUMENTS) }
98+
archives_holder.setOnClickListener { launchMimetypeActivity(ARCHIVES) }
99+
others_holder.setOnClickListener { launchMimetypeActivity(OTHERS) }
105100
}
106101

107102
override fun refreshFragment() {}
@@ -137,6 +132,13 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
137132
others_progressbar.trackColor = pinkColor.adjustAlpha(0.3f)
138133
}
139134

135+
private fun launchMimetypeActivity(mimetype: String) {
136+
Intent(context, MimeTypesActivity::class.java).apply {
137+
putExtra(SHOW_MIMETYPE, mimetype)
138+
context.startActivity(this)
139+
}
140+
}
141+
140142
private fun getSizesByMimeType(): HashMap<String, Long> {
141143
val uri = MediaStore.Files.getContentUri("external")
142144
val projection = arrayOf(

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/helpers/Constants.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,11 @@ const val OPEN_AS_OTHER = 5
3333

3434
const val ALL_TABS_MASK = TAB_FILES or TAB_RECENT_FILES or TAB_STORAGE_ANALYSIS
3535
val tabsList = arrayListOf(TAB_FILES, TAB_RECENT_FILES, TAB_STORAGE_ANALYSIS)
36+
37+
const val IMAGES = "images"
38+
const val VIDEOS = "videos"
39+
const val AUDIO = "audio"
40+
const val DOCUMENTS = "documents"
41+
const val ARCHIVES = "archives"
42+
const val OTHERS = "others"
43+
const val SHOW_MIMETYPE = "show_mimetype"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<com.simplemobiletools.commons.views.MyRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:id="@+id/mimetypes_list"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
android:clipToPadding="false"
8+
android:layoutAnimation="@anim/layout_animation"
9+
android:scrollbars="none"
10+
app:layoutManager="com.simplemobiletools.commons.views.MyGridLayoutManager" />

0 commit comments

Comments
 (0)