refactor(app): 优化已安装模板界面和功能
- 移除了冗余代码和未使用的导入 - 改进了模板加载逻辑,仅保留本地模板加载功能- 优化了长按菜单操作,移除了删除和订阅相关代码 - 调整了优化项目界面布局和逻辑 -修复了模组路径为空时的异常处理
This commit is contained in:
parent
c2345e62ba
commit
5f137e0469
|
@ -179,7 +179,7 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
|
||||||
when (type) {
|
when (type) {
|
||||||
"ini", "txt" -> {
|
"ini", "txt" -> {
|
||||||
val content = FileOperator.readFile(file)
|
val content = FileOperator.readFile(file)
|
||||||
if (content == null || content.isEmpty()) {
|
if (content.isNullOrEmpty()) {
|
||||||
//文件为空
|
//文件为空
|
||||||
val group = mGroupNameMap[getString(R.string.empty_file)]
|
val group = mGroupNameMap[getString(R.string.empty_file)]
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
|
@ -422,7 +422,7 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
|
||||||
val optimizeGroups = mOptimizeGroups.toTypedArray()
|
val optimizeGroups = mOptimizeGroups.toTypedArray()
|
||||||
for (group in optimizeGroups) {
|
for (group in optimizeGroups) {
|
||||||
val optimizeItemList: List<OptimizeItem<*>> = mItemNameMap[group.groupName]!!
|
val optimizeItemList: List<OptimizeItem<*>> = mItemNameMap[group.groupName]!!
|
||||||
if (optimizeItemList.size > 0) {
|
if (optimizeItemList.isNotEmpty()) {
|
||||||
mOptimizeItem.add(optimizeItemList)
|
mOptimizeItem.add(optimizeItemList)
|
||||||
} else {
|
} else {
|
||||||
mOptimizeGroups.remove(group)
|
mOptimizeGroups.remove(group)
|
||||||
|
@ -467,6 +467,11 @@ class OptimizeActivity : BaseActivity<ActivityOptimizeBinding>() {
|
||||||
finish()
|
finish()
|
||||||
} else {
|
} else {
|
||||||
val modPath = bundle.getString("modPath")
|
val modPath = bundle.getString("modPath")
|
||||||
|
if (modPath.isNullOrBlank()){
|
||||||
|
Toast.makeText(this, "无效请求,缺少modPath", Toast.LENGTH_SHORT).show()
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
}
|
||||||
val file = File(modPath)
|
val file = File(modPath)
|
||||||
if (file.exists() && file.isDirectory) {
|
if (file.exists() && file.isDirectory) {
|
||||||
val modClass = ModClass(File(modPath))
|
val modClass = ModClass(File(modPath))
|
||||||
|
|
|
@ -61,12 +61,7 @@ class OptimizeAdapter(
|
||||||
view: View?,
|
view: View?,
|
||||||
parent: ViewGroup
|
parent: ViewGroup
|
||||||
): View {
|
): View {
|
||||||
var convertView: View
|
val convertView: View = view ?: mInflater.inflate(R.layout.optimization_group, parent, false)
|
||||||
if (view == null) {
|
|
||||||
convertView = mInflater.inflate(R.layout.optimization_group, parent, false)
|
|
||||||
} else {
|
|
||||||
convertView = view
|
|
||||||
}
|
|
||||||
val nameView = convertView.findViewById<TextView>(R.id.nameView)
|
val nameView = convertView.findViewById<TextView>(R.id.nameView)
|
||||||
val numView = convertView.findViewById<TextView>(R.id.numView)
|
val numView = convertView.findViewById<TextView>(R.id.numView)
|
||||||
val groupCheckBox = convertView.findViewById<CheckBox>(R.id.groupCheckBox)
|
val groupCheckBox = convertView.findViewById<CheckBox>(R.id.groupCheckBox)
|
||||||
|
|
|
@ -4,9 +4,6 @@ import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import android.os.Handler
|
|
||||||
import android.os.Looper
|
|
||||||
import android.util.Log
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.AdapterView
|
import android.widget.AdapterView
|
||||||
import android.widget.ExpandableListView
|
import android.widget.ExpandableListView
|
||||||
|
@ -15,11 +12,7 @@ import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.lifecycle.MutableLiveData
|
|
||||||
import com.coldmint.dialog.CoreDialog
|
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.dataBean.template.TemplatePackage
|
||||||
import com.coldmint.rust.core.debug.LogCat
|
import com.coldmint.rust.core.debug.LogCat
|
||||||
import com.coldmint.rust.core.tool.FileOperator
|
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.databinding.FragmentInstalledTemplateBinding
|
||||||
import com.coldmint.rust.pro.tool.AppSettings
|
import com.coldmint.rust.pro.tool.AppSettings
|
||||||
import com.coldmint.rust.pro.viewmodel.InstalledTemplateViewModel
|
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>() {
|
class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>() {
|
||||||
private val viewModel: InstalledTemplateViewModel by lazy {
|
private val viewModel: InstalledTemplateViewModel by lazy {
|
||||||
|
@ -82,37 +68,15 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
|
||||||
val packedPos = (parent as ExpandableListView).getExpandableListPosition(flatPos)
|
val packedPos = (parent as ExpandableListView).getExpandableListPosition(flatPos)
|
||||||
val groupPosition = ExpandableListView.getPackedPositionGroup(packedPos)
|
val groupPosition = ExpandableListView.getPackedPositionGroup(packedPos)
|
||||||
val childPosition = ExpandableListView.getPackedPositionChild(packedPos)
|
val childPosition = ExpandableListView.getPackedPositionChild(packedPos)
|
||||||
if (childPosition == -1) { //长按的是父项
|
if (childPosition == -1) {
|
||||||
//这里做关于父项的相关操作......
|
|
||||||
val numView = view.findViewById<TextView>(R.id.template_num)
|
|
||||||
val templateClass =
|
val templateClass =
|
||||||
mTemplateAdapter.getGroup(groupPosition) as TemplatePackage
|
mTemplateAdapter.getGroup(groupPosition) as TemplatePackage
|
||||||
CoreDialog(requireContext()).setTitle(R.string.template_info)
|
CoreDialog(requireContext()).setTitle(R.string.template_info)
|
||||||
.setMessage(
|
.setMessage(
|
||||||
templateClass.getDescription()
|
templateClass.getDescription()
|
||||||
).setCancelable(false).setPositiveButton(
|
).setCancelable(false).setPositiveButton(
|
||||||
if (templateClass.isLocal()) {
|
R.string.dialog_ok
|
||||||
R.string.delete_title
|
|
||||||
} else {
|
|
||||||
R.string.de_subscription
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
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()
|
}.show()
|
||||||
} else { //长按的是子项
|
} else { //长按的是子项
|
||||||
//这里做关于子项的相关操作.......
|
//这里做关于子项的相关操作.......
|
||||||
|
@ -121,7 +85,7 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
|
||||||
}
|
}
|
||||||
|
|
||||||
viewBinding.swipeRefreshLayout.setOnRefreshListener {
|
viewBinding.swipeRefreshLayout.setOnRefreshListener {
|
||||||
viewModel.loadTemplate(requireContext())
|
viewModel.loadLocalTemplate(requireContext())
|
||||||
viewBinding.swipeRefreshLayout.isRefreshing = false
|
viewBinding.swipeRefreshLayout.isRefreshing = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -177,10 +141,9 @@ class InstalledTemplateFragment : BaseFragment<FragmentInstalledTemplateBinding>
|
||||||
val path = viewModel.createPathLiveData.value.toString()
|
val path = viewModel.createPathLiveData.value.toString()
|
||||||
mTemplateAdapter.setCreatePath(path)
|
mTemplateAdapter.setCreatePath(path)
|
||||||
LogCat.d("创建目录观察者", "模板适配器设置目录为${path}。")
|
LogCat.d("创建目录观察者", "模板适配器设置目录为${path}。")
|
||||||
viewModel.loadTemplate(requireContext())
|
viewModel.loadLocalTemplate(requireContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentInstalledTemplateBinding {
|
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentInstalledTemplateBinding =
|
||||||
return FragmentInstalledTemplateBinding.inflate(layoutInflater)
|
FragmentInstalledTemplateBinding.inflate(layoutInflater)
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -249,10 +249,6 @@ class ModFragment : BaseFragment<FragmentModBinding>() {
|
||||||
configurationManager?.readData()
|
configurationManager?.readData()
|
||||||
val works: MutableList<String> = ArrayList()
|
val works: MutableList<String> = ArrayList()
|
||||||
if (modClass.modFile.isDirectory) {
|
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) {
|
if (GlobalMethod.isActive) {
|
||||||
works.add(getString(R.string.mod_action1))
|
works.add(getString(R.string.mod_action1))
|
||||||
if (modClass.hasInfo()) {
|
if (modClass.hasInfo()) {
|
||||||
|
@ -265,7 +261,6 @@ class ModFragment : BaseFragment<FragmentModBinding>() {
|
||||||
works.add(getString(R.string.optimization))
|
works.add(getString(R.string.optimization))
|
||||||
works.add(getString(R.string.packmod))
|
works.add(getString(R.string.packmod))
|
||||||
}
|
}
|
||||||
works.add(getString(R.string.release))
|
|
||||||
if (configurationData != null) {
|
if (configurationData != null) {
|
||||||
val title = configurationData.updateTitle
|
val title = configurationData.updateTitle
|
||||||
if (title.isNotEmpty()) {
|
if (title.isNotEmpty()) {
|
||||||
|
|
|
@ -76,20 +76,11 @@ class InstalledTemplateViewModel : BaseViewModel() {
|
||||||
return itemList
|
return itemList
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载本地和网络模板
|
|
||||||
* 如果设置了[InstalledTemplateViewModel.setLoadCallBack]回调,那么会调用接口.
|
|
||||||
* 请在回调内使用[InstalledTemplateViewModel.getGroupData]和[InstalledTemplateViewModel.getItemData]获取加载结果
|
|
||||||
* @param context Context
|
|
||||||
*/
|
|
||||||
fun loadTemplate(context: Context) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载本地模板
|
* 加载本地模板
|
||||||
* @param context Context
|
* @param context Context
|
||||||
*/
|
*/
|
||||||
private fun loadLocalTemplate(context: Context) {
|
fun loadLocalTemplate(context: Context) {
|
||||||
val templateDirectory = File(
|
val templateDirectory = File(
|
||||||
AppSettings.getValue(
|
AppSettings.getValue(
|
||||||
AppSettings.Setting.TemplateDirectory,
|
AppSettings.Setting.TemplateDirectory,
|
||||||
|
@ -123,16 +114,25 @@ class InstalledTemplateViewModel : BaseViewModel() {
|
||||||
val s = jsonObject.getString("language")
|
val s = jsonObject.getString("language")
|
||||||
if (s == "ALL" || s == environmentLanguage) {
|
if (s == "ALL" || s == environmentLanguage) {
|
||||||
temList.add(templateFile)
|
temList.add(templateFile)
|
||||||
LogCat.d("加载本地模板", "已成功分配" + file.absolutePath)
|
LogCat.d(
|
||||||
|
"加载本地模板",
|
||||||
|
"已成功分配" + file.absolutePath
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
LogCat.w("加载本地模板", "不符合语言的项目" + file.absolutePath)
|
LogCat.w(
|
||||||
|
"加载本地模板",
|
||||||
|
"不符合语言的项目" + file.absolutePath
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} catch (exception: JSONException) {
|
} catch (exception: JSONException) {
|
||||||
exception.printStackTrace()
|
exception.printStackTrace()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
temList.add(templateFile)
|
temList.add(templateFile)
|
||||||
LogCat.d("加载本地模板", "已成功分配" + file.absolutePath)
|
LogCat.d(
|
||||||
|
"加载本地模板",
|
||||||
|
"已成功分配" + file.absolutePath
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LogCat.w("加载本地模板", "无法分配" + file.absolutePath)
|
LogCat.w("加载本地模板", "无法分配" + file.absolutePath)
|
||||||
|
@ -153,7 +153,10 @@ class InstalledTemplateViewModel : BaseViewModel() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LogCat.w("加载本地模板", "目录" + templateDirectory.absolutePath + "内,没有文件,无法加载。")
|
LogCat.w(
|
||||||
|
"加载本地模板",
|
||||||
|
"目录" + templateDirectory.absolutePath + "内,没有文件,无法加载。"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LogCat.e("加载本地模板", "模板目录不存在或不是文件夹" + templateDirectory.absolutePath)
|
LogCat.e("加载本地模板", "模板目录不存在或不是文件夹" + templateDirectory.absolutePath)
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="24dp"
|
||||||
style="@style/TextAppearance.Material3.TitleMedium"
|
style="@style/TextAppearance.Material3.TitleMedium"
|
||||||
android:text="优化项目" />
|
android:text="优化项目" />
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user