修复MOD导入模板不能上滑的BUG
优化评论区,文件管理器,代码表
This commit is contained in:
parent
c5fa00b988
commit
d1a1adae99
|
@ -6,9 +6,12 @@ import android.text.Spannable
|
||||||
import android.text.SpannableString
|
import android.text.SpannableString
|
||||||
import android.text.method.LinkMovementMethod
|
import android.text.method.LinkMovementMethod
|
||||||
import android.text.style.ClickableSpan
|
import android.text.style.ClickableSpan
|
||||||
import android.view.*
|
import android.view.LayoutInflater
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.MenuItem
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.SearchView
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.coldmint.dialog.InputDialog
|
|
||||||
import com.coldmint.rust.core.database.code.CodeDataBase
|
import com.coldmint.rust.core.database.code.CodeDataBase
|
||||||
import com.coldmint.rust.core.database.code.CodeInfo
|
import com.coldmint.rust.core.database.code.CodeInfo
|
||||||
import com.coldmint.rust.core.database.code.SectionInfo
|
import com.coldmint.rust.core.database.code.SectionInfo
|
||||||
|
@ -28,14 +31,16 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
|
||||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) {
|
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) {
|
||||||
ifNeedFinish()
|
ifNeedFinish()
|
||||||
return true
|
return true
|
||||||
|
}
|
||||||
|
return super.onKeyDown(keyCode, event)
|
||||||
}
|
}
|
||||||
return super.onKeyDown(keyCode, event)
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun ifNeedFinish() {
|
fun ifNeedFinish() {
|
||||||
|
@ -133,13 +138,14 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
spannableString.setSpan(
|
spannableString.setSpan(
|
||||||
object : ClickableSpan() {
|
object : ClickableSpan() {
|
||||||
override fun onClick(p0: View) {
|
override fun onClick(p0: View) {
|
||||||
|
sea.setQuery("", false)
|
||||||
loadData()
|
loadData()
|
||||||
}
|
}
|
||||||
}, start, start + action.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
}, start, start + action.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
viewBinding.displayView.movementMethod = LinkMovementMethod.getInstance();
|
viewBinding.displayView.movementMethod = LinkMovementMethod.getInstance()
|
||||||
viewBinding.displayView.highlightColor = Color.parseColor("#36969696");
|
viewBinding.displayView.highlightColor = Color.parseColor("#36969696")
|
||||||
viewBinding.displayView.text = spannableString
|
viewBinding.displayView.text = spannableString
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -147,11 +153,26 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
viewBinding.expandableListView.isVisible = false
|
viewBinding.expandableListView.isVisible = false
|
||||||
viewBinding.progressBar.isVisible = false
|
viewBinding.progressBar.isVisible = false
|
||||||
}
|
}
|
||||||
|
lateinit var sea: SearchView
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
val inflater = menuInflater
|
// val inflater = menuInflater
|
||||||
inflater.inflate(R.menu.menu_code_table, menu)
|
menuInflater.inflate(R.menu.menu_code_table, menu)
|
||||||
|
val findItem = menu.findItem(R.id.filter_units)
|
||||||
|
sea = findItem.actionView as SearchView
|
||||||
|
sea.queryHint = "请输入关键字"
|
||||||
|
sea.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||||
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||||
|
// 在这里执行搜索操作
|
||||||
|
loadData(query)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onQueryTextChange(newText: String?): Boolean {
|
||||||
|
// 在这里更新搜索结果列表
|
||||||
|
loadData(newText)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +180,8 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.filter_units -> {
|
R.id.filter_units -> {
|
||||||
|
// editisVisible(true)
|
||||||
|
/*
|
||||||
InputDialog(this).setTitle(R.string.filter).setMessage(R.string.filter_tip)
|
InputDialog(this).setTitle(R.string.filter).setMessage(R.string.filter_tip)
|
||||||
.setInputCanBeEmpty(false).setMaxNumber(20)
|
.setInputCanBeEmpty(false).setMaxNumber(20)
|
||||||
.setPositiveButton(R.string.dialog_ok) { text ->
|
.setPositiveButton(R.string.dialog_ok) { text ->
|
||||||
|
@ -170,8 +193,9 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
true
|
true
|
||||||
}.setNegativeButton(R.string.dialog_close) {
|
}.setNegativeButton(R.string.dialog_close) {
|
||||||
|
|
||||||
}.show()
|
}.show()*/
|
||||||
}
|
}
|
||||||
|
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
ifNeedFinish()
|
ifNeedFinish()
|
||||||
return true
|
return true
|
||||||
|
@ -180,6 +204,14 @@ class CodeTableActivity : BaseActivity<ActivityCodeTableBinding>() {
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun onBackPressed() {
|
||||||
|
if (sea != null && !sea.isIconified) {
|
||||||
|
sea.isIconified = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ifNeedFinish()
|
||||||
|
}
|
||||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): ActivityCodeTableBinding {
|
override fun getViewBindingObject(layoutInflater: LayoutInflater): ActivityCodeTableBinding {
|
||||||
return ActivityCodeTableBinding.inflate(layoutInflater)
|
return ActivityCodeTableBinding.inflate(layoutInflater)
|
||||||
}
|
}
|
||||||
|
|
|
@ -882,6 +882,7 @@ class FileManagerActivity : BaseActivity<ActivityFileBinding>() {
|
||||||
* 设置排序方式
|
* 设置排序方式
|
||||||
* @param sortType SortType
|
* @param sortType SortType
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fun setSortType(sortType: FileManagerViewModel.SortType) {
|
fun setSortType(sortType: FileManagerViewModel.SortType) {
|
||||||
if (this::menuBinding.isInitialized) {
|
if (this::menuBinding.isInitialized) {
|
||||||
when (sortType) {
|
when (sortType) {
|
||||||
|
|
|
@ -1,37 +1,34 @@
|
||||||
|
package com.coldmint.rust.pro
|
||||||
|
import com.coldmint.rust.pro.viewmodel.FileManagerViewModel
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.Collections
|
||||||
|
|
||||||
class FileSort(a: MutableList<File>, manner: Int) {
|
class FileSort(a: MutableList<File?>,sortType: FileManagerViewModel.SortType) {
|
||||||
val name = 0
|
|
||||||
val time = 1
|
|
||||||
val size = 2
|
|
||||||
val type = 3
|
|
||||||
//内置的类型排序筛选器数据 可以不用 但是类型排序必须要进行筛选才能正常排序
|
//内置的类型排序筛选器数据 可以不用 但是类型排序必须要进行筛选才能正常排序
|
||||||
init {
|
init {
|
||||||
when (manner) {
|
when (sortType) {
|
||||||
name -> sort_name(a)
|
FileManagerViewModel.SortType.BY_NAME -> sort_name(a)
|
||||||
time -> sort_time(a)
|
FileManagerViewModel.SortType.BY_LAST_MODIFIED -> sort_time(a)
|
||||||
size -> sort_size(a)
|
FileManagerViewModel.SortType.BY_SIZE -> sort_size(a)
|
||||||
type -> sort_type(a)
|
FileManagerViewModel.SortType.BY_TYPE -> sort_type(a)
|
||||||
}
|
}
|
||||||
|
sort_front(a)
|
||||||
// println(manner)
|
// println(manner)
|
||||||
//一个内置的排序筛选器 也可以在外部调用 FileSort.sort_front(List<File> a) 等静态的方法
|
//一个内置的排序筛选器 也可以在外部调用 com.coldmint.rust.pro.FileSort.sort_front(List<File> a) 等静态的方法
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
//0表示 名称排序 1表示 时间排序 2表示 大小排序 3表示类型排序
|
//0表示 名称排序 1表示 时间排序 2表示 大小排序 3表示类型排序
|
||||||
lateinit var type_list: Array<String>
|
private fun sort_front(a: MutableList<File?>) {
|
||||||
|
|
||||||
fun sort_front(a: MutableList<File>) {
|
|
||||||
Collections.sort(a, kotlin.Comparator { o1, o2 ->
|
Collections.sort(a, kotlin.Comparator { o1, o2 ->
|
||||||
if (o1!!.isDirectory && o2!!.isFile) return@Comparator -1
|
if (o1!!.isDirectory && o2!!.isFile) return@Comparator -1
|
||||||
if (o1!!.isFile && o2!!.isDirectory) return@Comparator 1
|
if (o1.isFile && o2!!.isDirectory) return@Comparator 1
|
||||||
else return@Comparator 0
|
else return@Comparator 0
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//文件夹在前面的排序算法 每次sort_name等排序方法前后或者都会调研次方法
|
//文件夹在前面的排序算法 每次sort_name等排序方法前后或者都会调研次方法
|
||||||
fun sort_name(a: MutableList<File>) {
|
fun sort_name(a: MutableList<File?>) {
|
||||||
Collections.sort(a, Comparator { o1, o2 ->
|
Collections.sort(a, Comparator { o1, o2 ->
|
||||||
if (o1!!.isDirectory && o2!!.isFile)
|
if (o1!!.isDirectory && o2!!.isFile)
|
||||||
return@Comparator -1
|
return@Comparator -1
|
||||||
|
@ -40,59 +37,36 @@ class FileSort(a: MutableList<File>, manner: Int) {
|
||||||
else o1.name.compareTo(o2!!.name)
|
else o1.name.compareTo(o2!!.name)
|
||||||
return@Comparator 0
|
return@Comparator 0
|
||||||
})
|
})
|
||||||
sort_front(a)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sort_time(a: MutableList<File>) {
|
fun sort_time(a: MutableList<File?>) {
|
||||||
Collections.sort(a, Comparator { f1, f2 ->
|
a.sortWith { f1, f2 ->
|
||||||
val diff = f1!!.lastModified() - f2!!.lastModified()
|
val diff = f1!!.lastModified() - f2!!.lastModified()
|
||||||
if (diff > 0) 1 else if (diff == 0L) 0 else -1
|
if (diff > 0) 1 else if (diff == 0L) 0 else -1
|
||||||
//如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
|
//如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
|
||||||
})
|
}
|
||||||
sort_front(a)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sort_size(a: MutableList<File>) {
|
fun sort_size(a: MutableList<File?>) {
|
||||||
Collections.sort(a, kotlin.Comparator { o1, o2 ->
|
a.sortWith { o1, o2 ->
|
||||||
val diff = o1!!.length() - o2!!.length()
|
val diff = o1!!.length() - o2!!.length()
|
||||||
if (diff > 0) 1
|
if (diff > 0) 1
|
||||||
else if (diff == 0L) 0
|
else if (diff == 0L) 0
|
||||||
else -1
|
else -1
|
||||||
})
|
}
|
||||||
sort_front(a)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sort_type(a: MutableList<File>) {
|
fun sort_type(a: MutableList<File?>) {
|
||||||
//文件类型排序 按照后缀优先级
|
//文件类型排序 按照后缀优先级
|
||||||
sort_front(a)
|
a.sortWith { o1, o2 ->
|
||||||
//先进行文件夹在前面的排序算法
|
val extension1 = o1?.extension?.lowercase()
|
||||||
Collections.sort(a, Comparator { o1, o2 ->
|
val extension2 = o2?.extension?.lowercase()
|
||||||
if (o1!!.isFile) {
|
// 定义文件类型的优先级顺序
|
||||||
val name = o1.name
|
val typePriority = listOf("txt", "jpg", "png")
|
||||||
val suffix = name.substring(name.lastIndexOf("."))
|
val typeIndex1 = typePriority.indexOf(extension1)
|
||||||
//获取name文件名字的后缀
|
val typeIndex2 = typePriority.indexOf(extension2)
|
||||||
val length = length(type_list, suffix)
|
typeIndex1.compareTo(typeIndex2)
|
||||||
//查找后缀是不是存在于 type_list数据中 如果存在返回存在位置 如果不存在则返回<0的值
|
|
||||||
if (length >= 0) return@Comparator -1
|
|
||||||
} else if (o2!!.isFile) {
|
|
||||||
val name = o2.name
|
|
||||||
val suffix = name.substring(name.lastIndexOf("."))
|
|
||||||
//获取name文件名字的后缀
|
|
||||||
val length = length(type_list, suffix)
|
|
||||||
//查找后缀是不是存在于 type_list数据中 如果存在返回存在位置 如果不存在则返回<0的值
|
|
||||||
if (length >= 0) return@Comparator 1
|
|
||||||
}
|
|
||||||
0
|
|
||||||
})
|
|
||||||
}
|
|
||||||
private fun length(sz: Array<String>, a: String): Int {
|
|
||||||
//引入外部数据sz 去进行筛选让后返回位置
|
|
||||||
for (i in sz.indices) {
|
|
||||||
if (sz[i] == a) {
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return -1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,62 +1,25 @@
|
||||||
package com.coldmint.rust.pro
|
package com.coldmint.rust.pro
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.app.DownloadManager
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import android.util.Log
|
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.inputmethod.EditorInfo
|
|
||||||
import android.widget.EditText
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.core.app.NotificationManagerCompat
|
|
||||||
import androidx.core.view.isVisible
|
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
|
||||||
import com.afollestad.materialdialogs.LayoutMode
|
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
|
||||||
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
|
|
||||||
import com.afollestad.materialdialogs.bottomsheets.setPeekHeight
|
|
||||||
import com.afollestad.materialdialogs.customview.customView
|
|
||||||
import com.afollestad.materialdialogs.input.getInputField
|
|
||||||
import com.afollestad.materialdialogs.input.input
|
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
import com.bumptech.glide.request.RequestOptions
|
|
||||||
import com.coldmint.dialog.CoreDialog
|
import com.coldmint.dialog.CoreDialog
|
||||||
import com.coldmint.rust.core.ModClass
|
|
||||||
import com.coldmint.rust.core.dataBean.ApiResponse
|
|
||||||
import com.coldmint.rust.core.dataBean.AppUpdateData
|
import com.coldmint.rust.core.dataBean.AppUpdateData
|
||||||
import com.coldmint.rust.core.dataBean.mod.WebModCommentData
|
|
||||||
import com.coldmint.rust.core.dataBean.mod.WebModInfoData
|
|
||||||
import com.coldmint.rust.core.dataBean.mod.WebModUpdateLogData
|
|
||||||
import com.coldmint.rust.core.dataBean.user.SpaceInfoData
|
|
||||||
import com.coldmint.rust.core.interfaces.ApiCallBack
|
|
||||||
import com.coldmint.rust.core.tool.AppOperator
|
import com.coldmint.rust.core.tool.AppOperator
|
||||||
import com.coldmint.rust.core.tool.FileLoader
|
import com.coldmint.rust.core.tool.FileLoader
|
||||||
import com.coldmint.rust.core.tool.LineParser
|
|
||||||
import com.coldmint.rust.core.tool.ProgressResponseBody
|
import com.coldmint.rust.core.tool.ProgressResponseBody
|
||||||
import com.coldmint.rust.core.web.ServerConfiguration
|
import com.coldmint.rust.core.web.ServerConfiguration
|
||||||
import com.coldmint.rust.core.web.User
|
|
||||||
import com.coldmint.rust.core.web.WebMod
|
import com.coldmint.rust.core.web.WebMod
|
||||||
import com.coldmint.rust.pro.adapters.CommentAdapter
|
|
||||||
import com.coldmint.rust.pro.adapters.ModPageDetailsAdapter
|
import com.coldmint.rust.pro.adapters.ModPageDetailsAdapter
|
||||||
import com.coldmint.rust.pro.databinding.ActivityWebModInfoBinding
|
|
||||||
import com.coldmint.rust.pro.tool.AppSettings
|
|
||||||
import com.coldmint.rust.pro.base.BaseActivity
|
import com.coldmint.rust.pro.base.BaseActivity
|
||||||
|
import com.coldmint.rust.pro.databinding.ActivityWebModInfoBinding
|
||||||
import com.coldmint.rust.pro.databinding.LoadFileLayoutBinding
|
import com.coldmint.rust.pro.databinding.LoadFileLayoutBinding
|
||||||
import com.coldmint.rust.pro.dialog.CommentDialog
|
import com.coldmint.rust.pro.tool.AppSettings
|
||||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||||
import com.coldmint.rust.pro.tool.TextStyleMaker
|
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.youth.banner.adapter.BannerImageAdapter
|
|
||||||
import com.youth.banner.holder.BannerImageHolder
|
|
||||||
import com.youth.banner.indicator.CircleIndicator
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.text.NumberFormat
|
import java.text.NumberFormat
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,12 @@ import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.request.RequestOptions
|
|
||||||
import com.coldmint.dialog.CoreDialog
|
import com.coldmint.dialog.CoreDialog
|
||||||
import com.coldmint.rust.core.dataBean.ApiResponse
|
import com.coldmint.rust.core.dataBean.ApiResponse
|
||||||
import com.coldmint.rust.core.dataBean.mod.WebModCommentData
|
import com.coldmint.rust.core.dataBean.mod.WebModCommentData
|
||||||
import com.coldmint.rust.core.interfaces.ApiCallBack
|
import com.coldmint.rust.core.interfaces.ApiCallBack
|
||||||
import com.coldmint.rust.core.tool.AppOperator
|
import com.coldmint.rust.core.tool.AppOperator
|
||||||
import com.coldmint.rust.core.web.Dynamic
|
|
||||||
import com.coldmint.rust.core.web.ServerConfiguration
|
import com.coldmint.rust.core.web.ServerConfiguration
|
||||||
import com.coldmint.rust.core.web.WebMod
|
import com.coldmint.rust.core.web.WebMod
|
||||||
import com.coldmint.rust.pro.R
|
import com.coldmint.rust.pro.R
|
||||||
|
@ -68,12 +65,18 @@ class CommentAdapter(context: Context, dataList: MutableList<WebModCommentData.D
|
||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
viewBinding.shareImageView.setOnClickListener {
|
viewBinding.shareImageView.setOnClickListener {
|
||||||
AppOperator.shareText(context, context.getString(R.string.share_message), data.content);
|
AppOperator.shareText(context, context.getString(R.string.share_message), data.content)
|
||||||
|
}
|
||||||
|
viewBinding.contentView.setOnLongClickListener {
|
||||||
|
GlobalMethod.copyText(context, "", it.rootView)
|
||||||
|
|
||||||
|
false
|
||||||
}
|
}
|
||||||
viewBinding.moreImageView.setOnClickListener { view ->
|
viewBinding.moreImageView.setOnClickListener { view ->
|
||||||
val menu = GlobalMethod.createPopMenu(view)
|
val menu = GlobalMethod.createPopMenu(view)
|
||||||
menu.menu.add(R.string.copy)
|
// menu.menu.add(R.string.copy)
|
||||||
menu.menu.add(R.string.delete_title)
|
menu.menu.add(R.string.delete_title)
|
||||||
|
menu.menu.add(R.string.report)
|
||||||
menu.setOnMenuItemClickListener {
|
menu.setOnMenuItemClickListener {
|
||||||
val title = it.title
|
val title = it.title
|
||||||
when (title) {
|
when (title) {
|
||||||
|
@ -129,7 +132,15 @@ class CommentAdapter(context: Context, dataList: MutableList<WebModCommentData.D
|
||||||
|
|
||||||
}.show()
|
}.show()
|
||||||
}
|
}
|
||||||
|
context.getString(R.string.report) -> {
|
||||||
|
Snackbar.make(
|
||||||
|
context,view,
|
||||||
|
"暂不可用,请等待下一个版本!",
|
||||||
|
Snackbar.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
menu.show()
|
menu.show()
|
||||||
|
|
|
@ -1,28 +1,20 @@
|
||||||
package com.coldmint.rust.pro.adapters
|
package com.coldmint.rust.pro.adapters
|
||||||
|
|
||||||
import android.os.Build
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import com.coldmint.rust.pro.R
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Color
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.coldmint.rust.core.tool.FileOperator
|
import com.coldmint.rust.core.tool.FileOperator
|
||||||
import com.coldmint.rust.core.web.ServerConfiguration
|
import com.coldmint.rust.core.web.ServerConfiguration
|
||||||
|
import com.coldmint.rust.pro.R
|
||||||
import com.coldmint.rust.pro.base.BaseAdapter
|
import com.coldmint.rust.pro.base.BaseAdapter
|
||||||
import com.coldmint.rust.pro.databinding.FileItemBinding
|
import com.coldmint.rust.pro.databinding.FileItemBinding
|
||||||
|
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||||
import com.coldmint.rust.pro.viewmodel.FileManagerViewModel
|
import com.coldmint.rust.pro.viewmodel.FileManagerViewModel
|
||||||
import com.github.promeg.pinyinhelper.Pinyin
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
||||||
import me.zhanghai.android.fastscroll.PopupTextProvider
|
import me.zhanghai.android.fastscroll.PopupTextProvider
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.StringBuilder
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.ArrayList
|
|
||||||
|
|
||||||
class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
||||||
BaseAdapter<FileItemBinding, File?>(context, dataList), PopupTextProvider {
|
BaseAdapter<FileItemBinding, File?>(context, dataList), PopupTextProvider {
|
||||||
|
@ -89,6 +81,7 @@ class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setNewDataList(dataList: MutableList<File?>) {
|
override fun setNewDataList(dataList: MutableList<File?>) {
|
||||||
|
// FileSort(dataList, sortType)
|
||||||
when (sortType) {
|
when (sortType) {
|
||||||
FileManagerViewModel.SortType.BY_NAME -> {
|
FileManagerViewModel.SortType.BY_NAME -> {
|
||||||
dataList.sortBy {
|
dataList.sortBy {
|
||||||
|
@ -125,6 +118,10 @@ class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dataList.sortBy {
|
||||||
|
val name = it?.isFile ?: it?.isDirectory
|
||||||
|
name
|
||||||
|
}
|
||||||
super.setNewDataList(dataList)
|
super.setNewDataList(dataList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +136,7 @@ class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
||||||
override fun onBingView(
|
override fun onBingView(
|
||||||
data: File?,
|
data: File?,
|
||||||
viewBinding: FileItemBinding,
|
viewBinding: FileItemBinding,
|
||||||
viewHolder: BaseAdapter.ViewHolder<FileItemBinding>,
|
viewHolder: ViewHolder<FileItemBinding>,
|
||||||
position: Int
|
position: Int
|
||||||
) {
|
) {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
|
@ -173,8 +170,7 @@ class FileAdapter(context: Context, dataList: MutableList<File?>) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val type = FileOperator.getFileType(data)
|
when (FileOperator.getFileType(data)) {
|
||||||
when (type) {
|
|
||||||
"ini", "txt", "template", "log" -> viewBinding.fileIcon.setImageDrawable(
|
"ini", "txt", "template", "log" -> viewBinding.fileIcon.setImageDrawable(
|
||||||
GlobalMethod.tintDrawable(
|
GlobalMethod.tintDrawable(
|
||||||
context.getDrawable(R.drawable.file),
|
context.getDrawable(R.drawable.file),
|
||||||
|
|
|
@ -12,16 +12,12 @@ import android.graphics.Color
|
||||||
import android.graphics.Paint
|
import android.graphics.Paint
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Handler
|
|
||||||
import android.os.Looper
|
|
||||||
import android.os.Message
|
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.PopupMenu
|
import android.widget.PopupMenu
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.content.ContextCompat.getSystemService
|
|
||||||
import androidx.core.graphics.drawable.DrawableCompat
|
import androidx.core.graphics.drawable.DrawableCompat
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import com.bumptech.glide.load.MultiTransformation
|
import com.bumptech.glide.load.MultiTransformation
|
||||||
|
@ -36,8 +32,9 @@ import com.flask.colorpicker.builder.ColorPickerDialogBuilder
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import com.permissionx.guolindev.PermissionX
|
import com.permissionx.guolindev.PermissionX
|
||||||
import jp.wasabeef.glide.transformations.*
|
import jp.wasabeef.glide.transformations.BitmapTransformation
|
||||||
import jp.wasabeef.glide.transformations.internal.Utils
|
import jp.wasabeef.glide.transformations.CropCircleTransformation
|
||||||
|
import jp.wasabeef.glide.transformations.GrayscaleTransformation
|
||||||
|
|
||||||
/*全局方法类*/
|
/*全局方法类*/
|
||||||
object GlobalMethod {
|
object GlobalMethod {
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
package com.coldmint.rust.pro.viewmodel
|
package com.coldmint.rust.pro.viewmodel
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.util.Log
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.coldmint.rust.core.tool.AppOperator
|
|
||||||
import com.coldmint.rust.core.tool.FileOperator
|
import com.coldmint.rust.core.tool.FileOperator
|
||||||
import com.coldmint.rust.pro.R
|
import com.coldmint.rust.pro.R
|
||||||
import com.coldmint.rust.pro.base.BaseViewModel
|
import com.coldmint.rust.pro.base.BaseViewModel
|
||||||
|
@ -18,7 +15,6 @@ import com.coldmint.rust.pro.tool.BookmarkManager
|
||||||
import com.yalantis.ucrop.util.FileUtils.getPath
|
import com.yalantis.ucrop.util.FileUtils.getPath
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.HashMap
|
|
||||||
|
|
||||||
class FileManagerViewModel : BaseViewModel() {
|
class FileManagerViewModel : BaseViewModel() {
|
||||||
|
|
||||||
|
@ -59,7 +55,7 @@ class FileManagerViewModel : BaseViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件排序方式
|
* 文件排序方式 名称 大小 类型 时间
|
||||||
*/
|
*/
|
||||||
enum class SortType {
|
enum class SortType {
|
||||||
BY_NAME, BY_SIZE, BY_TYPE, BY_LAST_MODIFIED
|
BY_NAME, BY_SIZE, BY_TYPE, BY_LAST_MODIFIED
|
||||||
|
|
|
@ -12,12 +12,10 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="?attr/actionBarSize" />
|
android:layout_height="?attr/actionBarSize" />
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
android:id="@+id/button"
|
android:id="@+id/button"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|right"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:text="@string/installation"
|
android:text="@string/installation"
|
||||||
app:icon="@drawable/cloud_download" />
|
app:icon="@drawable/cloud_download" />
|
||||||
|
|
|
@ -1,42 +1,41 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/swipeRefreshLayout"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RelativeLayout
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/unitPathView"
|
||||||
android:layout_height="wrap_content">
|
style="@style/TextAppearance.Material3.BodyMedium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toStartOf="@id/select_path_button"
|
||||||
|
android:text="@string/unit_path" />
|
||||||
|
|
||||||
<TextView
|
<Button
|
||||||
android:id="@+id/unitPathView"
|
android:id="@+id/select_path_button"
|
||||||
style="@style/TextAppearance.Material3.BodyMedium"
|
android:layout_width="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentStart="true"
|
android:text="@string/change_path" />
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_toStartOf="@id/select_path_button"
|
|
||||||
android:text="@string/unit_path" />
|
|
||||||
|
|
||||||
<Button
|
</RelativeLayout>
|
||||||
android:id="@+id/select_path_button"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:text="@string/change_path" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/swipeRefreshLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<ExpandableListView
|
<ExpandableListView
|
||||||
android:id="@+id/expandableList"
|
android:id="@+id/expandableList"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
|
|
@ -8,8 +8,6 @@
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
tools:context=".fragments.ModCommentsFragment">
|
tools:context=".fragments.ModCommentsFragment">
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -64,10 +62,6 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/no_content" />
|
android:text="@string/no_content" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
|
@ -55,13 +55,13 @@
|
||||||
android:id="@+id/thumb_up_image_view"
|
android:id="@+id/thumb_up_image_view"
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:layout_below="@id/contentView"
|
android:layout_below="@id/contentView"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:padding="2dp"
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:src="@drawable/outline_thumb_up_24"
|
android:focusable="true"
|
||||||
android:focusable="true" />
|
android:padding="2dp"
|
||||||
|
android:src="@drawable/outline_thumb_up_24" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/thumb_up_text_view"
|
android:id="@+id/thumb_up_text_view"
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:andorid="http://schemas.android.com/tools">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/filter_units"
|
android:id="@+id/filter_units"
|
||||||
android:title="@string/filter" />
|
android:title="@string/filter"
|
||||||
|
android:icon="@drawable/ic_search_black_24dp"
|
||||||
|
android:showAsAction="ifRoom"
|
||||||
|
android:actionViewClass="android.widget.SearchView"/>
|
||||||
</menu>
|
</menu>
|
|
@ -50,8 +50,14 @@
|
||||||
<item
|
<item
|
||||||
android:id="@+id/reloadFile"
|
android:id="@+id/reloadFile"
|
||||||
android:title="@string/reload_files" />
|
android:title="@string/reload_files" />
|
||||||
|
<!--
|
||||||
|
<item
|
||||||
|
android:id="@+id/app_bar_switch"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checkable="true"
|
||||||
|
android:checked="false"
|
||||||
|
android:title="隐藏文件" />-->
|
||||||
<item
|
<item
|
||||||
android:id="@+id/selectFile"
|
android:id="@+id/selectFile"
|
||||||
android:title="@string/select_file">
|
android:title="@string/select_file">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user