refactor(app): 优化已安装模板界面和功能
- 移除了冗余代码和未使用的导入 - 改进了模板加载逻辑,仅保留本地模板加载功能- 优化了长按菜单操作,移除了删除和订阅相关代码 - 调整了优化项目界面布局和逻辑 -修复了模组路径为空时的异常处理
This commit is contained in:
parent
c2345e62ba
commit
5f137e0469
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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()) {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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="优化项目" />
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user