Skip to content

Commit b850c19

Browse files
committed
handle column count changing etc at the storage fragment
1 parent 4128936 commit b850c19

File tree

4 files changed

+82
-64
lines changed

4 files changed

+82
-64
lines changed

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

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -538,22 +538,7 @@ class ItemsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerF
538538

539539
override fun deleteFiles(files: ArrayList<FileDirItem>) {
540540
val hasFolder = files.any { it.isDirectory }
541-
val firstPath = files.firstOrNull()?.path
542-
if (firstPath == null || firstPath.isEmpty() || context == null) {
543-
return
544-
}
545-
546-
if (context!!.isPathOnRoot(firstPath)) {
547-
RootHelpers(activity!!).deleteFiles(files)
548-
} else {
549-
(activity as SimpleActivity).deleteFiles(files, hasFolder) {
550-
if (!it) {
551-
activity!!.runOnUiThread {
552-
activity!!.toast(R.string.unknown_error_occurred)
553-
}
554-
}
555-
}
556-
}
541+
handleFileDeleting(files, hasFolder)
557542
}
558543

559544
override fun selectedPaths(paths: ArrayList<String>) {

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import android.util.AttributeSet
55
import android.widget.RelativeLayout
66
import com.simplemobiletools.commons.extensions.*
77
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
8+
import com.simplemobiletools.commons.models.FileDirItem
89
import com.simplemobiletools.filemanager.pro.R
910
import com.simplemobiletools.filemanager.pro.activities.MainActivity
1011
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
12+
import com.simplemobiletools.filemanager.pro.extensions.isPathOnRoot
1113
import com.simplemobiletools.filemanager.pro.extensions.tryOpenPathIntent
14+
import com.simplemobiletools.filemanager.pro.helpers.RootHelpers
1215
import kotlinx.android.synthetic.main.items_fragment.view.*
1316

1417
abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) {
@@ -48,6 +51,25 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
4851
items_fab?.setImageDrawable(fabIcon)
4952
}
5053

54+
fun handleFileDeleting(files: ArrayList<FileDirItem>, hasFolder: Boolean) {
55+
val firstPath = files.firstOrNull()?.path
56+
if (firstPath == null || firstPath.isEmpty() || context == null) {
57+
return
58+
}
59+
60+
if (context!!.isPathOnRoot(firstPath)) {
61+
RootHelpers(activity!!).deleteFiles(files)
62+
} else {
63+
(activity as SimpleActivity).deleteFiles(files, hasFolder) {
64+
if (!it) {
65+
activity!!.runOnUiThread {
66+
activity!!.toast(R.string.unknown_error_occurred)
67+
}
68+
}
69+
}
70+
}
71+
}
72+
5173
protected fun isProperMimeType(wantedMimeType: String, path: String, isDirectory: Boolean): Boolean {
5274
return if (wantedMimeType.isEmpty() || wantedMimeType == "*/*" || isDirectory) {
5375
true

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

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.provider.MediaStore.Files
66
import android.provider.MediaStore.Files.FileColumns
77
import android.util.AttributeSet
88
import androidx.core.os.bundleOf
9-
import androidx.recyclerview.widget.GridLayoutManager
109
import com.simplemobiletools.commons.extensions.*
1110
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
1211
import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST
@@ -15,14 +14,11 @@ import com.simplemobiletools.commons.helpers.isOreoPlus
1514
import com.simplemobiletools.commons.models.FileDirItem
1615
import com.simplemobiletools.commons.views.MyGridLayoutManager
1716
import com.simplemobiletools.commons.views.MyRecyclerView
18-
import com.simplemobiletools.filemanager.pro.R
1917
import com.simplemobiletools.filemanager.pro.activities.MainActivity
2018
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
2119
import com.simplemobiletools.filemanager.pro.adapters.ItemsAdapter
2220
import com.simplemobiletools.filemanager.pro.extensions.config
23-
import com.simplemobiletools.filemanager.pro.extensions.isPathOnRoot
2421
import com.simplemobiletools.filemanager.pro.helpers.MAX_COLUMN_COUNT
25-
import com.simplemobiletools.filemanager.pro.helpers.RootHelpers
2622
import com.simplemobiletools.filemanager.pro.interfaces.ItemOperationsListener
2723
import com.simplemobiletools.filemanager.pro.models.ListItem
2824
import kotlinx.android.synthetic.main.recents_fragment.view.*
@@ -52,7 +48,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
5248
filesIgnoringSearch = recents
5349
addItems(recents, false)
5450

55-
if (context != null && currentViewType != context!!.config.getFolderViewType(currentPath)) {
51+
if (context != null && currentViewType != context!!.config.getFolderViewType("")) {
5652
setupLayoutManager()
5753
}
5854
}
@@ -89,7 +85,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
8985
}
9086

9187
private fun setupLayoutManager() {
92-
if (context!!.config.getFolderViewType(currentPath) == VIEW_TYPE_GRID) {
88+
if (context!!.config.getFolderViewType("") == VIEW_TYPE_GRID) {
9389
currentViewType = VIEW_TYPE_GRID
9490
setupGridLayoutManager()
9591
} else {
@@ -106,16 +102,6 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
106102
private fun setupGridLayoutManager() {
107103
val layoutManager = recents_list.layoutManager as MyGridLayoutManager
108104
layoutManager.spanCount = context?.config?.fileColumnCnt ?: 3
109-
110-
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
111-
override fun getSpanSize(position: Int): Int {
112-
return if (getRecyclerAdapter()?.isASectionTitle(position) == true) {
113-
layoutManager.spanCount
114-
} else {
115-
1
116-
}
117-
}
118-
}
119105
}
120106

121107
private fun setupListLayoutManager() {
@@ -125,7 +111,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
125111
}
126112

127113
private fun initZoomListener() {
128-
if (context?.config?.getFolderViewType(currentPath) == VIEW_TYPE_GRID) {
114+
if (context?.config?.getFolderViewType("") == VIEW_TYPE_GRID) {
129115
val layoutManager = recents_list.layoutManager as MyGridLayoutManager
130116
zoomListener = object : MyRecyclerView.MyZoomListener {
131117
override fun zoomIn() {
@@ -240,22 +226,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
240226
}
241227

242228
override fun deleteFiles(files: ArrayList<FileDirItem>) {
243-
val firstPath = files.firstOrNull()?.path
244-
if (firstPath == null || firstPath.isEmpty() || context == null) {
245-
return
246-
}
247-
248-
if (context!!.isPathOnRoot(firstPath)) {
249-
RootHelpers(activity!!).deleteFiles(files)
250-
} else {
251-
(activity as SimpleActivity).deleteFiles(files, false) {
252-
if (!it) {
253-
activity!!.runOnUiThread {
254-
activity!!.toast(R.string.unknown_error_occurred)
255-
}
256-
}
257-
}
258-
}
229+
handleFileDeleting(files, false)
259230
}
260231

261232
override fun searchQueryChanged(text: String) {

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

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ import android.util.AttributeSet
1313
import androidx.appcompat.app.AppCompatActivity
1414
import androidx.core.os.bundleOf
1515
import com.simplemobiletools.commons.extensions.*
16-
import com.simplemobiletools.commons.helpers.LOWER_ALPHA
17-
import com.simplemobiletools.commons.helpers.SHORT_ANIMATION_DURATION
18-
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
19-
import com.simplemobiletools.commons.helpers.isOreoPlus
16+
import com.simplemobiletools.commons.helpers.*
2017
import com.simplemobiletools.commons.models.FileDirItem
18+
import com.simplemobiletools.commons.views.MyGridLayoutManager
2119
import com.simplemobiletools.filemanager.pro.R
2220
import com.simplemobiletools.filemanager.pro.activities.MimeTypesActivity
2321
import com.simplemobiletools.filemanager.pro.activities.SimpleActivity
@@ -59,9 +57,7 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
5957
others_holder.setOnClickListener { launchMimetypeActivity(OTHERS) }
6058

6159
Handler().postDelayed({
62-
val fileDirItems = getAllFiles()
63-
allDeviceListItems = getListItemsFromFileDirItems(fileDirItems)
64-
setupSearchResultsAdapter()
60+
refreshFragment()
6561
}, 2000)
6662
}
6763

@@ -261,7 +257,30 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
261257
}
262258
}
263259

264-
private fun setupSearchResultsAdapter() {
260+
private fun setupLayoutManager() {
261+
if (context!!.config.getFolderViewType("") == VIEW_TYPE_GRID) {
262+
currentViewType = VIEW_TYPE_GRID
263+
setupGridLayoutManager()
264+
} else {
265+
currentViewType = VIEW_TYPE_LIST
266+
setupListLayoutManager()
267+
}
268+
269+
search_results_list.adapter = null
270+
addItems()
271+
}
272+
273+
private fun setupGridLayoutManager() {
274+
val layoutManager = search_results_list.layoutManager as MyGridLayoutManager
275+
layoutManager.spanCount = context?.config?.fileColumnCnt ?: 3
276+
}
277+
278+
private fun setupListLayoutManager() {
279+
val layoutManager = search_results_list.layoutManager as MyGridLayoutManager
280+
layoutManager.spanCount = 1
281+
}
282+
283+
private fun addItems() {
265284
ItemsAdapter(context as SimpleActivity, allDeviceListItems, this, search_results_list, false, null, false) {
266285
clickedPath((it as FileDirItem).path)
267286
}.apply {
@@ -319,19 +338,40 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
319338
return fileDirItems
320339
}
321340

322-
override fun refreshFragment() {}
341+
private fun getRecyclerAdapter() = search_results_list.adapter as? ItemsAdapter
323342

324-
override fun deleteFiles(files: ArrayList<FileDirItem>) {}
343+
override fun refreshFragment() {
344+
val fileDirItems = getAllFiles()
345+
allDeviceListItems = getListItemsFromFileDirItems(fileDirItems)
346+
setupLayoutManager()
347+
}
348+
349+
override fun deleteFiles(files: ArrayList<FileDirItem>) {
350+
handleFileDeleting(files, false)
351+
}
325352

326353
override fun selectedPaths(paths: ArrayList<String>) {}
327354

328-
override fun setupDateTimeFormat() {}
355+
override fun setupDateTimeFormat() {
356+
getRecyclerAdapter()?.updateDateTimeFormat()
357+
}
329358

330-
override fun setupFontSize() {}
359+
override fun setupFontSize() {
360+
getRecyclerAdapter()?.updateFontSizes()
361+
}
331362

332-
override fun toggleFilenameVisibility() {}
363+
override fun toggleFilenameVisibility() {
364+
getRecyclerAdapter()?.updateDisplayFilenamesInGrid()
365+
}
333366

334-
override fun columnCountChanged() {}
367+
override fun columnCountChanged() {
368+
(search_results_list.layoutManager as MyGridLayoutManager).spanCount = context!!.config.fileColumnCnt
369+
getRecyclerAdapter()?.apply {
370+
notifyItemRangeChanged(0, listItems.size)
371+
}
372+
}
335373

336-
override fun finishActMode() {}
374+
override fun finishActMode() {
375+
getRecyclerAdapter()?.finishActMode()
376+
}
337377
}

0 commit comments

Comments
 (0)