Skip to content

Commit

Permalink
- 可设置qq号和昵称的索引
Browse files Browse the repository at this point in the history
  • Loading branch information
zsqw123 committed May 14, 2020
1 parent fe19c5e commit 00b4608
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 14 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@
/gradle/wrapper/
/app/release/
extra/info.md
/app/src/test/
/app/src/androidTest/
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
applicationId "qhaty.qqex"
minSdkVersion 21
targetSdkVersion 29
versionCode 200512
versionName "1.1"
versionCode 200513
versionName "1.2"
}

buildTypes {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/qhaty/qqex/Data.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ object Data : KotprefModel() {
}

object QQNickNameParse : KotprefModel() {
val qqNickNameSet by stringSetPref()
val dataSet by stringSetPref()
}
80 changes: 70 additions & 10 deletions app/src/main/java/qhaty/qqex/Dialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import android.app.AlertDialog
import android.content.Context
import android.telephony.TelephonyManager
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import androidx.appcompat.app.AppCompatActivity
import com.afollestad.assent.Permission
import com.afollestad.assent.askForPermissions
Expand Down Expand Up @@ -48,6 +52,10 @@ fun Context.setDialog(): AlertDialog = alertDialog {
}
}
}
val bt = Button(context)
bt.text = getString(R.string.set_qq_index)
bt.setOnClickListener { setNickNameDialog().show() }
setView(bt)
}

fun Context.getImeiDialog(): AlertDialog = alertDialog(
Expand Down Expand Up @@ -100,16 +108,68 @@ fun Context.rootGetKeyDialog(): AlertDialog = alertDialog {
}
}

fun Context.expWithRebuildDialog(callback: () -> Unit): AlertDialog? {
return if (checkDBCopied(mainContext!!)) {
alertDialog("提示", "检测到已导入过聊天数据文件,是否删除重建") {
positiveButton(R.string.yes) {
GlobalScope.launch(Dispatchers.Main) {
withContext(Dispatchers.IO) { delDB(mainContext!!) }
callback.invoke()
}
fun Context.expWithRebuildDialog(callback: () -> Unit): AlertDialog? = if (checkDBCopied(mainContext!!)) {
alertDialog("提示", "检测到已导入过聊天数据文件,是否删除重建") {
positiveButton(R.string.yes) {
GlobalScope.launch(Dispatchers.Main) {
withContext(Dispatchers.IO) { delDB(mainContext!!) }
callback.invoke()
}
negativeButton(R.string.no) { callback.invoke() }
}
} else null
negativeButton(R.string.no) { callback.invoke() }
}
} else null

fun Context.setNickNameDialog(): AlertDialog = alertDialog(
"QQ号索引", "填入QQ号和昵称导出时可以将QQ号转为昵称\n不建议填入影响HTML识别的特殊字符 < / 什么的"
) {
val context = this@setNickNameDialog
val layout = LinearLayout(context)
layout.layoutParams =
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
layout.orientation = LinearLayout.VERTICAL
val etQQ = EditText(context)
val etName = EditText(context)
val button = Button(context)
val buttonD = Button(context)
layout.addView(etQQ)
layout.addView(etName)
layout.addView(button)
layout.addView(buttonD)
val match = LinearLayout.LayoutParams.MATCH_PARENT
val wrap = LinearLayout.LayoutParams.WRAP_CONTENT
etQQ.layoutParams = LinearLayout.LayoutParams(match, wrap)
etQQ.hint = "QQ"
etName.layoutParams = LinearLayout.LayoutParams(match, wrap)
etName.hint = "昵称"
button.layoutParams = LinearLayout.LayoutParams(match, wrap)
button.text = "添加索引"
buttonD.text = "删除索引"
buttonD.layoutParams = LinearLayout.LayoutParams(match, wrap)
fun getStr(): String {
val etqqText = etQQ.text.toString()
val etNameText = etName.text.toString()
var text = ""
when {
etqqText.length < 5 -> toast("您的QQ小于五位数")
etNameText.isBlank() -> toast("昵称为空")
else -> text = "--QQS--$etqqText--QQEX--$etNameText--QQE--"
}
return text
}
button.setOnClickListener {
val str = getStr()
if (getStr() != "") {
val add: Boolean = QQNickNameParse.dataSet.add(str)
if (add) toast("已添加该索引") else toast("该索引已存在")
}
}
buttonD.setOnClickListener {
val str = getStr()
if (getStr() != "") {
val remove: Boolean = QQNickNameParse.dataSet.remove(str)
if (remove) toast("已删除该索引") else toast("无该索引")
}
}
setView(layout)
}
14 changes: 13 additions & 1 deletion app/src/main/java/qhaty/qqex/Ex.kt
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,23 @@ class Ex {
return withContext(Dispatchers.Default) {
val allChatDecode = arrayListOf<Chat>()
val allCount = allChat.size
val qqSavedSet: Set<String> = QQNickNameParse.dataSet
val qqMap = hashMapOf<String, String>()
val regex1 = Regex(""".*?--QQEX--""")
val regex2 = Regex("""--QQEX--.*?""")
qqSavedSet.forEach {
val r0 = it.replace("--QQS--", "").replace("--QQE--", "")
val qq = regex1.find(r0)?.value?.replace("--QQEX--", "")
val name = regex2.find(r0)?.value?.replace("--QQEX--", "")
if (qq != null && name != null) qqMap[qq] = name
}
progress.change("数据库解码...")
for (i in allChat.indices) {
val time = allChat[i].time
val type = allChat[i].type
val sender = fix(allChat[i].sender)
var fixedQQ = fix(allChat[i].sender)
for ((k, v) in qqMap) fixedQQ = fixedQQ.replace(k, v)
val sender = fixedQQ
val data = fix(allChat[i].msg)
allChatDecode += Chat(time, type, sender, data)
if (i % 20 == 0) progress.change(((i.toFloat() / allCount) * 100 + 200).toInt())
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
<string name="app_name">qqex</string>
<string name="yes">是</string>
<string name="no">否</string>
<string name="set_qq_index">设置QQ号昵称索引</string>
</resources>

0 comments on commit 00b4608

Please sign in to comment.