模组投币
This commit is contained in:
parent
f639e89a53
commit
5c3d4f09c9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -162,13 +162,14 @@ class ChangePasswordActivity : BaseActivity<ActivityChangePasswordBinding>() {
|
|||
account,
|
||||
false
|
||||
) && checkCode(code, false) && checkPassword(
|
||||
passWord
|
||||
passWord, false
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
private fun checkCode(code: String, updateView: Boolean = true): Boolean {
|
||||
return if (code.isBlank()) {
|
||||
if (updateView) {
|
||||
setErrorAndInput(
|
||||
viewBinding.verificationCodeView,
|
||||
String.format(
|
||||
|
@ -177,6 +178,7 @@ class ChangePasswordActivity : BaseActivity<ActivityChangePasswordBinding>() {
|
|||
),
|
||||
viewBinding.verificationCodeLayout
|
||||
)
|
||||
}
|
||||
false
|
||||
} else {
|
||||
if (updateView) {
|
||||
|
|
|
@ -16,6 +16,7 @@ import android.text.style.ClickableSpan
|
|||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.core.view.isVisible
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.afollestad.materialdialogs.WhichButton
|
||||
import com.afollestad.materialdialogs.actions.setActionButtonEnabled
|
||||
|
@ -46,7 +47,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
|
|||
.transparentNavigationBar().navigationBarDarkIcon(true)
|
||||
}
|
||||
Log.d("应用识别码", AppSettings.getValue(AppSettings.Setting.AppID, "无"))
|
||||
|
||||
viewBinding.changeServerView.isVisible = BuildConfig.DEBUG
|
||||
viewBinding.changePasswordView.setOnClickListener {
|
||||
val intent = Intent(this, ChangePasswordActivity::class.java)
|
||||
startActivity(intent)
|
||||
|
@ -216,14 +217,14 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
|
|||
)
|
||||
}
|
||||
"请更改登录设备" -> {
|
||||
viewBinding.button.isActivated = false
|
||||
viewBinding.button.isEnabled = false
|
||||
verification(
|
||||
account,
|
||||
passWord,
|
||||
appId,
|
||||
object : ApiCallBack<ApiResponse> {
|
||||
override fun onResponse(t: ApiResponse) {
|
||||
viewBinding.button.isActivated = true
|
||||
viewBinding.button.isEnabled = true
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
MaterialDialog(this@LoginActivity).show {
|
||||
title(R.string.verification).message(
|
||||
|
@ -290,13 +291,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
|
|||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
viewBinding.button.isActivated = true
|
||||
viewBinding.button.isEnabled = true
|
||||
isLogin = false
|
||||
viewBinding.button.setBackgroundColor(
|
||||
GlobalMethod.getColorPrimary(
|
||||
this@LoginActivity
|
||||
)
|
||||
)
|
||||
viewBinding.button.setText(R.string.login)
|
||||
showInternetError(viewBinding.button, e)
|
||||
}
|
||||
|
@ -316,7 +312,6 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
|
|||
|
||||
override fun onFailure(e: Exception) {
|
||||
isLogin = false
|
||||
viewBinding.button.setBackgroundColor(GlobalMethod.getColorPrimary(this@LoginActivity))
|
||||
viewBinding.button.setText(R.string.login)
|
||||
showInternetError(viewBinding.button, e)
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.coldmint.rust.core.web.AppUpdate
|
|||
import com.coldmint.rust.core.web.ServerConfiguration
|
||||
import com.coldmint.rust.pro.databinding.ActivityMainBinding
|
||||
import com.coldmint.rust.pro.databinding.HeadLayoutBinding
|
||||
import com.coldmint.rust.pro.fragments.UserGroupFragment
|
||||
import com.coldmint.rust.pro.viewmodel.StartViewModel
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
|
@ -266,6 +267,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
|||
val codeTable = menu.findItem(R.id.code_table)
|
||||
val mod = menu.findItem(R.id.mod_item)
|
||||
val community = menu.findItem(R.id.community_item)
|
||||
val group = menu.findItem(R.id.user_group)
|
||||
group.setOnMenuItemClickListener {
|
||||
viewBinding.drawerlayout.closeDrawer((GravityCompat.START))
|
||||
val userGroupFragment = UserGroupFragment()
|
||||
userGroupFragment.show(supportFragmentManager, "userGroup")
|
||||
false
|
||||
}
|
||||
// val help = menu.findItem(R.id.help)
|
||||
//管理可见性
|
||||
dataBase.isVisible = isActive
|
||||
|
|
|
@ -51,9 +51,8 @@ class PackActivity : BaseActivity<ActivityPackBinding>() {
|
|||
private var needReturn: Boolean = false
|
||||
|
||||
override fun whenCreateActivity(savedInstanceState: Bundle?, canUseView: Boolean) {
|
||||
if (canUseView)
|
||||
{
|
||||
viewBinding.toolbar.title = getText(R.string.packmod)
|
||||
if (canUseView) {
|
||||
title = getText(R.string.packmod)
|
||||
setReturnButton()
|
||||
initData()
|
||||
initAction()
|
||||
|
@ -146,12 +145,6 @@ class PackActivity : BaseActivity<ActivityPackBinding>() {
|
|||
if (type == getString(R.string.packmod)) {
|
||||
sourceFileNum = 0
|
||||
viewBinding.packCard.isVisible = true
|
||||
viewBinding.packButton.setBackgroundColor(
|
||||
GlobalMethod.getThemeColor(
|
||||
this@PackActivity,
|
||||
R.attr.colorPrimaryVariant
|
||||
)
|
||||
)
|
||||
viewBinding.packButton.setText(R.string.packing)
|
||||
viewBinding.packingTitle.setText(R.string.packmod)
|
||||
if (saveConfigurationData()) {
|
||||
|
@ -171,8 +164,8 @@ class PackActivity : BaseActivity<ActivityPackBinding>() {
|
|||
* @param result 是否解压成功
|
||||
*/
|
||||
private fun resetButton(result: Boolean) {
|
||||
viewBinding.packButton.setBackgroundColor(GlobalMethod.getColorPrimary(this@PackActivity))
|
||||
if (result) {
|
||||
viewBinding.packButton.setIconResource(R.drawable.ic_outline_share_24)
|
||||
viewBinding.packButton.setText(R.string.share_mod)
|
||||
if (needRecyclingFile && viewBinding.deleteSourceFile.isChecked) {
|
||||
val tip = String.format(getString(R.string.recovery_prompt), modName)
|
||||
|
|
|
@ -29,7 +29,6 @@ class RustApplication : Application() {
|
|||
DynamicColors.isDynamicColorAvailable()
|
||||
)
|
||||
}.build()
|
||||
CompletionItemConverter.init(this)
|
||||
DynamicColors.applyToActivitiesIfAvailable(this, options)
|
||||
//程序崩溃
|
||||
CaocConfig.Builder.create()
|
||||
|
|
|
@ -40,6 +40,7 @@ import com.coldmint.rust.core.web.ServerConfiguration
|
|||
import com.coldmint.rust.core.web.User
|
||||
import com.coldmint.rust.core.web.WebMod
|
||||
import com.coldmint.rust.pro.adapters.CommentAdapter
|
||||
import com.coldmint.rust.pro.adapters.ModPageDetailsAdapter
|
||||
import com.coldmint.rust.pro.databinding.ActivityWebModInfoBinding
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.base.BaseActivity
|
||||
|
@ -47,7 +48,9 @@ import com.coldmint.rust.pro.databinding.LoadFileLayoutBinding
|
|||
import com.coldmint.rust.pro.dialog.CommentDialog
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.coldmint.rust.pro.tool.TextStyleMaker
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import com.youth.banner.adapter.BannerImageAdapter
|
||||
import com.youth.banner.holder.BannerImageHolder
|
||||
import com.youth.banner.indicator.CircleIndicator
|
||||
|
@ -73,10 +76,7 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
val token by lazy {
|
||||
AppSettings.getValue(AppSettings.Setting.Token, "")
|
||||
}
|
||||
var developer: String? = null
|
||||
|
||||
//此模组是否对外开放
|
||||
private var isOpen = false
|
||||
lateinit var adapter :ModPageDetailsAdapter
|
||||
|
||||
private fun initView() {
|
||||
setReturnButton()
|
||||
|
@ -98,151 +98,178 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
viewBinding.button.isEnabled = false
|
||||
viewBinding.button.text = getString(R.string.installated)
|
||||
}
|
||||
viewBinding.modCommentRecyclerView.layoutManager =
|
||||
LinearLayoutManager(this@WebModInfoActivity)
|
||||
viewBinding.modCommentRecyclerView.addItemDecoration(
|
||||
DividerItemDecoration(this@WebModInfoActivity, DividerItemDecoration.VERTICAL)
|
||||
)
|
||||
adapter = ModPageDetailsAdapter(this, modId)
|
||||
viewBinding.viewPager2.adapter = adapter
|
||||
TabLayoutMediator(viewBinding.tabLayout, viewBinding.viewPager2) { tab, i ->
|
||||
tab.text = when (i) {
|
||||
0 -> {
|
||||
getString(R.string.details)
|
||||
}
|
||||
1 -> {
|
||||
getString(R.string.insert_coins)
|
||||
}
|
||||
2 -> {
|
||||
getString(R.string.discussion)
|
||||
}
|
||||
else -> {
|
||||
getString(R.string.title)
|
||||
}
|
||||
}
|
||||
}.attach()
|
||||
// viewBinding.button.setOnClickListener {
|
||||
// val type = viewBinding.button.text
|
||||
// val installation = getString(R.string.installation)
|
||||
// when (type) {
|
||||
// installation -> {
|
||||
// downloadAction(t)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// viewBinding.modCommentRecyclerView.layoutManager =
|
||||
// LinearLayoutManager(this@WebModInfoActivity)
|
||||
// viewBinding.modCommentRecyclerView.addItemDecoration(
|
||||
// DividerItemDecoration(this@WebModInfoActivity, DividerItemDecoration.VERTICAL)
|
||||
// )
|
||||
tip = getString(R.string.file_download_progress)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private fun initData() {
|
||||
|
||||
if (token.isBlank()) {
|
||||
viewBinding.progressBar.isVisible = false
|
||||
viewBinding.tipView.isVisible = true
|
||||
viewBinding.tipView.setText(R.string.please_login_first)
|
||||
return
|
||||
}
|
||||
|
||||
loadModCommentList(modId)
|
||||
|
||||
|
||||
WebMod.instance.getInfo(token, modId, object : ApiCallBack<WebModInfoData> {
|
||||
override fun onResponse(t: WebModInfoData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
developer = t.data.developer
|
||||
isOpen = t.data.hidden == 0
|
||||
viewBinding.loadLayout.isVisible = false
|
||||
viewBinding.relativeLayout.isVisible = true
|
||||
val icon = t.data.icon
|
||||
if (icon != null && icon.isNotBlank()) {
|
||||
Glide.with(this@WebModInfoActivity)
|
||||
.load(ServerConfiguration.getRealLink(icon))
|
||||
.apply(GlobalMethod.getRequestOptions())
|
||||
.into(viewBinding.iconView)
|
||||
}
|
||||
title = t.data.name
|
||||
val screenshotListData = t.data.screenshots
|
||||
if (screenshotListData != null && screenshotListData.isNotBlank()) {
|
||||
val list = ArrayList<String>()
|
||||
val lineParser = LineParser()
|
||||
lineParser.symbol = ","
|
||||
lineParser.text = screenshotListData
|
||||
lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
list.add(lineData)
|
||||
true
|
||||
}
|
||||
val adapter = object : BannerImageAdapter<String>(list) {
|
||||
override fun onBindView(
|
||||
holder: BannerImageHolder?,
|
||||
data: String?,
|
||||
position: Int,
|
||||
size: Int
|
||||
) {
|
||||
if (data != null && holder != null) {
|
||||
Glide.with(this@WebModInfoActivity)
|
||||
.load(ServerConfiguration.getRealLink(data))
|
||||
.apply(GlobalMethod.getRequestOptions())
|
||||
.into(holder.imageView)
|
||||
}
|
||||
}
|
||||
}
|
||||
viewBinding.banner.setAdapter(adapter)
|
||||
viewBinding.banner.addBannerLifecycleObserver(this@WebModInfoActivity)
|
||||
viewBinding.banner.indicator = CircleIndicator(this@WebModInfoActivity)
|
||||
viewBinding.banner.setIndicatorSelectedColorRes(R.color.blue_500)
|
||||
viewBinding.banner.isAutoLoop(false)
|
||||
} else {
|
||||
viewBinding.banner.isVisible = false
|
||||
}
|
||||
val tags = t.data.tags
|
||||
val lineParser = LineParser(tags)
|
||||
val tagList = ArrayList<String>()
|
||||
lineParser.symbol = ","
|
||||
lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
val tag = lineData.subSequence(1, lineData.length - 1).toString()
|
||||
tagList.add(tag)
|
||||
true
|
||||
}
|
||||
if (tagList.size > 0) {
|
||||
viewBinding.belongStackLabelView.labels = tagList
|
||||
viewBinding.belongStackLabelView.setOnLabelClickListener { index, v, s ->
|
||||
val bundle = Bundle()
|
||||
bundle.putString("tag", s)
|
||||
bundle.putString(
|
||||
"title",
|
||||
String.format(getString(R.string.tag_title), s)
|
||||
)
|
||||
bundle.putString("action", "tag")
|
||||
val thisIntent =
|
||||
Intent(this@WebModInfoActivity, TagActivity::class.java)
|
||||
thisIntent.putExtra("data", bundle)
|
||||
startActivity(thisIntent)
|
||||
}
|
||||
} else {
|
||||
viewBinding.belongStackLabelView.isVisible = false
|
||||
}
|
||||
viewBinding.titleView.text = t.data.name
|
||||
TextStyleMaker.instance.load(
|
||||
viewBinding.modInfoView,
|
||||
t.data.describe
|
||||
) { type, data ->
|
||||
TextStyleMaker.instance.clickEvent(this@WebModInfoActivity, type, data)
|
||||
}
|
||||
viewBinding.numView.text =
|
||||
String.format(
|
||||
getString(R.string.unit_and_downloadnum),
|
||||
t.data.unitNumber,
|
||||
t.data.downloadNumber,
|
||||
t.data.versionName
|
||||
)
|
||||
viewBinding.updateTimeView.text =
|
||||
String.format(getString(R.string.recent_update), t.data.updateTime)
|
||||
viewBinding.button.isVisible = true
|
||||
if (t.data.hidden == 0) {
|
||||
viewBinding.auditLayout.isVisible = false
|
||||
}
|
||||
loadDeveloperInfo(t.data.developer)
|
||||
|
||||
viewBinding.button.setOnClickListener {
|
||||
val type = viewBinding.button.text
|
||||
val installation = getString(R.string.installation)
|
||||
when (type) {
|
||||
installation -> {
|
||||
downloadAction(t)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
viewBinding.tipView.isVisible = true
|
||||
viewBinding.tipView.text = t.message
|
||||
viewBinding.progressBar.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
viewBinding.progressBar.isVisible = false
|
||||
viewBinding.tipView.isVisible = true
|
||||
viewBinding.tipView.setText(R.string.network_error)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
// private fun initData() {
|
||||
//
|
||||
// if (token.isBlank()) {
|
||||
// viewBinding.progressBar.isVisible = false
|
||||
// viewBinding.tipView.isVisible = true
|
||||
// viewBinding.tipView.setText(R.string.please_login_first)
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// loadModCommentList(modId)
|
||||
//
|
||||
//
|
||||
// WebMod.instance.getInfo(token, modId, object : ApiCallBack<WebModInfoData> {
|
||||
// override fun onResponse(t: WebModInfoData) {
|
||||
// if (t.code == ServerConfiguration.Success_Code) {
|
||||
// developer = t.data.developer
|
||||
// isOpen = t.data.hidden == 0
|
||||
// viewBinding.loadLayout.isVisible = false
|
||||
// viewBinding.relativeLayout.isVisible = true
|
||||
// val icon = t.data.icon
|
||||
// if (icon != null && icon.isNotBlank()) {
|
||||
// Glide.with(this@WebModInfoActivity)
|
||||
// .load(ServerConfiguration.getRealLink(icon))
|
||||
// .apply(GlobalMethod.getRequestOptions())
|
||||
// .into(viewBinding.iconView)
|
||||
// }
|
||||
// title = t.data.name
|
||||
// val screenshotListData = t.data.screenshots
|
||||
// if (screenshotListData != null && screenshotListData.isNotBlank()) {
|
||||
// val list = ArrayList<String>()
|
||||
// val lineParser = LineParser()
|
||||
// lineParser.symbol = ","
|
||||
// lineParser.text = screenshotListData
|
||||
// lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
// list.add(lineData)
|
||||
// true
|
||||
// }
|
||||
// val adapter = object : BannerImageAdapter<String>(list) {
|
||||
// override fun onBindView(
|
||||
// holder: BannerImageHolder?,
|
||||
// data: String?,
|
||||
// position: Int,
|
||||
// size: Int
|
||||
// ) {
|
||||
// if (data != null && holder != null) {
|
||||
// Glide.with(this@WebModInfoActivity)
|
||||
// .load(ServerConfiguration.getRealLink(data))
|
||||
// .apply(GlobalMethod.getRequestOptions())
|
||||
// .into(holder.imageView)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// viewBinding.banner.setAdapter(adapter)
|
||||
// viewBinding.banner.addBannerLifecycleObserver(this@WebModInfoActivity)
|
||||
// viewBinding.banner.indicator = CircleIndicator(this@WebModInfoActivity)
|
||||
// viewBinding.banner.setIndicatorSelectedColorRes(R.color.blue_500)
|
||||
// viewBinding.banner.isAutoLoop(false)
|
||||
// } else {
|
||||
// viewBinding.banner.isVisible = false
|
||||
// }
|
||||
// val tags = t.data.tags
|
||||
// val lineParser = LineParser(tags)
|
||||
// val tagList = ArrayList<String>()
|
||||
// lineParser.symbol = ","
|
||||
// lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
// val tag = lineData.subSequence(1, lineData.length - 1).toString()
|
||||
// tagList.add(tag)
|
||||
// true
|
||||
// }
|
||||
// if (tagList.size > 0) {
|
||||
// viewBinding.belongStackLabelView.labels = tagList
|
||||
// viewBinding.belongStackLabelView.setOnLabelClickListener { index, v, s ->
|
||||
// val bundle = Bundle()
|
||||
// bundle.putString("tag", s)
|
||||
// bundle.putString(
|
||||
// "title",
|
||||
// String.format(getString(R.string.tag_title), s)
|
||||
// )
|
||||
// bundle.putString("action", "tag")
|
||||
// val thisIntent =
|
||||
// Intent(this@WebModInfoActivity, TagActivity::class.java)
|
||||
// thisIntent.putExtra("data", bundle)
|
||||
// startActivity(thisIntent)
|
||||
// }
|
||||
// } else {
|
||||
// viewBinding.belongStackLabelView.isVisible = false
|
||||
// }
|
||||
// viewBinding.titleView.text = t.data.name
|
||||
// TextStyleMaker.instance.load(
|
||||
// viewBinding.modInfoView,
|
||||
// t.data.describe
|
||||
// ) { type, data ->
|
||||
// TextStyleMaker.instance.clickEvent(this@WebModInfoActivity, type, data)
|
||||
// }
|
||||
// viewBinding.numView.text =
|
||||
// String.format(
|
||||
// getString(R.string.unit_and_downloadnum),
|
||||
// t.data.unitNumber,
|
||||
// t.data.downloadNumber,
|
||||
// t.data.versionName
|
||||
// )
|
||||
// viewBinding.updateTimeView.text =
|
||||
// String.format(getString(R.string.recent_update), t.data.updateTime)
|
||||
// viewBinding.button.isVisible = true
|
||||
// if (t.data.hidden == 0) {
|
||||
// viewBinding.auditLayout.isVisible = false
|
||||
// }
|
||||
// loadDeveloperInfo(t.data.developer)
|
||||
//
|
||||
// viewBinding.button.setOnClickListener {
|
||||
// val type = viewBinding.button.text
|
||||
// val installation = getString(R.string.installation)
|
||||
// when (type) {
|
||||
// installation -> {
|
||||
// downloadAction(t)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// } else {
|
||||
// viewBinding.tipView.isVisible = true
|
||||
// viewBinding.tipView.text = t.message
|
||||
// viewBinding.progressBar.isVisible = false
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onFailure(e: Exception) {
|
||||
// viewBinding.progressBar.isVisible = false
|
||||
// viewBinding.tipView.isVisible = true
|
||||
// viewBinding.tipView.setText(R.string.network_error)
|
||||
// }
|
||||
//
|
||||
// })
|
||||
//
|
||||
// }
|
||||
|
||||
/**
|
||||
* 下载事件
|
||||
|
@ -291,12 +318,12 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.report_item -> {
|
||||
if (isOpen) {
|
||||
if (adapter.isOpen()) {
|
||||
val thisIntent = Intent(this, ReportActivity::class.java)
|
||||
val bundle = Bundle()
|
||||
bundle.putString("target", modId)
|
||||
bundle.putString("type", "mod")
|
||||
bundle.putString("name", viewBinding.titleView.text.toString())
|
||||
bundle.putString("name", title.toString())
|
||||
thisIntent.putExtra("data", bundle)
|
||||
startActivity(thisIntent)
|
||||
} else {
|
||||
|
@ -315,10 +342,10 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
loadModCommentList(modId)
|
||||
}
|
||||
// override fun onResume() {
|
||||
// super.onResume()
|
||||
// loadModCommentList(modId)
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
@ -378,79 +405,79 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载评论列表
|
||||
* @param modId String
|
||||
*/
|
||||
fun loadModCommentList(modId: String) {
|
||||
viewBinding.commentLinearProgressIndicator.isVisible = true
|
||||
WebMod.instance.getCommentsList(modId, object : ApiCallBack<WebModCommentData> {
|
||||
override fun onResponse(t: WebModCommentData) {
|
||||
viewBinding.commentLinearProgressIndicator.isVisible = false
|
||||
val data = t.data
|
||||
if (data == null) {
|
||||
viewBinding.modCommentRecyclerView.isVisible = false
|
||||
} else {
|
||||
val adapter = CommentAdapter(this@WebModInfoActivity, data)
|
||||
viewBinding.discussion.text =
|
||||
String.format(getString(R.string.discussion_num), data.size)
|
||||
adapter.setItemEvent { i, itemCommentBinding, viewHolder, data ->
|
||||
itemCommentBinding.iconView.setOnClickListener {
|
||||
gotoUserPage(data.account)
|
||||
}
|
||||
}
|
||||
viewBinding.modCommentRecyclerView.isVisible = true
|
||||
viewBinding.modCommentRecyclerView.adapter = adapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
viewBinding.commentLinearProgressIndicator.isVisible = false
|
||||
viewBinding.modCommentRecyclerView.isVisible = false
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
fun loadDeveloperInfo(userId: String) {
|
||||
User.getSpaceInfo(userId, object : ApiCallBack<SpaceInfoData> {
|
||||
override fun onResponse(t: SpaceInfoData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val icon = t.data.headIcon
|
||||
if (icon != null) {
|
||||
Glide.with(this@WebModInfoActivity)
|
||||
.load(ServerConfiguration.getRealLink(icon))
|
||||
.apply(GlobalMethod.getRequestOptions(true))
|
||||
.into(viewBinding.headIconView)
|
||||
}
|
||||
viewBinding.userNameView.text = t.data.userName
|
||||
val info = String.format(
|
||||
getString(R.string.fans_information),
|
||||
ServerConfiguration.numberToString(t.data.fans),
|
||||
ServerConfiguration.numberToString(t.data.follower),
|
||||
ServerConfiguration.numberToString(t.data.praise)
|
||||
)
|
||||
viewBinding.userInfoView.text = info
|
||||
|
||||
viewBinding.cardView.postDelayed({
|
||||
viewBinding.cardView.isVisible = true
|
||||
viewBinding.openUserSpace.setOnClickListener {
|
||||
gotoUserPage(t.data.account)
|
||||
}
|
||||
}, 300)
|
||||
}
|
||||
// else {
|
||||
// viewBinding.cardView.isVisible = false
|
||||
// /**
|
||||
// * 加载评论列表
|
||||
// * @param modId String
|
||||
// */
|
||||
// fun loadModCommentList(modId: String) {
|
||||
// viewBinding.commentLinearProgressIndicator.isVisible = true
|
||||
// WebMod.instance.getCommentsList(modId, object : ApiCallBack<WebModCommentData> {
|
||||
// override fun onResponse(t: WebModCommentData) {
|
||||
// viewBinding.commentLinearProgressIndicator.isVisible = false
|
||||
// val data = t.data
|
||||
// if (data == null) {
|
||||
// viewBinding.modCommentRecyclerView.isVisible = false
|
||||
// } else {
|
||||
// val adapter = CommentAdapter(this@WebModInfoActivity, data)
|
||||
// viewBinding.discussion.text =
|
||||
// String.format(getString(R.string.discussion_num), data.size)
|
||||
// adapter.setItemEvent { i, itemCommentBinding, viewHolder, data ->
|
||||
// itemCommentBinding.iconView.setOnClickListener {
|
||||
// gotoUserPage(data.account)
|
||||
// }
|
||||
// }
|
||||
// viewBinding.modCommentRecyclerView.isVisible = true
|
||||
// viewBinding.modCommentRecyclerView.adapter = adapter
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onFailure(e: Exception) {
|
||||
// viewBinding.commentLinearProgressIndicator.isVisible = false
|
||||
// viewBinding.modCommentRecyclerView.isVisible = false
|
||||
// }
|
||||
//
|
||||
// })
|
||||
// }
|
||||
//
|
||||
// fun loadDeveloperInfo(userId: String) {
|
||||
// User.getSpaceInfo(userId, object : ApiCallBack<SpaceInfoData> {
|
||||
// override fun onResponse(t: SpaceInfoData) {
|
||||
// if (t.code == ServerConfiguration.Success_Code) {
|
||||
// val icon = t.data.headIcon
|
||||
// if (icon != null) {
|
||||
// Glide.with(this@WebModInfoActivity)
|
||||
// .load(ServerConfiguration.getRealLink(icon))
|
||||
// .apply(GlobalMethod.getRequestOptions(true))
|
||||
// .into(viewBinding.headIconView)
|
||||
// }
|
||||
// viewBinding.userNameView.text = t.data.userName
|
||||
// val info = String.format(
|
||||
// getString(R.string.fans_information),
|
||||
// ServerConfiguration.numberToString(t.data.fans),
|
||||
// ServerConfiguration.numberToString(t.data.follower),
|
||||
// ServerConfiguration.numberToString(t.data.praise)
|
||||
// )
|
||||
// viewBinding.userInfoView.text = info
|
||||
//
|
||||
// viewBinding.cardView.postDelayed({
|
||||
// viewBinding.cardView.isVisible = true
|
||||
// viewBinding.openUserSpace.setOnClickListener {
|
||||
// gotoUserPage(t.data.account)
|
||||
// }
|
||||
// }, 300)
|
||||
// }
|
||||
//// else {
|
||||
//// viewBinding.cardView.isVisible = false
|
||||
//// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// override fun onFailure(e: Exception) {
|
||||
//// viewBinding.cardView.isVisible = false
|
||||
// }
|
||||
//
|
||||
// })
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
// viewBinding.cardView.isVisible = false
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -468,46 +495,46 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
)
|
||||
}
|
||||
|
||||
private fun initAction() {
|
||||
viewBinding.sendDiscussion.setOnClickListener {
|
||||
val account = AppSettings.getValue(AppSettings.Setting.Account, "")
|
||||
if (account.isBlank()) {
|
||||
showError(getString(R.string.please_login_first))
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
|
||||
CommentDialog(this).setCancelable(false)
|
||||
.setSubmitFun { button, textInputLayout, s, alertDialog ->
|
||||
button.isEnabled = false
|
||||
WebMod.instance.sendComment(
|
||||
AppSettings.getValue(AppSettings.Setting.Token, ""),
|
||||
modId,
|
||||
s,
|
||||
object : ApiCallBack<ApiResponse> {
|
||||
override fun onResponse(t: ApiResponse) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
alertDialog.dismiss()
|
||||
loadModCommentList(modId)
|
||||
Snackbar.make(
|
||||
viewBinding.button,
|
||||
R.string.release_ok,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
textInputLayout.error = t.message
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
textInputLayout.error = e.toString()
|
||||
}
|
||||
|
||||
})
|
||||
}.show()
|
||||
}
|
||||
|
||||
}
|
||||
// private fun initAction() {
|
||||
// viewBinding.sendDiscussion.setOnClickListener {
|
||||
// val account = AppSettings.getValue(AppSettings.Setting.Account, "")
|
||||
// if (account.isBlank()) {
|
||||
// showError(getString(R.string.please_login_first))
|
||||
// return@setOnClickListener
|
||||
// }
|
||||
//
|
||||
//
|
||||
// CommentDialog(this).setCancelable(false)
|
||||
// .setSubmitFun { button, textInputLayout, s, alertDialog ->
|
||||
// button.isEnabled = false
|
||||
// WebMod.instance.sendComment(
|
||||
// AppSettings.getValue(AppSettings.Setting.Token, ""),
|
||||
// modId,
|
||||
// s,
|
||||
// object : ApiCallBack<ApiResponse> {
|
||||
// override fun onResponse(t: ApiResponse) {
|
||||
// if (t.code == ServerConfiguration.Success_Code) {
|
||||
// alertDialog.dismiss()
|
||||
// loadModCommentList(modId)
|
||||
// Snackbar.make(
|
||||
// viewBinding.button,
|
||||
// R.string.release_ok,
|
||||
// Snackbar.LENGTH_SHORT
|
||||
// ).show()
|
||||
// } else {
|
||||
// textInputLayout.error = t.message
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onFailure(e: Exception) {
|
||||
// textInputLayout.error = e.toString()
|
||||
// }
|
||||
//
|
||||
// })
|
||||
// }.show()
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): ActivityWebModInfoBinding {
|
||||
return ActivityWebModInfoBinding.inflate(layoutInflater)
|
||||
|
@ -516,8 +543,8 @@ class WebModInfoActivity : BaseActivity<ActivityWebModInfoBinding>() {
|
|||
override fun whenCreateActivity(savedInstanceState: Bundle?, canUseView: Boolean) {
|
||||
if (canUseView) {
|
||||
initView()
|
||||
initData()
|
||||
initAction()
|
||||
// initData()
|
||||
// initAction()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -42,7 +42,11 @@ class CommentAdapter(context: Context, dataList: MutableList<WebModCommentData.D
|
|||
.into(viewBinding.iconView)
|
||||
}
|
||||
viewBinding.nameView.text = data.userName
|
||||
viewBinding.timeView.text = data.time
|
||||
viewBinding.timeView.text = if (data.location == null) {
|
||||
data.time
|
||||
} else {
|
||||
data.time + " " + data.location
|
||||
}
|
||||
TextStyleMaker.instance.load(viewBinding.contentView, data.content) { type, data ->
|
||||
TextStyleMaker.instance.clickEvent(context, type, data)
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.w3c.dom.Text
|
|||
* @author Cold Mint
|
||||
* @date 2021/12/28 18:29
|
||||
*/
|
||||
class DynamicAdapter( context: Context, dataList: MutableList<DynamicItemDataBean.Data>) :
|
||||
class DynamicAdapter(context: Context, dataList: MutableList<DynamicItemDataBean.Data>) :
|
||||
BaseAdapter<ItemDynamicBinding, DynamicItemDataBean.Data>(context, dataList) {
|
||||
|
||||
|
||||
|
@ -53,7 +53,11 @@ class DynamicAdapter( context: Context, dataList: MutableList<DynamicItemDataBea
|
|||
.apply(GlobalMethod.getRequestOptions(true))
|
||||
.into(viewBinding.headIconView)
|
||||
}
|
||||
viewBinding.timeView.text = data.time
|
||||
viewBinding.timeView.text = if (data.location == null) {
|
||||
data.time
|
||||
} else {
|
||||
data.time + " " + data.location
|
||||
}
|
||||
viewBinding.nameView.text = data.userName
|
||||
TextStyleMaker.instance.load(viewBinding.textview, data.content) { type, data ->
|
||||
TextStyleMaker.instance.clickEvent(context, type, data)
|
||||
|
@ -69,8 +73,7 @@ class DynamicAdapter( context: Context, dataList: MutableList<DynamicItemDataBea
|
|||
GlobalMethod.copyText(context, data.content, view)
|
||||
}
|
||||
context.getString(R.string.delete_title) -> {
|
||||
val account = AppSettings.
|
||||
getValue(AppSettings.Setting.Account, "")
|
||||
val account = AppSettings.getValue(AppSettings.Setting.Account, "")
|
||||
val appId =
|
||||
AppSettings
|
||||
.getValue(AppSettings.Setting.AppID, "")
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package com.coldmint.rust.pro.adapters
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import com.coldmint.rust.core.tool.DebugHelper
|
||||
import com.coldmint.rust.pro.fragments.InsertCoinsFragment
|
||||
import com.coldmint.rust.pro.fragments.ModCommentsFragment
|
||||
import com.coldmint.rust.pro.fragments.NullFragment
|
||||
import com.coldmint.rust.pro.fragments.WebModDetailsFragment
|
||||
|
||||
/**
|
||||
* 模组详情页面适配器
|
||||
* @constructor
|
||||
*/
|
||||
class ModPageDetailsAdapter(fragmentActivity: FragmentActivity, val modId: String) :
|
||||
FragmentStateAdapter(fragmentActivity) {
|
||||
private lateinit var webModDetailsFragment: WebModDetailsFragment
|
||||
private lateinit var modCommentsFragment: ModCommentsFragment
|
||||
override fun getItemCount(): Int {
|
||||
return 3
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取此模组是否对外开放
|
||||
* @return Boolean
|
||||
*/
|
||||
fun isOpen(): Boolean {
|
||||
return if (this::webModDetailsFragment.isInitialized) {
|
||||
webModDetailsFragment.isOpen()
|
||||
} else {
|
||||
DebugHelper.printLog("获取模组公开状态", "详情碎片未初始化,返回false", isError = true)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
return when (position) {
|
||||
0 -> {
|
||||
if (!this::webModDetailsFragment.isInitialized) {
|
||||
webModDetailsFragment = WebModDetailsFragment(modId)
|
||||
}
|
||||
webModDetailsFragment
|
||||
}
|
||||
1 -> {
|
||||
InsertCoinsFragment(modId)
|
||||
}
|
||||
2 -> {
|
||||
if (!this::modCommentsFragment.isInitialized) {
|
||||
modCommentsFragment = ModCommentsFragment(modId)
|
||||
}
|
||||
modCommentsFragment
|
||||
}
|
||||
else -> {
|
||||
NullFragment()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package com.coldmint.rust.pro.adapters
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import com.bumptech.glide.Glide
|
||||
import com.coldmint.rust.pro.base.BaseAdapter
|
||||
import com.coldmint.rust.pro.databean.UserGroupData
|
||||
import com.coldmint.rust.pro.databinding.ItemTemplateBinding
|
||||
import com.coldmint.rust.pro.databinding.ItemUserBinding
|
||||
import com.coldmint.rust.pro.databinding.ItemUserGroupBinding
|
||||
|
||||
/**
|
||||
* 用户群适配器
|
||||
*/
|
||||
class UserGroupAdapter(context: Context, dataList: MutableList<UserGroupData>) :
|
||||
BaseAdapter<ItemUserGroupBinding, UserGroupData>(context, dataList) {
|
||||
override fun getViewBindingObject(
|
||||
layoutInflater: LayoutInflater,
|
||||
parent: ViewGroup,
|
||||
viewType: Int
|
||||
): ItemUserGroupBinding {
|
||||
return ItemUserGroupBinding.inflate(layoutInflater, parent, false)
|
||||
}
|
||||
|
||||
override fun onBingView(
|
||||
data: UserGroupData,
|
||||
viewBinding: ItemUserGroupBinding,
|
||||
viewHolder: ViewHolder<ItemUserGroupBinding>,
|
||||
position: Int
|
||||
) {
|
||||
viewBinding.imageView.setImageResource(data.iconRes)
|
||||
viewBinding.titleView.setText(data.titleRes)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
package com.coldmint.rust.pro.databean
|
||||
|
||||
data class UserGroupData(val iconRes: Int, val titleRes: Int)
|
|
@ -15,7 +15,7 @@ import com.coldmint.rust.pro.databinding.*
|
|||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
|
||||
class CommunityFragment : BaseFragment<CommunityFragmentBinding>() {
|
||||
class CommunityFragment : BaseFragment<FragmentCommunityBinding>() {
|
||||
// 当请求时,此适配器返回一个
|
||||
// representing an object in the collection.
|
||||
private val communityAdapter: CommunityAdapter by lazy {
|
||||
|
@ -51,8 +51,8 @@ class CommunityFragment : BaseFragment<CommunityFragmentBinding>() {
|
|||
}
|
||||
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): CommunityFragmentBinding {
|
||||
return CommunityFragmentBinding.inflate(layoutInflater)
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentCommunityBinding {
|
||||
return FragmentCommunityBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -24,14 +24,14 @@ import com.coldmint.rust.pro.R
|
|||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.adapters.DataSetAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.DatabaseFragmentBinding
|
||||
import com.coldmint.rust.pro.databinding.FragmentDatabaseBinding
|
||||
import com.coldmint.rust.pro.databinding.DialogDatasetBinding
|
||||
import com.google.gson.Gson
|
||||
import java.io.File
|
||||
import java.util.concurrent.Executors
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class DatabaseFragment : BaseFragment<DatabaseFragmentBinding>() {
|
||||
class DatabaseFragment : BaseFragment<FragmentDatabaseBinding>() {
|
||||
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
@ -165,7 +165,7 @@ class DatabaseFragment : BaseFragment<DatabaseFragmentBinding>() {
|
|||
}
|
||||
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): DatabaseFragmentBinding {
|
||||
return DatabaseFragmentBinding.inflate(layoutInflater)
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentDatabaseBinding {
|
||||
return FragmentDatabaseBinding.inflate(layoutInflater)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.coldmint.rust.pro.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.FragmentInsertCoinsBinding
|
||||
|
||||
/**
|
||||
* 投币碎片
|
||||
*/
|
||||
class InsertCoinsFragment(val modId: String) : BaseFragment<FragmentInsertCoinsBinding>() {
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
||||
}
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentInsertCoinsBinding {
|
||||
return FragmentInsertCoinsBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -11,7 +11,7 @@ import com.coldmint.rust.pro.tool.AppSettings
|
|||
import com.coldmint.rust.core.LocalTemplatePackage
|
||||
import com.coldmint.rust.pro.adapters.TemplateListAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.TemplateFragemntBinding
|
||||
import com.coldmint.rust.pro.databinding.FragmentLocalTemplateBinding
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
@ -20,7 +20,7 @@ import kotlin.collections.ArrayList
|
|||
* 本地模板碎片
|
||||
* @property first Boolean
|
||||
*/
|
||||
class LocalTemplateFragment : BaseFragment<TemplateFragemntBinding>() {
|
||||
class LocalTemplateFragment : BaseFragment<FragmentLocalTemplateBinding>() {
|
||||
private var first = true
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -65,8 +65,8 @@ class LocalTemplateFragment : BaseFragment<TemplateFragemntBinding>() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): TemplateFragemntBinding {
|
||||
return TemplateFragemntBinding.inflate(layoutInflater)
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentLocalTemplateBinding {
|
||||
return FragmentLocalTemplateBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
package com.coldmint.rust.pro.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.coldmint.rust.core.ModClass
|
||||
import com.coldmint.rust.core.dataBean.ApiResponse
|
||||
import com.coldmint.rust.core.dataBean.mod.WebModCommentData
|
||||
import com.coldmint.rust.core.interfaces.ApiCallBack
|
||||
import com.coldmint.rust.core.tool.DebugHelper
|
||||
import com.coldmint.rust.core.web.ServerConfiguration
|
||||
import com.coldmint.rust.core.web.WebMod
|
||||
import com.coldmint.rust.pro.R
|
||||
import com.coldmint.rust.pro.adapters.CommentAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.FragmentModCommentsBinding
|
||||
import com.coldmint.rust.pro.dialog.CommentDialog
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
/**
|
||||
* 模组评论适配器
|
||||
*/
|
||||
class ModCommentsFragment(val modId: String) : BaseFragment<FragmentModCommentsBinding>() {
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
viewBinding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
viewBinding.recyclerView.addItemDecoration(
|
||||
DividerItemDecoration(
|
||||
requireContext(),
|
||||
DividerItemDecoration.VERTICAL
|
||||
)
|
||||
)
|
||||
viewBinding.swipeRefreshLayout.setOnRefreshListener {
|
||||
loadCommentList(modId, false)
|
||||
viewBinding.swipeRefreshLayout.isRefreshing = false
|
||||
}
|
||||
viewBinding.sendDiscussion.setOnClickListener {
|
||||
val account = AppSettings.getValue(AppSettings.Setting.Account, "")
|
||||
if (account.isBlank()) {
|
||||
Toast.makeText(requireContext(), R.string.please_login_first, Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
|
||||
CommentDialog(requireContext()).setCancelable(false)
|
||||
.setSubmitFun { button, textInputLayout, s, alertDialog ->
|
||||
button.isEnabled = false
|
||||
WebMod.instance.sendComment(
|
||||
AppSettings.getValue(AppSettings.Setting.Token, ""),
|
||||
modId,
|
||||
s,
|
||||
object : ApiCallBack<ApiResponse> {
|
||||
override fun onResponse(t: ApiResponse) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
alertDialog.dismiss()
|
||||
loadCommentList(modId)
|
||||
Snackbar.make(
|
||||
viewBinding.sendDiscussion,
|
||||
R.string.release_ok,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
textInputLayout.error = t.message
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
textInputLayout.error = e.toString()
|
||||
}
|
||||
|
||||
})
|
||||
}.show()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
loadCommentList(modId)
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载评论列表
|
||||
* @param modId String
|
||||
*/
|
||||
fun loadCommentList(modId: String, useLinearProgressIndicator: Boolean = true) {
|
||||
val key = "加载评论列表"
|
||||
if (useLinearProgressIndicator) {
|
||||
viewBinding.linearProgressIndicator.isVisible = true
|
||||
}
|
||||
WebMod.instance.getCommentsList(modId, object : ApiCallBack<WebModCommentData> {
|
||||
override fun onResponse(t: WebModCommentData) {
|
||||
val list = t.data
|
||||
if (list.isNullOrEmpty()) {
|
||||
DebugHelper.printLog(key, "为空", isError = true)
|
||||
if (useLinearProgressIndicator) {
|
||||
viewBinding.linearProgressIndicator.isVisible = false
|
||||
}
|
||||
viewBinding.recyclerView.isVisible = false
|
||||
viewBinding.noContentLayout.isVisible = true
|
||||
} else {
|
||||
DebugHelper.printLog(key, "共${list.size}条数据")
|
||||
if (useLinearProgressIndicator) {
|
||||
viewBinding.linearProgressIndicator.isVisible = false
|
||||
}
|
||||
viewBinding.recyclerView.isVisible = true
|
||||
viewBinding.noContentLayout.isVisible = false
|
||||
viewBinding.recyclerView.adapter = CommentAdapter(requireContext(), list)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
DebugHelper.printLog(key, "加载失败", isError = true)
|
||||
if (useLinearProgressIndicator) {
|
||||
viewBinding.linearProgressIndicator.isVisible = false
|
||||
}
|
||||
viewBinding.recyclerView.isVisible = false
|
||||
viewBinding.noContentLayout.isVisible = true
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentModCommentsBinding {
|
||||
return FragmentModCommentsBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -2,23 +2,21 @@ package com.coldmint.rust.pro.fragments
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.*
|
||||
import android.view.LayoutInflater
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.coldmint.rust.core.ModClass
|
||||
import com.coldmint.rust.core.dataBean.ModConfigurationData
|
||||
import com.coldmint.rust.core.tool.DebugHelper
|
||||
import com.coldmint.rust.core.tool.FileOperator
|
||||
import com.coldmint.rust.pro.R
|
||||
import com.coldmint.rust.pro.adapters.ModActionAdapter
|
||||
import com.coldmint.rust.pro.adapters.ModAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.ModDialogBinding
|
||||
import com.coldmint.rust.pro.databinding.ModFragmentBinding
|
||||
import com.coldmint.rust.pro.databinding.FragmentModBinding
|
||||
import com.coldmint.rust.pro.databinding.ModListItemBinding
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
|
@ -27,11 +25,12 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
|
|||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import me.zhanghai.android.fastscroll.FastScrollerBuilder
|
||||
import java.io.File
|
||||
|
||||
class ModFragment : BaseFragment<ModFragmentBinding>() {
|
||||
class ModFragment : BaseFragment<FragmentModBinding>() {
|
||||
val viewModel: ModViewModel by lazy {
|
||||
ModViewModel()
|
||||
}
|
||||
|
@ -193,6 +192,7 @@ class ModFragment : BaseFragment<ModFragmentBinding>() {
|
|||
viewBinding.progressBar.isVisible = false
|
||||
viewBinding.modErrorIcon.isVisible = false
|
||||
viewBinding.modError.isVisible = false
|
||||
if (isAdded) {
|
||||
modAdapter = ModAdapter(requireContext(), dataList)
|
||||
FastScrollerBuilder(viewBinding.modList).useMd2Style()
|
||||
.setPopupTextProvider(modAdapter).build()
|
||||
|
@ -214,6 +214,9 @@ class ModFragment : BaseFragment<ModFragmentBinding>() {
|
|||
}
|
||||
}
|
||||
viewBinding.modList.adapter = modAdapter
|
||||
} else {
|
||||
DebugHelper.printLog("加载模组列表", "没有附加到活动", isError = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -328,8 +331,8 @@ class ModFragment : BaseFragment<ModFragmentBinding>() {
|
|||
// viewBinding.progressBar.isVisible = false
|
||||
// }
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): ModFragmentBinding {
|
||||
return ModFragmentBinding.inflate(layoutInflater)
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentModBinding {
|
||||
return FragmentModBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -20,7 +20,7 @@ import com.coldmint.rust.pro.R
|
|||
import com.coldmint.rust.pro.WebModInfoActivity
|
||||
import com.coldmint.rust.pro.adapters.WebModAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.RecommendedFragmentBinding
|
||||
import com.coldmint.rust.pro.databinding.FragmentRecommendedBinding
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.coldmint.rust.pro.tool.TextStyleMaker
|
||||
|
@ -29,8 +29,9 @@ import com.youth.banner.adapter.BannerImageAdapter
|
|||
import com.youth.banner.holder.BannerImageHolder
|
||||
import com.youth.banner.indicator.CircleIndicator
|
||||
import com.youth.banner.transformer.AlphaPageTransformer
|
||||
import com.youth.banner.transformer.DepthPageTransformer
|
||||
|
||||
class RecommendedFragment : BaseFragment<RecommendedFragmentBinding>() {
|
||||
class RecommendedFragment : BaseFragment<FragmentRecommendedBinding>() {
|
||||
|
||||
/**
|
||||
* 加载最近更新
|
||||
|
@ -177,8 +178,8 @@ class RecommendedFragment : BaseFragment<RecommendedFragmentBinding>() {
|
|||
}
|
||||
}
|
||||
})
|
||||
viewBinding.banner.setBannerGalleryEffect(16, 16, 8)
|
||||
viewBinding.banner.addPageTransformer(AlphaPageTransformer())
|
||||
// viewBinding.banner.setBannerGalleryEffect(16, 16, 8)
|
||||
// viewBinding.banner.addPageTransformer(DepthPageTransformer())
|
||||
if (activity != null) {
|
||||
viewBinding.banner.addBannerLifecycleObserver(activity)
|
||||
viewBinding.banner.indicator = CircleIndicator(activity)
|
||||
|
@ -221,8 +222,8 @@ class RecommendedFragment : BaseFragment<RecommendedFragmentBinding>() {
|
|||
loadBannerData()
|
||||
}
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): RecommendedFragmentBinding {
|
||||
return RecommendedFragmentBinding.inflate(layoutInflater)
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentRecommendedBinding {
|
||||
return FragmentRecommendedBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.coldmint.rust.pro.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.coldmint.rust.core.tool.AppOperator
|
||||
import com.coldmint.rust.pro.R
|
||||
import com.coldmint.rust.pro.adapters.UserGroupAdapter
|
||||
import com.coldmint.rust.pro.databean.UserGroupData
|
||||
import com.coldmint.rust.pro.databinding.FragmentUserGroupBinding
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
|
||||
/**
|
||||
* 用户群碎片
|
||||
* @property viewBinding FragmentUserGroupBinding
|
||||
*/
|
||||
class UserGroupFragment : BottomSheetDialogFragment() {
|
||||
|
||||
private lateinit var viewBinding: FragmentUserGroupBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
viewBinding = FragmentUserGroupBinding.inflate(inflater, container, false)
|
||||
return viewBinding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
viewBinding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
|
||||
val dataList = ArrayList<UserGroupData>()
|
||||
dataList.add(UserGroupData(R.drawable.ic_qq, R.string.qq_group))
|
||||
dataList.add(UserGroupData(R.drawable.ic_discord, R.string.discord_group))
|
||||
val adapter = UserGroupAdapter(requireContext(), dataList)
|
||||
viewBinding.recyclerView.adapter = adapter
|
||||
adapter.setItemEvent { i, itemUserGroupBinding, viewHolder, userGroupData ->
|
||||
itemUserGroupBinding.root.setOnClickListener {
|
||||
if (userGroupData.titleRes == R.string.qq_group) {
|
||||
AppOperator.useBrowserAccessWebPage(
|
||||
requireContext(),
|
||||
"https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=1W7Dpb0&businessType=9&from=246610&biz=ka"
|
||||
)
|
||||
} else if (userGroupData.titleRes == R.string.discord_group) {
|
||||
AppOperator.useBrowserAccessWebPage(
|
||||
requireContext(),
|
||||
"https://discord.gg/DTQDmVdVK3"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -124,7 +124,12 @@ class UserInfoFragment : BaseFragment<FragmentUserInfoBinding>() {
|
|||
.apply(GlobalMethod.getRequestOptions(true))
|
||||
.into(viewBinding.headIconView)
|
||||
}
|
||||
viewBinding.emailView.text = t.data.email
|
||||
viewBinding.coinView.text = String.format(
|
||||
getString(
|
||||
R.string.coin_number,
|
||||
t.data.coinNumber
|
||||
)
|
||||
)
|
||||
loadRecyclerView(t.data.permission)
|
||||
} else {
|
||||
// Toast.makeText(requireContext(), t.toString(), Toast.LENGTH_SHORT).show()
|
||||
|
|
|
@ -11,7 +11,6 @@ import com.coldmint.rust.pro.R
|
|||
import com.coldmint.rust.pro.adapters.WarehouseAdapter
|
||||
import com.coldmint.rust.pro.base.BaseAdapter
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.CommunityFragmentBinding
|
||||
import com.coldmint.rust.pro.databinding.FragmentWarehouseBinding
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
|
||||
|
|
|
@ -0,0 +1,232 @@
|
|||
package com.coldmint.rust.pro.fragments
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import androidx.core.view.isVisible
|
||||
import com.bumptech.glide.Glide
|
||||
import com.coldmint.rust.core.dataBean.mod.WebModInfoData
|
||||
import com.coldmint.rust.core.dataBean.user.SpaceInfoData
|
||||
import com.coldmint.rust.core.interfaces.ApiCallBack
|
||||
import com.coldmint.rust.core.tool.LineParser
|
||||
import com.coldmint.rust.core.web.ServerConfiguration
|
||||
import com.coldmint.rust.core.web.User
|
||||
import com.coldmint.rust.core.web.WebMod
|
||||
import com.coldmint.rust.pro.R
|
||||
import com.coldmint.rust.pro.TagActivity
|
||||
import com.coldmint.rust.pro.UserHomePageActivity
|
||||
import com.coldmint.rust.pro.base.BaseFragment
|
||||
import com.coldmint.rust.pro.databinding.FragmentWebModDetailsBinding
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.coldmint.rust.pro.tool.TextStyleMaker
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.youth.banner.adapter.BannerImageAdapter
|
||||
import com.youth.banner.holder.BannerImageHolder
|
||||
import com.youth.banner.indicator.CircleIndicator
|
||||
|
||||
/**
|
||||
* 模组详情碎片
|
||||
*/
|
||||
class WebModDetailsFragment(val modId: String) : BaseFragment<FragmentWebModDetailsBinding>() {
|
||||
var developer: String? = null
|
||||
|
||||
//此模组是否对外开放
|
||||
private var isOpen = false
|
||||
|
||||
/**
|
||||
* 获取此模组是否对外开放
|
||||
* @return Boolean
|
||||
*/
|
||||
fun isOpen(): Boolean {
|
||||
return isOpen
|
||||
}
|
||||
|
||||
override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) {
|
||||
loadInfo()
|
||||
}
|
||||
|
||||
override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentWebModDetailsBinding {
|
||||
return FragmentWebModDetailsBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
|
||||
fun loadDeveloperInfo(userId: String) {
|
||||
User.getSpaceInfo(userId, object : ApiCallBack<SpaceInfoData> {
|
||||
override fun onResponse(t: SpaceInfoData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
val icon = t.data.headIcon
|
||||
if (icon != null) {
|
||||
Glide.with(requireContext())
|
||||
.load(ServerConfiguration.getRealLink(icon))
|
||||
.apply(GlobalMethod.getRequestOptions(true))
|
||||
.into(viewBinding.headIconView)
|
||||
}
|
||||
viewBinding.userNameView.text = t.data.userName
|
||||
val info = String.format(
|
||||
getString(R.string.fans_information),
|
||||
ServerConfiguration.numberToString(t.data.fans),
|
||||
ServerConfiguration.numberToString(t.data.follower),
|
||||
ServerConfiguration.numberToString(t.data.praise)
|
||||
)
|
||||
viewBinding.userInfoView.text = info
|
||||
|
||||
viewBinding.cardView.postDelayed({
|
||||
viewBinding.cardView.isVisible = true
|
||||
viewBinding.openUserSpace.setOnClickListener {
|
||||
gotoUserPage(t.data.account)
|
||||
}
|
||||
}, 300)
|
||||
} else {
|
||||
viewBinding.cardView.isVisible = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
viewBinding.cardView.isVisible = false
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 打开用户主页
|
||||
* @param userId String
|
||||
*/
|
||||
fun gotoUserPage(userId: String) {
|
||||
val intent = Intent(
|
||||
requireContext(),
|
||||
UserHomePageActivity::class.java
|
||||
)
|
||||
intent.putExtra("userId", userId)
|
||||
startActivity(
|
||||
intent
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载页面信息
|
||||
*/
|
||||
fun loadInfo() {
|
||||
val token = AppSettings.getValue(AppSettings.Setting.Token, "")
|
||||
WebMod.instance.getInfo(token, modId, object : ApiCallBack<WebModInfoData> {
|
||||
override fun onResponse(t: WebModInfoData) {
|
||||
if (t.code == ServerConfiguration.Success_Code) {
|
||||
developer = t.data.developer
|
||||
isOpen = t.data.hidden == 0
|
||||
viewBinding.loadLayout.isVisible = false
|
||||
viewBinding.contentLayout.isVisible = true
|
||||
val icon = t.data.icon
|
||||
if (icon != null && icon.isNotBlank()) {
|
||||
Glide.with(requireContext())
|
||||
.load(ServerConfiguration.getRealLink(icon))
|
||||
.apply(GlobalMethod.getRequestOptions())
|
||||
.into(viewBinding.iconView)
|
||||
}
|
||||
val screenshotListData = t.data.screenshots
|
||||
if (screenshotListData != null && screenshotListData.isNotBlank()) {
|
||||
val list = ArrayList<String>()
|
||||
val lineParser = LineParser()
|
||||
lineParser.symbol = ","
|
||||
lineParser.text = screenshotListData
|
||||
lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
list.add(lineData)
|
||||
true
|
||||
}
|
||||
val adapter = object : BannerImageAdapter<String>(list) {
|
||||
override fun onBindView(
|
||||
holder: BannerImageHolder?,
|
||||
data: String?,
|
||||
position: Int,
|
||||
size: Int
|
||||
) {
|
||||
if (data != null && holder != null) {
|
||||
Glide.with(requireContext())
|
||||
.load(ServerConfiguration.getRealLink(data))
|
||||
.apply(GlobalMethod.getRequestOptions())
|
||||
.into(holder.imageView)
|
||||
}
|
||||
}
|
||||
}
|
||||
viewBinding.banner.setAdapter(adapter)
|
||||
viewBinding.banner.addBannerLifecycleObserver(requireActivity())
|
||||
viewBinding.banner.indicator = CircleIndicator(requireActivity())
|
||||
viewBinding.banner.setIndicatorSelectedColorRes(R.color.blue_500)
|
||||
viewBinding.banner.isAutoLoop(false)
|
||||
} else {
|
||||
viewBinding.banner.isVisible = false
|
||||
}
|
||||
val tags = t.data.tags
|
||||
val lineParser = LineParser(tags)
|
||||
val tagList = ArrayList<String>()
|
||||
lineParser.symbol = ","
|
||||
lineParser.analyse { lineNum, lineData, isEnd ->
|
||||
val tag = lineData.subSequence(1, lineData.length - 1).toString()
|
||||
tagList.add(tag)
|
||||
true
|
||||
}
|
||||
if (tagList.size > 0) {
|
||||
tagList.forEach {
|
||||
val chip = Chip(requireContext())
|
||||
chip.text = it
|
||||
val s = it
|
||||
chip.setOnClickListener {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("tag", s)
|
||||
bundle.putString(
|
||||
"title",
|
||||
String.format(getString(R.string.tag_title), s)
|
||||
)
|
||||
bundle.putString("action", "tag")
|
||||
val thisIntent =
|
||||
Intent(requireContext(), TagActivity::class.java)
|
||||
thisIntent.putExtra("data", bundle)
|
||||
startActivity(thisIntent)
|
||||
}
|
||||
viewBinding.chipGroup.addView(chip)
|
||||
}
|
||||
} else {
|
||||
viewBinding.chipGroup.isVisible = false
|
||||
}
|
||||
viewBinding.titleView.text = t.data.name
|
||||
TextStyleMaker.instance.load(
|
||||
viewBinding.modInfoView,
|
||||
t.data.describe
|
||||
) { type, data ->
|
||||
TextStyleMaker.instance.clickEvent(requireContext(), type, data)
|
||||
}
|
||||
viewBinding.numView.text =
|
||||
String.format(
|
||||
getString(R.string.unit_and_downloadnum),
|
||||
t.data.unitNumber,
|
||||
t.data.downloadNumber,
|
||||
t.data.versionName
|
||||
)
|
||||
viewBinding.updateTimeView.text =
|
||||
String.format(getString(R.string.recent_update), t.data.updateTime)
|
||||
if (t.data.hidden == 0) {
|
||||
viewBinding.hideTextView.isVisible = false
|
||||
}
|
||||
loadDeveloperInfo(t.data.developer)
|
||||
} else {
|
||||
viewBinding.contentLayout.isVisible = false
|
||||
viewBinding.loadLayout.isVisible = true
|
||||
viewBinding.tipView.isVisible = true
|
||||
viewBinding.tipView.text = t.message
|
||||
viewBinding.progressBar.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFailure(e: Exception) {
|
||||
viewBinding.contentLayout.isVisible = false
|
||||
viewBinding.loadLayout.isVisible = true
|
||||
viewBinding.progressBar.isVisible = false
|
||||
viewBinding.tipView.isVisible = true
|
||||
viewBinding.tipView.setText(R.string.network_error)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
|
@ -35,6 +35,7 @@ import com.coldmint.rust.pro.*
|
|||
import com.coldmint.rust.pro.base.BaseAndroidViewModel
|
||||
import com.coldmint.rust.pro.tool.AppSettings
|
||||
import com.coldmint.rust.pro.tool.BookmarkManager
|
||||
import com.coldmint.rust.pro.tool.CompletionItemConverter
|
||||
import com.coldmint.rust.pro.tool.GlobalMethod
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
@ -118,6 +119,8 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
|
|||
initBookmark()
|
||||
//验证用户信息
|
||||
verifyingUserInfo()
|
||||
CompletionItemConverter.init(getApplication())
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
17
app/src/main/res/drawable/ic_discord.xml
Normal file
17
app/src/main/res/drawable/ic_discord.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="?attr/colorPrimary"
|
||||
android:pathData="M0,512a512,512 0,1 0,1024 0A512,512 0,1 0,0 512z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M190.9,234.3h642.2v477.3H190.9z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorPrimary"
|
||||
android:pathData="M698.2,932.3L157.3,862.8c-58.4,-7.5 -55.4,-191.2 -50.3,-249.9l26,-297.2c5.1,-58.7 74.4,-120.2 132.7,-128.4l466.4,-65.1c58.3,-8.1 177.2,212.6 176.1,271.5l-8.7,445.1M512,300.4c-114.3,0 -194.6,49.1 -194.6,49.1 43.9,-39.3 120.7,-61.9 120.7,-61.9l-7.3,-7.3c-72.1,1.3 -137.4,51.2 -137.4,51.2 -73.4,153.2 -68.7,285.4 -68.7,285.4 59.7,77.2 148.5,71.7 148.5,71.7l30.3,-38.4c-53.3,-11.5 -87,-58.9 -87,-58.9S396.8,646 512,646c115.2,0 195.4,-54.6 195.4,-54.6s-33.7,47.4 -87,58.9l30.3,38.4s88.7,5.5 148.5,-71.7c0,0 4.7,-132.3 -68.7,-285.4 0,0 -65.3,-49.9 -137.4,-51.2l-7.3,7.3s76.8,22.6 120.7,61.9c0,0 -80.2,-49.1 -194.6,-49.1M423.7,462.1c27.7,0 50.3,24.3 49.9,54.2 0,29.4 -22.2,54.2 -49.9,54.2 -27.3,0 -49.5,-24.7 -49.5,-54.2 0,-29.9 21.8,-54.2 49.5,-54.2m177.9,0c27.7,0 49.9,24.3 49.9,54.2 0,29.4 -22.2,54.2 -49.9,54.2 -27.3,0 -49.5,-24.7 -49.5,-54.2 0,-29.9 21.8,-54.2 49.5,-54.2z"
|
||||
tools:ignore="VectorPath" />
|
||||
</vector>
|
|
@ -0,0 +1,5 @@
|
|||
<vector android:height="24dp" android:tint="#000000"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M4,19h16v2L4,21zM20,3L4,3v10c0,2.21 1.79,4 4,4h6c2.21,0 4,-1.79 4,-4v-3h2c1.11,0 2,-0.9 2,-2L22,5c0,-1.11 -0.89,-2 -2,-2zM16,13c0,1.1 -0.9,2 -2,2L8,15c-1.1,0 -2,-0.9 -2,-2L6,5h10v8zM20,8h-2L18,5h2v3z"/>
|
||||
</vector>
|
10
app/src/main/res/drawable/ic_outline_share_24.xml
Normal file
10
app/src/main/res/drawable/ic_outline_share_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92s2.92,-1.31 2.92,-2.92c0,-1.61 -1.31,-2.92 -2.92,-2.92zM18,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM6,13c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM18,20.02c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z" />
|
||||
</vector>
|
12
app/src/main/res/drawable/ic_qq.xml
Normal file
12
app/src/main/res/drawable/ic_qq.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="200dp"
|
||||
android:height="200dp"
|
||||
android:viewportWidth="1024"
|
||||
android:viewportHeight="1024">
|
||||
<path
|
||||
android:fillColor="?attr/colorPrimary"
|
||||
android:pathData="M0,512a512,512 0,1 0,1024 0A512,512 0,1 0,0 512z" />
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M244.9,561.3c18.6,-44.2 44.5,-76.8 63.7,-83.8 -0.3,-25.6 4.5,-41.6 12.5,-54.4 0,-1 -1.9,-11.5 5.1,-24.6 4.8,-115.2 79.7,-206.4 201,-206.4s196.2,91.2 201,206.4c7,13.1 5.1,23.7 5.1,24.6 8,12.8 12.8,28.8 12.5,54.4 19.2,7 45.1,39.7 63.7,84.2 24,56.3 27.8,110.4 8.6,120 -13.1,6.4 -33.9,-9.6 -53.4,-37.8 -7.7,31.4 -26.9,60.2 -54.1,82.9 28.8,10.6 47.4,27.8 47.4,47.4 0,32 -50.6,57.9 -112.6,57.9 -56.3,0 -102.1,-21.1 -111.4,-48h-13.4c-9.3,26.9 -55,48 -111.4,48 -62.1,0 -112.6,-25.9 -112.6,-57.9 0,-19.5 18.6,-36.8 47.4,-47.4 -27.2,-22.7 -46.4,-51.5 -54.1,-82.9 -19.5,28.2 -40.3,44.2 -53.4,37.8 -19.2,-9.6 -15.4,-63.7 8.6,-120.3z" />
|
||||
</vector>
|
|
@ -83,30 +83,30 @@
|
|||
android:layout_below="@id/checkbox"
|
||||
android:layout_marginTop="8dp">
|
||||
|
||||
<TextView
|
||||
<Button
|
||||
android:id="@+id/changePasswordView"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/retrieve_password"
|
||||
android:textColor="?colorPrimary" />
|
||||
android:text="@string/retrieve_password" />
|
||||
|
||||
<TextView
|
||||
android:visibility="gone"
|
||||
<Button
|
||||
android:id="@+id/changeServerView"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toEndOf="@id/changePasswordView"
|
||||
android:text="@string/changing_the_server"
|
||||
android:textColor="?colorPrimary" />
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
<Button
|
||||
android:id="@+id/registerView"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/register"
|
||||
android:textColor="?colorPrimary" />
|
||||
android:text="@string/register" />
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
|
@ -48,8 +48,6 @@
|
|||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
app:defaultNavHost="true"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
|
|
|
@ -267,6 +267,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/packmod"
|
||||
app:icon="@drawable/zip" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".ActivateActivity">
|
||||
tools:context=".WebModInfoActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -18,285 +18,38 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize" />
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@android:color/transparent">
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="详情" />
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="投币" />
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="评论" />
|
||||
|
||||
|
||||
</com.google.android.material.tabs.TabLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/loadLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tipView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/loading_data"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/relativeLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:animateLayoutChanges="true"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/auditLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:paddingBottom="8dp">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/audit" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/cardView"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/auditLayout"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:visibility="visible">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/openUserSpace"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="8dp"
|
||||
android:layout_marginVertical="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/headIconView"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:src="@drawable/image" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toStartOf="@id/spaceView"
|
||||
android:layout_toEndOf="@id/headIconView"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userNameView"
|
||||
style="@style/TextAppearance.Material3.BodyLarge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userInfoView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/fans_information" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/spaceView"
|
||||
android:layout_width="15dp"
|
||||
android:layout_height="15dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/next" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/cardView2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/cardView"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iconView"
|
||||
android:layout_width="90dp"
|
||||
android:layout_height="90dp"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/image" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toEndOf="@id/iconView"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleView"
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="标题" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/numView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="单位数" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/updateTimeView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="上次更新时间" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.kongzue.stacklabelview.StackLabel
|
||||
android:id="@+id/belongStackLabelView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.youth.banner.Banner
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="180dp"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/modInfoView"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="描述" />
|
||||
|
||||
<com.google.android.material.divider.MaterialDivider
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:dividerThickness="0.8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/cardView2"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/discussion"
|
||||
style="@style/TextAppearance.Material3.HeadlineSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/discussion" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/sendDiscussion"
|
||||
style="@style/Widget.MaterialComponents.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/send_discussion" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
android:id="@+id/commentLinearProgressIndicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:indeterminate="true" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/modCommentRecyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||
android:id="@+id/button"
|
||||
|
@ -305,8 +58,7 @@
|
|||
android:layout_gravity="bottom|right"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/installation"
|
||||
app:icon="@drawable/cloud_download"
|
||||
android:visibility="gone" />
|
||||
app:icon="@drawable/cloud_download" />
|
||||
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
62
app/src/main/res/layout/fragment_insert_coins.xml
Normal file
62
app/src/main/res/layout/fragment_insert_coins.xml
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingTop="8dp">
|
||||
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="24dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.HeadlineSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/insert_coins" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_width="match_parent"
|
||||
android:enabled="true"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/insert_coins" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="已有5人投币。" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.HeadlineSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="投币记录" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
|
@ -25,8 +25,10 @@
|
|||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="gone">
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
|
@ -34,9 +34,8 @@
|
|||
android:id="@+id/mapList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
android:id="@+id/swipeRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
72
app/src/main/res/layout/fragment_mod_comments.xml
Normal file
72
app/src/main/res/layout/fragment_mod_comments.xml
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/swipeRefreshLayout"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingTop="8dp"
|
||||
tools:context=".fragments.ModCommentsFragment">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.HeadlineSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/discussion" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/sendDiscussion"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/send_discussion" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
android:id="@+id/linearProgressIndicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="wrap_content"
|
||||
android:indeterminate="true" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/noContentLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.HeadlineSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/no_content" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
|
@ -7,7 +7,9 @@
|
|||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
|
|
|
@ -20,18 +20,17 @@
|
|||
android:visibility="gone" />
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipeRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"
|
||||
android:id="@+id/swipeRefreshLayout">
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginRight="16dp" />
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:animateLayoutChanges="true"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="8dp">
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<ProgressBar
|
||||
|
@ -28,14 +27,14 @@
|
|||
android:id="@+id/nestedScrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="visible">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
|
@ -45,7 +44,8 @@
|
|||
<com.youth.banner.Banner
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="200dp" />
|
||||
android:layout_height="200dp"
|
||||
app:banner_indicator_selected_color="?attr/colorPrimary" />
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
|
|
@ -2,4 +2,5 @@
|
|||
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="16dp" />
|
28
app/src/main/res/layout/fragment_user_group.xml
Normal file
28
app/src/main/res/layout/fragment_user_group.xml
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
|
||||
<com.google.android.material.bottomsheet.BottomSheetDragHandleView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/user_group" />
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="24dp" />
|
||||
|
||||
</LinearLayout>
|
|
@ -50,7 +50,7 @@
|
|||
android:text="@string/name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/emailView"
|
||||
android:id="@+id/coinView"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
217
app/src/main/res/layout/fragment_web_mod_details.xml
Normal file
217
app/src/main/res/layout/fragment_web_mod_details.xml
Normal file
|
@ -0,0 +1,217 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/loadLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tipView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/contentLayout"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:animateLayoutChanges="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hideTextView"
|
||||
android:visibility="gone"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/audit" />
|
||||
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/cardView"
|
||||
style="@style/Widget.Material3.CardView.Elevated"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/openUserSpace"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="8dp"
|
||||
android:layout_marginVertical="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/headIconView"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:src="@drawable/image" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toStartOf="@id/spaceView"
|
||||
android:layout_toEndOf="@id/headIconView"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userNameView"
|
||||
style="@style/TextAppearance.Material3.BodyLarge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userInfoView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/fans_information" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/spaceView"
|
||||
android:layout_width="16dp"
|
||||
android:layout_height="16dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_margin="8dp"
|
||||
android:src="@drawable/next" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/cardView2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iconView"
|
||||
android:layout_width="90dp"
|
||||
android:layout_height="90dp"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/image" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toEndOf="@id/iconView"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleView"
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="标题" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/numView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="单位数" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/updateTimeView"
|
||||
style="@style/TextAppearance.Material3.BodySmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="上次更新时间" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/chipGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
style="@style/Widget.Material3.CardView.Filled"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.youth.banner.Banner
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="180dp"
|
||||
android:layout_marginTop="8dp" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/modInfoView"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="描述" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
|
||||
</LinearLayout>
|
27
app/src/main/res/layout/item_user_group.xml
Normal file
27
app/src/main/res/layout/item_user_group.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingVertical="16dp">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/image" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleView"
|
||||
android:layout_marginStart="16dp"
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toEndOf="@id/imageView"
|
||||
android:text="@string/title" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
|
@ -55,10 +55,10 @@
|
|||
android:title="@string/set_up" />
|
||||
|
||||
|
||||
<!-- <item-->
|
||||
<!-- android:id="@+id/donation"-->
|
||||
<!-- android:icon="@drawable/donation"-->
|
||||
<!-- android:title="@string/donation" />-->
|
||||
<item
|
||||
android:id="@+id/user_group"
|
||||
android:icon="@drawable/ic_outline_free_breakfast_24"
|
||||
android:title="@string/user_group" />
|
||||
|
||||
|
||||
<item
|
||||
|
|
|
@ -8,25 +8,25 @@
|
|||
android:id="@+id/community_item"
|
||||
android:name="com.coldmint.rust.pro.fragments.CommunityFragment"
|
||||
android:label="@string/community"
|
||||
tools:layout="@layout/community_fragment" />
|
||||
tools:layout="@layout/fragment_community" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/mod_item"
|
||||
android:name="com.coldmint.rust.pro.fragments.WarehouseFragment"
|
||||
android:label="@string/warehouse"
|
||||
tools:layout="@layout/mod_fragment" />
|
||||
tools:layout="@layout/fragment_mod" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/database_item"
|
||||
android:name="com.coldmint.rust.pro.fragments.DatabaseFragment"
|
||||
android:label="@string/menu_title3"
|
||||
tools:layout="@layout/database_fragment" />
|
||||
tools:layout="@layout/fragment_database" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/template_item"
|
||||
android:name="com.coldmint.rust.pro.fragments.TemplateFragment"
|
||||
android:label="@string/template_title"
|
||||
tools:layout="@layout/template_fragemnt" />
|
||||
tools:layout="@layout/fragment_local_template" />
|
||||
|
||||
|
||||
</navigation>
|
|
@ -292,7 +292,9 @@
|
|||
<string name="template_title">模板包</string>
|
||||
<string name="template_list">模板列表</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="qq_group">qq群</string>
|
||||
<string name="qq_group">qq频道</string>
|
||||
<string name="details">详情</string>
|
||||
<string name="insert_coins">投币</string>
|
||||
<string name="del_completed">已删除\"%1$s\"。</string>
|
||||
|
||||
|
||||
|
@ -348,7 +350,6 @@
|
|||
<string name="update_num">已更新%1$s个记录。</string>
|
||||
<string name="clean_up_code_cache_complete">代码缓存清理完成。</string>
|
||||
<string name="clean">清空</string>
|
||||
<string name="details">详情</string>
|
||||
<string name="show_details">查看详情</string>
|
||||
<string name="goto_line">跳转到错误位置</string>
|
||||
<string name="code_navigation">代码导航</string>
|
||||
|
@ -467,6 +468,7 @@
|
|||
<string name="directory_does_not_exist">目录不存在。</string>
|
||||
<string name="special_thanks_to">特别鸣谢</string>
|
||||
<string name="email">邮箱</string>
|
||||
<string name="coin_number">硬币:%1$d</string>
|
||||
<string name="register_successed">注册成功</string>
|
||||
<string name="registration_success_message">账号激活码已发送至您的邮箱。若没有收到,则邮箱可能被视为垃圾邮件了。请检查您的垃圾箱。</string>
|
||||
<string name="please_login_first">请先登录。</string>
|
||||
|
@ -910,6 +912,8 @@
|
|||
<string name="all">全部</string>
|
||||
<string name="new_password">新密码</string>
|
||||
<string name="edit_text_color_dark">暗色主题字体颜色</string>
|
||||
<string name="user_group">用户群</string>
|
||||
<string name="discord_group">Discord服务器</string>
|
||||
<!-- <string name="search_suggestions_null">无搜索建议。</string>-->
|
||||
<!-- <string name="search_suggestions_number">共%1$d个搜索建议。</string>-->
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ data class DynamicItemDataBean(
|
|||
val gender: Int,
|
||||
val headIcon: String?,
|
||||
val id: Int,
|
||||
val location: String?,
|
||||
val loginTime: String,
|
||||
val permission: String,
|
||||
val time: String,
|
||||
|
|
|
@ -11,6 +11,7 @@ data class WebModCommentData(
|
|||
val headIcon: String?,
|
||||
val id: Int,
|
||||
val time: String,
|
||||
val userName: String
|
||||
val userName: String,
|
||||
val location: String?
|
||||
)
|
||||
}
|
|
@ -25,6 +25,8 @@ data class ActivationInfo(
|
|||
val activation: Boolean,
|
||||
@SerializedName("headIcon")
|
||||
val headIcon: String?,
|
||||
@SerializedName("coinNumber")
|
||||
val coinNumber: Int,
|
||||
@SerializedName("banTime")
|
||||
val banTime: String?,
|
||||
@SerializedName("email")
|
||||
|
|
Loading…
Reference in New Issue
Block a user