Skip to content
This repository was archived by the owner on Oct 20, 2023. It is now read-only.

Commit fa97c7e

Browse files
committed
2.6
1 parent d4b71e1 commit fa97c7e

File tree

21 files changed

+224
-204
lines changed

21 files changed

+224
-204
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ apply plugin: 'kotlin-kapt'
55
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
66

77

8-
def CORE_VERSION = "1.0.1"
8+
def CORE_VERSION = "1.0.2"
99
def LUAMIRAI_VERSION = "0.2.1"
1010

1111
android {
@@ -16,8 +16,8 @@ android {
1616
applicationId "io.github.mzdluo123.mirai.android"
1717
minSdkVersion 24
1818
targetSdkVersion 29
19-
versionCode 15
20-
versionName "2.5"
19+
versionCode 16
20+
versionName "2.6"
2121
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2222
buildConfigField("String", "COREVERSION", "\"$CORE_VERSION\"")
2323
buildConfigField("String", "LUAMIRAI_VERSION", "\"$LUAMIRAI_VERSION\"")

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<activity
4545
android:name=".activity.MainActivity"
4646
android:label="@string/app_name"
47-
android:theme="@style/AppTheme.NoActionBar"
47+
android:theme="@style/StartTheme"
4848
android:windowSoftInputMode="stateVisible|adjustResize">
4949
<intent-filter>
5050
<action android:name="android.intent.action.MAIN" />

app/src/main/java/io/github/mzdluo123/mirai/android/activity/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ class MainActivity : AppCompatActivity() {
3737

3838
override fun onCreate(savedInstanceState: Bundle?) {
3939
super.onCreate(savedInstanceState)
40+
setTheme(R.style.AppTheme_NoActionBar)
4041
setContentView(R.layout.activity_main)
4142
setSupportActionBar(toolbar)
43+
4244
findNavController(R.id.nav_host_fragment).let {
4345
setupActionBarWithNavController(it, appBarConfiguration)
4446
nav_view.setupWithNavController(it)

app/src/main/java/io/github/mzdluo123/mirai/android/activity/PluginImportActivity.kt

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package io.github.mzdluo123.mirai.android.activity
22

33
import android.net.Uri
44
import android.os.Bundle
5-
import android.util.Log
65
import android.widget.Toast
76
import androidx.appcompat.app.AlertDialog
87
import androidx.appcompat.app.AppCompatActivity
@@ -12,7 +11,7 @@ import androidx.lifecycle.lifecycleScope
1211
import io.github.mzdluo123.mirai.android.R
1312
import io.github.mzdluo123.mirai.android.databinding.ActivityPluginImportBinding
1413
import io.github.mzdluo123.mirai.android.ui.plugin.PluginViewModel
15-
import io.github.mzdluo123.mirai.android.utils.FileUtils
14+
import io.github.mzdluo123.mirai.android.utils.askFileName
1615
import io.github.mzdluo123.mirai.android.utils.copyToFileDir
1716
import kotlinx.android.synthetic.main.activity_plugin_import.*
1817
import kotlinx.coroutines.CoroutineExceptionHandler
@@ -75,13 +74,15 @@ class PluginImportActivity : AppCompatActivity() {
7574
}
7675
}
7776

78-
val path = FileUtils.getFilePathByUri(this@PluginImportActivity, uri)
79-
Log.e("PATH", path.toString())
80-
val name = path?.split("/")?.last() ?: uri.lastPathSegment ?: return
77+
78+
8179
dialog.show()
8280
when (import_radioGroup.checkedRadioButtonId) {
8381
R.id.compile_radioButton -> {
8482
lifecycleScope.launch(exceptionHandler) {
83+
val name = withContext(Dispatchers.Main) {
84+
askFileName()
85+
} ?: return@launch
8586
withContext(Dispatchers.IO) {
8687
copyToFileDir(
8788
uri,
@@ -104,6 +105,9 @@ class PluginImportActivity : AppCompatActivity() {
104105
}
105106
R.id.copy_radioButton -> {
106107
lifecycleScope.launch(exceptionHandler) {
108+
val name = withContext(Dispatchers.Main) {
109+
askFileName()
110+
} ?: return@launch
107111
withContext(Dispatchers.IO) {
108112
copyToFileDir(
109113
uri,
@@ -123,19 +127,7 @@ class PluginImportActivity : AppCompatActivity() {
123127

124128

125129
private suspend fun loadPluginData() {
126-
val realPath = FileUtils.getFilePathByUri(this, uri)
127-
val realFileName = realPath?.split("/")?.last()
128-
if (realFileName == null) {
129-
lifecycleScope.launch(Dispatchers.Main) {
130-
Toast.makeText(
131-
this@PluginImportActivity,
132-
"无法加载插件",
133-
Toast.LENGTH_LONG
134-
).show()
135-
finish()
136-
}
137-
return
138-
}
130+
val realFileName = "tmpfile.jar"
139131
baseContext.copyToFileDir(uri, realFileName, cacheDir.absolutePath)
140132
val cacheFile = File(cacheDir.absolutePath, realFileName)
141133
val zipFile = ZipFile(cacheFile)
@@ -146,7 +138,7 @@ class PluginImportActivity : AppCompatActivity() {
146138
FileReader(File(cacheDir.absolutePath, "plugin.yml")).use {
147139
with(yml.load<LinkedHashMap<String, Any>>(it)) {
148140
plugInfo = PluginDescription(
149-
file = File(realPath),
141+
file = File(cacheDir.absolutePath, "tmpfile.jar"),
150142
name = this.get("name") as String,
151143
author = kotlin.runCatching {
152144
this.get("author") as String

app/src/main/java/io/github/mzdluo123/mirai/android/script/ScriptManager.kt

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.content.Context
44
import android.net.Uri
55
import android.util.Log
66
import io.github.mzdluo123.mirai.android.BotApplication
7-
import io.github.mzdluo123.mirai.android.utils.FileUtils
87
import io.github.mzdluo123.mirai.android.utils.copyToFileDir
98
import kotlinx.serialization.json.Json
109
import net.mamoe.mirai.Bot
@@ -19,6 +18,7 @@ class ScriptManager(
1918
private val bots = mutableListOf<Bot>()
2019
val botsSize: Int
2120
get() = bots.size
21+
2222
companion object {
2323
val instance: ScriptManager by lazy {
2424
val context: Context = BotApplication.context
@@ -32,11 +32,13 @@ class ScriptManager(
3232
Json.parse(ScriptHost.ScriptInfo.serializer(), infoStrings[it])
3333
}
3434

35-
fun copyFileToScriptDir(context: Context, uri: Uri): File = context.copyToFileDir(
36-
uri,
37-
FileUtils.getFilePathByUri(context, uri)?.split("/")?.last()!!,
38-
context.getExternalFilesDir("scripts")!!.absolutePath
39-
)
35+
fun copyFileToScriptDir(context: Context, uri: Uri, name: String): File =
36+
context.copyToFileDir(
37+
uri,
38+
name,
39+
context.getExternalFilesDir("scripts")!!.absolutePath
40+
)
41+
4042
}
4143

4244
init {
@@ -72,20 +74,20 @@ class ScriptManager(
7274
}
7375
}
7476

75-
fun createScriptFromUri(fromUri: Uri, type: Int): Boolean {
76-
fromUri.getName(context).let { name ->
77-
val scriptFile = context.copyToFileDir(
78-
fromUri,
79-
name!!,
80-
scriptDir.absolutePath
81-
)
82-
83-
hosts.addHost(scriptFile, scriptFile.getConfigFile(), type)?.let { host ->
84-
bots.forEach { bot -> host.installBot(bot) }
85-
return true
86-
} ?: return false
87-
}
88-
}
77+
// fun createScriptFromUri(fromUri: Uri, type: Int): Boolean {
78+
// fromUri.getName(context).let { name ->
79+
// val scriptFile = context.copyToFileDir(
80+
// fromUri,
81+
// name!!,
82+
// scriptDir.absolutePath
83+
// )
84+
//
85+
// hosts.addHost(scriptFile, scriptFile.getConfigFile(), type)?.let { host ->
86+
// bots.forEach { bot -> host.installBot(bot) }
87+
// return true
88+
// } ?: return false
89+
// }
90+
// }
8991

9092
fun createScriptFromFile(scriptFile: File, type: Int): Boolean {
9193
hosts.addHost(scriptFile, scriptFile.getConfigFile(), type)?.let { host ->
@@ -103,6 +105,7 @@ class ScriptManager(
103105
hosts[index].saveConfig()
104106
bots.forEach { hosts[index].installBot(it) }
105107
}
108+
106109
fun enableAll() = hosts.forEach { host -> host.enable() }
107110

108111
fun disable(index: Int) {
@@ -113,7 +116,8 @@ class ScriptManager(
113116
hosts[index].info.enable = false
114117
hosts[index].saveConfig()
115118
}
116-
fun disableAll() = hosts.forEach {it.disable()}
119+
120+
fun disableAll() = hosts.forEach { it.disable() }
117121

118122
fun reload(index: Int) {
119123
hosts[index].disable()
@@ -157,6 +161,6 @@ class ScriptManager(
157161
}
158162

159163
private fun File.getConfigFile() = File(configDir, name)
160-
fun Uri.getName(context: Context) =
161-
FileUtils.getFilePathByUri(context, this)?.split("/")?.last()
164+
// fun Uri.getName(context: Context) =
165+
// context.askFileName()
162166
}

app/src/main/java/io/github/mzdluo123/mirai/android/ui/console/ConsoleFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class ConsoleFragment : Fragment() {
125125
}
126126

127127
private fun setAutoLogin() {
128-
val alertView = View.inflate(activity, R.layout.alert_autologin, null)
128+
val alertView = View.inflate(activity, R.layout.dialog_autologin, null)
129129
val pwdInput = alertView.findViewById<EditText>(R.id.password_input)
130130
val qqInput = alertView.findViewById<EditText>(R.id.qq_input)
131131
val accountStore = activity!!.getSharedPreferences("account", Context.MODE_PRIVATE)

app/src/main/java/io/github/mzdluo123/mirai/android/ui/script/ScriptFragment.kt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,26 @@ import android.widget.TextView
1313
import androidx.fragment.app.Fragment
1414
import androidx.lifecycle.Observer
1515
import androidx.lifecycle.ViewModelProvider
16+
import androidx.lifecycle.lifecycleScope
1617
import androidx.recyclerview.widget.DividerItemDecoration
1718
import androidx.recyclerview.widget.LinearLayoutManager
1819
import io.github.mzdluo123.mirai.android.BotService
1920
import io.github.mzdluo123.mirai.android.IbotAidlInterface
2021
import io.github.mzdluo123.mirai.android.R
2122
import io.github.mzdluo123.mirai.android.script.ScriptHostFactory
2223
import io.github.mzdluo123.mirai.android.script.ScriptManager
24+
import io.github.mzdluo123.mirai.android.utils.askFileName
2325
import kotlinx.android.synthetic.main.fragment_script.*
26+
import kotlinx.coroutines.Dispatchers
27+
import kotlinx.coroutines.launch
28+
import kotlinx.coroutines.withContext
2429
import org.jetbrains.anko.*
2530

2631
class ScriptFragment : Fragment(), ScriptInfoDialogFragment.ScriptInfoDialogFragmentListener {
2732
companion object {
2833
const val IMPORT_SCRIPT = 2
2934
}
35+
3036
private val scriptViewModel: ScriptViewModel by lazy {
3137
ViewModelProvider(this)[ScriptViewModel::class.java]
3238
}
@@ -75,7 +81,12 @@ class ScriptFragment : Fragment(), ScriptInfoDialogFragment.ScriptInfoDialogFrag
7581
override fun onActivityCreated(savedInstanceState: Bundle?) {
7682
super.onActivityCreated(savedInstanceState)
7783
script_recycler.adapter = adapter
78-
script_recycler.addItemDecoration(DividerItemDecoration(context,DividerItemDecoration.HORIZONTAL))
84+
script_recycler.addItemDecoration(
85+
DividerItemDecoration(
86+
context,
87+
DividerItemDecoration.HORIZONTAL
88+
)
89+
)
7990
script_recycler.layoutManager = LinearLayoutManager(activity)
8091
}
8192

@@ -113,13 +124,19 @@ class ScriptFragment : Fragment(), ScriptInfoDialogFragment.ScriptInfoDialogFrag
113124
}
114125

115126
private fun importScript(uri: Uri, type: Int) {
116-
val scriptFile = ScriptManager.copyFileToScriptDir(requireContext(), uri)
117-
val result = scriptViewModel.createScriptFromFile(scriptFile, type)
118-
if (result) {
119-
context?.toast("导入成功,当前脚本数量:${scriptViewModel.hostSize}")
120-
} else {
121-
context?.toast("导入失败,请检查脚本是否有误!")
127+
viewLifecycleOwner.lifecycleScope.launch {
128+
val name = withContext(Dispatchers.Main) {
129+
requireActivity().askFileName()
130+
} ?: return@launch
131+
val scriptFile = ScriptManager.copyFileToScriptDir(requireContext(), uri,name)
132+
val result = scriptViewModel.createScriptFromFile(scriptFile, type)
133+
if (result) {
134+
context?.toast("导入成功,当前脚本数量:${scriptViewModel.hostSize}")
135+
} else {
136+
context?.toast("导入失败,请检查脚本是否有误!")
137+
}
122138
}
139+
123140
}
124141

125142
override fun onDeleteScript(index: Int) {

app/src/main/java/io/github/mzdluo123/mirai/android/ui/script/ScriptInfoDialogFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import androidx.appcompat.app.AlertDialog
88
import androidx.fragment.app.DialogFragment
99
import io.github.mzdluo123.mirai.android.R
1010
import io.github.mzdluo123.mirai.android.script.ScriptHostFactory
11-
import io.github.mzdluo123.mirai.android.utils.FileUtils
11+
import io.github.mzdluo123.mirai.android.utils.formatFileLength
1212

1313
class ScriptInfoDialogFragment(
1414
var scriptIndex: Int,
@@ -35,7 +35,7 @@ class ScriptInfoDialogFragment(
3535
append("脚本类型:")
3636
append(ScriptHostFactory.NAMES[info.scriptType])
3737
append("\n大小:")
38-
append(FileUtils.formatFileLength(info.fileLength))
38+
append(formatFileLength(info.fileLength))
3939
append("\n作者:")
4040
append(info.author)
4141
append("\n版本:")

0 commit comments

Comments
 (0)