From da91e7de1da58bd2fbbb132eaa32bb1cde32129b Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 6 Dec 2018 11:55:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96`=E7=89=88=E4=B8=BB=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=A0=87=E7=AD=BE`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qa/questions/edit/QuestionEditActivity.kt | 5 +- .../questions/edit/QuestionEditViewModel.kt | 11 ++-- .../qa/questions/edit/TagsSelectFragment.kt | 56 ++++++++++++++++--- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt index aa284ec678..18bab393c4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt @@ -182,7 +182,10 @@ class QuestionEditActivity : BaseActivity() { override fun onMenuItemClick(menuItem: MenuItem?): Boolean { if (mViewModel.isManagerPatch) { mViewModel.selectedTags.addAll(mViewModel.questionEntity?.tags!!) - // todo 直接提交 + // todo 判断版主等级 + DialogUtils.showAlertDialog(this, "修改标签" + , "你的操作将提交给小编审核,确定提交吗?", "确定" + , "取消", DialogUtils.ConfirmListener {}, null) } else { mViewModel.checkTitleAndLoadTitleTag() } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt index 0b0833474a..09b27ed223 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt @@ -24,7 +24,6 @@ import okhttp3.RequestBody import okhttp3.ResponseBody import retrofit2.HttpException import java.io.File -import java.util.* /** * Created by khy on 28/04/18. @@ -242,10 +241,12 @@ class QuestionEditViewModel(application: Application) : AndroidViewModel(applica val body = RequestBody.create(MediaType.parse("application/json"), GsonUtils.getInstance().toJson(entity)) val observable = if (questionEntity != null) { - questionEntity?.tags = entity.tags - questionEntity?.images = entity.images - questionEntity?.title = entity.title - questionEntity?.description = entity.description + if (!isManagerPatch) { + questionEntity?.images = entity.images + questionEntity?.title = entity.title + questionEntity?.description = entity.description + questionEntity?.tags = entity.tags + } mApiService.patchQuestions(body, questionEntity?.id) // patch } else { mApiService.postQuestions(body, communityId) // add diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt index cec673dbb8..50428a8b85 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/TagsSelectFragment.kt @@ -16,6 +16,7 @@ import android.widget.EditText import android.widget.TextView import com.gh.base.fragment.BaseDialogWrapperFragment import com.gh.base.fragment.BaseFragment +import com.gh.common.util.DialogUtils import com.gh.common.util.DisplayUtils import com.gh.common.util.EntranceUtils import com.gh.gamecenter.R @@ -65,16 +66,18 @@ class TagsSelectFragment : BaseFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (activity != null) mViewModel = ViewModelProviders.of(activity!!).get(QuestionEditViewModel::class.java) + val isManagerPatch = arguments?.getBoolean(EntranceUtils.KEY_QUESTION_MANAGER_PATCH) + if (isManagerPatch != null && isManagerPatch) { + mViewModel = ViewModelProviders.of(this).get(QuestionEditViewModel::class.java) + mViewModel?.isManagerPatch = isManagerPatch + mViewModel?.questionEntity = arguments?.getParcelable(QuestionsDetailEntity::class.java.simpleName) + } else { + mViewModel = activity?.let { ViewModelProviders.of(it).get(QuestionEditViewModel::class.java) } + } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val isManagerPatch = arguments?.getBoolean(EntranceUtils.KEY_QUESTION_MANAGER_PATCH) - if (isManagerPatch != null && isManagerPatch) { - mViewModel?.isManagerPatch = isManagerPatch - mViewModel?.questionEntity = arguments?.getParcelable(QuestionsDetailEntity::class.java.simpleName) - } if (mViewModel != null && mViewModel?.isManagerPatch!!) { mCancelBtn.text = "取消" @@ -110,15 +113,50 @@ class TagsSelectFragment : BaseFragment() { } mPostBtn.setOnClickListener { - if (mViewModel?.isManagerPatch!! - && mViewModel?.questionEntity?.tags == mViewModel?.selectedTags) { - toast("标签没有变化") + if (mViewModel?.isManagerPatch!!) { + if (checkTagsContent()) { + toast("标签没有变化") + } else { + // todo 判断版主等级 + DialogUtils.showAlertDialog(context, "修改标签" + , "你的操作将提交给小编审核,确定提交吗?", "确定" + , "取消", DialogUtils.ConfirmListener {}, null) + } } else { mViewModel?.postQuestion() } } } + /** + * 检查内容是否一致 + * @return true:相同 false:不同 + */ + private fun checkTagsContent(): Boolean { + val defaultTags = mViewModel?.questionEntity?.tags + val selectedTags = mViewModel?.selectedTags + + if (defaultTags == selectedTags) { + return true + } + if (defaultTags == null && selectedTags == null) { + return true + } + if (defaultTags == null || selectedTags == null) { + return false + } + if (defaultTags.size != selectedTags.size) { + return false + } + for (tag in defaultTags) { + if (!selectedTags.contains(tag)) return false + } + for (tag in selectedTags) { + if (!defaultTags.contains(tag)) return false + } + return true + } + private fun initTags() { // 添加标签 val mDefaultTag = mViewModel?.defaultTags ?: ArrayList()