diff --git a/app/src/main/java/me/zhanghai/android/files/filelist/FileListAdapter.kt b/app/src/main/java/me/zhanghai/android/files/filelist/FileListAdapter.kt index 0d300aed3..04ce81022 100644 --- a/app/src/main/java/me/zhanghai/android/files/filelist/FileListAdapter.kt +++ b/app/src/main/java/me/zhanghai/android/files/filelist/FileListAdapter.kt @@ -132,6 +132,39 @@ class FileListAdapter( listener.selectFiles(files, true) } + fun rangeSelectFiles() { + var firstSelectItem = -1 + var lastSelectItem = -1 + for (index in 0..= 0 + && lastSelectItem >= 0 + && lastSelectItem < itemCount + && firstSelectItem < lastSelectItem + ) { + for (index in firstSelectItem..lastSelectItem) { + val file = getItem(index) + if (isFileSelectable(file)) { + files.add(file) + } + } + } + listener.selectFiles(files, true) + } + private fun isFileSelectable(file: FileItem): Boolean { val pickOptions = pickOptions ?: return true return when (pickOptions.mode) { diff --git a/app/src/main/java/me/zhanghai/android/files/filelist/FileListFragment.kt b/app/src/main/java/me/zhanghai/android/files/filelist/FileListFragment.kt index 5c02a1c79..5f6d6b0f1 100644 --- a/app/src/main/java/me/zhanghai/android/files/filelist/FileListFragment.kt +++ b/app/src/main/java/me/zhanghai/android/files/filelist/FileListFragment.kt @@ -950,6 +950,10 @@ class FileListFragment : Fragment(), BreadcrumbLayout.Listener, FileListAdapter. selectAllFiles() true } + R.id.action_select_range -> { + rangeSelectFiles() + true + } else -> false } @@ -1023,6 +1027,10 @@ class FileListFragment : Fragment(), BreadcrumbLayout.Listener, FileListAdapter. adapter.selectAllFiles() } + private fun rangeSelectFiles() { + adapter.rangeSelectFiles() + } + private fun onPasteStateChanged(pasteState: PasteState) { updateBottomToolbar() } diff --git a/app/src/main/res/menu/file_list_select.xml b/app/src/main/res/menu/file_list_select.xml index a8a804483..75e574f8b 100644 --- a/app/src/main/res/menu/file_list_select.xml +++ b/app/src/main/res/menu/file_list_select.xml @@ -58,4 +58,9 @@ android:orderInCategory="100" android:title="@string/select_all" app:showAsAction="never" /> + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c18d21a96..49ccba8e3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -642,4 +642,5 @@ 张海 在 GitHub 上关注 在 Twitter 上关注 + 区间选择 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c204fbeb..818cc132a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -799,4 +799,5 @@ @string/navigation_standard_directory_downloads @string/ftp_server_title + Select range