refactor(app): 优化已安装模板界面和功能

- 移除了冗余代码和未使用的导入
- 改进了模板加载逻辑,仅保留本地模板加载功能- 优化了长按菜单操作,移除了删除和订阅相关代码
- 调整了优化项目界面布局和逻辑
-修复了模组路径为空时的异常处理
This commit is contained in:
Cold-Mint 2025-02-09 10:03:27 +08:00
parent c2345e62ba
commit 5f137e0469
Signed by: Cold-Mint
GPG Key ID: C5A9BF8A98E0CE99
6 changed files with 32 additions and 71 deletions

View File

@ -179,7 +179,7 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
when (type) {
"ini", "txt" -> {
val content = FileOperator.readFile(file)
if (content == null || content.isEmpty()) {
if (content.isNullOrEmpty()) {
//文件为空
val group = mGroupNameMap[getString(R.string.empty_file)]
if (group != null) {
@ -422,7 +422,7 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
val optimizeGroups = mOptimizeGroups.toTypedArray()
for (group in optimizeGroups) {
val optimizeItemList: List<OptimizeItem<*>> = mItemNameMap[group.groupName]!!
if (optimizeItemList.size > 0) {
if (optimizeItemList.isNotEmpty()) {
mOptimizeItem.add(optimizeItemList)
} else {
mOptimizeGroups.remove(group)
@ -467,6 +467,11 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
finish()
} else {
val modPath = bundle.getString("modPath")
if (modPath.isNullOrBlank()){
Toast.makeText(this, "无效请求缺少modPath", Toast.LENGTH_SHORT).show()
finish()
return
}
val file = File(modPath)
if (file.exists() && file.isDirectory) {
val modClass = ModClass(File(modPath))

View File

@ -61,12 +61,7 @@ class OptimizeAdapter(
view: View?,
parent: ViewGroup
): View {
var convertView: View
if (view == null) {
convertView = mInflater.inflate(R.layout.optimization_group, parent, false)
} else {
convertView = view
}
val convertView: View = view ?: mInflater.inflate(R.layout.optimization_group, parent, false)
val nameView = convertView.findViewById<TextView>(R.id.nameView)
val numView = convertView.findViewById<TextView>(R.id.numView)
val groupCheckBox = convertView.findViewById<CheckBox>(R.id.groupCheckBox)

View File

@ -4,9 +4,6 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.os.Environment
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.view.LayoutInflater
import android.widget.AdapterView
import android.widget.ExpandableListView
@ -15,11 +12,7 @@ import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.MutableLiveData
import com.coldmint.dialog.CoreDialog
import com.coldmint.rust.core.LocalTemplatePackage
import com.coldmint.rust.core.dataBean.template.LocalTemplateFile
import com.coldmint.rust.core.dataBean.template.Template
import com.coldmint.rust.core.dataBean.template.TemplatePackage
import com.coldmint.rust.core.debug.LogCat
import com.coldmint.rust.core.tool.FileOperator
@ -30,13 +23,6 @@ import com.coldmint.rust.pro.base.BaseFragment
import com.coldmint.rust.pro.databinding.FragmentInstalledTemplateBinding
import com.coldmint.rust.pro.tool.AppSettings
import com.coldmint.rust.pro.viewmodel.InstalledTemplateViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.json.JSONException
import org.json.JSONObject
import java.io.File
import java.util.*
class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>() {
private val viewModel: InstalledTemplateViewModel by lazy {
@ -82,37 +68,15 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
val packedPos = (parent as ExpandableListView).getExpandableListPosition(flatPos)
val groupPosition = ExpandableListView.getPackedPositionGroup(packedPos)
val childPosition = ExpandableListView.getPackedPositionChild(packedPos)
if (childPosition == -1) { //长按的是父项
//这里做关于父项的相关操作......
val numView = view.findViewById<TextView>(R.id.template_num)
if (childPosition == -1) {
val templateClass =
mTemplateAdapter.getGroup(groupPosition) as TemplatePackage
CoreDialog(requireContext()).setTitle(R.string.template_info)
.setMessage(
templateClass.getDescription()
).setCancelable(false).setPositiveButton(
if (templateClass.isLocal()) {
R.string.delete_title
} else {
R.string.de_subscription
}
R.string.dialog_ok
) {
numView.setText(R.string.del_moding)
templateClass.delete(
""
) {
if (it) {
viewModel.loadTemplate(requireContext())
} else {
Toast.makeText(
requireContext(),
R.string.delete_error,
Toast.LENGTH_SHORT
).show()
}
}
}.setNegativeButton(R.string.dialog_cancel) {
}.show()
} else { //长按的是子项
//这里做关于子项的相关操作.......
@ -121,7 +85,7 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
}
viewBinding.swipeRefreshLayout.setOnRefreshListener {
viewModel.loadTemplate(requireContext())
viewModel.loadLocalTemplate(requireContext())
viewBinding.swipeRefreshLayout.isRefreshing = false
}
}
@ -177,10 +141,9 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
val path = viewModel.createPathLiveData.value.toString()
mTemplateAdapter.setCreatePath(path)
LogCat.d("创建目录观察者", "模板适配器设置目录为${path}")
viewModel.loadTemplate(requireContext())
viewModel.loadLocalTemplate(requireContext())
}
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentInstalledTemplateBinding {
return FragmentInstalledTemplateBinding.inflate(layoutInflater)
}
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentInstalledTemplateBinding =
FragmentInstalledTemplateBinding.inflate(layoutInflater)
}

View File

@ -249,10 +249,6 @@ class ModFragment : BaseFragment<FragmentModBinding>() {
configurationManager?.readData()
val works: MutableList<String> = ArrayList()
if (modClass.modFile.isDirectory) {
// val developerMode = AppSettings.getValue(AppSettings.Setting.DeveloperMode, false)
// if (developerMode) {
// works.add(getString(R.string.generate_error_report))
// }
if (GlobalMethod.isActive) {
works.add(getString(R.string.mod_action1))
if (modClass.hasInfo()) {
@ -265,7 +261,6 @@ class ModFragment : BaseFragment<FragmentModBinding>() {
works.add(getString(R.string.optimization))
works.add(getString(R.string.packmod))
}
works.add(getString(R.string.release))
if (configurationData != null) {
val title = configurationData.updateTitle
if (title.isNotEmpty()) {

View File

@ -76,20 +76,11 @@ class InstalledTemplateViewModel : BaseViewModel() {
return itemList
}
/**
* 加载本地和网络模板
* 如果设置了[InstalledTemplateViewModel.setLoadCallBack]回调那么会调用接口.
* 请在回调内使用[InstalledTemplateViewModel.getGroupData][InstalledTemplateViewModel.getItemData]获取加载结果
* @param context Context
*/
fun loadTemplate(context: Context) {
}
/**
* 加载本地模板
* @param context Context
*/
private fun loadLocalTemplate(context: Context) {
fun loadLocalTemplate(context: Context) {
val templateDirectory = File(
AppSettings.getValue(
AppSettings.Setting.TemplateDirectory,
@ -123,16 +114,25 @@ class InstalledTemplateViewModel : BaseViewModel() {
val s = jsonObject.getString("language")
if (s == "ALL" || s == environmentLanguage) {
temList.add(templateFile)
LogCat.d("加载本地模板", "已成功分配" + file.absolutePath)
LogCat.d(
"加载本地模板",
"已成功分配" + file.absolutePath
)
} else {
LogCat.w("加载本地模板", "不符合语言的项目" + file.absolutePath)
LogCat.w(
"加载本地模板",
"不符合语言的项目" + file.absolutePath
)
}
} catch (exception: JSONException) {
exception.printStackTrace()
}
} else {
temList.add(templateFile)
LogCat.d("加载本地模板", "已成功分配" + file.absolutePath)
LogCat.d(
"加载本地模板",
"已成功分配" + file.absolutePath
)
}
} else {
LogCat.w("加载本地模板", "无法分配" + file.absolutePath)
@ -153,7 +153,10 @@ class InstalledTemplateViewModel : BaseViewModel() {
}
}
} else {
LogCat.w("加载本地模板", "目录" + templateDirectory.absolutePath + "内,没有文件,无法加载。")
LogCat.w(
"加载本地模板",
"目录" + templateDirectory.absolutePath + "内,没有文件,无法加载。"
)
}
} else {
LogCat.e("加载本地模板", "模板目录不存在或不是文件夹" + templateDirectory.absolutePath)

View File

@ -11,7 +11,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="16dp"
android:layout_marginStart="24dp"
style="@style/TextAppearance.Material3.TitleMedium"
android:text="优化项目" />