From 32bc1a4a6f2a1ca8e287c1e42016a6894c010345 Mon Sep 17 00:00:00 2001 From: jack <1484288157@qq.com> Date: Mon, 15 Nov 2021 09:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9B=E5=BB=BA=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/PatternUtils.java | 20 +++++++ .../com/gh/gamecenter/entity/GameEntity.kt | 14 +++-- .../choose/ChooseGamesAdapter.kt | 15 +++++ .../publish/GameCollectionEditActivity.kt | 55 +++++++++++++++++-- 4 files changed, 96 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/PatternUtils.java b/app/src/main/java/com/gh/common/util/PatternUtils.java index 4459437029..8beb323628 100644 --- a/app/src/main/java/com/gh/common/util/PatternUtils.java +++ b/app/src/main/java/com/gh/common/util/PatternUtils.java @@ -55,4 +55,24 @@ public class PatternUtils { return newText; } + /** + * 判断字符串中是否有连续2个以上的换行 + */ + public static boolean isHasWrap(String text){ + String pattern = "[\\n]{2,}"; + Regex regex = new Regex(pattern); + return regex.find(text, 0) != null; + } + + /** + * 替换字符串中连续2个以上的换行为一个换行 + */ + public static String replaceWrap(String text) { + String pattern = "[\\n]{2,}"; + String newText = text; + if (isHasSpace(text)) { + newText = text.replaceAll(pattern, "\n"); + } + return newText; + } } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index eaed9e11ed..12f088d9d9 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -563,10 +563,10 @@ data class GameEntity( simpleGame.nameSuffix = nameSuffix simpleGame.mIcon = mIcon simpleGame.mRawIcon = mRawIcon - simpleGame.active=active - simpleGame.iconSubscript=iconSubscript - simpleGame.recommendStar=recommendStar - simpleGame.recommendText=recommendText + simpleGame.active = active + simpleGame.iconSubscript = iconSubscript + simpleGame.recommendStar = recommendStar + simpleGame.recommendText = recommendText return simpleGame } @@ -792,6 +792,10 @@ data class SimpleGame( //游戏单推荐分数 @SerializedName("recommend_star") var recommendStar: Int = 5, + @SerializedName("mirror_status") + var mirrorStatus: String? = "", + @SerializedName("mirror_data") + var mirrorData: SimpleGame? = null, //游戏单推荐理由 @SerializedName("recommend_text") var recommendText: String = "", @@ -815,6 +819,8 @@ data class SimpleGame( gameEntity.icon = mIcon gameEntity.rawIcon = mRawIcon gameEntity.iconSubscript = iconSubscript + gameEntity.mirrorStatus = mirrorStatus + gameEntity.mirrorData = mirrorData?.toGameEntity() gameEntity.recommendStar = recommendStar gameEntity.recommendText = recommendText return gameEntity diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesAdapter.kt index 5786168d44..5deb3cccf1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesAdapter.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import androidx.core.widget.doOnTextChanged import androidx.recyclerview.widget.RecyclerView import com.gh.base.BaseRecyclerViewHolder +import com.gh.common.util.PatternUtils import com.gh.common.util.TextHelper import com.gh.common.util.consume import com.gh.common.util.toBinding @@ -39,6 +40,20 @@ class ChooseGamesAdapter(context: Context, val dragListener: ItemDragListener) : override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is ChooseGamesViewHolder) { val gameEntity = mEntityList[position] + holder.binding.recommendReasonEt.run { + doOnTextChanged { text, start, _, _ -> + if(PatternUtils.isHasWrap(text.toString())){ + setText(PatternUtils.replaceWrap(text.toString())) + setSelection(start) + return@doOnTextChanged + } + if (PatternUtils.isHasSpace(text.toString())) { + setText(PatternUtils.replaceSpace(text.toString())) + setSelection(start) + return@doOnTextChanged + } + } + } holder.binding.gameNameTv.text = gameEntity.name holder.binding.gameIcon.displayGameIcon(gameEntity) holder.binding.recommendReasonEt.setText(gameEntity.recommendText) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/GameCollectionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/GameCollectionEditActivity.kt index 0ef1aea648..a892f1be79 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/GameCollectionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/GameCollectionEditActivity.kt @@ -13,7 +13,6 @@ import com.gh.gamecenter.CropImageActivity import com.gh.gamecenter.R import com.gh.gamecenter.databinding.ActivityGameCollectionEditBinding import com.gh.gamecenter.entity.GamesCollectionEntity -import com.gh.gamecenter.entity.SimpleGame import com.gh.gamecenter.entity.TagInfoEntity import com.gh.gamecenter.eventbus.EBReuse import com.gh.gamecenter.gamecollection.choose.ChooseGamesActivity @@ -32,6 +31,7 @@ class GameCollectionEditActivity : ToolBarActivity() { private lateinit var mViewModel: GameCollectionEditViewModel private lateinit var mChooseGamesViewModel: ChooseGamesViewModel private var mProcessingDialog: WaitingDialogFragment? = null + private var mPatchCommitCount = 0 override fun getLayoutId(): Int = R.layout.activity_game_collection_edit @@ -51,6 +51,34 @@ class GameCollectionEditActivity : ToolBarActivity() { } private fun initListener() { + mBinding.gameCollectionTitleEt.run { + doOnTextChanged { text, start, _, _ -> + if (text?.contains("\n") == true) { + setText(text.toString().replace("\n", "")) + setSelection(start) + return@doOnTextChanged + } + if (PatternUtils.isHasSpace(text.toString())) { + setText(PatternUtils.replaceSpace(text.toString())) + setSelection(start) + return@doOnTextChanged + } + } + } + mBinding.gameCollectionIntroduceEt.run { + doOnTextChanged { text, start, _, _ -> + if(PatternUtils.isHasWrap(text.toString())){ + setText(PatternUtils.replaceWrap(text.toString())) + setSelection(start) + return@doOnTextChanged + } + if (PatternUtils.isHasSpace(text.toString())) { + setText(PatternUtils.replaceSpace(text.toString())) + setSelection(start) + return@doOnTextChanged + } + } + } mBinding.uploadPictureBtn.setOnClickListener { PermissionHelper.checkStoragePermissionBeforeAction( this, @@ -96,7 +124,7 @@ class GameCollectionEditActivity : ToolBarActivity() { mViewModel.gameCollectionPatch?.run { mViewModel.imageUrl = cover - if (status.isNotEmpty() && status != "draft") { + if (status.isNotEmpty() && (status != "draft" || display == "self_only")) { setNavigationTitle("编辑游戏单") } initPosterUI() @@ -262,12 +290,12 @@ class GameCollectionEditActivity : ToolBarActivity() { } val games = mChooseGamesViewModel.chooseGamesLiveData.value ?: arrayListOf() - val title = mBinding.gameCollectionTitleEt.text.toString() + val title = mBinding.gameCollectionTitleEt.text.toString().trim() if (title.isEmpty()) { toast("请填写游戏单的标题") return } - val introduce = mBinding.gameCollectionIntroduceEt.text.toString() + val introduce = mBinding.gameCollectionIntroduceEt.text.toString().trim() if (introduce.length < 10) { toast("介绍至少10个字") return @@ -290,6 +318,25 @@ class GameCollectionEditActivity : ToolBarActivity() { }.toList() ) + val patch = mViewModel.gameCollectionPatch + if (patch != null + && patch.status.isNotEmpty() + && patch.status != "draft" + && games.size < 8 + ) { + if (mPatchCommitCount < 2) { + toast("游戏单收录的游戏不能少于8款") + mPatchCommitCount++ + return + } else { + if (!mBinding.selfOnlyCb.isChecked) { + toast("没想好收录的游戏,开启仅自己可见试试") + mPatchCommitCount++ + return + } + } + } + if (isSelfOnly) { DialogHelper.showDialog(this, "温馨提示", "游戏单开启“仅自己可见”后,将不会对其他用户展示,是否继续提交", "确定", "取消", { mViewModel.uploadContent(requestMap)