diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b3785e7fc..b00be88012 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,7 +28,7 @@ - + + android:screenOrientation="portrait" /> - - @@ -751,19 +753,19 @@ android:name="com.gh.gamecenter.provider.GhContentProvider" android:authorities="${applicationId}.provider" android:enabled="true" - android:exported="true"/> + android:exported="true" /> - - - - - - - - - - - + + + + + + + + + + + : ToolBarAct } } INSERT_GAME_COLLECTION_CODE -> { - val gameCollectionEntity = data?.getParcelableExtra(GamesCollectionEntity::class.java.simpleName) + val gameCollectionEntity = + data?.getParcelableExtra(GamesCollectionEntity::class.java.simpleName) if (gameCollectionEntity != null) { mRichEditor.focusEditor() insertData = EditorInsertEntity.transform(gameCollectionEntity) @@ -124,7 +125,9 @@ abstract class BaseRichEditorActivity : ToolBarAct if (data != null) mViewModel.uploadPic(data) } INSERT_MEDIA_VIDEO_CODE -> { - val localVideoList = data?.getParcelableArrayListExtra(LocalVideoEntity::class.java.name) ?: arrayListOf() + val localVideoList = + data?.getParcelableArrayListExtra(LocalVideoEntity::class.java.name) + ?: arrayListOf() if (localVideoList.isNotEmpty()) { mRichEditor.focusEditor() uploadVideo(localVideoList) @@ -741,7 +744,7 @@ abstract class BaseRichEditorActivity : ToolBarAct abstract fun provideViewModel(): VM abstract fun getVideoGuideKey(): String - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/base/DownloadToolbarActivity.kt b/app/src/main/java/com/gh/base/DownloadToolbarActivity.kt index 74fdf7fe5b..975167fc93 100644 --- a/app/src/main/java/com/gh/base/DownloadToolbarActivity.kt +++ b/app/src/main/java/com/gh/base/DownloadToolbarActivity.kt @@ -104,7 +104,9 @@ abstract class DownloadToolbarActivity : ToolBarActivity() { override fun onDarkModeChanged() { super.onDarkModeChanged() if (showDownloadMenu() && getMenuItem(R.id.menu_download) != null) { - (getMenuItem(R.id.menu_download).actionView?.findViewById(R.id.menu_download_iv) as ImageView).setImageResource(R.drawable.toolbar_download) + (getMenuItem(R.id.menu_download).actionView?.findViewById(R.id.menu_download_iv) as ImageView).setImageResource( + R.drawable.toolbar_download + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index 382417739b..de1a8ef4de 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -371,7 +371,8 @@ class DefaultJsApi(var context: Context, val entrance: String = "") { runOnIoThread { val base64String = base64StringData.replace("data:image/png;base64", "") tryWithDefaultCatch { - val imageFile = File(HaloApp.getInstance().cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".png") + val imageFile = + File(HaloApp.getInstance().cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".png") val decodedString = Base64.decode(base64String, Base64.DEFAULT) val bos = BufferedOutputStream(FileOutputStream(imageFile)) bos.write(decodedString) diff --git a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt index ac8a5f9f7e..6f0eab26fa 100644 --- a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt @@ -74,7 +74,13 @@ object DefaultUrlHandler { entrance = entrance ) - "column" -> SubjectActivity.startSubjectActivity(context, id, uri.getQueryParameter("name"), false, entrance) + "column" -> SubjectActivity.startSubjectActivity( + context, + id, + uri.getQueryParameter("name"), + false, + entrance + ) "libao" -> context.startActivity(LibaoDetailActivity.getIntentById(context, id, entrance)) @@ -167,13 +173,26 @@ object DefaultUrlHandler { val linkEntity = VideoLinkEntity(title, categoryId, link, tagActivityId, tagActivityName) val simpleGameEntity = SimpleGameEntity(gameId, gameName) CheckLoginUtils.checkLogin(context, null, true, EntranceConsts.ENTRANCE_BROWSER) { - DirectUtils.directToVideoManager(context, linkEntity, simpleGameEntity, EntranceConsts.ENTRANCE_BROWSER, "") + DirectUtils.directToVideoManager( + context, + linkEntity, + simpleGameEntity, + EntranceConsts.ENTRANCE_BROWSER, + "" + ) } } EntranceConsts.HOST_USERHOME -> { val position = uri.getQueryParameter("position") val subtype = uri.getQueryParameter("sub_type") ?: "" - DirectUtils.directToHomeActivity(context, id, subtype, if (position.isNullOrEmpty()) -1 else position.toInt(), entrance, "") + DirectUtils.directToHomeActivity( + context, + id, + subtype, + if (position.isNullOrEmpty()) -1 else position.toInt(), + entrance, + "" + ) } EntranceConsts.HOST_VIDEO_MORE -> { val referer = uri.getQueryParameter("referer") ?: "" @@ -358,11 +377,16 @@ object DefaultUrlHandler { GameEntity(id = gameId, mName = gameName, mIcon = icon, mIconSubscript = iconSubscript) } else null val activityLabelEntity = if (activityId.isNotEmpty() && activityName.isNotEmpty()) { - ActivityLabelEntity(id = activityId, name = activityName, original = original.ifEmpty { "false" }.toBoolean()) - } else null - val communityEntity = if (forumId.isNotEmpty() && forumName.isNotEmpty() && forumIcon.isNotEmpty()) { - CommunityEntity(id = forumId, name = forumName, icon = forumIcon) + ActivityLabelEntity( + id = activityId, + name = activityName, + original = original.ifEmpty { "false" }.toBoolean() + ) } else null + val communityEntity = + if (forumId.isNotEmpty() && forumName.isNotEmpty() && forumIcon.isNotEmpty()) { + CommunityEntity(id = forumId, name = forumName, icon = forumIcon) + } else null context.startActivity( VideoPublishActivity.getIntent( @@ -402,7 +426,14 @@ object DefaultUrlHandler { if (!TextUtils.isEmpty(qaId)) { directToQa(context, qaTitle, qaId) } else { - directToFeedback(context, content, null, isQaFeedback, qaContentId, EntranceConsts.ENTRANCE_BROWSER) + directToFeedback( + context, + content, + null, + isQaFeedback, + qaContentId, + EntranceConsts.ENTRANCE_BROWSER + ) } } @@ -424,7 +455,15 @@ object DefaultUrlHandler { val id = uri.getQueryParameter("id") val name = uri.getQueryParameter("name") val qaCollectionId = uri.getQueryParameter("collection_id") - context.startActivity(WebActivity.getIntent(context, "$url$id", name, true, !qaCollectionId.isNullOrEmpty())) + context.startActivity( + WebActivity.getIntent( + context, + "$url$id", + name, + true, + !qaCollectionId.isNullOrEmpty() + ) + ) } } @@ -440,7 +479,15 @@ object DefaultUrlHandler { val activityId = uri.getQueryParameter("activity_id") ?: "" val activityName = uri.getQueryParameter("activity_name") ?: "" val gameId = uri.getQueryParameter("game_id") ?: "" - context.startActivity(GameCollectionEditActivity.getIntent(context, activityId, activityName, gameId, entrance)) + context.startActivity( + GameCollectionEditActivity.getIntent( + context, + activityId, + activityName, + gameId, + entrance + ) + ) } else -> { @@ -523,7 +570,13 @@ object DefaultUrlHandler { when { contains("game") -> { val gameId = uri.getQueryParameter("gameId") ?: uri.pathSegments.last() ?: "" - DirectUtils.directToGameDetail(context, gameId, entrance, autoDownload = false, traceEvent = null) + DirectUtils.directToGameDetail( + context, + gameId, + entrance, + autoDownload = false, + traceEvent = null + ) } contains("question") -> { val questionId = split("/")[2] @@ -540,7 +593,8 @@ object DefaultUrlHandler { var type = "" var typeId = "" val split = - replace("/communities", "").replace("/bbs", "").replace(".html", "").split("/".toRegex()).dropLastWhile { it.isEmpty() } + replace("/communities", "").replace("/bbs", "").replace(".html", "").split("/".toRegex()) + .dropLastWhile { it.isEmpty() } .toTypedArray() for (text in split) { if (TextUtils.isEmpty(communityId)) { diff --git a/app/src/main/java/com/gh/common/FixedRateJobHelper.kt b/app/src/main/java/com/gh/common/FixedRateJobHelper.kt index 30defae1ef..a506787ddb 100644 --- a/app/src/main/java/com/gh/common/FixedRateJobHelper.kt +++ b/app/src/main/java/com/gh/common/FixedRateJobHelper.kt @@ -37,13 +37,15 @@ object FixedRateJobHelper { // 时间校对,10分钟一次 if ((mExecuteCount * CHECKER_PERIOD) % TIME_PERIOD == 0L) { RetrofitManager.getInstance().api.time - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: TimeEntity?) { - val serverTime = response?.time - serverTime?.let { timeDeltaBetweenServerAndClient = it * 1000 - System.currentTimeMillis() } + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: TimeEntity?) { + val serverTime = response?.time + serverTime?.let { + timeDeltaBetweenServerAndClient = it * 1000 - System.currentTimeMillis() } - }) + } + }) } // 提交曝光数据 diff --git a/app/src/main/java/com/gh/common/chain/BrowserInstallHandler.kt b/app/src/main/java/com/gh/common/chain/BrowserInstallHandler.kt index d4f4662f6e..5964dd98cd 100644 --- a/app/src/main/java/com/gh/common/chain/BrowserInstallHandler.kt +++ b/app/src/main/java/com/gh/common/chain/BrowserInstallHandler.kt @@ -5,7 +5,7 @@ import com.gh.download.server.BrowserInstallHelper import com.gh.gamecenter.core.utils.EmptyCallback import com.gh.gamecenter.entity.GameEntity -class BrowserInstallHandler:ChainHandler() { +class BrowserInstallHandler : ChainHandler() { override fun handleRequest(context: Context, gameEntity: GameEntity) { BrowserInstallHelper.showBrowserInstallHintDialog(context, gameEntity.isVGame(), object : EmptyCallback { diff --git a/app/src/main/java/com/gh/common/chain/OverseaDownloadHandler.kt b/app/src/main/java/com/gh/common/chain/OverseaDownloadHandler.kt index 37dbb70742..19355f27c1 100644 --- a/app/src/main/java/com/gh/common/chain/OverseaDownloadHandler.kt +++ b/app/src/main/java/com/gh/common/chain/OverseaDownloadHandler.kt @@ -4,7 +4,7 @@ import android.content.Context import com.gh.common.util.DialogUtils import com.gh.gamecenter.entity.GameEntity -class OverseaDownloadHandler:ChainHandler() { +class OverseaDownloadHandler : ChainHandler() { override fun handleRequest(context: Context, gameEntity: GameEntity) { DialogUtils.showOverseaDownloadDialog(context, gameEntity) { diff --git a/app/src/main/java/com/gh/common/databind/AddKaiFuBindingAdapter.kt b/app/src/main/java/com/gh/common/databind/AddKaiFuBindingAdapter.kt index b406e02e5c..2776acb196 100644 --- a/app/src/main/java/com/gh/common/databind/AddKaiFuBindingAdapter.kt +++ b/app/src/main/java/com/gh/common/databind/AddKaiFuBindingAdapter.kt @@ -67,7 +67,7 @@ object AddKaiFuBindingAdapter { binding.kaifuAddServerName.hint = "点击填写" } } - binding.kaifuAddFirstName.addTextChangedListener(object :TextWatcher{ + binding.kaifuAddFirstName.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged( s: CharSequence?, start: Int, @@ -77,7 +77,7 @@ object AddKaiFuBindingAdapter { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - if (!s.isNullOrEmpty()){ + if (!s.isNullOrEmpty()) { popupWindow?.dismiss() } } @@ -104,12 +104,14 @@ object AddKaiFuBindingAdapter { val format = SimpleDateFormat(pattern, Locale.CHINA) view.setText(format.format(time * 1000)) if (position == 0) { - view.append(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Html.fromHtml( - String.format( - "%1\$s", - " +" - ), Html.FROM_HTML_MODE_LEGACY - ) else Html.fromHtml(String.format("%1\$s", " +"))) + view.append( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Html.fromHtml( + String.format( + "%1\$s", + " +" + ), Html.FROM_HTML_MODE_LEGACY + ) else Html.fromHtml(String.format("%1\$s", " +")) + ) } } } diff --git a/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt index 74d8f6a41f..0a5a826b64 100644 --- a/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt @@ -45,7 +45,13 @@ class ApplyModeratorDialogFragment : BaseDialogFragment() { val startText = "版主考核群:" val text = "$startText$mGroupNumber\n感谢你对论坛建设的支持\n请加入版主考核群并联系群主进行版主资格考核" binding.desTv.text = SpanBuilder(text) - .click(requireContext(), startText.length, startText.length + mGroupNumber.length, R.color.theme_font,true) { + .click( + requireContext(), + startText.length, + startText.length + mGroupNumber.length, + R.color.theme_font, + true + ) { DirectUtils.directToQqGroup( requireContext(), mGroupKey diff --git a/app/src/main/java/com/gh/common/dialog/CertificationDialog.kt b/app/src/main/java/com/gh/common/dialog/CertificationDialog.kt index c4076a9a87..3d213ac8c7 100644 --- a/app/src/main/java/com/gh/common/dialog/CertificationDialog.kt +++ b/app/src/main/java/com/gh/common/dialog/CertificationDialog.kt @@ -32,8 +32,13 @@ import com.google.gson.reflect.TypeToken import com.halo.assistant.fragment.user.UserInfoEditFragment import com.lightgame.utils.AppManager -class CertificationDialog(context: Context, private val authDialogEntity: AuthDialogEntity, val gameId: String, val listener: ConfirmListener) : - Dialog(context, R.style.GhAlertDialog) { +class CertificationDialog( + context: Context, + private val authDialogEntity: AuthDialogEntity, + val gameId: String, + val listener: ConfirmListener +) : + Dialog(context, R.style.GhAlertDialog) { private lateinit var view: View private lateinit var detailedDesTv: TextView @@ -119,8 +124,10 @@ class CertificationDialog(context: Context, private val authDialogEntity: AuthDi private fun gotoLoginPage() { val currentActivity = AppManager.getInstance().currentActivity() ?: return - CheckLoginUtils.checkLogin(currentActivity as AppCompatActivity, - null, true, "实名认证弹窗") { + CheckLoginUtils.checkLogin( + currentActivity as AppCompatActivity, + null, true, "实名认证弹窗" + ) { if (UserManager.getInstance().isAuth) { listener.onConfirm() dismiss() diff --git a/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt b/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt index 687be2b0cc..374243547c 100644 --- a/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt +++ b/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt @@ -40,7 +40,8 @@ import java.lang.ref.WeakReference /** * 设备提醒弹窗 */ -class DeviceRemindDialog(context: Context, val entity: DeviceDialogEntity, val gameEntity: GameEntity) : Dialog(context, R.style.GhAlertDialog) { +class DeviceRemindDialog(context: Context, val entity: DeviceDialogEntity, val gameEntity: GameEntity) : + Dialog(context, R.style.GhAlertDialog) { private val mBinding: DialogDeviceRemindBinding by lazy { DialogDeviceRemindBinding.inflate(layoutInflater) } private var currentPage = 0 private var mSlideLooperInterval = 3000L @@ -78,7 +79,8 @@ class DeviceRemindDialog(context: Context, val entity: DeviceDialogEntity, val g val type = object : TypeToken>() {}.type val entities = GsonUtils.gson.fromJson>(datas, type) //1.判断设备是否匹配 - val entity = entities.find { it.manufacturer.toLowerCase().startsWith(Build.MANUFACTURER.toLowerCase()) } + val entity = + entities.find { it.manufacturer.toLowerCase().startsWith(Build.MANUFACTURER.toLowerCase()) } ?: return Pair(false, null) //2.判断游戏不含剔除标签 gameEntity.tagStyle.forEach { @@ -189,7 +191,9 @@ class DeviceRemindDialog(context: Context, val entity: DeviceDialogEntity, val g inner class BannerAdapter : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_device_remind_banner, parent, false)) {} + return object : RecyclerView.ViewHolder( + LayoutInflater.from(context).inflate(R.layout.item_device_remind_banner, parent, false) + ) {} } override fun getItemCount(): Int = if (mDatas.size == 1) mDatas.size else Int.MAX_VALUE diff --git a/app/src/main/java/com/gh/common/dialog/GameOffServiceDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/GameOffServiceDialogFragment.kt index 7b38c4f537..8257c6a89f 100644 --- a/app/src/main/java/com/gh/common/dialog/GameOffServiceDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/GameOffServiceDialogFragment.kt @@ -31,9 +31,9 @@ class GameOffServiceDialogFragment : BaseDialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return DialogGameOffServiceBinding - .inflate(inflater) - .apply { mBinding = this } - .root + .inflate(inflater) + .apply { mBinding = this } + .root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -52,7 +52,10 @@ class GameOffServiceDialogFragment : BaseDialogFragment() { notEmptySite.forEachIndexed { index, site -> val siteTv = TextView(context) - siteTv.layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT).apply { + siteTv.layoutParams = LinearLayout.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ).apply { topMargin = 24F.dip2px() if (index == notEmptySite.size - 1) bottomMargin = 8F.dip2px() } @@ -61,7 +64,7 @@ class GameOffServiceDialogFragment : BaseDialogFragment() { siteTv.text = site.text siteTv.paintFlags = siteTv.paintFlags or Paint.UNDERLINE_TEXT_FLAG siteTv.setOnClickListener { - // MtaHelper.onEvent("游戏下载状态按钮", getKey(), site.text) + // MtaHelper.onEvent("游戏下载状态按钮", getKey(), site.text) DirectUtils.directToWebView(requireContext(), site.url, "(关闭下载弹窗)") dismissAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/common/dialog/InstallPermissionDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/InstallPermissionDialogFragment.kt index 5baf903885..e871b21eca 100644 --- a/app/src/main/java/com/gh/common/dialog/InstallPermissionDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/InstallPermissionDialogFragment.kt @@ -90,7 +90,11 @@ class InstallPermissionDialogFragment : BaseDialogFragment() { companion object { @JvmStatic - fun show(activity: AppCompatActivity, downloadEntity: DownloadEntity, callBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)?) { + fun show( + activity: AppCompatActivity, + downloadEntity: DownloadEntity, + callBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)? + ) { val isXapk = XapkInstaller.XAPK_EXTENSION_NAME == downloadEntity.path.getExtension() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { callBack?.invoke(false) @@ -114,7 +118,8 @@ class InstallPermissionDialogFragment : BaseDialogFragment() { return } } - var installPermissionDialogFragment = activity.supportFragmentManager.findFragmentByTag(InstallPermissionDialogFragment::class.java.name) as? InstallPermissionDialogFragment + var installPermissionDialogFragment = + activity.supportFragmentManager.findFragmentByTag(InstallPermissionDialogFragment::class.java.name) as? InstallPermissionDialogFragment if (installPermissionDialogFragment != null) { installPermissionDialogFragment.mCallBack = callBack installPermissionDialogFragment.isXapk = isXapk @@ -128,7 +133,10 @@ class InstallPermissionDialogFragment : BaseDialogFragment() { this.isXapk = isXapk this.url = downloadEntity.url } - installPermissionDialogFragment.show(activity.supportFragmentManager, InstallPermissionDialogFragment::class.java.name) + installPermissionDialogFragment.show( + activity.supportFragmentManager, + InstallPermissionDialogFragment::class.java.name + ) } } } diff --git a/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt index c655878b83..68a3508d0a 100644 --- a/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/NewPrivacyPolicyDialogFragment.kt @@ -21,7 +21,7 @@ import com.gh.gamecenter.databinding.DialogPrivacyProtocolNewBinding import com.gh.gamecenter.entity.DialogEntity import splitties.bundle.put -class NewPrivacyPolicyDialogFragment: BaseDialogFragment() { +class NewPrivacyPolicyDialogFragment : BaseDialogFragment() { private var mCallBack: ((isSuccess: Boolean) -> Unit)? = null private val mBinding by lazy { DialogPrivacyProtocolNewBinding.inflate(layoutInflater) } @@ -41,10 +41,12 @@ class NewPrivacyPolicyDialogFragment: BaseDialogFragment() { } private fun updateView() { - val contentText = SpannableStringBuilder("1.您可以通过《光环助手隐私政策》以及《儿童隐私保护声明》,了解我们如何收集、使用、存储、保护、对外提供您的个人信息以及您享有的权利\n" + - "2.您可以通过《接入第三方SDK目录》了解本产品接入的第三方SDK的具体信息\n" + - "3.您可以通过《应用权限列表》了解权限申请与使用情况说明\n" + - "4.如果您是14周岁以下的未成年人,您需要和您监护人一起仔细阅读《儿童隐私保护声明》,并在征得您监护人同意后,使用我们的产品、服务或向我们提供信息") + val contentText = SpannableStringBuilder( + "1.您可以通过《光环助手隐私政策》以及《儿童隐私保护声明》,了解我们如何收集、使用、存储、保护、对外提供您的个人信息以及您享有的权利\n" + + "2.您可以通过《接入第三方SDK目录》了解本产品接入的第三方SDK的具体信息\n" + + "3.您可以通过《应用权限列表》了解权限申请与使用情况说明\n" + + "4.如果您是14周岁以下的未成年人,您需要和您监护人一起仔细阅读《儿童隐私保护声明》,并在征得您监护人同意后,使用我们的产品、服务或向我们提供信息" + ) val privacyPolicyText = "《光环助手隐私政策》" val childrenPrivacyPolicyText = "《儿童隐私保护声明》" @@ -86,13 +88,14 @@ class NewPrivacyPolicyDialogFragment: BaseDialogFragment() { val thirdPartySdkUrl = requireContext().getString(R.string.sdk_list_url) val permissionListUrl = requireContext().getString(R.string.permission_and_usage_url) - val selectedUrl = when (contentText.substring(hypertextPositionPair.first, hypertextPositionPair.second)) { - privacyPolicyText -> privacyPolicyUrl - childrenPrivacyPolicyText -> childrenPrivacyPolicyUrl - thirdPartySdkText -> thirdPartySdkUrl - permissionListText -> permissionListUrl - else -> "" - } + val selectedUrl = + when (contentText.substring(hypertextPositionPair.first, hypertextPositionPair.second)) { + privacyPolicyText -> privacyPolicyUrl + childrenPrivacyPolicyText -> childrenPrivacyPolicyUrl + thirdPartySdkText -> thirdPartySdkUrl + permissionListText -> permissionListUrl + else -> "" + } DirectUtils.directToExternalBrowser(requireContext(), selectedUrl) } @@ -140,10 +143,13 @@ class NewPrivacyPolicyDialogFragment: BaseDialogFragment() { const val KEY_DATA = "data" @JvmStatic - fun show(activity: FragmentActivity, - privacyPolicyEntity: DialogEntity.PrivacyPolicyEntity? = null, - callBack: ((isSuccess: Boolean) -> Unit)?) { - var privacyDialogFragment = activity.supportFragmentManager.findFragmentByTag(NewPrivacyPolicyDialogFragment::class.java.name) as? NewPrivacyPolicyDialogFragment + fun show( + activity: FragmentActivity, + privacyPolicyEntity: DialogEntity.PrivacyPolicyEntity? = null, + callBack: ((isSuccess: Boolean) -> Unit)? + ) { + var privacyDialogFragment = + activity.supportFragmentManager.findFragmentByTag(NewPrivacyPolicyDialogFragment::class.java.name) as? NewPrivacyPolicyDialogFragment if (privacyDialogFragment != null) { privacyDialogFragment.mCallBack = callBack val transaction: FragmentTransaction = activity.supportFragmentManager.beginTransaction() diff --git a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt index 3e689884a7..81c6f0b12a 100644 --- a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt @@ -70,9 +70,14 @@ class PackageCheckDialogFragment : BaseDialogFragment() { if (detectionObject.packages.contains(packageName)) { val packageLink = gameEntity?.packageDialog?.links?.find { it.buttonLink } LogUtils.uploadPackageCheck( - "pkg_check_pop_download", if (DownloadStatus.add == downloadEntity.status) "下载开始" else "下载完成", - gameEntity, packageLink?.text ?: "", packageLink?.title - ?: "", downloadEntity.gameId, downloadEntity.getMetaExtra(Constants.GAME_NAME) + "pkg_check_pop_download", + if (DownloadStatus.add == downloadEntity.status) "下载开始" else "下载完成", + gameEntity, + packageLink?.text ?: "", + packageLink?.title + ?: "", + downloadEntity.gameId, + downloadEntity.getMetaExtra(Constants.GAME_NAME) ) } } @@ -114,7 +119,15 @@ class PackageCheckDialogFragment : BaseDialogFragment() { R.color.theme_font, true ) { - LogUtils.uploadPackageCheck("pkg_check_pop_click", "点击链接", gameEntity, link.text, link.title, "", "") + LogUtils.uploadPackageCheck( + "pkg_check_pop_click", + "点击链接", + gameEntity, + link.text, + link.title, + "", + "" + ) DirectUtils.directToLinkPage(requireContext(), link, "包名检测弹窗", "") }.build() spanBuilder.append(linkSpan) @@ -171,7 +184,15 @@ class PackageCheckDialogFragment : BaseDialogFragment() { packageLink = entity.links.find { it.buttonLink } } if (packageLink != null) { - LogUtils.uploadPackageCheck("pkg_check_pop_click", "点击前往下载", gameEntity, packageLink.text, packageLink.title, "", "") + LogUtils.uploadPackageCheck( + "pkg_check_pop_click", + "点击前往下载", + gameEntity, + packageLink.text, + packageLink.title, + "", + "" + ) DirectUtils.directToLinkPage(requireContext(), packageLink, "包名检测弹窗", "") } } @@ -324,7 +345,8 @@ class PackageCheckDialogFragment : BaseDialogFragment() { } } - class PackageCheckViewHolder(val binding: PackageCheckItemBinding) : BaseRecyclerViewHolder(binding.root) + class PackageCheckViewHolder(val binding: PackageCheckItemBinding) : + BaseRecyclerViewHolder(binding.root) companion object { @JvmStatic @@ -371,7 +393,10 @@ class PackageCheckDialogFragment : BaseDialogFragment() { } } - private fun checkDetectionsInstalled(allInstalledPackages: List, packages: ArrayList): Boolean { + private fun checkDetectionsInstalled( + allInstalledPackages: List, + packages: ArrayList + ): Boolean { var isPackagesInstalled = false packages.forEach { packageName -> val isInstalled = allInstalledPackages.find { it.packageName == packageName } != null @@ -384,7 +409,10 @@ class PackageCheckDialogFragment : BaseDialogFragment() { } - fun isAllPackageInstalled(allInstalledPackages: List, packageDialogEntity: PackageDialogEntity): Boolean { + fun isAllPackageInstalled( + allInstalledPackages: List, + packageDialogEntity: PackageDialogEntity + ): Boolean { var isAllInstalled = true packageDialogEntity.detectionObjects.forEach loop@{ obj -> if (!checkDetectionsInstalled(allInstalledPackages, obj.packages)) { diff --git a/app/src/main/java/com/gh/common/dialog/PrivacyPolicyDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/PrivacyPolicyDialogFragment.kt index 0c637fd122..be943a085f 100644 --- a/app/src/main/java/com/gh/common/dialog/PrivacyPolicyDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/PrivacyPolicyDialogFragment.kt @@ -65,7 +65,8 @@ class PrivacyPolicyDialogFragment : BaseDialogFragment() { } override fun onClick(widget: View) { - val intent = WebActivity.getIntent(requireContext(), context!!.getString(R.string.privacy_policy_url), true) + val intent = + WebActivity.getIntent(requireContext(), context!!.getString(R.string.privacy_policy_url), true) context?.startActivity(intent) } }, skipText.length - 6, skipText.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) @@ -106,7 +107,8 @@ class PrivacyPolicyDialogFragment : BaseDialogFragment() { } override fun onClick(widget: View) { - val intent = WebActivity.getIntent(requireContext(), context!!.getString(R.string.privacy_policy_url), true) + val intent = + WebActivity.getIntent(requireContext(), context!!.getString(R.string.privacy_policy_url), true) context?.startActivity(intent) } }, skipText.length - 9, skipText.length - 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) @@ -164,10 +166,13 @@ class PrivacyPolicyDialogFragment : BaseDialogFragment() { const val KEY_DATA = "data" @JvmStatic - fun show(activity: FragmentActivity, - privacyPolicyEntity: DialogEntity.PrivacyPolicyEntity? = null, - callBack: ((isSuccess: Boolean) -> Unit)?) { - var privacyDialogFragment = activity.supportFragmentManager.findFragmentByTag(PrivacyPolicyDialogFragment::class.java.name) as? PrivacyPolicyDialogFragment + fun show( + activity: FragmentActivity, + privacyPolicyEntity: DialogEntity.PrivacyPolicyEntity? = null, + callBack: ((isSuccess: Boolean) -> Unit)? + ) { + var privacyDialogFragment = + activity.supportFragmentManager.findFragmentByTag(PrivacyPolicyDialogFragment::class.java.name) as? PrivacyPolicyDialogFragment if (privacyDialogFragment != null) { privacyDialogFragment.mCallBack = callBack val transaction: FragmentTransaction = activity.supportFragmentManager.beginTransaction() diff --git a/app/src/main/java/com/gh/common/exposure/ExposureListener.kt b/app/src/main/java/com/gh/common/exposure/ExposureListener.kt index 6af5c75f40..651f87b43b 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureListener.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureListener.kt @@ -11,26 +11,32 @@ import io.reactivex.functions.Consumer */ class ExposureListener(var fragment: Fragment, var exposable: IExposable) : RecyclerView.OnScrollListener() { - val throttleBus: ExposureThrottleBus by lazy { ExposureThrottleBus(Consumer { commitExposure(it) }, Consumer(Throwable::printStackTrace)) } + val throttleBus: ExposureThrottleBus by lazy { + ExposureThrottleBus( + Consumer { commitExposure(it) }, + Consumer(Throwable::printStackTrace) + ) + } var layoutManager: LinearLayoutManager? = null var visibleState: ExposureThrottleBus.VisibleState? = null init { fragment.fragmentManager?.registerFragmentLifecycleCallbacks( - object : FragmentManager.FragmentLifecycleCallbacks() { - override fun onFragmentPaused(fm: FragmentManager, f: Fragment) { - if (fragment == f) { - visibleState?.let { commitExposure(it) } - throttleBus.clear() - } + object : FragmentManager.FragmentLifecycleCallbacks() { + override fun onFragmentPaused(fm: FragmentManager, f: Fragment) { + if (fragment == f) { + visibleState?.let { commitExposure(it) } + throttleBus.clear() } + } - override fun onFragmentViewDestroyed(fm: FragmentManager, f: Fragment) { - if (fragment == f) { - fragment.fragmentManager?.unregisterFragmentLifecycleCallbacks(this) - } + override fun onFragmentViewDestroyed(fm: FragmentManager, f: Fragment) { + if (fragment == f) { + fragment.fragmentManager?.unregisterFragmentLifecycleCallbacks(this) } - }, false) + } + }, false + ) } /** @@ -43,7 +49,8 @@ class ExposureListener(var fragment: Fragment, var exposable: IExposable) : Recy if (layoutManager == null) layoutManager = recyclerView.layoutManager as LinearLayoutManager layoutManager?.run { - visibleState = ExposureThrottleBus.VisibleState(findFirstVisibleItemPosition(), findLastVisibleItemPosition()) + visibleState = + ExposureThrottleBus.VisibleState(findFirstVisibleItemPosition(), findLastVisibleItemPosition()) throttleBus.postVisibleState(visibleState!!) } } diff --git a/app/src/main/java/com/gh/common/exposure/ExposureSource.kt b/app/src/main/java/com/gh/common/exposure/ExposureSource.kt index 956c6ce736..133be44ad3 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureSource.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureSource.kt @@ -6,4 +6,4 @@ import kotlinx.parcelize.Parcelize @Keep @Parcelize -data class ExposureSource(var k: String, var v: String = ""): Parcelable \ No newline at end of file +data class ExposureSource(var k: String, var v: String = "") : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/exposure/ExposureThrottleBus.kt b/app/src/main/java/com/gh/common/exposure/ExposureThrottleBus.kt index fbcdf7a3a3..1f87288612 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureThrottleBus.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureThrottleBus.kt @@ -23,10 +23,10 @@ class ExposureThrottleBus(var onSuccess: Consumer, var onError: Co * throttleWithTimeout() to pass a visibleState event with a delay and drop current event if another event arrives before the timeout. */ val disposable = mPublishSubject - .distinctUntilChanged() - .throttleWithTimeout(THRESHOLD_TIME, TimeUnit.MILLISECONDS) - .subscribeOn(Schedulers.io()) - .subscribe(onSuccess, onError) + .distinctUntilChanged() + .throttleWithTimeout(THRESHOLD_TIME, TimeUnit.MILLISECONDS) + .subscribeOn(Schedulers.io()) + .subscribe(onSuccess, onError) mCompositeDisposable.add(disposable) } diff --git a/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt b/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt index 52f6a536f1..bd25297724 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureUtils.kt @@ -100,7 +100,10 @@ object ExposureUtils { private fun getInstallDownloadType(apkEntity: ApkEntity, gameId: String): DownloadType { return when { - PackageUtils.isSignedByGh(HaloApp.getInstance().application, apkEntity.packageName) -> getUpdateDownloadType(apkEntity, gameId) + PackageUtils.isSignedByGh( + HaloApp.getInstance().application, + apkEntity.packageName + ) -> getUpdateDownloadType(apkEntity, gameId) !TextUtils.isEmpty(apkEntity.ghVersion) -> DownloadType.PLUGIN_DOWNLOAD else -> DownloadType.UPDATE } diff --git a/app/src/main/java/com/gh/common/filter/RegionSetting.kt b/app/src/main/java/com/gh/common/filter/RegionSetting.kt index 3ec3808451..b44fddb389 100644 --- a/app/src/main/java/com/gh/common/filter/RegionSetting.kt +++ b/app/src/main/java/com/gh/common/filter/RegionSetting.kt @@ -36,6 +36,7 @@ data class RegionSetting( @SerializedName("button_text") var buttonText: String,// 按钮文案 ) + data class GameSpecialDownloadInfo( @SerializedName("game_id") var gameId: String = "", diff --git a/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt b/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt index edf632204f..aab41786fe 100644 --- a/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt +++ b/app/src/main/java/com/gh/common/filter/RegionSettingHelper.kt @@ -33,7 +33,8 @@ object RegionSettingHelper { return mFilterGameIdSet?.contains(gameId) ?: false } - fun shouldThisGameShowSpecialDownload(gameId: String) = mGameSpecialDownloadInfoList?.any { it.gameId == gameId } ?: false + fun shouldThisGameShowSpecialDownload(gameId: String) = + mGameSpecialDownloadInfoList?.any { it.gameId == gameId } ?: false @JvmStatic fun getGameSpecialDownloadInfo(gameId: String) = mGameSpecialDownloadInfoList?.find { it.gameId == gameId } diff --git a/app/src/main/java/com/gh/common/history/HistoryDatabase.kt b/app/src/main/java/com/gh/common/history/HistoryDatabase.kt index 042ea28307..cb6532496d 100644 --- a/app/src/main/java/com/gh/common/history/HistoryDatabase.kt +++ b/app/src/main/java/com/gh/common/history/HistoryDatabase.kt @@ -16,24 +16,30 @@ import com.gh.gamecenter.room.converter.* import com.gh.gamecenter.room.dao.* import com.halo.assistant.HaloApp -@Database(entities = [AnswerEntity::class, ArticleEntity::class, NewsEntity::class, HistoryGameEntity::class, MyVideoEntity::class, GamesCollectionEntity::class], version = 11, exportSchema = false) -@TypeConverters(CountConverter::class, - CommunityConverter::class, - TimeConverter::class, - AnswerUserConverter::class, - ThumbnailConverter::class, - TagStyleListConverter::class, - StringArrayListConverter::class, - ListStringConverter::class, - CommunityVideoConverter::class, - UserConverter::class, - ImageInfoConverter::class, - VideoInfoConverter::class, - QuestionsConverter::class, - MeConverter::class, - SimpleGameListConverter::class, - TagInfoListConverter::class, - ActivityLabelListConverter::class) +@Database( + entities = [AnswerEntity::class, ArticleEntity::class, NewsEntity::class, HistoryGameEntity::class, MyVideoEntity::class, GamesCollectionEntity::class], + version = 11, + exportSchema = false +) +@TypeConverters( + CountConverter::class, + CommunityConverter::class, + TimeConverter::class, + AnswerUserConverter::class, + ThumbnailConverter::class, + TagStyleListConverter::class, + StringArrayListConverter::class, + ListStringConverter::class, + CommunityVideoConverter::class, + UserConverter::class, + ImageInfoConverter::class, + VideoInfoConverter::class, + QuestionsConverter::class, + MeConverter::class, + SimpleGameListConverter::class, + TagInfoListConverter::class, + ActivityLabelListConverter::class +) abstract class HistoryDatabase : RoomDatabase() { @@ -109,7 +115,8 @@ abstract class HistoryDatabase : RoomDatabase() { val MIGRATION_9_10: Migration = object : Migration(9, 10) { override fun migrate(database: SupportSQLiteDatabase) { - database.execSQL("CREATE TABLE GamesCollectionEntity (id TEXT NOT NULL PRIMARY KEY, tags TEXT, games TEXT, title TEXT NOT NULL, intro TEXT NOT NULL, cover TEXT NOT NULL, display TEXT NOT NULL, stamp TEXT NOT NULL, count TEXT, user TEXT, me TEXT, orderTag INTEGER NOT NULL)" + database.execSQL( + "CREATE TABLE GamesCollectionEntity (id TEXT NOT NULL PRIMARY KEY, tags TEXT, games TEXT, title TEXT NOT NULL, intro TEXT NOT NULL, cover TEXT NOT NULL, display TEXT NOT NULL, stamp TEXT NOT NULL, count TEXT, user TEXT, me TEXT, orderTag INTEGER NOT NULL)" ) } } @@ -121,17 +128,21 @@ abstract class HistoryDatabase : RoomDatabase() { } val instance by lazy { - Room.databaseBuilder(HaloApp.getInstance().application, HistoryDatabase::class.java, "USER_TRACK_HISTORY_DATABASE") - .addMigrations(MIGRATION_2_3) - .addMigrations(MIGRATION_3_4) - .addMigrations(MIGRATION_4_5) - .addMigrations(MIGRATION_5_6) - .addMigrations(MIGRATION_6_7) - .addMigrations(MIGRATION_7_8) - .addMigrations(MIGRATION_8_9) - .addMigrations(MIGRATION_9_10) - .addMigrations(MIGRATION_10_11) - .build() + Room.databaseBuilder( + HaloApp.getInstance().application, + HistoryDatabase::class.java, + "USER_TRACK_HISTORY_DATABASE" + ) + .addMigrations(MIGRATION_2_3) + .addMigrations(MIGRATION_3_4) + .addMigrations(MIGRATION_4_5) + .addMigrations(MIGRATION_5_6) + .addMigrations(MIGRATION_6_7) + .addMigrations(MIGRATION_7_8) + .addMigrations(MIGRATION_8_9) + .addMigrations(MIGRATION_9_10) + .addMigrations(MIGRATION_10_11) + .build() } } diff --git a/app/src/main/java/com/gh/common/history/HistoryHelper.kt b/app/src/main/java/com/gh/common/history/HistoryHelper.kt index 723646f90c..44d887285f 100644 --- a/app/src/main/java/com/gh/common/history/HistoryHelper.kt +++ b/app/src/main/java/com/gh/common/history/HistoryHelper.kt @@ -26,7 +26,11 @@ object HistoryHelper { fun insertGamesCollectionEntity(gamesCollectionDetailEntity: GamesCollectionDetailEntity) { val gamesCollectionEntity = convertGamesCollectionDetailToGamesCollection(gamesCollectionDetailEntity) - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.gamesCollectionDao().addGamesCollection(gamesCollectionEntity) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.gamesCollectionDao().addGamesCollection(gamesCollectionEntity) + } + } } @JvmStatic @@ -78,27 +82,47 @@ object HistoryHelper { @JvmStatic fun deleteNewsEntity(newsId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.newsDao().deleteNews(NewsEntity().apply { id = newsId }) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.newsDao().deleteNews(NewsEntity().apply { id = newsId }) + } + } } @JvmStatic fun deleteGameEntity(gameId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.gameDao().deleteGame(HistoryGameEntity(id = gameId)) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.gameDao().deleteGame(HistoryGameEntity(id = gameId)) + } + } } @JvmStatic fun deleteArticleEntity(articleId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.articleDao().deleteArticle(ArticleEntity(id = articleId)) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.articleDao().deleteArticle(ArticleEntity(id = articleId)) + } + } } @JvmStatic fun deleteAnswerEntity(answerId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.answerDao().deleteAnswer(AnswerEntity().apply { primaryKey = answerId }) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.answerDao().deleteAnswer(AnswerEntity().apply { primaryKey = answerId }) + } + } } @JvmStatic fun deleteVideoEntity(videoId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.videoHistoryDao().deleteVideo(MyVideoEntity().apply { id = videoId }) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.videoHistoryDao().deleteVideo(MyVideoEntity().apply { id = videoId }) + } + } } @JvmStatic @@ -108,7 +132,12 @@ object HistoryHelper { @JvmStatic fun deleteGamesCollectionEntity(gameCollectionId: String) { - runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.gamesCollectionDao().deleteGamesCollection(GamesCollectionEntity(id = gameCollectionId)) } } + runOnIoThread { + tryCatchInRelease { + HistoryDatabase.instance.gamesCollectionDao() + .deleteGamesCollection(GamesCollectionEntity(id = gameCollectionId)) + } + } } @@ -121,7 +150,9 @@ object HistoryHelper { val articleEntity = ArticleEntity() articleEntity.id = articleDetailEntity.id - articleEntity.brief = articleDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely().replace(" +".toRegex(), " ") + articleEntity.brief = + articleDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely() + .replace(" +".toRegex(), " ") articleEntity.count = articleDetailEntity.count articleDetailEntity.community.id = articleDetailEntity.communityId articleEntity.community = articleDetailEntity.community @@ -146,7 +177,9 @@ object HistoryHelper { answerEntity.vote = answerDetailEntity.vote answerEntity.user = answerDetailEntity.user answerEntity.orderTag = System.currentTimeMillis() - answerEntity.brief = answerDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely().replace(" +".toRegex(), " ") + answerEntity.brief = + answerDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely() + .replace(" +".toRegex(), " ") answerEntity.time = answerDetailEntity.time answerEntity.images = answerDetailEntity.images answerEntity.imagesInfo = answerDetailEntity.imagesInfo @@ -176,7 +209,8 @@ object HistoryHelper { id = id ?: "", name = name ?: "", icon = icon ?: "", - badge = badge) + badge = badge + ) } gamesCollectionEntity.me = gamesCollectionDetailEntity.me diff --git a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt index 3038dd40ed..0877c2c0ed 100644 --- a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt @@ -15,7 +15,7 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider { override fun onConfirm() { confirm.invoke() } - }, object :CancelListener{ + }, object : CancelListener { override fun onCancel() { cancel.invoke() } diff --git a/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt index 9114eade0e..a05d27883c 100644 --- a/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt @@ -8,7 +8,7 @@ import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IEntranceUtilsProvider @Route(path = RouteConsts.provider.entranceUtils, name = "EntranceUtils暴露服务") -class EntranceUtilsProviderImpl: IEntranceUtilsProvider { +class EntranceUtilsProviderImpl : IEntranceUtilsProvider { override fun jumpActivity(context: Context, bundle: Bundle) { EntranceUtils.jumpActivity(context, bundle) } diff --git a/app/src/main/java/com/gh/common/repository/RemenkapaiRepository.kt b/app/src/main/java/com/gh/common/repository/RemenkapaiRepository.kt index caaf902660..e1473a734a 100644 --- a/app/src/main/java/com/gh/common/repository/RemenkapaiRepository.kt +++ b/app/src/main/java/com/gh/common/repository/RemenkapaiRepository.kt @@ -16,10 +16,10 @@ object RemenkapaiRepository { fun getRemenkapai(size: Int): Observable> { return if (remenkapaiList.isEmpty()) { RetrofitManager.getInstance().api.remenkapai - .map(RegionSettingHelper.filterGame) - .map { gameList -> filterEntityWithoutApk(gameList) } - .map { pickRandomSizeEntity(size) } - .map(ApkActiveUtils.filterMapperList) + .map(RegionSettingHelper.filterGame) + .map { gameList -> filterEntityWithoutApk(gameList) } + .map { pickRandomSizeEntity(size) } + .map(ApkActiveUtils.filterMapperList) } else { Observable.create { emitter -> emitter.onNext(pickRandomSizeEntity(size)) } } diff --git a/app/src/main/java/com/gh/common/repository/ReservationRepository.kt b/app/src/main/java/com/gh/common/repository/ReservationRepository.kt index f05609b54c..5bc149ea33 100644 --- a/app/src/main/java/com/gh/common/repository/ReservationRepository.kt +++ b/app/src/main/java/com/gh/common/repository/ReservationRepository.kt @@ -40,16 +40,19 @@ object ReservationRepository { fun refreshReservations() { if (CheckLoginUtils.isLogin()) { RetrofitManager.getInstance().api - .getAllTheGameReservations(UserManager.getInstance().userId, Utils.getTime(HaloApp.getInstance().application)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { + .getAllTheGameReservations( + UserManager.getInstance().userId, + Utils.getTime(HaloApp.getInstance().application) + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - mReservationSet = HashSet(data) - } + override fun onSuccess(data: List) { + mReservationSet = HashSet(data) + } - }) + }) } } diff --git a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt index 0617ced8cd..32aa6fb371 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt @@ -51,8 +51,12 @@ class SimulatorDownloadManager private constructor() { val size = downloadEntity.progress.toFloat() / 1024 / 1024 val df = DecimalFormat("0.00") appProgressSize!!.text = "${df.format(size.toDouble())}MB" - appProgressRemain!!.text = String.format("剩余%s", SpeedUtils.getRemainSecondTime(downloadEntity.size, - downloadEntity.progress, downloadEntity.speed * 1024)) + appProgressRemain!!.text = String.format( + "剩余%s", SpeedUtils.getRemainSecondTime( + downloadEntity.size, + downloadEntity.progress, downloadEntity.speed * 1024 + ) + ) app_pb_progress!!.progress = (downloadEntity.percent * 10).toInt() val width = app_pb_progress!!.width @@ -70,10 +74,21 @@ class SimulatorDownloadManager private constructor() { appProgressPercent?.text = if (downloadEntity.percent != 100.0) "${downloadEntity.percent}%" else "100%" when { DownloadStatus.done == downloadEntity.status -> { - val locationStr = if (simulatorLocation == SimulatorLocation.LAUNCH) "${simulatorLocation?.value}《${gameName}》" else simulatorLocation?.value - val fileName = downloadEntity.path.substring(downloadEntity.path.lastIndexOf('/') + 1).removeSuffix(".apk") + val locationStr = + if (simulatorLocation == SimulatorLocation.LAUNCH) "${simulatorLocation?.value}《${gameName}》" else simulatorLocation?.value + val fileName = + downloadEntity.path.substring(downloadEntity.path.lastIndexOf('/') + 1).removeSuffix(".apk") val startTime = downloadEntity.getMetaExtra(Constants.SIMULATOR_DOWNLOAD_START_TIME) - LogUtils.uploadSimulatorDownload("simulator_download_complete", fileName, simulator?.id, downloadEntity.name, gameId, locationStr, downloadType, startTime) + LogUtils.uploadSimulatorDownload( + "simulator_download_complete", + fileName, + simulator?.id, + downloadEntity.name, + gameId, + locationStr, + downloadType, + startTime + ) DownloadManager.getInstance().cancel(downloadEntity.url, false, true, false) val activity = mContextRef?.get() as? AppCompatActivity if (activity?.isFinishing == false) { @@ -113,7 +128,14 @@ class SimulatorDownloadManager private constructor() { showDownloadDialog(context, simulator, location, "", "", null) } - fun showDownloadDialog(context: Context?, simulator: SimulatorEntity?, location: SimulatorLocation, gameId: String = "", gameName: String = "", cancelCallback: (() -> Unit)? = null) { + fun showDownloadDialog( + context: Context?, + simulator: SimulatorEntity?, + location: SimulatorLocation, + gameId: String = "", + gameName: String = "", + cancelCallback: (() -> Unit)? = null + ) { if (context == null) return mContextRef = WeakReference(context) @@ -134,11 +156,13 @@ class SimulatorDownloadManager private constructor() { val shouldShowUpdate = Version(simulator?.apk?.version).isHigherThan(versionFromInstalledApp) val title = if (shouldShowUpdate && isInstalled) "更新模拟器" else "安装模拟器" val message = if (shouldShowUpdate && isInstalled) "检测到模拟器存在更高版本,是否前往更新" else "模拟器游戏需要先下载安装对应的模拟器,才可以运行" - val positiveText = if (shouldShowUpdate && isInstalled) "更新(${simulator?.apk?.size})" else "下载(${simulator?.apk?.size})" + val positiveText = + if (shouldShowUpdate && isInstalled) "更新(${simulator?.apk?.size})" else "下载(${simulator?.apk?.size})" val negativeText = if (shouldShowUpdate && isInstalled) "下次再说" else "取消" downloadType = if (shouldShowUpdate && isInstalled) "update" else "download" - val trackableEntity = TrackableEntity("模拟器下载", + val trackableEntity = TrackableEntity( + "模拟器下载", key = if (shouldShowUpdate && isInstalled) "更新弹窗" else "下载弹窗", logShowEvent = true ) @@ -230,7 +254,8 @@ class SimulatorDownloadManager private constructor() { uiModificationCallback = { binding -> binding.confirmTv.setTextColor(R.color.text_body.toColor(context)) }, - extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } private fun download(simulator: SimulatorEntity?) { @@ -267,13 +292,26 @@ class SimulatorDownloadManager private constructor() { downloadEntity.versionName = apkEntity.version downloadEntity.addMetaExtra(Constants.EXTRA_DOWNLOAD_TYPE, Constants.SIMULATOR_DOWNLOAD) - downloadEntity.addMetaExtra(Constants.SIMULATOR_DOWNLOAD_START_TIME, (System.currentTimeMillis() / 1000).toString()) + downloadEntity.addMetaExtra( + Constants.SIMULATOR_DOWNLOAD_START_TIME, + (System.currentTimeMillis() / 1000).toString() + ) downloadEntity.addMetaExtra(Constants.DOWNLOAD_ID, downloadId) uiExecutor.executeWithDelay(Runnable { DownloadManager.getInstance().add(downloadEntity) }, 200) - val locationStr = if (simulatorLocation == SimulatorLocation.LAUNCH) "${simulatorLocation?.value}《${gameName}》" else simulatorLocation?.value + val locationStr = + if (simulatorLocation == SimulatorLocation.LAUNCH) "${simulatorLocation?.value}《${gameName}》" else simulatorLocation?.value val fileName = downloadEntity.path.substring(downloadEntity.path.lastIndexOf('/') + 1).removeSuffix(".apk") - LogUtils.uploadSimulatorDownload("simulator_download", fileName, simulator.id, simulator.name, gameId, locationStr, downloadType, "") + LogUtils.uploadSimulatorDownload( + "simulator_download", + fileName, + simulator.id, + simulator.name, + gameId, + locationStr, + downloadType, + "" + ) downloadDialog?.show() } diff --git a/app/src/main/java/com/gh/common/simulator/SimulatorGameManager.kt b/app/src/main/java/com/gh/common/simulator/SimulatorGameManager.kt index b198e89509..c1151bbfa9 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorGameManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorGameManager.kt @@ -95,9 +95,11 @@ object SimulatorGameManager { updateSimulatorConfigFile(gameId = gameEntity.id) if (shouldShowUpdate) { - SimulatorDownloadManager.getInstance().showDownloadDialog(AppManager.getInstance().recentActiveActivity, gameEntity.simulator, - SimulatorDownloadManager.SimulatorLocation.LAUNCH, gameEntity.id, gameEntity.name - ?: "") { + SimulatorDownloadManager.getInstance().showDownloadDialog( + AppManager.getInstance().recentActiveActivity, gameEntity.simulator, + SimulatorDownloadManager.SimulatorLocation.LAUNCH, gameEntity.id, gameEntity.name + ?: "" + ) { jumpToSimulator(downloadEntity, gameEntity) } } else { @@ -109,45 +111,45 @@ object SimulatorGameManager { private fun jumpToSimulator(downloadEntity: DownloadEntity, gameEntity: GameEntity) { val gameIcon = gameEntity.icon ?: gameEntity.rawIcon ?: "" Single.just(ImageUtils.getCachedUrl(gameIcon)) - .flatMap { - getBitmapFormCache(it) - }.map { - BitmapUtils.compressBitmap(it, 100) - }.map { - val baos = ByteArrayOutputStream() - it.compress(Bitmap.CompressFormat.WEBP, 100, baos) - baos.toByteArray() + .flatMap { + getBitmapFormCache(it) + }.map { + BitmapUtils.compressBitmap(it, 100) + }.map { + val baos = ByteArrayOutputStream() + it.compress(Bitmap.CompressFormat.WEBP, 100, baos) + baos.toByteArray() + } + .compose(singleToMain()) + .subscribe({ + val intent = Intent() + intent.data = Uri.fromFile(File(downloadEntity.path)) + if (gameEntity.simulatorType == "FBA" || gameEntity.simulatorType == "FBN") { + val apkEntity = gameEntity.getApk()[0] + intent.putExtra("rom_name", apkEntity.packageName) } - .compose(singleToMain()) - .subscribe({ - val intent = Intent() - intent.data = Uri.fromFile(File(downloadEntity.path)) - if (gameEntity.simulatorType == "FBA" || gameEntity.simulatorType == "FBN") { - val apkEntity = gameEntity.getApk()[0] - intent.putExtra("rom_name", apkEntity.packageName) - } - intent.putExtra("default_path", downloadEntity.path.substring(0, downloadEntity.path.lastIndexOf('/'))) - intent.putExtra("game_type", gameEntity.simulatorType) - intent.putExtra("title", downloadEntity.name) - intent.putExtra("icon", gameIcon) - intent.putExtra("iconStream", it) - intent.putExtra("meta", LogUtils.getMetaObject().toString()) - intent.putExtra("simulatorId", gameEntity.simulator?.id) - intent.putExtra("simulatorName", gameEntity.simulator?.name) - intent.putExtra("gameId", gameEntity.id) + intent.putExtra("default_path", downloadEntity.path.substring(0, downloadEntity.path.lastIndexOf('/'))) + intent.putExtra("game_type", gameEntity.simulatorType) + intent.putExtra("title", downloadEntity.name) + intent.putExtra("icon", gameIcon) + intent.putExtra("iconStream", it) + intent.putExtra("meta", LogUtils.getMetaObject().toString()) + intent.putExtra("simulatorId", gameEntity.simulator?.id) + intent.putExtra("simulatorName", gameEntity.simulator?.name) + intent.putExtra("gameId", gameEntity.id) - val destActivity = "com.gh.emu.RequestPermissionActivity" - intent.setClassName(gameEntity.simulator?.apk?.packageName ?: "", destActivity) - try { - AppManager.getInstance().recentActiveActivity?.startActivity(intent) - } catch (e: ActivityNotFoundException) { - ToastUtils.showToast("模拟器安装错误") - } + val destActivity = "com.gh.emu.RequestPermissionActivity" + intent.setClassName(gameEntity.simulator?.apk?.packageName ?: "", destActivity) + try { + AppManager.getInstance().recentActiveActivity?.startActivity(intent) + } catch (e: ActivityNotFoundException) { + ToastUtils.showToast("模拟器安装错误") + } - recordPlaySimulatorGames(gameEntity.id) - }, { - ToastUtils.showToast("跳转失败") - }) + recordPlaySimulatorGames(gameEntity.id) + }, { + ToastUtils.showToast("跳转失败") + }) } private fun getBitmapFormCache(url: String): Single { @@ -176,13 +178,13 @@ object SimulatorGameManager { requestMap["package"] = "-" val body = requestMap.createRequestBodyAny() RetrofitManager.getInstance().api - .downloadSimulatorGames(HaloApp.getInstance().gid, body) - .compose(singleToMain()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - refreshSimulatorGame(gameId, type) - } - }) + .downloadSimulatorGames(HaloApp.getInstance().gid, body) + .compose(singleToMain()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + refreshSimulatorGame(gameId, type) + } + }) } /** @@ -205,28 +207,28 @@ object SimulatorGameManager { if (gameArray.length() == 0) return RetrofitManager.getInstance().api - .putDownloadSimulatorGames(HaloApp.getInstance().gid, gameArray.toRequestBody()) - .compose(singleToMain()) - .subscribe(EmptyResponse()) + .putDownloadSimulatorGames(HaloApp.getInstance().gid, gameArray.toRequestBody()) + .compose(singleToMain()) + .subscribe(EmptyResponse()) } @SuppressLint("CheckResult") private fun refreshSimulatorGame(gameId: String, type: String) { val simulatorGameDao = AppDatabase.getInstance().simulatorGameDao() RetrofitManager.getInstance().api - .getSimulatorGames(HaloApp.getInstance().gid, 1, getFilter(type)) - .compose(singleToMain()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - val simulatorGameRecordList = ArrayList() - data.forEach { - val entity = it.convertSimulatorGameRecordEntity() - entity.isRecentlyPlayed = it.id == gameId - simulatorGameRecordList.add(entity) - } - simulatorGameDao.addSimulatorGameList(simulatorGameRecordList) + .getSimulatorGames(HaloApp.getInstance().gid, 1, getFilter(type)) + .compose(singleToMain()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + val simulatorGameRecordList = ArrayList() + data.forEach { + val entity = it.convertSimulatorGameRecordEntity() + entity.isRecentlyPlayed = it.id == gameId + simulatorGameRecordList.add(entity) } - }) + simulatorGameDao.addSimulatorGameList(simulatorGameRecordList) + } + }) } private fun getFilter(type: String): String { @@ -244,9 +246,9 @@ object SimulatorGameManager { requestMap["package"] = packageName val body = requestMap.toRequestBody() RetrofitManager.getInstance().api - .postPlayedGame(UserManager.getInstance().userId, body) - .compose(singleToMain()) - .subscribe(EmptyResponse()) + .postPlayedGame(UserManager.getInstance().userId, body) + .compose(singleToMain()) + .subscribe(EmptyResponse()) } } @@ -261,10 +263,10 @@ object SimulatorGameManager { requestMap["package"] = "-" val body = requestMap.createRequestBodyAny() RetrofitManager.getInstance().api - .playedSimulatorGames(HaloApp.getInstance().gid, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(EmptyResponse()) + .playedSimulatorGames(HaloApp.getInstance().gid, body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(EmptyResponse()) } /** @@ -273,14 +275,14 @@ object SimulatorGameManager { @SuppressLint("CheckResult") fun deleteSimulatorGame(gameId: String, callback: () -> Unit) { RetrofitManager.getInstance().api - .deleteSimulatorGame(HaloApp.getInstance().gid, gameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - callback.invoke() - } - }) + .deleteSimulatorGame(HaloApp.getInstance().gid, gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + callback.invoke() + } + }) } /** @@ -292,14 +294,14 @@ object SimulatorGameManager { val requestMap = hashMapOf() requestMap["game_ids"] = gameIds RetrofitManager.getInstance().api - .deleteSimulatorGames(HaloApp.getInstance().gid, requestMap.toRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - callback.invoke() - } - }) + .deleteSimulatorGames(HaloApp.getInstance().gid, requestMap.toRequestBody()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + callback.invoke() + } + }) } /** @@ -309,27 +311,29 @@ object SimulatorGameManager { @SuppressLint("CheckResult") fun deleteAllSimulatorGame() { RetrofitManager.getInstance().api - .deleteAllSimulatorGame(HaloApp.getInstance().gid) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(EmptyResponse()) + .deleteAllSimulatorGame(HaloApp.getInstance().gid) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(EmptyResponse()) } private fun updateSimulatorConfigFile(gameId: String) { RetrofitManager.getInstance() - .api - .getGameDigest(gameId) - .map(ApkActiveUtils.filterMapper) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(game: GameEntity?) { - game?.let { - if (!TextUtils.isEmpty(game.simulatorGameConfig)) { - val configFilePath = getPathByType(game.simulatorType + "/cheat/" + game.getApk().firstOrNull()?.packageName + ".ini") - FileUtils.downloadAndUpdateFile(game.simulatorGameConfig, configFilePath) - } + .api + .getGameDigest(gameId) + .map(ApkActiveUtils.filterMapper) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(game: GameEntity?) { + game?.let { + if (!TextUtils.isEmpty(game.simulatorGameConfig)) { + val configFilePath = getPathByType( + game.simulatorType + "/cheat/" + game.getApk().firstOrNull()?.packageName + ".ini" + ) + FileUtils.downloadAndUpdateFile(game.simulatorGameConfig, configFilePath) } } - }) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/ActivationHelper.kt b/app/src/main/java/com/gh/common/util/ActivationHelper.kt index ee77fd1d0b..365024162e 100644 --- a/app/src/main/java/com/gh/common/util/ActivationHelper.kt +++ b/app/src/main/java/com/gh/common/util/ActivationHelper.kt @@ -22,16 +22,16 @@ object ActivationHelper { fun sendActivationInfo() { if (!mHasSentActivatedInfo) { RetrofitManager.getInstance() - .api.postActivationInfo() - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) + .api.postActivationInfo() + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) - mHasSentActivatedInfo = true - SPUtils.setBoolean(HAS_SENT_ACTIVATED_INFO, true) - } - }) + mHasSentActivatedInfo = true + SPUtils.setBoolean(HAS_SENT_ACTIVATED_INFO, true) + } + }) } } diff --git a/app/src/main/java/com/gh/common/util/ActivityCountHelper.kt b/app/src/main/java/com/gh/common/util/ActivityCountHelper.kt index aa83c20747..10b94af1c6 100644 --- a/app/src/main/java/com/gh/common/util/ActivityCountHelper.kt +++ b/app/src/main/java/com/gh/common/util/ActivityCountHelper.kt @@ -14,7 +14,8 @@ import java.util.concurrent.Executors */ object ActivityCountHelper { - private val ACTIVITY_URL_COMMON_PREF = if (EnvHelper.isDevEnv) Constants.ACTIVITY_DETAIL_ADDRESS_DEV else Constants.ACTIVITY_DETAIL_ADDRESS + private val ACTIVITY_URL_COMMON_PREF = + if (EnvHelper.isDevEnv) Constants.ACTIVITY_DETAIL_ADDRESS_DEV else Constants.ACTIVITY_DETAIL_ADDRESS private var mStayTimeCount = 0 private var mIsStayTimeCountEnabled = false private var mStayTimeArray = arrayOf(5, 10, 20, 40, 80, 160) @@ -54,8 +55,14 @@ object ActivityCountHelper { tryWithDefaultCatch { mStayTimeCount++ when { - mStayTimeCount % MAX_STAY_TIME == 0 -> NewFlatLogUtils.logActivityPageView(MAX_STAY_TIME, activityId) - mStayTimeArray.contains(mStayTimeCount) -> NewFlatLogUtils.logActivityPageView(mStayTimeCount, activityId) + mStayTimeCount % MAX_STAY_TIME == 0 -> NewFlatLogUtils.logActivityPageView( + MAX_STAY_TIME, + activityId + ) + mStayTimeArray.contains(mStayTimeCount) -> NewFlatLogUtils.logActivityPageView( + mStayTimeCount, + activityId + ) } } Thread.sleep(1000) diff --git a/app/src/main/java/com/gh/common/util/AdHelper.kt b/app/src/main/java/com/gh/common/util/AdHelper.kt index 3f77de2187..2c651118d1 100644 --- a/app/src/main/java/com/gh/common/util/AdHelper.kt +++ b/app/src/main/java/com/gh/common/util/AdHelper.kt @@ -31,14 +31,14 @@ object AdHelper { } RetrofitManager.getInstance() - .api - .getSplashAd(HaloApp.getInstance().channel) - .subscribeOn(Schedulers.io()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: StartupAdEntity) { - startupAd.postValue(data) - } - }) + .api + .getSplashAd(HaloApp.getInstance().channel) + .subscribeOn(Schedulers.io()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: StartupAdEntity) { + startupAd.postValue(data) + } + }) } fun getAd(location: String): SettingsEntity.AD? { @@ -54,7 +54,7 @@ object AdHelper { val adList = Config.getSettings()?.adList ?: return null var result: SettingsEntity.AD? = null - run outside@ { + run outside@{ for (ad in adList) { if (ad.location == location) { result = ad diff --git a/app/src/main/java/com/gh/common/util/BbsReportHelper.kt b/app/src/main/java/com/gh/common/util/BbsReportHelper.kt index e8a6b9568e..8ae73f0769 100644 --- a/app/src/main/java/com/gh/common/util/BbsReportHelper.kt +++ b/app/src/main/java/com/gh/common/util/BbsReportHelper.kt @@ -120,7 +120,10 @@ object BbsReportHelper { override fun onFailure(exception: Exception) { super.onFailure(exception) if (exception is HttpException) { - ErrorHelper.handleError(HaloApp.getInstance().application, exception.response().errorBody()?.string()) + ErrorHelper.handleError( + HaloApp.getInstance().application, + exception.response().errorBody()?.string() + ) } } }) diff --git a/app/src/main/java/com/gh/common/util/BbsStayTimeHelper.kt b/app/src/main/java/com/gh/common/util/BbsStayTimeHelper.kt index b2185e4091..576333143b 100644 --- a/app/src/main/java/com/gh/common/util/BbsStayTimeHelper.kt +++ b/app/src/main/java/com/gh/common/util/BbsStayTimeHelper.kt @@ -114,18 +114,18 @@ object BbsStayTimeHelper { @SuppressLint("CheckResult") private fun postExploreFinish() { RetrofitManager.getInstance() - .api - .postExplorerFinish() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - if (!isPublishEnv()) { - ToastUtils.toast("完成了论坛停留任务(仅测试环境有这个 toast 不要慌)") - } - disableStayTimeCount() + .api + .postExplorerFinish() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + if (!isPublishEnv()) { + ToastUtils.toast("完成了论坛停留任务(仅测试环境有这个 toast 不要慌)") } - }) + disableStayTimeCount() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/CertificationSwitchHelper.kt b/app/src/main/java/com/gh/common/util/CertificationSwitchHelper.kt index c2b5390438..ffbc3c1f30 100644 --- a/app/src/main/java/com/gh/common/util/CertificationSwitchHelper.kt +++ b/app/src/main/java/com/gh/common/util/CertificationSwitchHelper.kt @@ -18,7 +18,10 @@ object CertificationSwitchHelper { .compose(singleToMain()) .subscribe(object : BiResponse() { override fun onSuccess(data: JsonObject) { - SPUtils.setBoolean(Constants.SP_CERTIFICATION_SWITCH, data["authentication_display_switch"].asString == "on") + SPUtils.setBoolean( + Constants.SP_CERTIFICATION_SWITCH, + data["authentication_display_switch"].asString == "on" + ) } }) } diff --git a/app/src/main/java/com/gh/common/util/CollectionUtils.kt b/app/src/main/java/com/gh/common/util/CollectionUtils.kt index b80d55a22e..bd45fde645 100644 --- a/app/src/main/java/com/gh/common/util/CollectionUtils.kt +++ b/app/src/main/java/com/gh/common/util/CollectionUtils.kt @@ -25,64 +25,70 @@ object CollectionUtils { fun postCollection(context: Context, content: String, type: CollectionType, listener: OnCollectionListener) { val postCollection = when (type) { - CollectionType.article -> RetrofitManager.getInstance().getApi().postCollectionArticle(UserManager.getInstance().userId, content) - CollectionType.toolkit -> RetrofitManager.getInstance().getApi().postCollectionTools(UserManager.getInstance().userId, content) - CollectionType.answer -> RetrofitManager.getInstance().getApi().postCollectionAnswer(UserManager.getInstance().userId, content) + CollectionType.article -> RetrofitManager.getInstance().getApi() + .postCollectionArticle(UserManager.getInstance().userId, content) + CollectionType.toolkit -> RetrofitManager.getInstance().getApi() + .postCollectionTools(UserManager.getInstance().userId, content) + CollectionType.answer -> RetrofitManager.getInstance().getApi() + .postCollectionAnswer(UserManager.getInstance().userId, content) else -> return } postCollection - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener.onSuccess() - EventBus.getDefault().post(EBCollectionChanged(content, true, type)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener.onSuccess() + EventBus.getDefault().post(EBCollectionChanged(content, true, type)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - if (e != null) { - try { - val string = e.response()?.errorBody()?.string() - val errorBody = JSONObject(string) - if (errorBody.getInt("code") == 403009) { - listener.onSuccess() - return - } - } catch (e: Exception) { - e.printStackTrace() + override fun onFailure(e: HttpException?) { + super.onFailure(e) + if (e != null) { + try { + val string = e.response()?.errorBody()?.string() + val errorBody = JSONObject(string) + if (errorBody.getInt("code") == 403009) { + listener.onSuccess() + return } + } catch (e: Exception) { + e.printStackTrace() } - listener.onError() } - }) + listener.onError() + } + }) } fun deleteCollection(context: Context, id: String, type: CollectionType, listener: OnCollectionListener) { val postCollection: Observable when (type) { - CollectionType.article -> postCollection = RetrofitManager.getInstance().getApi().deletaCollectionArticle(UserManager.getInstance().userId, id) - CollectionType.toolkit -> postCollection = RetrofitManager.getInstance().getApi().deleteCollectionTools(UserManager.getInstance().userId, id) - CollectionType.answer -> postCollection = RetrofitManager.getInstance().getApi().deleteCollectionAnswer(UserManager.getInstance().userId, id) + CollectionType.article -> postCollection = + RetrofitManager.getInstance().getApi().deletaCollectionArticle(UserManager.getInstance().userId, id) + CollectionType.toolkit -> postCollection = + RetrofitManager.getInstance().getApi().deleteCollectionTools(UserManager.getInstance().userId, id) + CollectionType.answer -> postCollection = + RetrofitManager.getInstance().getApi().deleteCollectionAnswer(UserManager.getInstance().userId, id) else -> return } postCollection - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener.onSuccess() - EventBus.getDefault().post(EBCollectionChanged(id, false, type)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener.onSuccess() + EventBus.getDefault().post(EBCollectionChanged(id, false, type)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - listener.onError() - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + listener.onError() + } + }) } diff --git a/app/src/main/java/com/gh/common/util/CommentHelper.kt b/app/src/main/java/com/gh/common/util/CommentHelper.kt index 9a68c55d29..e2325bfca0 100644 --- a/app/src/main/java/com/gh/common/util/CommentHelper.kt +++ b/app/src/main/java/com/gh/common/util/CommentHelper.kt @@ -162,7 +162,8 @@ object CommentHelper { } if (questionId != null && commentEntity.me?.isModerator == true && - (commentEntity.me?.moderatorPermissions?.highlightAnswer ?: Permissions.GUEST) > Permissions.GUEST && !commentEntity.choiceness + (commentEntity.me?.moderatorPermissions?.highlightAnswer + ?: Permissions.GUEST) > Permissions.GUEST && !commentEntity.choiceness ) { dialogOptions.add("加精选") } diff --git a/app/src/main/java/com/gh/common/util/ConcernUtils.kt b/app/src/main/java/com/gh/common/util/ConcernUtils.kt index a85ca8ffb7..0c7240445e 100644 --- a/app/src/main/java/com/gh/common/util/ConcernUtils.kt +++ b/app/src/main/java/com/gh/common/util/ConcernUtils.kt @@ -24,111 +24,118 @@ object ConcernUtils { /** * autoConcern:是否自动关注'关联关注' */ - fun postConcernGameId(context: Context, gameId: String, listener: onConcernListener?, autoConcern: Boolean = false) { + fun postConcernGameId( + context: Context, + gameId: String, + listener: onConcernListener?, + autoConcern: Boolean = false + ) { val mode = if (autoConcern) "auto" else "manual" val userId = UserManager.getInstance().userId if (TextUtils.isEmpty(userId)) return RetrofitManager.getInstance().api - .postConcern(UserManager.getInstance().userId, gameId, mode) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener?.onSuccess() - EventBus.getDefault().post(EBConcernChanged(gameId, true)) - } + .postConcern(UserManager.getInstance().userId, gameId, mode) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener?.onSuccess() + EventBus.getDefault().post(EBConcernChanged(gameId, true)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - listener?.onError() - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + listener?.onError() + } + }) } fun deleteConcernData(context: Context, gameId: String, listener: onConcernListener?) { RetrofitManager.getInstance().api - .deleteConcern(UserManager.getInstance().userId, gameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener?.onSuccess() - EventBus.getDefault().post(EBConcernChanged(gameId, false)) - } + .deleteConcern(UserManager.getInstance().userId, gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener?.onSuccess() + EventBus.getDefault().post(EBConcernChanged(gameId, false)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - listener?.onError() - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + listener?.onError() + } + }) } fun updateConcernData(context: Context, data: JSONArray) { - val body = RequestBody.create(MediaType.parse("application/json"), - data.toString()) + val body = RequestBody.create( + MediaType.parse("application/json"), + data.toString() + ) RetrofitManager.getInstance().api - .putConcern(UserManager.getInstance().userId, body) - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - EventBus.getDefault().post(EBConcernChanged()) - } - }) + .putConcern(UserManager.getInstance().userId, body) + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + EventBus.getDefault().post(EBConcernChanged()) + } + }) } fun deleteConcernQuestions(context: Context, questionsId: String, listener: onConcernListener?) { RetrofitManager.getInstance().api - .deleteConcernQuestions(UserManager.getInstance().userId, questionsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener?.onSuccess() - } + .deleteConcernQuestions(UserManager.getInstance().userId, questionsId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener?.onSuccess() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - listener?.onError() - var errorString: String? = null - try { - errorString = e?.response()?.errorBody()?.string() - } catch (e1: Exception) { - e1.printStackTrace() - } - ErrorHelper.handleError(context, errorString, false) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + listener?.onError() + var errorString: String? = null + try { + errorString = e?.response()?.errorBody()?.string() + } catch (e1: Exception) { + e1.printStackTrace() } - }) + ErrorHelper.handleError(context, errorString, false) + } + }) } fun postConcernQuestions(context: Context, questionsId: String, listener: onConcernListener?) { RetrofitManager.getInstance().api - .postConcernQuestions(UserManager.getInstance().userId, questionsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - listener?.onSuccess() - } + .postConcernQuestions(UserManager.getInstance().userId, questionsId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + listener?.onSuccess() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - listener?.onError() - var errorString: String? = null - try { - errorString = e?.response()?.errorBody()?.string() - } catch (e1: Exception) { - e1.printStackTrace() - } - ErrorHelper.handleError(context, errorString, false) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + listener?.onError() + var errorString: String? = null + try { + errorString = e?.response()?.errorBody()?.string() + } catch (e1: Exception) { + e1.printStackTrace() } - }) + ErrorHelper.handleError(context, errorString, false) + } + }) } interface onConcernListener { diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index d6b0aa45ba..4cf03cda43 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -55,11 +55,11 @@ public class DataUtils { if (CommonDebug.IS_DEBUG) { return; } - + // 初始化 Sentry 约占用 90ms,这里切换到子线程初始化 AppExecutor.getIoExecutor().execute(() -> initSentry(context, channel)); } - + private static void initSentry(Context context, String channel) { SentryAndroid.init(context, options -> { // Sentry 疯狂报 ANR (很大一部分还是莫名奇妙的 ANR)严重影响到其它闪退日志的收集 @@ -76,7 +76,7 @@ public class DataUtils { options.setEnvironment(BuildConfig.FLAVOR); options.setEnableSystemEventBreadcrumbs(false); options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22"); - + options.setBeforeSend((event, hint) -> { if (BuildConfig.DEBUG) { return null; @@ -96,7 +96,7 @@ public class DataUtils { return breadcrumb; })); }); - + Sentry.configureScope(scope -> { if (com.gh.gamecenter.common.BuildConfig.BUILD_TIME != 0L) { scope.setTag("alias", "内测版" + BuildConfig.VERSION_NAME); diff --git a/app/src/main/java/com/gh/common/util/DeviceTokenUtils.kt b/app/src/main/java/com/gh/common/util/DeviceTokenUtils.kt index 03697ca8ed..79ac1767b6 100644 --- a/app/src/main/java/com/gh/common/util/DeviceTokenUtils.kt +++ b/app/src/main/java/com/gh/common/util/DeviceTokenUtils.kt @@ -24,18 +24,18 @@ object DeviceTokenUtils { fun syncServerTime(context: Context) { val sp = PreferenceManager.getDefaultSharedPreferences(context) RetrofitManager.getInstance().api.time - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: TimeEntity?) { - val editor = sp.edit() - response?.time?.let { - editor.putLong("server_time", it) - editor.putLong("client_time", System.currentTimeMillis() / 1000) - editor.apply() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: TimeEntity?) { + val editor = sp.edit() + response?.time?.let { + editor.putLong("server_time", it) + editor.putLong("client_time", System.currentTimeMillis() / 1000) + editor.apply() } - }) + } + }) } @JvmStatic diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 5900cdc175..a838aa7e2b 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -1325,6 +1325,7 @@ public class DialogUtils { dialog.show(); } } + public static void showGameH5DownloadDialog(Context context, GameEntity gameEntity, RegionSetting.GameH5Download gameH5Download) { context = checkDialogContext(context); diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 710320a6d5..6ef2b91c83 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -95,7 +95,14 @@ object DirectUtils { * 跳转到特定页面,根据 [type] 决定跳转页面,[path] 为跳转前的页面名称 */ @JvmStatic - fun directToSpecificPage(context: Context, type: String, link: String, text: String? = "", entrance: String? = null, path: String? = null) { + fun directToSpecificPage( + context: Context, + type: String, + link: String, + text: String? = "", + entrance: String? = null, + path: String? = null + ) { when (type) { HOST_ARTICLE -> directToArticle(context, id = link, entrance = entrance) @@ -111,9 +118,19 @@ object DirectUtils { HOST_WEB -> directToWebView(context, url = link, entrance = entrance) - HOST_DOWNLOAD -> directToDownloadManagerAndStartDownload(context, gameId = link, packageName = text, entrance = entrance) + HOST_DOWNLOAD -> directToDownloadManagerAndStartDownload( + context, + gameId = link, + packageName = text, + entrance = entrance + ) - HOST_UPDATE -> directToDownloadManagerAndStartUpdate(context, gameId = link, packageName = text, entrance = entrance) + HOST_UPDATE -> directToDownloadManagerAndStartUpdate( + context, + gameId = link, + packageName = text, + entrance = entrance + ) HOST_LIBAO -> directToGiftDetail(context, giftId = link, entrance = entrance) @@ -126,7 +143,13 @@ object DirectUtils { directToLinkPage(context, linkEntity, entrance, path, null) } - fun directToLinkPage(context: Context, linkEntity: LinkEntity, entrance: String, path: String, exposureEvent: ExposureEvent? = null) { + fun directToLinkPage( + context: Context, + linkEntity: LinkEntity, + entrance: String, + path: String, + exposureEvent: ExposureEvent? = null + ) { directToLinkPage(context, linkEntity, entrance, path, exposureEvent, null) } @@ -209,9 +232,21 @@ object DirectUtils { directToCommunity(context, CommunityEntity(linkEntity.link!!, linkEntity.text!!)) } - "community_article", "社区文章" -> directToCommunityArticle(context, linkEntity.community!!, linkEntity.link!!, entrance, path) + "community_article", "社区文章" -> directToCommunityArticle( + context, + linkEntity.community!!, + linkEntity.link!!, + entrance, + path + ) - "community_column", "社区专题" -> directToCommunityColumn(context, linkEntity.community, linkEntity.link!!, entrance, path) + "community_column", "社区专题" -> directToCommunityColumn( + context, + linkEntity.community, + linkEntity.link!!, + entrance, + path + ) "community_special_column" -> directAskColumnDetail( context, linkEntity.link @@ -223,7 +258,11 @@ object DirectUtils { linkEntity.link!!.contains("v.douyin") && PackageHelper.localPackageNameSet.contains("com.ss.android.ugc.aweme") -> { directDouyin(context, "1402577827140941") } - else -> directToWebView(context, url = linkEntity.link!!, entrance = BaseActivity.mergeEntranceAndPath(entrance, path)) + else -> directToWebView( + context, + url = linkEntity.link!!, + entrance = BaseActivity.mergeEntranceAndPath(entrance, path) + ) } } @@ -233,7 +272,16 @@ object DirectUtils { "qqqun", "QQ群" -> directToQqGroup(context, linkEntity.link!!) - "tag" -> context.startActivity(TagsActivity.getIntent(context, linkEntity.text!!, linkEntity.title, entrance, path, exposureEvent?.source)) + "tag" -> context.startActivity( + TagsActivity.getIntent( + context, + linkEntity.text!!, + linkEntity.title, + entrance, + path, + exposureEvent?.source + ) + ) "all_community_article" -> directSimpleArticleList( context, linkEntity.link @@ -244,7 +292,14 @@ object DirectUtils { "catalog" -> directCatalog(context, linkEntity.link!!, linkEntity.text!!, entrance, path) - "category_v2" -> directCategoryV2(context, linkEntity.link!!, linkEntity.text!!, entrance, path, exposureEvent) + "category_v2" -> directCategoryV2( + context, + linkEntity.link!!, + linkEntity.text!!, + entrance, + path, + exposureEvent + ) "block", "版块" -> { if (linkEntity.link.isNullOrEmpty()) return @@ -365,7 +420,13 @@ object DirectUtils { "halo_tab" -> directToPersonalTab(context) - "common_collection" -> directToCommonCollectionDetail(context, linkEntity.link ?: "", linkEntity.blockId, linkEntity.blockName, entrance) + "common_collection" -> directToCommonCollectionDetail( + context, + linkEntity.link ?: "", + linkEntity.blockId, + linkEntity.blockName, + entrance + ) //"h5_game_center" -> directLetoGameCenter(context) @@ -416,7 +477,13 @@ object DirectUtils { * 跳转至专题合集 */ @JvmStatic - fun directToColumnCollection(context: Context, id: String, position: Int = -1, entrance: String, columnName: String = "") { + fun directToColumnCollection( + context: Context, + id: String, + position: Int = -1, + entrance: String, + columnName: String = "" + ) { if (id.isEmpty()) return val bundle = Bundle() bundle.putString(KEY_TO, ColumnCollectionDetailActivity::class.java.name) @@ -594,7 +661,12 @@ object DirectUtils { * 跳转到游戏评分详情 */ @JvmStatic - fun directToGameRatingDetail(context: Context, gameId: String? = "", commentId: String? = "", entrance: String? = null) { + fun directToGameRatingDetail( + context: Context, + gameId: String? = "", + commentId: String? = "", + entrance: String? = null + ) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_GAMEID, gameId) @@ -618,7 +690,12 @@ object DirectUtils { } @JvmStatic - fun directToGameDetail(context: Context, id: String, defaultTab: Int = GameDetailFragment.INDEX_DESC, entrance: String? = null) { + fun directToGameDetail( + context: Context, + id: String, + defaultTab: Int = GameDetailFragment.INDEX_DESC, + entrance: String? = null + ) { val bundle = Bundle() bundle.putString(KEY_TO, GameDetailActivity::class.java.name) bundle.putString(KEY_ENTRANCE, entrance) @@ -634,14 +711,23 @@ object DirectUtils { // 专栏 @JvmStatic - fun directToSubject(context: Context, id: String, subjectName: String? = "", entrance: String? = null, exposureEvent: ExposureEvent? = null) { + fun directToSubject( + context: Context, + id: String, + subjectName: String? = "", + entrance: String? = null, + exposureEvent: ExposureEvent? = null + ) { if (id.isEmpty()) return val bundle = Bundle() val subjectData = SubjectData(subjectId = id, subjectName = subjectName, isOrder = false) bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_TO, SubjectActivity::class.java.name) bundle.putParcelable(EntranceConsts.KEY_SUBJECT_DATA, subjectData) - if (exposureEvent != null) bundle.putParcelableArrayList(KEY_EXPOSURE_SOURCE_LIST, ArrayList(exposureEvent.source)) + if (exposureEvent != null) bundle.putParcelableArrayList( + KEY_EXPOSURE_SOURCE_LIST, + ArrayList(exposureEvent.source) + ) jumpActivity(context, bundle) } @@ -693,7 +779,12 @@ object DirectUtils { * 跳转到下载管理器并开始下载 [gameId] 和 [packageName] 用于唯一确定一个下载文件 */ @JvmStatic - fun directToDownloadManagerAndStartDownload(context: Context, gameId: String? = "", packageName: String? = "", entrance: String? = null) { + fun directToDownloadManagerAndStartDownload( + context: Context, + gameId: String? = "", + packageName: String? = "", + entrance: String? = null + ) { DownloadHelper.createABrandNewDownloadTaskQuietly(gameId, packageName) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) @@ -706,7 +797,12 @@ object DirectUtils { } @JvmStatic - fun directToDownloadManagerAndStartUpdate(context: Context, gameId: String? = "", packageName: String? = "", entrance: String? = null) { + fun directToDownloadManagerAndStartUpdate( + context: Context, + gameId: String? = "", + packageName: String? = "", + entrance: String? = null + ) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_TO, DownloadManagerActivity.TAG) @@ -892,7 +988,13 @@ object DirectUtils { } @JvmStatic - fun directToCommunityArticle(context: Context, articleId: String?, communityId: String?, entrance: String?, path: String?) { + fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_PATH, path) @@ -903,7 +1005,13 @@ object DirectUtils { } @JvmStatic - fun directToCommunityArticle(context: Context, community: CommunityEntity?, articleId: String?, entrance: String?, path: String?) { + fun directToCommunityArticle( + context: Context, + community: CommunityEntity?, + articleId: String?, + entrance: String?, + path: String? + ) { if (articleId.isNullOrEmpty()) return val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) @@ -918,7 +1026,13 @@ object DirectUtils { * 跳转到社区专题 */ @JvmStatic - fun directToCommunityColumn(context: Context, community: CommunityEntity?, subjectId: String, entrance: String?, path: String?) { + fun directToCommunityColumn( + context: Context, + community: CommunityEntity?, + subjectId: String, + entrance: String?, + path: String? + ) { if (subjectId.isEmpty()) return val bundle = Bundle() bundle.putString(KEY_PATH, path) @@ -1008,7 +1122,12 @@ object DirectUtils { * @param fixedTopAmwayCommentId 需要置顶的安利Id */ @JvmStatic - fun directToAmway(context: Context, fixedTopAmwayCommentId: String? = null, entrance: String? = null, path: String? = "") { + fun directToAmway( + context: Context, + fixedTopAmwayCommentId: String? = null, + entrance: String? = null, + path: String? = "" + ) { val bundle = Bundle() bundle.putString(KEY_ENTRANCE, entrance ?: ENTRANCE_BROWSER) bundle.putString(KEY_TO, AmwayActivity::class.java.name) @@ -1084,7 +1203,12 @@ object DirectUtils { @JvmStatic @JvmOverloads - fun directToFullScreenWebPage(context: Context, url: String, webViewHandleBackPressed: Boolean = false, entrance: String? = null) { + fun directToFullScreenWebPage( + context: Context, + url: String, + webViewHandleBackPressed: Boolean = false, + entrance: String? = null + ) { context.startActivity(FullScreenWebActivity.getIntent(context, url, webViewHandleBackPressed, entrance)) } @@ -1150,7 +1274,13 @@ object DirectUtils { * 跳转分类 */ @JvmStatic - fun directCategoryDirectory(context: Context, categoryId: String, categoryTitle: String, entrance: String? = null, path: String? = "") { + fun directCategoryDirectory( + context: Context, + categoryId: String, + categoryTitle: String, + entrance: String? = null, + path: String? = "" + ) { if (categoryId.isEmpty()) return val bundle = Bundle() bundle.putString(KEY_TO, CategoryDirectoryActivity::class.java.name) @@ -1199,7 +1329,10 @@ object DirectUtils { bundle.putString(KEY_CATEGORY_ID, categoryId) bundle.putString(KEY_CATEGORY_TITLE, categoryTitle) bundle.putString(KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) - if (exposureEvent != null) bundle.putParcelableArrayList(KEY_EXPOSURE_SOURCE_LIST, ArrayList(exposureEvent.source)) + if (exposureEvent != null) bundle.putParcelableArrayList( + KEY_EXPOSURE_SOURCE_LIST, + ArrayList(exposureEvent.source) + ) jumpActivity(context, bundle) } @@ -1207,7 +1340,13 @@ object DirectUtils { * 跳转到问题标签详情 */ @JvmStatic - fun directAskColumnLabelDetail(context: Context, tag: String, community: CommunityEntity, entrance: String? = null, path: String? = "") { + fun directAskColumnLabelDetail( + context: Context, + tag: String, + community: CommunityEntity, + entrance: String? = null, + path: String? = "" + ) { // val bundle = Bundle() // bundle.putString(KEY_TO, AskColumnDetailActivity::class.java.name) // bundle.putString(KEY_ASK_TAG, tag) @@ -1221,7 +1360,13 @@ object DirectUtils { * 跳转到专栏详情 */ @JvmStatic - fun directAskColumnDetail(context: Context, columnId: String, community: CommunityEntity, entrance: String? = null, path: String? = "") { + fun directAskColumnDetail( + context: Context, + columnId: String, + community: CommunityEntity, + entrance: String? = null, + path: String? = "" + ) { // if (columnId.isEmpty()) return // val bundle = Bundle() // bundle.putString(KEY_TO, AskColumnDetailActivity::class.java.name) @@ -1431,7 +1576,13 @@ object DirectUtils { Constants.COMMODITY_DETAIL_ADDRESS } - url = String.format(Locale.CHINA, "%s&shopid=%s×tamp=%d", url, commodityId, (Date().time / 1000 / 1000.toFloat()).roundToInt()) + url = String.format( + Locale.CHINA, + "%s&shopid=%s×tamp=%d", + url, + commodityId, + (Date().time / 1000 / 1000.toFloat()).roundToInt() + ) directToFullScreenWebPage(context, url, true) } @@ -1451,7 +1602,13 @@ object DirectUtils { Constants.ENERGY_RECORD_ADDRESS } - url = String.format(Locale.CHINA, "%s&position=%s×tamp=%d", url, position, (Date().time / 1000 / 1000.toFloat()).roundToInt()) + url = String.format( + Locale.CHINA, + "%s&position=%s×tamp=%d", + url, + position, + (Date().time / 1000 / 1000.toFloat()).roundToInt() + ) directToFullScreenWebPage(context, url, true) } @@ -1479,7 +1636,13 @@ object DirectUtils { Constants.ORDER_DETAIL_ADDRESS } - url = String.format(Locale.CHINA, "%s&order_id=%s×tamp=%d", url, orderId, (Date().time / 1000 / 1000.toFloat()).roundToInt()) + url = String.format( + Locale.CHINA, + "%s&order_id=%s×tamp=%d", + url, + orderId, + (Date().time / 1000 / 1000.toFloat()).roundToInt() + ) directToFullScreenWebPage(context, url, true) } diff --git a/app/src/main/java/com/gh/common/util/DownloadDialogHelper.kt b/app/src/main/java/com/gh/common/util/DownloadDialogHelper.kt index ae936df40f..fcd6c30741 100644 --- a/app/src/main/java/com/gh/common/util/DownloadDialogHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadDialogHelper.kt @@ -13,7 +13,12 @@ object DownloadDialogHelper { * [callback] 执行点击关闭以后会执行的代码块,没有弹窗也会执行这个代码块 */ @JvmStatic - fun findAvailableDialogAndShow(context: Context, gameEntity: GameEntity, apkEntity: ApkEntity, callback: EmptyCallback) { + fun findAvailableDialogAndShow( + context: Context, + gameEntity: GameEntity, + apkEntity: ApkEntity, + callback: EmptyCallback + ) { val dialog = retrieveAvailableDialog(gameEntity, apkEntity) if (dialog != null) { showDownloadDialog(context, dialog, callback) @@ -37,57 +42,65 @@ object DownloadDialogHelper { // 共有 8 种可能 // 1. 不指定包名、机型和系统版本 if (dialog.rule.packageName.isEmpty() - && dialog.rule.models.isEmpty() - && dialog.rule.systemVersions.isEmpty()) { + && dialog.rule.models.isEmpty() + && dialog.rule.systemVersions.isEmpty() + ) { return dialog } // 2. 指定包名不管机型和系统 if (dialog.rule.packageName == apkEntity.packageName - && dialog.rule.models.isEmpty() - && dialog.rule.systemVersions.isEmpty()) { + && dialog.rule.models.isEmpty() + && dialog.rule.systemVersions.isEmpty() + ) { return dialog } // 3. 指定机型不管包名和系统 if (dialog.rule.models.contains(Build.MODEL) - && dialog.rule.packageName.isEmpty() - && dialog.rule.systemVersions.isEmpty()) { + && dialog.rule.packageName.isEmpty() + && dialog.rule.systemVersions.isEmpty() + ) { return dialog } // 4. 指定系统不管包名和机型 if (dialog.rule.systemVersions.contains(Build.VERSION.RELEASE) - && dialog.rule.packageName.isEmpty() - && dialog.rule.models.isEmpty()) { + && dialog.rule.packageName.isEmpty() + && dialog.rule.models.isEmpty() + ) { return dialog } // 5. 指定包名和机型不管系统 if (dialog.rule.packageName == apkEntity.packageName - && dialog.rule.models.contains(Build.MODEL) - && dialog.rule.systemVersions.isEmpty()) { + && dialog.rule.models.contains(Build.MODEL) + && dialog.rule.systemVersions.isEmpty() + ) { return dialog } // 6. 指定包名和系统不管机型 if (dialog.rule.packageName == apkEntity.packageName - && dialog.rule.systemVersions.contains(Build.VERSION.RELEASE) - && dialog.rule.models.isEmpty()) { + && dialog.rule.systemVersions.contains(Build.VERSION.RELEASE) + && dialog.rule.models.isEmpty() + ) { return dialog } // 7. 指定机型和系统不管包名 if (dialog.rule.systemVersions.contains(Build.VERSION.RELEASE) - && dialog.rule.models.contains(Build.MODEL) - && dialog.rule.packageName.isEmpty()) { + && dialog.rule.models.contains(Build.MODEL) + && dialog.rule.packageName.isEmpty() + ) { return dialog } // 8.指定包名、机型和系统版本 if (dialog.rule.packageName == apkEntity.packageName - && dialog.rule.models.contains(Build.MODEL) - && dialog.rule.systemVersions.contains(Build.VERSION.RELEASE)) { + && dialog.rule.models.contains(Build.MODEL) + && dialog.rule.systemVersions.contains(Build.VERSION.RELEASE) + ) { return dialog } } else return null diff --git a/app/src/main/java/com/gh/common/util/DownloadHelper.kt b/app/src/main/java/com/gh/common/util/DownloadHelper.kt index 470dc32a87..b8392a5ce1 100644 --- a/app/src/main/java/com/gh/common/util/DownloadHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadHelper.kt @@ -25,34 +25,38 @@ object DownloadHelper { } RetrofitManager.getInstance() - .api - .getGameDigest(gameId) - .map(ApkActiveUtils.filterMapper) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: GameEntity?) { - response?.let { - if (response.getApk().size > 1) { - for (apk in response.getApk()) { - if (packageName == apk.packageName) { - DownloadManager.createDownload(HaloApp.getInstance().application, - apk, response, "", EntranceConsts.ENTRANCE_RECOMMEND, "", false, null) - block.invoke() - } + .api + .getGameDigest(gameId) + .map(ApkActiveUtils.filterMapper) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: GameEntity?) { + response?.let { + if (response.getApk().size > 1) { + for (apk in response.getApk()) { + if (packageName == apk.packageName) { + DownloadManager.createDownload( + HaloApp.getInstance().application, + apk, response, "", EntranceConsts.ENTRANCE_RECOMMEND, "", false, null + ) + block.invoke() } - } else if (response.getApk().size == 1) { - DownloadManager.createDownload(HaloApp.getInstance().application, - response, "", EntranceConsts.ENTRANCE_RECOMMEND, "", false, null) - block.invoke() } + } else if (response.getApk().size == 1) { + DownloadManager.createDownload( + HaloApp.getInstance().application, + response, "", EntranceConsts.ENTRANCE_RECOMMEND, "", false, null + ) + block.invoke() } } + } - override fun onFailure(e: HttpException?) { - e?.printStackTrace() - block.invoke() - } - }) + override fun onFailure(e: HttpException?) { + e?.printStackTrace() + block.invoke() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index d928565134..dae2959189 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -80,7 +80,13 @@ object DownloadItemUtils { if (!queue.contains(platform) && !TextUtils.isEmpty(platform)) { queue.offer(platform) if (AppDebugConfig.IS_DEBUG) { - AppDebugConfig.logMethodWithParams(DownloadItemUtils::class.java, queue.size, gameEntity.brief, downloadEntity.platform, index) + AppDebugConfig.logMethodWithParams( + DownloadItemUtils::class.java, + queue.size, + gameEntity.brief, + downloadEntity.platform, + index + ) } // 有两个平台同时下载的时候启用 if (queue.size == 2) { @@ -127,7 +133,15 @@ object DownloadItemUtils { context: Context, gameEntity: GameEntity, holder: GameViewHolder, isShowPlatform: Boolean, hideDownloadBtnIfNoAvailableContent: Boolean ) { - updateItem(context, gameEntity, holder, isShowPlatform, PluginLocation.only_game, hideDownloadBtnIfNoAvailableContent, null) + updateItem( + context, + gameEntity, + holder, + isShowPlatform, + PluginLocation.only_game, + hideDownloadBtnIfNoAvailableContent, + null + ) } fun updateItem( @@ -152,7 +166,13 @@ object DownloadItemUtils { // 显示预约 if (gameEntity.isReservable) { updateItemViewStatus(holder, false, briefStyle, gameEntity.columnRecommend, isShowRecommendStar) - updateDownloadButton(context, holder.gameDownloadBtn, gameEntity, hideDownloadBtnIfNoAvailableContent, pluginLocation) + updateDownloadButton( + context, + holder.gameDownloadBtn, + gameEntity, + hideDownloadBtnIfNoAvailableContent, + pluginLocation + ) return } if (gameEntity.getApk().isEmpty() || gameEntity.downloadOffStatus != null) { @@ -162,7 +182,13 @@ object DownloadItemUtils { } else { updatePluginItem(context, holder, gameEntity, isShowPlatform, briefStyle, isShowRecommendStar) } - updateDownloadButton(context, holder.gameDownloadBtn, gameEntity, hideDownloadBtnIfNoAvailableContent, pluginLocation) + updateDownloadButton( + context, + holder.gameDownloadBtn, + gameEntity, + hideDownloadBtnIfNoAvailableContent, + pluginLocation + ) } fun updateDownloadButton( @@ -265,11 +291,12 @@ object DownloadItemUtils { } else { setText(R.string.install) } - buttonStyle = if (downloadEntity.isPluggable && PackagesManager.isInstalled(downloadEntity.packageName)) { - DownloadButton.ButtonStyle.PLUGIN - } else { - DownloadButton.ButtonStyle.NORMAL - } + buttonStyle = + if (downloadEntity.isPluggable && PackagesManager.isInstalled(downloadEntity.packageName)) { + DownloadButton.ButtonStyle.PLUGIN + } else { + DownloadButton.ButtonStyle.NORMAL + } } } } else { @@ -350,12 +377,20 @@ object DownloadItemUtils { holder.gameDownloadSpeed.text = String.format( "%s - %s(剩%s)", platform, SpeedUtils.getSpeed(downloadEntity.speed), - SpeedUtils.getRemainTime(downloadEntity.size, downloadEntity.progress, downloadEntity.speed * 1024) + SpeedUtils.getRemainTime( + downloadEntity.size, + downloadEntity.progress, + downloadEntity.speed * 1024 + ) ) } else { holder.gameDownloadSpeed.text = String.format( "%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.speed), - SpeedUtils.getRemainTime(downloadEntity.size, downloadEntity.progress, downloadEntity.speed * 1024) + SpeedUtils.getRemainTime( + downloadEntity.size, + downloadEntity.progress, + downloadEntity.speed * 1024 + ) ) } holder.gameDownloadPercentage.text = downloadEntity.percent.toString() + "%" @@ -380,7 +415,8 @@ object DownloadItemUtils { val xapkStatus = downloadEntity.meta[XapkInstaller.XAPK_UNZIP_STATUS] if (XapkUnzipStatus.UNZIPPING.name == xapkStatus) { val percent = downloadEntity.meta[XapkInstaller.XAPK_UNZIP_PERCENT] - holder.gameProgressbar.progressDrawable = context.resources.getDrawable(R.drawable.progressbar_xapk_style) + holder.gameProgressbar.progressDrawable = + context.resources.getDrawable(R.drawable.progressbar_xapk_style) holder.gameDownloadSpeed.setText(R.string.unzipping) holder.gameProgressbar.progress = (java.lang.Float.valueOf(percent) * 10).toInt() holder.gameDownloadPercentage.text = "$percent%" @@ -504,7 +540,19 @@ object DownloadItemUtils { traceEvent: ExposureEvent?, clickCallback: EmptyCallback? ) { - setOnClickListener(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent, clickCallback, null, null) + setOnClickListener( + context, + downloadBtn, + gameEntity, + position, + adapter, + entrance, + location, + traceEvent, + clickCallback, + null, + null + ) } /** @@ -618,7 +666,7 @@ object DownloadItemUtils { } }) } - },object : CancelListener { + }, object : CancelListener { override fun onCancel() { NewFlatLogUtils.logMyGameCancelReserveDialogClick( "关闭弹窗", @@ -648,7 +696,13 @@ object DownloadItemUtils { if (isPlay) { HistoryHelper.insertGameEntity(gameEntity) } - val i = WebActivity.getIntentForWebGame(context, gameEntity.h5Link!!.link, gameEntity.name, isPlay, linkEntity.closeButton) + val i = WebActivity.getIntentForWebGame( + context, + gameEntity.h5Link!!.link, + gameEntity.name, + isPlay, + linkEntity.closeButton + ) context.startActivity(i) } } else if (gameEntity.getApk().size == 1) { @@ -657,7 +711,17 @@ object DownloadItemUtils { override fun onCallback() { allStateClickCallback?.onCallback() clickCallback?.onCallback() - onNormalClick(context, downloadBtn, gameEntity, position, adapter, entrance, location, traceEvent, refreshCallback) + onNormalClick( + context, + downloadBtn, + gameEntity, + position, + adapter, + entrance, + location, + traceEvent, + refreshCallback + ) } } @@ -773,7 +837,8 @@ object DownloadItemUtils { } else if (str == context.getString(R.string.install)) { val downloadEntity = SimulatorGameManager.findDownloadEntityByUrl(apk.url) if (gameEntity.simulator != null) { - val isInstalled = PackageUtils.isInstalledFromAllPackage(context, gameEntity.simulator!!.apk!!.packageName) + val isInstalled = + PackageUtils.isInstalledFromAllPackage(context, gameEntity.simulator!!.apk!!.packageName) if (downloadEntity != null && SimulatorGameManager.isSimulatorGame(gameEntity) && !isInstalled) { SimulatorDownloadManager.getInstance().showDownloadDialog( context, gameEntity.simulator, @@ -857,7 +922,15 @@ object DownloadItemUtils { val msg = FileUtils.isCanDownload(context, gameEntity.getApk()[0].size) if (TextUtils.isEmpty(msg)) { - DownloadManager.createDownload(context, gameEntity, context.getString(R.string.download), entrance, location, isSubscribe, traceEvent) + DownloadManager.createDownload( + context, + gameEntity, + context.getString(R.string.download), + entrance, + location, + isSubscribe, + traceEvent + ) Utils.toast(context, gameEntity.name + "已加入下载队列") downloadBtn.setText(R.string.downloading) downloadBtn.buttonStyle = DownloadButton.ButtonStyle.DOWNLOADING_NORMAL diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 445646856a..70cc90692d 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -62,31 +62,38 @@ object DownloadNotificationHelper { } else { intent.action = ACTION_DOWNLOAD } - val pendingIntent = PendingIntent.getBroadcast(HaloApp.getInstance().application, - downloadNotificationId, - intent, - PendingIntent.FLAG_UPDATE_CURRENT) + val pendingIntent = PendingIntent.getBroadcast( + HaloApp.getInstance().application, + downloadNotificationId, + intent, + PendingIntent.FLAG_UPDATE_CURRENT + ) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val channel = NotificationChannel(DOWNLOAD_CHANNEL_ID, DOWNLOAD_CHANNEL_ID, NotificationManager.IMPORTANCE_LOW) + val channel = + NotificationChannel(DOWNLOAD_CHANNEL_ID, DOWNLOAD_CHANNEL_ID, NotificationManager.IMPORTANCE_LOW) notificationManager.createNotificationChannel(channel) } val whenTime = 1000 * 60 * (System.currentTimeMillis() / 1000 / 60) val builder = NotificationCompat.Builder(HaloApp.getInstance().application, DOWNLOAD_CHANNEL_ID) - .setContentTitle(entity.name) - .setSmallIcon(getNotificationIcon()) - .setContentIntent(pendingIntent) - .setGroup(DOWNLOAD_GROUP_KEY) - .setWhen(whenTime) + .setContentTitle(entity.name) + .setSmallIcon(getNotificationIcon()) + .setContentIntent(pendingIntent) + .setGroup(DOWNLOAD_GROUP_KEY) + .setWhen(whenTime) if (xapkStatus == XapkUnzipStatus.FAILURE.name) { builder.setContentText("《" + entity.name + "》解压失败,点击查看详情~") } else { when (entity.status) { - DownloadStatus.downloading -> builder.setContentText(String.format("%s(剩%s)", + DownloadStatus.downloading -> builder.setContentText( + String.format( + "%s(剩%s)", SpeedUtils.getSpeed(entity.speed), - SpeedUtils.getRemainTime(entity.size, entity.progress, entity.speed * 1024))) + SpeedUtils.getRemainTime(entity.size, entity.progress, entity.speed * 1024) + ) + ) DownloadStatus.done -> builder.setContentText("下载完成,点击立即安装") DownloadStatus.waiting -> builder.setContentText("等待中") DownloadStatus.subscribe, @@ -116,18 +123,19 @@ object DownloadNotificationHelper { } if (entity.status == DownloadStatus.delete - || entity.status == DownloadStatus.cancel - || entity.status == DownloadStatus.hijack - || entity.status == DownloadStatus.unqualified - || entity.status == DownloadStatus.unavailable - || entity.status == DownloadStatus.banned - || entity.status == DownloadStatus.uncertificated - || entity.status == DownloadStatus.notfound - || entity.status == DownloadStatus.overflow - || (entity.status == DownloadStatus.done // 触发安装事件以后也 cancel 掉通知 - && !entity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION].isNullOrEmpty() - && xapkStatus != XapkUnzipStatus.FAILURE.name) - || entity.status == DownloadStatus.done && entity.isSimulatorGame()) {//模拟器游戏下载完需要cancel掉通知 + || entity.status == DownloadStatus.cancel + || entity.status == DownloadStatus.hijack + || entity.status == DownloadStatus.unqualified + || entity.status == DownloadStatus.unavailable + || entity.status == DownloadStatus.banned + || entity.status == DownloadStatus.uncertificated + || entity.status == DownloadStatus.notfound + || entity.status == DownloadStatus.overflow + || (entity.status == DownloadStatus.done // 触发安装事件以后也 cancel 掉通知 + && !entity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION].isNullOrEmpty() + && xapkStatus != XapkUnzipStatus.FAILURE.name) + || entity.status == DownloadStatus.done && entity.isSimulatorGame() + ) {//模拟器游戏下载完需要cancel掉通知 requireUpdateNotificationGroupDelay = true notificationManager.cancel(entity.path, DOWNLOAD_NOTIFICATION_ID) } else { @@ -174,7 +182,8 @@ object DownloadNotificationHelper { // 删除组可能会把组内所有通知一并删除 notificationManager.cancel(DOWNLOAD_NOTIFICATION_FOLD_ID) } else if (downloadNotificationSize != 0 && downloadGroupNotificationSize == 0) { - val groupBuilder = NotificationCompat.Builder(HaloApp.getInstance().application, DOWNLOAD_CHANNEL_ID) + val groupBuilder = + NotificationCompat.Builder(HaloApp.getInstance().application, DOWNLOAD_CHANNEL_ID) .setSmallIcon(getNotificationIcon()) .setGroup(DOWNLOAD_GROUP_KEY) .setGroupSummary(true) diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index 13b3fd0687..eab4ca6652 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -139,7 +139,7 @@ object DownloadObserver { // 删除任务 downloadEntity.status = DownloadStatus.cancel downloadManager.cancel(downloadEntity.url) - }else if (DownloadStatus.banned == downloadEntity.status) { + } else if (DownloadStatus.banned == downloadEntity.status) { ToastUtils.showToast("网络异常") // 删除任务 downloadEntity.status = DownloadStatus.cancel @@ -215,7 +215,10 @@ object DownloadObserver { downloadEntity.path ) ) - downloadEntity.isPlugin -> Utils.toast(mApplication, downloadEntity.name + " - " + platform + " - 下载完成") + downloadEntity.isPlugin -> Utils.toast( + mApplication, + downloadEntity.name + " - " + platform + " - 下载完成" + ) else -> { if (downloadEntity.isVGame()) { VHelper.showFloatingWindow(downloadEntity.packageName) @@ -237,7 +240,10 @@ object DownloadObserver { val gameName = downloadEntity.getMetaExtra(Constants.GAME_NAME) if (simulatorJson.isEmpty()) return val simulator = GsonUtils.fromJson(simulatorJson, SimulatorEntity::class.java) - val isInstalled = PackageUtils.isInstalledFromAllPackage(HaloApp.getInstance().application, simulator.apk?.packageName) + val isInstalled = PackageUtils.isInstalledFromAllPackage( + HaloApp.getInstance().application, + simulator.apk?.packageName + ) if (!isInstalled) { val currentActivity = AppManager.getInstance().currentActivity() ?: return @@ -258,7 +264,11 @@ object DownloadObserver { Utils.toast(mApplication, R.string.install_failure_hint) downloadManager.cancel(downloadEntity.url) } else { - if (PackageUtils.isCanLaunchSetup(mApplication, downloadEntity.path) || downloadType == Constants.SMOOTH_GAME) { + if (PackageUtils.isCanLaunchSetup( + mApplication, + downloadEntity.path + ) || downloadType == Constants.SMOOTH_GAME + ) { downloadEntity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION] = "YES" tryWithDefaultCatch { PackageInstaller.install(mApplication, downloadEntity, false) @@ -305,15 +315,23 @@ object DownloadObserver { if (downloadType == Constants.SIMULATOR_DOWNLOAD) { val currentActivity = AppManager.getInstance().currentActivity() ?: return - DialogUtils.showSimulatorParseErrorDialog(currentActivity, downloadEntity.gameId, downloadEntity.name,object :ConfirmListener{ - override fun onConfirm() { - val simulator = HaloApp.get(downloadEntity.name, true) as? SimulatorEntity - ?: return - DownloadManager.getInstance().cancel(downloadEntity.url, true, true, false) - SimulatorDownloadManager.getInstance() - .showDownloadDialog(currentActivity, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME) - } - }) + DialogUtils.showSimulatorParseErrorDialog( + currentActivity, + downloadEntity.gameId, + downloadEntity.name, + object : ConfirmListener { + override fun onConfirm() { + val simulator = HaloApp.get(downloadEntity.name, true) as? SimulatorEntity + ?: return + DownloadManager.getInstance().cancel(downloadEntity.url, true, true, false) + SimulatorDownloadManager.getInstance() + .showDownloadDialog( + currentActivity, + simulator, + SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME + ) + } + }) } } } @@ -341,7 +359,8 @@ object DownloadObserver { if (downloadEntity.isPluggable) { type = ExposureUtils.DownloadType.PLUGIN_DOWNLOAD } - val isPlatformRecommend = java.lang.Boolean.parseBoolean(downloadEntity.getMetaExtra(Constants.IS_PLATFORM_RECOMMEND)) + val isPlatformRecommend = + java.lang.Boolean.parseBoolean(downloadEntity.getMetaExtra(Constants.IS_PLATFORM_RECOMMEND)) ExposureUtils.logADownloadCompleteExposureEvent( GameEntity( id = downloadEntity.gameId, diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index bb3a0033db..eb2cde7f2e 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -90,6 +90,7 @@ public class EntranceUtils { context.startActivity(SplashScreenActivity.getSplashScreenIntent(context, bundle)); } } + public static void saveShortcut(String activityName, @Nullable Bundle bundle) { if (BuildConfig.DEBUG) { if (activityName.contains("MainActivity")) { diff --git a/app/src/main/java/com/gh/common/util/ErrorHelper.kt b/app/src/main/java/com/gh/common/util/ErrorHelper.kt index 75421750d8..d6cdc2d2d4 100644 --- a/app/src/main/java/com/gh/common/util/ErrorHelper.kt +++ b/app/src/main/java/com/gh/common/util/ErrorHelper.kt @@ -68,7 +68,13 @@ object ErrorHelper { */ @JvmStatic @JvmOverloads - fun handleError(context: Context, errorString: String?, showHighPriorityHint: Boolean = false, realNameConfirmListener: ConfirmListener? = null, entrance: String = "") { + fun handleError( + context: Context, + errorString: String?, + showHighPriorityHint: Boolean = false, + realNameConfirmListener: ConfirmListener? = null, + entrance: String = "" + ) { val errorEntity = errorString?.toObject() if (errorEntity == null) { @@ -195,7 +201,11 @@ object ErrorHelper { } } - private fun handleRealNameError(context: Context, errorEntity: ErrorEntity, realNameConfirmListener: ConfirmListener?) { + private fun handleRealNameError( + context: Context, + errorEntity: ErrorEntity, + realNameConfirmListener: ConfirmListener? + ) { DialogHelper.showDialog( context, "实名提醒", @@ -204,9 +214,23 @@ object ErrorHelper { uiModificationCallback = { binding -> binding.hintTv.visibility = View.VISIBLE binding.hintTv.layoutParams = - (binding.hintTv.layoutParams as ViewGroup.MarginLayoutParams).apply { setMargins(0, 8F.dip2px(), 0, 0) } + (binding.hintTv.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins( + 0, + 8F.dip2px(), + 0, + 0 + ) + } binding.lineView.layoutParams = - (binding.lineView.layoutParams as ViewGroup.MarginLayoutParams).apply { setMargins(0, 23F.dip2px(), 0, 0) } + (binding.lineView.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins( + 0, + 23F.dip2px(), + 0, + 0 + ) + } binding.hintTv.text = errorEntity.data?.text binding.hintTv.setTextColor(R.color.theme_font.toColor(context)) binding.hintTv.setOnClickListener { @@ -237,7 +261,12 @@ object ErrorHelper { ) } - private fun handleVerifyPhoneError(context: Context, errorEntity: ErrorEntity, realNameConfirmListener: ConfirmListener?, entrance: String) { + private fun handleVerifyPhoneError( + context: Context, + errorEntity: ErrorEntity, + realNameConfirmListener: ConfirmListener?, + entrance: String + ) { DialogHelper.showDialog( context, "手机号验证", @@ -246,9 +275,23 @@ object ErrorHelper { uiModificationCallback = { binding -> binding.hintTv.visibility = View.VISIBLE binding.hintTv.layoutParams = - (binding.hintTv.layoutParams as ViewGroup.MarginLayoutParams).apply { setMargins(0, 8F.dip2px(), 0, 0) } + (binding.hintTv.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins( + 0, + 8F.dip2px(), + 0, + 0 + ) + } binding.lineView.layoutParams = - (binding.lineView.layoutParams as ViewGroup.MarginLayoutParams).apply { setMargins(0, 23F.dip2px(), 0, 0) } + (binding.lineView.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins( + 0, + 23F.dip2px(), + 0, + 0 + ) + } binding.hintTv.text = errorEntity.data?.text binding.hintTv.setTextColor(R.color.theme_font.toColor(context)) binding.hintTv.setOnClickListener { diff --git a/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt b/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt index 0d9dfa3ce9..59b0fcfc84 100644 --- a/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt +++ b/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt @@ -38,55 +38,55 @@ object FloatingBackViewManager { if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN) return EasyFloat.with(activity) - .setLayout(R.layout.layout_task_back) - .setTag(FLOATING_BACK_VIEW) - .setAnimator(null) - .setGravity(Gravity.TOP.xor(Gravity.START), 0, mLastPositionY) - .setSidePattern(SidePattern.LEFT) - .setShowPattern(ShowPattern.CURRENT_ACTIVITY) - .registerCallback { - createResult { _, _, view -> - val titleView = view?.findViewById(R.id.titleTv) + .setLayout(R.layout.layout_task_back) + .setTag(FLOATING_BACK_VIEW) + .setAnimator(null) + .setGravity(Gravity.TOP.xor(Gravity.START), 0, mLastPositionY) + .setSidePattern(SidePattern.LEFT) + .setShowPattern(ShowPattern.CURRENT_ACTIVITY) + .registerCallback { + createResult { _, _, view -> + val titleView = view?.findViewById(R.id.titleTv) - view?.setOnClickListener { - // 先收起键盘 - Util_System_Keyboard.hideSoftKeyboard(activity) + view?.setOnClickListener { + // 先收起键盘 + Util_System_Keyboard.hideSoftKeyboard(activity) - if (mType == TYPE_ACTIVITY) { - titleView?.text = "返回活动" + if (mType == TYPE_ACTIVITY) { + titleView?.text = "返回活动" - DirectUtils.directToWebView(activity, mActivityUrl, ("返回活动浮窗")) - } else if (mType == TYPE_TASK) { - titleView?.text = "返回任务" + DirectUtils.directToWebView(activity, mActivityUrl, ("返回活动浮窗")) + } else if (mType == TYPE_TASK) { + titleView?.text = "返回任务" - activity.startActivity(EnergyBridge.getEnergyCenterIntent(activity)) - } - - disableBackView() - } - } - - dragEnd { view -> - val statusBarHeight = DisplayUtils.getStatusBarHeight(activity.resources) - - // 记录停止拖动的最后位置 - val outLocation = IntArray(2) - view.getLocationInWindow(outLocation) - val yOffset = outLocation[1] - - if (yOffset <= statusBarHeight) { - // 判断状态栏是否被消费 - if (yOffset == view.y.toInt()) { - view.y = statusBarHeight.toFloat() - } else { - view.y = 0F - } + activity.startActivity(EnergyBridge.getEnergyCenterIntent(activity)) } - mLastPositionY = yOffset + disableBackView() } } - .show() + + dragEnd { view -> + val statusBarHeight = DisplayUtils.getStatusBarHeight(activity.resources) + + // 记录停止拖动的最后位置 + val outLocation = IntArray(2) + view.getLocationInWindow(outLocation) + val yOffset = outLocation[1] + + if (yOffset <= statusBarHeight) { + // 判断状态栏是否被消费 + if (yOffset == view.y.toInt()) { + view.y = statusBarHeight.toFloat() + } else { + view.y = 0F + } + } + + mLastPositionY = yOffset + } + } + .show() } /** @@ -125,7 +125,7 @@ object FloatingBackViewManager { /** * 返回小浮窗类型是否为活动 */ - fun isTypeActivity() : Boolean { + fun isTypeActivity(): Boolean { return mType == TYPE_ACTIVITY } diff --git a/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt b/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt index bb1c0eb66e..313b4c0b0c 100644 --- a/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt +++ b/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt @@ -264,8 +264,11 @@ object GameActivityDownloadHelper { ) { val msg = FileUtils.isCanDownload(context, apk.size) if (TextUtils.isEmpty(msg)) { - DownloadManager.createDownload(context, apk, gameEntity, context.getString( - R.string.download), entrance, location, isSubscribe, traceEvent) + DownloadManager.createDownload( + context, apk, gameEntity, context.getString( + R.string.download + ), entrance, location, isSubscribe, traceEvent + ) ToastUtils.toast("${gameEntity.name}已加入下载队列") } else { ToastUtils.toast(msg) @@ -369,7 +372,8 @@ object GameActivityDownloadHelper { if (PackageUtils.isInstalled(context, apk.packageName)) { // 是否可更新 if (PackageUtils.isCanUpdate(apk, event.gameId) - || PackageUtils.isNonPluginUpdatable(apk, gameEntity)) { + || PackageUtils.isNonPluginUpdatable(apk, gameEntity) + ) { handler.complete(false) } else { // 已安装且无更新 diff --git a/app/src/main/java/com/gh/common/util/GameCollectionSquareBrowseTaskHelper.kt b/app/src/main/java/com/gh/common/util/GameCollectionSquareBrowseTaskHelper.kt index 463e980807..e4b0cba354 100644 --- a/app/src/main/java/com/gh/common/util/GameCollectionSquareBrowseTaskHelper.kt +++ b/app/src/main/java/com/gh/common/util/GameCollectionSquareBrowseTaskHelper.kt @@ -40,7 +40,7 @@ object GameCollectionSquareBrowseTaskHelper { private var mBrowseTimeCount = 0 private var mIsBrowseTimeCountEnabled = false // 游戏单广场浏览时间统计是否开启 private var mBrowseTimeTimeout = 15 - private var mIsBrowseTimeCountValid = false // 游戏单广场浏览时间统计是否有效 + private var mIsBrowseTimeCountValid = false // 游戏单广场浏览时间统计是否有效 private var mBrowsePro: ProgressBar? = null private var mIsFinished = false private var mNeedShowFloatView = false @@ -161,7 +161,8 @@ object GameCollectionSquareBrowseTaskHelper { private fun isTopActivityGameCollectionRelated(activity: Activity): Boolean { return isGameCollectionSquare(activity) || (activity is GameCollectionDetailActivity - && activity.intent.getBundleExtra(ToolBarActivity.NORMAL_FRAGMENT_BUNDLE)?.getBoolean(KEY_IS_FORM_BROWSE_TASK) == true) + && activity.intent.getBundleExtra(ToolBarActivity.NORMAL_FRAGMENT_BUNDLE) + ?.getBoolean(KEY_IS_FORM_BROWSE_TASK) == true) } private fun isGameCollectionSquare(activity: Activity, checkIsFromTask: Boolean = true): Boolean { diff --git a/app/src/main/java/com/gh/common/util/GameSubstituteRepositoryHelper.kt b/app/src/main/java/com/gh/common/util/GameSubstituteRepositoryHelper.kt index ab21897b20..86f75c84cf 100644 --- a/app/src/main/java/com/gh/common/util/GameSubstituteRepositoryHelper.kt +++ b/app/src/main/java/com/gh/common/util/GameSubstituteRepositoryHelper.kt @@ -40,14 +40,14 @@ object GameSubstituteRepositoryHelper { @JvmStatic fun updateGameSubstituteRepository() { mApi.reserveColumns - .subscribeOn(Schedulers.io()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) - updateGameRepository(response) - } - }) + updateGameRepository(response) + } + }) } @JvmStatic @@ -116,10 +116,12 @@ object GameSubstituteRepositoryHelper { /** * 替换游戏,包括 已安装,历史下载,历史已安装等类型 */ - fun replaceGames(gameList: MutableList, - alreadyDisplayedGameIdSet: HashSet, - relatedCollectionId: String, - shouldLogReplaceEvent: Boolean) { + fun replaceGames( + gameList: MutableList, + alreadyDisplayedGameIdSet: HashSet, + relatedCollectionId: String, + shouldLogReplaceEvent: Boolean + ) { val positionOfTheGameToReplaceList = arrayListOf() // 标记需要替换的已安装游戏 diff --git a/app/src/main/java/com/gh/common/util/GhMatisseVideoApplyFilter.kt b/app/src/main/java/com/gh/common/util/GhMatisseVideoApplyFilter.kt index ae79b3cd68..8671deaea9 100644 --- a/app/src/main/java/com/gh/common/util/GhMatisseVideoApplyFilter.kt +++ b/app/src/main/java/com/gh/common/util/GhMatisseVideoApplyFilter.kt @@ -14,9 +14,10 @@ class GhMatisseVideoApplyFilter : ApplyFilter() { Utils.toast(context, "网络异常,请检查手机网络状态") } else if (!NetworkUtils.isWifiConnected(context)) { DialogHelper.showDialog(context, "提示", - "您当前正在使用移动网络上传视频,确定继续上传吗?", - "继续上传", "暂时不了", - { callBack.onApply() }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + "您当前正在使用移动网络上传视频,确定继续上传吗?", + "继续上传", "暂时不了", + { callBack.onApply() }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } else { callBack.onApply() } diff --git a/app/src/main/java/com/gh/common/util/HaloWheelViewAdapter.java b/app/src/main/java/com/gh/common/util/HaloWheelViewAdapter.java index 64c21cd642..c8db887488 100644 --- a/app/src/main/java/com/gh/common/util/HaloWheelViewAdapter.java +++ b/app/src/main/java/com/gh/common/util/HaloWheelViewAdapter.java @@ -4,7 +4,7 @@ import com.contrarywind.adapter.WheelAdapter; /** * 注意:选择后的数据其实是dates的position,需要在回调时对返回的date数据进行转换 - * + *

* 例子请见: * {@link com.gh.gamecenter.servers.add.AddKaiFuActivity} */ diff --git a/app/src/main/java/com/gh/common/util/HomeBottomBarHelper.kt b/app/src/main/java/com/gh/common/util/HomeBottomBarHelper.kt index 4026ace723..597e180f6d 100644 --- a/app/src/main/java/com/gh/common/util/HomeBottomBarHelper.kt +++ b/app/src/main/java/com/gh/common/util/HomeBottomBarHelper.kt @@ -21,17 +21,19 @@ object HomeBottomBarHelper { } val animationCode = HaloApp.getInstance().application.assets - .open("lottie/tab_game.json") - .bufferedReader().use { it.readText() } - return SubjectRecommendEntity(link = "5de21b5d75e6fa054f784882", - type = "block", - text = "游戏库", - name = "游戏库", - iconSelect = "https://resource.ghzs.com/image/game/library/entrance/5e183202913fbd002c75f247.png", - iconUnselect = "https://resource.ghzs.com/image/game/library/entrance/5e1831fd913fbd003024641e.png", - animationCode = animationCode, - default = false, - display = Display()) + .open("lottie/tab_game.json") + .bufferedReader().use { it.readText() } + return SubjectRecommendEntity( + link = "5de21b5d75e6fa054f784882", + type = "block", + text = "游戏库", + name = "游戏库", + iconSelect = "https://resource.ghzs.com/image/game/library/entrance/5e183202913fbd002c75f247.png", + iconUnselect = "https://resource.ghzs.com/image/game/library/entrance/5e1831fd913fbd003024641e.png", + animationCode = animationCode, + default = false, + display = Display() + ) } @JvmStatic diff --git a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt index b0776a84ff..78ec92fa5c 100644 --- a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt +++ b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt @@ -19,7 +19,15 @@ object HomePluggableHelper { if (apkList.isNotEmpty()) { val apk = apkList.first() val tag = if (isNever) "never" else apk.version ?: "" - tryCatchInRelease { mHomePluggableFilterDao.addData(HomePluggableFilterEntity(pkgName = apk.packageName, tag = tag, active = isNever)) } + tryCatchInRelease { + mHomePluggableFilterDao.addData( + HomePluggableFilterEntity( + pkgName = apk.packageName, + tag = tag, + active = isNever + ) + ) + } } } diff --git a/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt b/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt index 352401c30f..04b441928d 100644 --- a/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt +++ b/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt @@ -54,7 +54,13 @@ object IntegralLogHelper { log(json, "score", false) } - fun logCommodityCategory(event: String, location: String, entrance: String, categoryId: String, categoryName: String) { + fun logCommodityCategory( + event: String, + location: String, + entrance: String, + categoryId: String, + categoryName: String + ) { val json = JSONObject().apply { tryWithDefaultCatch { put("meta", LogUtils.getMetaObject()) diff --git a/app/src/main/java/com/gh/common/util/LibaoUtils.java b/app/src/main/java/com/gh/common/util/LibaoUtils.java index 14f11356c4..d060e47057 100644 --- a/app/src/main/java/com/gh/common/util/LibaoUtils.java +++ b/app/src/main/java/com/gh/common/util/LibaoUtils.java @@ -356,7 +356,9 @@ public class LibaoUtils { break; case "查看": if (!TextUtils.isEmpty(libaoEntity.getDes())) { - DialogHelper.showCenterDialog(v.getContext(), "使用说明", Html.fromHtml(libaoEntity.getDes()), "关闭", "", () -> {}, () -> {}); + DialogHelper.showCenterDialog(v.getContext(), "使用说明", Html.fromHtml(libaoEntity.getDes()), "关闭", "", () -> { + }, () -> { + }); } break; case "再领": @@ -424,7 +426,9 @@ public class LibaoUtils { break; case "check": if (!TextUtils.isEmpty(libaoEntity.getDes())) { - DialogHelper.showDialog(context, "使用说明", Html.fromHtml(libaoEntity.getDes()), "关闭", "", () -> {}, () -> {}, false, "", ""); + DialogHelper.showDialog(context, "使用说明", Html.fromHtml(libaoEntity.getDes()), "关闭", "", () -> { + }, () -> { + }, false, "", ""); } break; case "repeatLing": diff --git a/app/src/main/java/com/gh/common/util/PackageHelper.kt b/app/src/main/java/com/gh/common/util/PackageHelper.kt index 9cbda1952d..919b070892 100644 --- a/app/src/main/java/com/gh/common/util/PackageHelper.kt +++ b/app/src/main/java/com/gh/common/util/PackageHelper.kt @@ -54,7 +54,8 @@ object PackageHelper { } private fun updateValidPackageNameList() { - validLocalPackageNameSet = localPackageNameSet.filterNot { p -> downloadPackageNameBlackList.contains(p) }.toHashSet() + validLocalPackageNameSet = + localPackageNameSet.filterNot { p -> downloadPackageNameBlackList.contains(p) }.toHashSet() } /* diff --git a/app/src/main/java/com/gh/common/util/PackageInstaller.kt b/app/src/main/java/com/gh/common/util/PackageInstaller.kt index 42b3fb113c..9484cfda20 100644 --- a/app/src/main/java/com/gh/common/util/PackageInstaller.kt +++ b/app/src/main/java/com/gh/common/util/PackageInstaller.kt @@ -123,8 +123,8 @@ object PackageInstaller { // if (downloadEntity != null) { // showCertificateDialogIfNeededBeforeInstall(app, downloadEntity, pkgPath) // } else { - val installIntent = getInstallIntent(context, pkgPath) - context.startActivity(installIntent) + val installIntent = getInstallIntent(context, pkgPath) + context.startActivity(installIntent) // } } else { if (isPluggin) { diff --git a/app/src/main/java/com/gh/common/util/PlatformUtils.java b/app/src/main/java/com/gh/common/util/PlatformUtils.java index 41f1a49f64..eceb286682 100644 --- a/app/src/main/java/com/gh/common/util/PlatformUtils.java +++ b/app/src/main/java/com/gh/common/util/PlatformUtils.java @@ -32,27 +32,28 @@ import java.util.Set; import androidx.collection.ArrayMap; import androidx.core.content.ContextCompat; + import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; public class PlatformUtils { - + private static PlatformUtils mInstance; - + private Context context; - + private ArrayMap platformMap; private ArrayMap platformPicUrlMap; private ArrayMap platformColorMap; private boolean isCheck = false; private boolean isUpdate = false; - + private PlatformUtils(Context con) { this.context = con.getApplicationContext(); initMap(); } - + private void initMap() { ArrayMap platformColorMap = new ArrayMap<>(); platformColorMap.put("360", "#218FA4"); @@ -72,10 +73,10 @@ public class PlatformUtils { platformColorMap.put("pps", "#FF8C27"); platformColorMap.put("vivo", "#3FA5E3"); platformColorMap.put("wdj", "#5ABA3F"); - + ArrayMap platformMap = new ArrayMap<>(); ArrayMap platformPicUrlMap = new ArrayMap<>(); - + SharedPreferences sharedPreferences = context.getSharedPreferences("gh_platform", Context.MODE_PRIVATE); Set set = sharedPreferences.getStringSet("platform", null); if (set == null) { @@ -110,10 +111,10 @@ public class PlatformUtils { // checkPlatformPic(urls); } } - + updatePlatform(platformMap, platformPicUrlMap, platformColorMap); } - + private void checkPlatformPic(final ArrayList urls) { isCheck = true; File file = new File(FileUtils.getPlatformPicDir(context)); @@ -135,7 +136,7 @@ public class PlatformUtils { for (int i = 0; i < urls.size(); i++) { String url = urls.get(i); String savePath = FileUtils.getPlatformPicDir(context) + File.separator + url - .substring(url.lastIndexOf("/") + 1); + .substring(url.lastIndexOf("/") + 1); int code = FileUtils.downloadFile(url, savePath); if (code == HttpURLConnection.HTTP_OK) { success++; @@ -151,20 +152,20 @@ public class PlatformUtils { isCheck = false; } } - + private void updatePlatform(ArrayMap pMap, ArrayMap pUMap, ArrayMap pCMap) { platformMap = pMap; platformPicUrlMap = pUMap; platformColorMap = pCMap; } - + public static PlatformUtils getInstance(Context context) { if (mInstance == null) { mInstance = new PlatformUtils(context); } return mInstance; } - + public String getPlatformColor(String platform) { if ("".equals(platform) || "官方版".equals(platform)) { return "#BB3D42"; @@ -173,16 +174,16 @@ public class PlatformUtils { if (color != null) { return color; } - + int themeColor = ContextCompat.getColor(HaloApp.getInstance() - .getApplication(), R.color.theme); + .getApplication(), R.color.theme); return String.format("#%06X", 0xFFFFFF & themeColor); } - + public String getPlatformPicUrl(String platform) { return platformPicUrlMap.get(platform); } - + public String getPlatformName(String platform) { if ("".equals(platform) || "官方版".equals(platform)) { return "官方版"; @@ -201,40 +202,40 @@ public class PlatformUtils { } return platform; } - + public void getPlatform() { if (isUpdate) { return; } isUpdate = true; RetrofitManager.getInstance() - .getApi() - .getGamePlatform() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(List response) { - Set platformSet = new HashSet<>(); - for (PlatformEntity platformEntity : response) { - platformSet.add(platformEntity.toString()); + .getApi() + .getGamePlatform() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Response>() { + @Override + public void onResponse(List response) { + Set platformSet = new HashSet<>(); + for (PlatformEntity platformEntity : response) { + platformSet.add(platformEntity.toString()); + } + SharedPreferences sp = context.getSharedPreferences("gh_platform", Context.MODE_PRIVATE); + sp.edit().putStringSet("platform", platformSet).apply(); + initMap(); + EventBus.getDefault().post(new EBReuse("PlatformChanged")); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + String today = format.format(new Date()); + sp.edit().putString("refresh_time", today).apply(); + isUpdate = false; } - SharedPreferences sp = context.getSharedPreferences("gh_platform", Context.MODE_PRIVATE); - sp.edit().putStringSet("platform", platformSet).apply(); - initMap(); - EventBus.getDefault().post(new EBReuse("PlatformChanged")); - - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); - String today = format.format(new Date()); - sp.edit().putString("refresh_time", today).apply(); - isUpdate = false; - } - - @Override - public void onFailure(HttpException e) { - isUpdate = false; - } - }); + + @Override + public void onFailure(HttpException e) { + isUpdate = false; + } + }); } - + } diff --git a/app/src/main/java/com/gh/common/util/RealNameHelper.kt b/app/src/main/java/com/gh/common/util/RealNameHelper.kt index 05720cc4aa..36da379042 100644 --- a/app/src/main/java/com/gh/common/util/RealNameHelper.kt +++ b/app/src/main/java/com/gh/common/util/RealNameHelper.kt @@ -63,7 +63,8 @@ object RealNameHelper { val currentActivity = CurrentActivityHolder.getCurrentActivity() if (currentActivity == null - || currentActivity.isFinishing) { + || currentActivity.isFinishing + ) { ToastUtils.toast("为保护未成年身心健康成长,根据相关政策要求,该游戏不对未成年人开放") } else { NewLogUtils.logCertificationHintDialogAppearance() diff --git a/app/src/main/java/com/gh/common/util/RecommendPopupHelper.kt b/app/src/main/java/com/gh/common/util/RecommendPopupHelper.kt index c4c8fe7979..e755d2bc9a 100644 --- a/app/src/main/java/com/gh/common/util/RecommendPopupHelper.kt +++ b/app/src/main/java/com/gh/common/util/RecommendPopupHelper.kt @@ -94,7 +94,7 @@ object RecommendPopupHelper { } } - fun checkFrequencyIsMatch(entity: RecommendPopupEntity): Boolean { + fun checkFrequencyIsMatch(entity: RecommendPopupEntity): Boolean { //判断是否符合通知频率 一次once, 累计次数count, 每周一次weekly, 每天一次daily, 每次always val plan = entity.notice.plan val times = entity.notice.times @@ -102,7 +102,7 @@ object RecommendPopupHelper { val recordStr = SPUtils.getString(Constants.SP_RECOMMEND_POPUP) val type = object : TypeToken>() {}.type val records = GsonUtils.gson.fromJson>(recordStr, type) - ?: arrayListOf() + ?: arrayListOf() val recommendRecord = records.find { it.popupId == entity.id } val showTime = recommendRecord?.showTime ?: 0L val count = recommendRecord?.count ?: 0 @@ -131,7 +131,7 @@ object RecommendPopupHelper { val recordStr = SPUtils.getString(Constants.SP_RECOMMEND_POPUP) val type = object : TypeToken>() {}.type val records = GsonUtils.gson.fromJson>(recordStr, type) - ?: arrayListOf() + ?: arrayListOf() val recommendRecord = records.find { it.popupId == popup.id } if (recommendRecord == null) { records.add(RecommendRecord(popup.id, System.currentTimeMillis(), 1)) diff --git a/app/src/main/java/com/gh/common/util/ReservationHelper.kt b/app/src/main/java/com/gh/common/util/ReservationHelper.kt index 8229c81848..e3d9e4fb9b 100644 --- a/app/src/main/java/com/gh/common/util/ReservationHelper.kt +++ b/app/src/main/java/com/gh/common/util/ReservationHelper.kt @@ -33,7 +33,11 @@ object ReservationHelper { } @SuppressLint("CheckResult") - private fun deleteOrCancelReservation(game: GameEntity, deleteReservation: Boolean, refreshCallback: EmptyCallback) { + private fun deleteOrCancelReservation( + game: GameEntity, + deleteReservation: Boolean, + refreshCallback: EmptyCallback + ) { val retrofit = RetrofitManager.getInstance() val requestMap = hashMapOf() requestMap["game_id"] = game.id diff --git a/app/src/main/java/com/gh/common/util/SimpleRequestHelper.kt b/app/src/main/java/com/gh/common/util/SimpleRequestHelper.kt index a1c5cd0ab9..92e18c38f9 100644 --- a/app/src/main/java/com/gh/common/util/SimpleRequestHelper.kt +++ b/app/src/main/java/com/gh/common/util/SimpleRequestHelper.kt @@ -22,17 +22,17 @@ object SimpleRequestHelper { val map = HashMap() map["reason"] = type mApi.reportGameComment(gameId, commentId, map.createRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(HaloApp.getInstance().application, "举报成功") - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(HaloApp.getInstance().application, "举报成功") + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(HaloApp.getInstance().application,e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(HaloApp.getInstance().application, e?.response()?.errorBody()?.string()) + } + }) } @@ -40,17 +40,17 @@ object SimpleRequestHelper { val map = HashMap() map["reason"] = type mApi.reportGameCommentReply(gameId, commentId, replyId, map.createRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(HaloApp.getInstance().application, "举报成功") - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(HaloApp.getInstance().application, "举报成功") + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(HaloApp.getInstance().application,e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(HaloApp.getInstance().application, e?.response()?.errorBody()?.string()) + } + }) } @@ -63,7 +63,7 @@ object SimpleRequestHelper { } override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(HaloApp.getInstance().application,e?.response()?.errorBody()?.string()) + ErrorHelper.handleError(HaloApp.getInstance().application, e?.response()?.errorBody()?.string()) } }) } @@ -77,7 +77,7 @@ object SimpleRequestHelper { } override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(HaloApp.getInstance().application,e?.response()?.errorBody()?.string()) + ErrorHelper.handleError(HaloApp.getInstance().application, e?.response()?.errorBody()?.string()) } }) } diff --git a/app/src/main/java/com/gh/common/util/SyncDataBetweenPageHelper.kt b/app/src/main/java/com/gh/common/util/SyncDataBetweenPageHelper.kt index 1fdf994cf4..14f32fa8f2 100644 --- a/app/src/main/java/com/gh/common/util/SyncDataBetweenPageHelper.kt +++ b/app/src/main/java/com/gh/common/util/SyncDataBetweenPageHelper.kt @@ -45,7 +45,11 @@ object SyncDataBetweenPageHelper { fragment.startActivityForResult(intent, requestCode) } - fun setResultAndFinish(context: Context, syncData: T?, resultCode: Int = Activity.RESULT_OK): Boolean { + fun setResultAndFinish( + context: Context, + syncData: T?, + resultCode: Int = Activity.RESULT_OK + ): Boolean { if (context is Activity) { val requestCode = context.intent.getIntExtra(REQUEST_CODE_TAG, DEFAULT_NUMBER) val dataPosition = context.intent.getIntExtra(DATA_POSITION_TAG, DEFAULT_NUMBER) diff --git a/app/src/main/java/com/gh/common/util/TagUtils.java b/app/src/main/java/com/gh/common/util/TagUtils.java index d20aeeefcd..8327ada682 100644 --- a/app/src/main/java/com/gh/common/util/TagUtils.java +++ b/app/src/main/java/com/gh/common/util/TagUtils.java @@ -3,6 +3,7 @@ package com.gh.common.util; import android.content.Context; import android.content.SharedPreferences; + import androidx.collection.ArrayMap; import com.gh.gamecenter.entity.TagEntity; diff --git a/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt b/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt index 57fc86e676..d1781f69cb 100644 --- a/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt +++ b/app/src/main/java/com/gh/common/util/UsageStatsHelper.kt @@ -61,12 +61,13 @@ object UsageStatsHelper { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1) private fun getDataByUsageStats(lastPostTime: Long): JSONArray? { val usageStatsManager = HaloApp - .getInstance().application - .getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager + .getInstance().application + .getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager val usageStatsMap = usageStatsManager.queryAndAggregateUsageStats( - lastPostTime, - System.currentTimeMillis()) ?: return null + lastPostTime, + System.currentTimeMillis() + ) ?: return null val postBody = JSONArray() for (entry in usageStatsMap) { @@ -93,9 +94,9 @@ object UsageStatsHelper { private fun getDataByUsageEvents(startTime: Long): JSONArray? { val mUsageStatsManager = HaloApp - .getInstance() - .application - .getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager + .getInstance() + .application + .getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager val usageEvents = mUsageStatsManager.queryEvents(startTime, System.currentTimeMillis()) val allEvents = ArrayList() @@ -107,7 +108,8 @@ object UsageStatsHelper { currentEvent = UsageEvents.Event() usageEvents.getNextEvent(currentEvent) if (currentEvent.eventType == UsageEvents.Event.MOVE_TO_FOREGROUND - || currentEvent.eventType == UsageEvents.Event.MOVE_TO_BACKGROUND) { + || currentEvent.eventType == UsageEvents.Event.MOVE_TO_BACKGROUND + ) { allEvents.add(currentEvent) } } @@ -118,8 +120,9 @@ object UsageStatsHelper { val nextEvent = allEvents[i + 1] if (curEvent.eventType == UsageEvents.Event.MOVE_TO_FOREGROUND - && nextEvent.eventType == UsageEvents.Event.MOVE_TO_BACKGROUND - && curEvent.className == nextEvent.className) { + && nextEvent.eventType == UsageEvents.Event.MOVE_TO_BACKGROUND + && curEvent.className == nextEvent.className + ) { val diff = nextEvent.timeStamp - curEvent.timeStamp if (pakAndTime[curEvent.packageName] == null) { @@ -174,25 +177,26 @@ object UsageStatsHelper { val body = RequestBody.create(MediaType.parse("application/json"), postBody.toString()) mApi.postUsageStatus(body, UserManager.getInstance().userId) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - debugOnly { - Utils.log("UsageStats: 数据上传成功") - } + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + debugOnly { + Utils.log("UsageStats: 数据上传成功") } - }) + } + }) } @JvmStatic @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1) fun checkForPermission(): Boolean { val appOps = HaloApp - .getInstance().application - .getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager + .getInstance().application + .getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager val mode = appOps.checkOpNoThrow( - OPSTR_GET_USAGE_STATS, - Process.myUid(), - HaloApp.getInstance().application.packageName) + OPSTR_GET_USAGE_STATS, + Process.myUid(), + HaloApp.getInstance().application.packageName + ) return mode == MODE_ALLOWED } @@ -220,19 +224,19 @@ object UsageStatsHelper { } mApi.getUsageStatusUpdateTime(HaloApp.getInstance().gid) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val body = JSONObject(data.string()) - val lastPostTime = body.getLong("update_time") * 1000 + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val body = JSONObject(data.string()) + val lastPostTime = body.getLong("update_time") * 1000 - val beginTime = if (lastPostTime == 0L) { - getDefaultBeginTime() - } else { - lastPostTime - } - postUsageStats(beginTime) + val beginTime = if (lastPostTime == 0L) { + getDefaultBeginTime() + } else { + lastPostTime } - }) + postUsageStats(beginTime) + } + }) } private fun isSameDay(timeA: Long, timeB: Long): Boolean { diff --git a/app/src/main/java/com/gh/common/util/WechatBindHelper.kt b/app/src/main/java/com/gh/common/util/WechatBindHelper.kt index faa02f1d40..c1478a1aaa 100644 --- a/app/src/main/java/com/gh/common/util/WechatBindHelper.kt +++ b/app/src/main/java/com/gh/common/util/WechatBindHelper.kt @@ -48,7 +48,10 @@ object WechatBindHelper { override fun onFailure(exception: Exception) { callback.onSecond(true) if (exception is HttpException) { - ErrorHelper.handleError(HaloApp.getInstance().application, exception.response().errorBody()?.string()) + ErrorHelper.handleError( + HaloApp.getInstance().application, + exception.response().errorBody()?.string() + ) } } }) diff --git a/app/src/main/java/com/gh/common/videolog/VideoRecordEntity.kt b/app/src/main/java/com/gh/common/videolog/VideoRecordEntity.kt index 0328455cdf..c7b5d302c6 100644 --- a/app/src/main/java/com/gh/common/videolog/VideoRecordEntity.kt +++ b/app/src/main/java/com/gh/common/videolog/VideoRecordEntity.kt @@ -11,8 +11,8 @@ import java.util.* @Parcelize @Entity(tableName = "VideoRecord") data class VideoRecordEntity( - @PrimaryKey - var id: String = UUID.randomUUID().toString(), - var videoId: String = "", - var time: Long = 0 + @PrimaryKey + var id: String = UUID.randomUUID().toString(), + var videoId: String = "", + var time: Long = 0 ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt index 0e91ae5f2d..c104e9712d 100644 --- a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt +++ b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt @@ -25,7 +25,7 @@ object VideoRecordUtils { private val videoRecordDao by lazy { AppDatabase.getInstance().videoRecordDao() } @JvmStatic - fun init(application: Application, executor : ExecutorService) { + fun init(application: Application, executor: ExecutorService) { mApplication = application videoRecordExecutor = executor @@ -78,12 +78,12 @@ object VideoRecordUtils { requestMap["time"] = time requestMap["video_id"] = videoIds RetrofitManager.getInstance().api - .uploadVideoLog(requestMap.toRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - } - }) + .uploadVideoLog(requestMap.toRequestBody()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/view/AdBannerView.kt b/app/src/main/java/com/gh/common/view/AdBannerView.kt index 0aac78de52..f25fe1b8ca 100644 --- a/app/src/main/java/com/gh/common/view/AdBannerView.kt +++ b/app/src/main/java/com/gh/common/view/AdBannerView.kt @@ -181,7 +181,8 @@ class AdBannerView : LinearLayout { private inner class AdBannerAdapter : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_ad_banner, parent, false)) {} + return object : + RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_ad_banner, parent, false)) {} } override fun getItemCount(): Int = if (mDatas.size == 1) mDatas.size else Int.MAX_VALUE @@ -189,7 +190,7 @@ class AdBannerView : LinearLayout { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val ad = mDatas[position % mDatas.size] val view = holder.itemView as SimpleDraweeView - ImageUtils.display(view,ad.image) + ImageUtils.display(view, ad.image) holder.itemView.setOnClickListener { onItemClick?.invoke(position % mDatas.size) } diff --git a/app/src/main/java/com/gh/common/view/CatalogFilterView.kt b/app/src/main/java/com/gh/common/view/CatalogFilterView.kt index 7b4a6c17fa..94f39dd430 100644 --- a/app/src/main/java/com/gh/common/view/CatalogFilterView.kt +++ b/app/src/main/java/com/gh/common/view/CatalogFilterView.kt @@ -19,7 +19,11 @@ import com.gh.gamecenter.entity.CatalogEntity import com.gh.gamecenter.entity.SubjectSettingEntity import com.google.android.flexbox.FlexboxLayout -class CatalogFilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr) { +class CatalogFilterView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { private var mTypeTv: TextView private var mCatalogTv: TextView diff --git a/app/src/main/java/com/gh/common/view/CategoryFilterView.kt b/app/src/main/java/com/gh/common/view/CategoryFilterView.kt index 5a90454bb2..cce34d9357 100644 --- a/app/src/main/java/com/gh/common/view/CategoryFilterView.kt +++ b/app/src/main/java/com/gh/common/view/CategoryFilterView.kt @@ -17,7 +17,11 @@ import com.gh.gamecenter.R import com.gh.gamecenter.entity.SubjectSettingEntity import com.google.android.flexbox.FlexboxLayout -class CategoryFilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr) { +class CategoryFilterView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { private var mTypeTv: TextView private var mCatalogTv: TextView diff --git a/app/src/main/java/com/gh/common/view/DownloadButton.kt b/app/src/main/java/com/gh/common/view/DownloadButton.kt index 3074da2143..7c5a39586c 100644 --- a/app/src/main/java/com/gh/common/view/DownloadButton.kt +++ b/app/src/main/java/com/gh/common/view/DownloadButton.kt @@ -19,10 +19,11 @@ class DownloadButton @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -): ProgressBar(context, attrs, defStyleAttr) { +) : ProgressBar(context, attrs, defStyleAttr) { private val mDuffXFerMode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) private val mPaint = Paint(Paint.ANTI_ALIAS_FLAG) + // 仅用于测量文字是否超出范围,不用于画文字 private val mFakeTextPaint = TextPaint(Paint.ANTI_ALIAS_FLAG) private var mDownloadStyle = 0 @@ -68,8 +69,12 @@ class DownloadButton @JvmOverloads constructor( val ta = context.obtainStyledAttributes(attrs, R.styleable.DownloadButton) showProgress = ta.getBoolean(R.styleable.DownloadButton_download_button_show_progress, false) mShowPercent = ta.getBoolean(R.styleable.DownloadButton_download_button_show_percent, false) - mDownloadStyle = ta.getInteger(R.styleable.DownloadButton_download_button_download_style, DOWNLOAD_NORMAL_STYLE) - mTextSize = ta.getDimensionPixelSize(R.styleable.DownloadButton_download_button_text_size, DisplayUtils.sp2px(context, 12F)) + mDownloadStyle = + ta.getInteger(R.styleable.DownloadButton_download_button_download_style, DOWNLOAD_NORMAL_STYLE) + mTextSize = ta.getDimensionPixelSize( + R.styleable.DownloadButton_download_button_text_size, + DisplayUtils.sp2px(context, 12F) + ) ta.recycle() } max = MAX_LENGTH @@ -156,13 +161,22 @@ class DownloadButton @JvmOverloads constructor( ButtonStyle.SPECIAL_DOWNLOAD, ButtonStyle.TEENAGER_MODE -> { progressDrawable = null - background = if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.text_white_background.toDrawable(context) else R.drawable.download_button_normal_style.toDrawable(context) + background = + if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.text_white_background.toDrawable(context) else R.drawable.download_button_normal_style.toDrawable( + context + ) progress = 0 - mDefaultColor = if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.color.black.toColor(context) else R.color.white.toColor(context) + mDefaultColor = + if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.color.black.toColor(context) else R.color.white.toColor( + context + ) } ButtonStyle.LAUNCH_OR_OPEN -> { progressDrawable = null - background = if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.detail_download_open_image_style.toDrawable(context) else R.drawable.download_button_normal_style.toDrawable(context) + background = + if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.detail_download_open_image_style.toDrawable( + context + ) else R.drawable.download_button_normal_style.toDrawable(context) progress = 0 mDefaultColor = R.color.white.toColor(context) } @@ -189,8 +203,14 @@ class DownloadButton @JvmOverloads constructor( } ButtonStyle.DOWNLOADING_NORMAL -> { if (showProgress) { - progressDrawable = if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.detail_downloading_normal_image_style.toDrawable(context) else R.drawable.detail_downloading_normal_style.toDrawable(context) - mDefaultColor = if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.color.white.toColor(context) else R.color.theme_font.toColor(context) + progressDrawable = + if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.drawable.detail_downloading_normal_image_style.toDrawable( + context + ) else R.drawable.detail_downloading_normal_style.toDrawable(context) + mDefaultColor = + if (mDownloadStyle == DOWNLOAD_IMAGE_STYLE) R.color.white.toColor(context) else R.color.theme_font.toColor( + context + ) } else { background = R.drawable.game_item_btn_downloading_style.toDrawable(context) mDefaultColor = R.color.theme_font.toColor(context) diff --git a/app/src/main/java/com/gh/common/view/FilterView.kt b/app/src/main/java/com/gh/common/view/FilterView.kt index f7ea8c0d97..3504b7478f 100644 --- a/app/src/main/java/com/gh/common/view/FilterView.kt +++ b/app/src/main/java/com/gh/common/view/FilterView.kt @@ -23,8 +23,8 @@ import com.gh.gamecenter.databinding.LayoutFilterBinding import com.google.android.flexbox.FlexboxLayout // TODO 把 ConfigFilterView 的上层实现切换到继承这个类实现 -class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) - : ConstraintLayout(context, attrs, defStyleAttr) { +class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + ConstraintLayout(context, attrs, defStyleAttr) { private var mBinding: LayoutFilterBinding? = null @@ -43,13 +43,15 @@ class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet mBinding = LayoutFilterBinding.inflate(LayoutInflater.from(context), this, true) } - fun setupFilter(mainFilterList: ArrayList, - defaultSelectedMainFilter: String? = null, - subFilterList: ArrayList, - subFilterText: String, - mainFilterSelectedCallback: ((String) -> Unit), - subFilterSelectedCallback: ((String) -> Unit), - highlightSubFilterIfNotDefault: Boolean = false) { + fun setupFilter( + mainFilterList: ArrayList, + defaultSelectedMainFilter: String? = null, + subFilterList: ArrayList, + subFilterText: String, + mainFilterSelectedCallback: ((String) -> Unit), + subFilterSelectedCallback: ((String) -> Unit), + highlightSubFilterIfNotDefault: Boolean = false + ) { mMainFilterList = mainFilterList mSubFilterList = subFilterList mSubFilterSelectedCallback = subFilterSelectedCallback @@ -65,9 +67,10 @@ class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet mBinding?.filterRecyclerView?.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) mBinding?.filterRecyclerView?.adapter = FilterAdapter( - context, - mMainFilterList, - defaultSelectedMainFilter ?: mainFilterList.first()) { + context, + mMainFilterList, + defaultSelectedMainFilter ?: mainFilterList.first() + ) { mainFilterSelectedCallback.invoke(it) } } @@ -98,10 +101,12 @@ class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet } } - private fun showSelectionPopupWindow(containerView: View, - subFilterTv: TextView, - subFilterText: String, - selectedCallback: ((String) -> Unit)) { + private fun showSelectionPopupWindow( + containerView: View, + subFilterTv: TextView, + subFilterText: String, + selectedCallback: ((String) -> Unit) + ) { val drawableUp = ContextCompat.getDrawable(subFilterTv.context, R.drawable.ic_filter_arrow_up) val drawableDown = ContextCompat.getDrawable(subFilterTv.context, R.drawable.ic_filter_arrow_down) drawableUp?.setBounds(0, 0, drawableUp.minimumWidth, drawableUp.minimumHeight) @@ -190,11 +195,12 @@ class FilterView @JvmOverloads constructor(context: Context, attrs: AttributeSet } } - class FilterAdapter(val context: Context, - private val mFilterList: ArrayList, - private val mDefaultSelectedFilter: String, - private val mClickCallback: (String) -> Unit) - : RecyclerView.Adapter() { + class FilterAdapter( + val context: Context, + private val mFilterList: ArrayList, + private val mDefaultSelectedFilter: String, + private val mClickCallback: (String) -> Unit + ) : RecyclerView.Adapter() { private var mSelectedFilter = mDefaultSelectedFilter diff --git a/app/src/main/java/com/gh/common/view/FlexLinearLayout.kt b/app/src/main/java/com/gh/common/view/FlexLinearLayout.kt index afde654fe6..2f5a7e7110 100644 --- a/app/src/main/java/com/gh/common/view/FlexLinearLayout.kt +++ b/app/src/main/java/com/gh/common/view/FlexLinearLayout.kt @@ -23,7 +23,8 @@ import kotlin.math.ceil /** * 标签最多显示一行,显示的个数由行宽决定 */ -class FlexLinearLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) { +class FlexLinearLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + LinearLayout(context, attrs) { private var mTotalCount = 0 private var mTags = ArrayList() diff --git a/app/src/main/java/com/gh/common/view/GameIconView.kt b/app/src/main/java/com/gh/common/view/GameIconView.kt index ed97d49e34..9820760fab 100644 --- a/app/src/main/java/com/gh/common/view/GameIconView.kt +++ b/app/src/main/java/com/gh/common/view/GameIconView.kt @@ -96,7 +96,7 @@ class GameIconView : CardView { mGameIconIv?.display(icon) mGameIconDecorationIv?.display(iconSubscript, true) if (goneIfEmpty) { - visibility = if(TextUtils.isEmpty(icon)) View.GONE else View.VISIBLE + visibility = if (TextUtils.isEmpty(icon)) View.GONE else View.VISIBLE } } diff --git a/app/src/main/java/com/gh/common/view/GameTagFlexLinearLayout.kt b/app/src/main/java/com/gh/common/view/GameTagFlexLinearLayout.kt index aed601cdd2..c02be1be9f 100644 --- a/app/src/main/java/com/gh/common/view/GameTagFlexLinearLayout.kt +++ b/app/src/main/java/com/gh/common/view/GameTagFlexLinearLayout.kt @@ -18,7 +18,8 @@ import kotlin.math.ceil /** * 首页游戏标签,最多显示三个,实际显示个数由控件宽度决定 */ -class GameTagFlexLinearLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) { +class GameTagFlexLinearLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + LinearLayout(context, attrs) { private var mTotalCount = 0 private var mTags = ArrayList() private var mItemHeight = DisplayUtils.dip2px(13F) diff --git a/app/src/main/java/com/gh/common/view/ImageContainerView.kt b/app/src/main/java/com/gh/common/view/ImageContainerView.kt index 9017c2c0ba..14eec31bf6 100644 --- a/app/src/main/java/com/gh/common/view/ImageContainerView.kt +++ b/app/src/main/java/com/gh/common/view/ImageContainerView.kt @@ -194,7 +194,9 @@ class ImageContainerView : LinearLayout { val position = if (mAnswerEntity?.type == "community_article") { binding.root.tag as Int } else { - if (mAnswerEntity!!.getPassVideos().isNullOrEmpty()) binding.root.tag as Int else (binding.root.tag as Int) - 1 + if (mAnswerEntity!!.getPassVideos() + .isNullOrEmpty() + ) binding.root.tag as Int else (binding.root.tag as Int) - 1 } if (mAnswerEntity?.communityId.isNullOrEmpty()) { mAnswerEntity?.communityId = mAnswerEntity?.bbs?.id diff --git a/app/src/main/java/com/gh/common/view/NestedScrollRichEditor.java b/app/src/main/java/com/gh/common/view/NestedScrollRichEditor.java index 7cf190b6bf..0c05557515 100644 --- a/app/src/main/java/com/gh/common/view/NestedScrollRichEditor.java +++ b/app/src/main/java/com/gh/common/view/NestedScrollRichEditor.java @@ -1,4 +1,5 @@ package com.gh.common.view; + import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; @@ -83,17 +84,17 @@ public class NestedScrollRichEditor extends RichEditor implements NestedScrollin trackedEvent.offsetLocation(0, mScrollOffset[1]); mNestedYOffset += mScrollOffset[1]; } - if(mScrollConsumed[1]==0 && mScrollOffset[1]==0) { - if(mChange){ - mChange =false; + if (mScrollConsumed[1] == 0 && mScrollOffset[1] == 0) { + if (mChange) { + mChange = false; trackedEvent.setAction(MotionEvent.ACTION_DOWN); super.onTouchEvent(trackedEvent); - }else { + } else { result = super.onTouchEvent(trackedEvent); } trackedEvent.recycle(); - }else{ - if(Math.abs(mLastMotionY - y) >= 10) { + } else { + if (Math.abs(mLastMotionY - y) >= 10) { if (!mChange) { mChange = true; super.onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0)); diff --git a/app/src/main/java/com/gh/common/view/SimpleToggleView.kt b/app/src/main/java/com/gh/common/view/SimpleToggleView.kt index 68474e6ec3..ccda7258bb 100644 --- a/app/src/main/java/com/gh/common/view/SimpleToggleView.kt +++ b/app/src/main/java/com/gh/common/view/SimpleToggleView.kt @@ -17,7 +17,7 @@ class SimpleToggleView @JvmOverloads constructor( val switchIv by lazy { findViewById(R.id.switchIv) } val hintTv by lazy { findViewById(R.id.hintTv) } - val lottieView by lazy { findViewById(R.id.lottieView)} + val lottieView by lazy { findViewById(R.id.lottieView) } init { View.inflate(context, R.layout.view_simple_toggle, this) diff --git a/app/src/main/java/com/gh/common/view/SubCategoryView.kt b/app/src/main/java/com/gh/common/view/SubCategoryView.kt index 482847c89a..997f7bac5e 100644 --- a/app/src/main/java/com/gh/common/view/SubCategoryView.kt +++ b/app/src/main/java/com/gh/common/view/SubCategoryView.kt @@ -9,7 +9,8 @@ import com.gh.gamecenter.R import com.gh.gamecenter.category.CategoryListActivity import com.gh.gamecenter.entity.CategoryEntity -class SubCategoryView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr) { +class SubCategoryView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + LinearLayout(context, attrs, defStyleAttr) { var leftTv: TextView var centerTv: TextView @@ -49,7 +50,14 @@ class SubCategoryView @JvmOverloads constructor(context: Context, attrs: Attribu private fun setCategory(tv: TextView, category: CategoryEntity) { tv.text = category.name tv.setOnClickListener { - tv.context.startActivity(CategoryListActivity.getIntent(tv.context, categoryTitle!!, primeCategory!!, category.name!!)) + tv.context.startActivity( + CategoryListActivity.getIntent( + tv.context, + categoryTitle!!, + primeCategory!!, + category.name!! + ) + ) } } diff --git a/app/src/main/java/com/gh/common/xapk/XapkUnzipThread.kt b/app/src/main/java/com/gh/common/xapk/XapkUnzipThread.kt index 4eca5009d5..410c227662 100644 --- a/app/src/main/java/com/gh/common/xapk/XapkUnzipThread.kt +++ b/app/src/main/java/com/gh/common/xapk/XapkUnzipThread.kt @@ -16,8 +16,10 @@ import java.io.File import java.util.zip.ZipFile -class XapkUnzipThread(private var mDownloadEntity: DownloadEntity, - private var mUnzipListener: IXapkUnzipListener) : Thread() { +class XapkUnzipThread( + private var mDownloadEntity: DownloadEntity, + private var mUnzipListener: IXapkUnzipListener +) : Thread() { private val mDefaultBufferSize = 1024 * 1024 @@ -95,7 +97,12 @@ class XapkUnzipThread(private var mDownloadEntity: DownloadEntity, } else { // 防止多次短时间内多次触发onProgress方法导致阻塞主线程(低端机会出现十分明显的卡顿) debounceActionWithInterval(-1, 500) { - mUnzipListener.onProgress(mDownloadEntity, outputFile.path, unzipSize, unzipProgress) + mUnzipListener.onProgress( + mDownloadEntity, + outputFile.path, + unzipSize, + unzipProgress + ) } } } diff --git a/app/src/main/java/com/gh/download/DownloadDataHelper.kt b/app/src/main/java/com/gh/download/DownloadDataHelper.kt index 5624883246..8c86deede1 100644 --- a/app/src/main/java/com/gh/download/DownloadDataHelper.kt +++ b/app/src/main/java/com/gh/download/DownloadDataHelper.kt @@ -88,7 +88,7 @@ object DownloadDataHelper { "未成年" } else if (status == DownloadStatus.unavailable) { "未接入防沉迷系统,暂不支持下载" - }else if (status == DownloadStatus.banned) { + } else if (status == DownloadStatus.banned) { "网络异常" } else if (status == DownloadStatus.redirected) { "重定向至最终地址" @@ -316,8 +316,14 @@ object DownloadDataHelper { mDownloadHeartbeatSheet[downloadEntity.url] = sheet } else { val progressSize = sheet.getLong("current_progress_size") - sheet.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") // 初始化记录的 host 为空 - sheet.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") // 初始化记录的 path 为空 + sheet.put( + "host", + downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown" + ) // 初始化记录的 host 为空 + sheet.put( + "path", + downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown" + ) // 初始化记录的 path 为空 sheet.put("total_size", downloadEntity.size / 1024 / 1024) // 初始化记录的 total_size 有可能为0 sheet.put("progress_size", downloadEntity.progress / 1024 - progressSize) sheet.put("current_progress_size", downloadEntity.progress / 1024) diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 602f48bc44..7ecc39609a 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -565,12 +565,12 @@ public class DownloadManager implements DownloadStatusListener { /** * 获取快照 - * + *

* 畅玩游戏优先根据游戏 ID 获取,非畅玩游戏根据 url 获取 * - * @param url 下载链接 + * @param url 下载链接 * @param isVGame 是不是畅玩游戏 - * @param gameId 游戏 ID + * @param gameId 游戏 ID * @return null表示下载列表中不存在该任务,否则返回下载任务 */ @Nullable @@ -713,8 +713,8 @@ public class DownloadManager implements DownloadStatusListener { for (DownloadEntity downloadEntity : downloadEntityList) { if (!ExtensionsKt.isSimulatorGame(downloadEntity)) { if (!Constants.SILENT_UPDATE.equals(ExtensionsKt.getMetaExtra(downloadEntity, Constants.EXTRA_DOWNLOAD_TYPE)) - && !Constants.SIMULATOR_DOWNLOAD.equals(ExtensionsKt.getMetaExtra(downloadEntity, Constants.EXTRA_DOWNLOAD_TYPE)) - && !Constants.SMOOTH_GAME.equals(ExtensionsKt.getMetaExtra(downloadEntity, Constants.EXTRA_DOWNLOAD_TYPE)) + && !Constants.SIMULATOR_DOWNLOAD.equals(ExtensionsKt.getMetaExtra(downloadEntity, Constants.EXTRA_DOWNLOAD_TYPE)) + && !Constants.SMOOTH_GAME.equals(ExtensionsKt.getMetaExtra(downloadEntity, Constants.EXTRA_DOWNLOAD_TYPE)) ) { filteredDownloadEntityList.add(downloadEntity); } @@ -881,7 +881,6 @@ public class DownloadManager implements DownloadStatusListener { /** * 立马通知 dataWatcher 更新已下载完的任务状态,这里的下载完成是持久状态,不是瞬时状态 - * */ private void notifyDownloadedStatusASAP(DataWatcher dataWatcher) { for (DownloadEntity downloadEntity : getAllDownloadEntitySnapshots()) { @@ -1191,6 +1190,7 @@ public class DownloadManager implements DownloadStatusListener { /** * 添加不可见的 pending 下载任务 + * * @param downloadEntity 任务信息实体 */ public void addInvisiblePendingTask(DownloadEntity downloadEntity) { diff --git a/app/src/main/java/com/gh/download/PackageObserver.kt b/app/src/main/java/com/gh/download/PackageObserver.kt index eaa359e63a..dc76fe4746 100644 --- a/app/src/main/java/com/gh/download/PackageObserver.kt +++ b/app/src/main/java/com/gh/download/PackageObserver.kt @@ -64,7 +64,8 @@ object PackageObserver { for (downloadEntity in DownloadManager.getInstance().allDownloadEntity) { if (packageName == downloadEntity.packageName - && (preciseGameId == null || preciseGameId == downloadEntity.gameId)) { + && (preciseGameId == null || preciseGameId == downloadEntity.gameId) + ) { mDownloadEntity = downloadEntity gameId = mDownloadEntity.gameId if (TextUtils.isEmpty(busFour.versionName)) { @@ -120,7 +121,12 @@ object PackageObserver { for (gameDigestEntity in response!!) { if (!TextUtils.isEmpty(gameDigestEntity?.id)) { // 关注游戏 if (gameDigestEntity?.id == finalDownloadEntity.gameId) { - ConcernUtils.postConcernGameId(application, gameDigestEntity?.id ?: "", null, false) + ConcernUtils.postConcernGameId( + application, + gameDigestEntity?.id ?: "", + null, + false + ) } } } @@ -180,10 +186,10 @@ object PackageObserver { jsonObject.put("package", packageName) val rBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) RetrofitManager.getInstance().api - .postPlayedGame(UserManager.getInstance().userId, rBody) - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe(EmptyResponse()) + .postPlayedGame(UserManager.getInstance().userId, rBody) + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(EmptyResponse()) } catch (e: JSONException) { e.printStackTrace() } @@ -213,6 +219,6 @@ object PackageObserver { } fun interface PackageChangeListener { - fun onChanged(data:EBPackage) + fun onChanged(data: EBPackage) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/cache/ExoCacheManager.kt b/app/src/main/java/com/gh/download/cache/ExoCacheManager.kt index 9096504294..1e7d689d3e 100644 --- a/app/src/main/java/com/gh/download/cache/ExoCacheManager.kt +++ b/app/src/main/java/com/gh/download/cache/ExoCacheManager.kt @@ -53,16 +53,16 @@ object ExoCacheManager { val cacheLength = if (contentLength >= preLength) preLength else contentLength val simpleCache = ExoSourceManager.getCacheSingleInstance(HaloApp.getInstance().application, null) val specBuilder = DataSpec.Builder() - .setUri(Uri.parse(videoUri)) - .setLength(cacheLength) - .build() + .setUri(Uri.parse(videoUri)) + .setLength(cacheLength) + .build() val dataSource: DataSource = DefaultDataSourceFactory(HaloApp.getInstance()).createDataSource() val cacheDataSource = CacheDataSource(simpleCache, dataSource) val cacheWriter = CacheWriter( - cacheDataSource, - specBuilder, - true, - null + cacheDataSource, + specBuilder, + true, + null ) { requestLength, bytesCached, newBytesCached -> // debugOnly { // Utils.log("$requestLength-$bytesCached-$newBytesCached") @@ -94,8 +94,8 @@ object ExoCacheManager { fun getContentLength(downloadUrl: String): Long { var contentLength = -1L val request = Request.Builder() - .url(downloadUrl) - .build() + .url(downloadUrl) + .build() var response: Response? = null try { response = OkHttpClient.Builder().build().newCall(request).execute() diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt index 0e1ac9e5de..afdbe7d450 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt @@ -102,7 +102,8 @@ class DownloadDialog : BaseDraggableDialogFragment() { mViewModel.getAllPackageName() } mViewModel.listLiveData.observeNonNull(this, callback = { itemList -> - mAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, false, mTraceEvent, mEntrance, mLocation) + mAdapter = + DownloadDialogAdapter(requireContext(), mViewModel, itemList, false, mTraceEvent, mEntrance, mLocation) mBinding.contentList.layoutManager = createLayoutManager(itemList) mBinding.contentList.adapter = mAdapter }) @@ -133,7 +134,15 @@ class DownloadDialog : BaseDraggableDialogFragment() { itemList.add(DownloadDialogItemData(instruction = collection.downloadInstruction)) } - mCollectionAdapter = DownloadDialogAdapter(requireContext(), mViewModel, itemList, true, mTraceEvent, mEntrance, mLocation) + mCollectionAdapter = DownloadDialogAdapter( + requireContext(), + mViewModel, + itemList, + true, + mTraceEvent, + mEntrance, + mLocation + ) mBinding.collectionList.layoutManager = createLayoutManager(itemList) mBinding.collectionList.adapter = mCollectionAdapter @@ -229,7 +238,8 @@ class DownloadDialog : BaseDraggableDialogFragment() { }) mBinding.contentListContainer.startAnimation(contentAnimation) - val collectionAnimation = AnimationUtils.loadAnimation(requireContext(), R.anim.download_dialog_collection_content_enter) + val collectionAnimation = + AnimationUtils.loadAnimation(requireContext(), R.anim.download_dialog_collection_content_enter) mBinding.collectionList.startAnimation(collectionAnimation) mBinding.collectionList.visibility = View.VISIBLE } @@ -243,7 +253,8 @@ class DownloadDialog : BaseDraggableDialogFragment() { mBinding.contentListContainer.startAnimation(contentAnimation) mBinding.contentListContainer.visibility = View.VISIBLE - val collectionAnimation = AnimationUtils.loadAnimation(requireContext(), R.anim.download_dialog_collection_content_exit) + val collectionAnimation = + AnimationUtils.loadAnimation(requireContext(), R.anim.download_dialog_collection_content_exit) collectionAnimation.setAnimationListener(object : Animation.AnimationListener { override fun onAnimationRepeat(animation: Animation?) { } @@ -338,7 +349,13 @@ class DownloadDialog : BaseDraggableDialogFragment() { companion object { @JvmStatic - fun showDownloadDialog(context: Context?, gameEntity: GameEntity, traceEvent: ExposureEvent?, entrance: String?, location: String?) { + fun showDownloadDialog( + context: Context?, + gameEntity: GameEntity, + traceEvent: ExposureEvent?, + entrance: String?, + location: String? + ) { val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { context } else if (BuildConfig.DEBUG) { diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt index cf2ec826d9..22a441e4e0 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt @@ -120,7 +120,7 @@ class DownloadDialogAdapter( } } leftLink.visibleIf(!links.isNullOrEmpty()) - rightLink.visibleIf(links?.size ?:0 > 1) + rightLink.visibleIf(links?.size ?: 0 > 1) leftLink.text = if (links.isNullOrEmpty()) "" else links[0].title rightLink.text = if (links?.size ?: 0 > 1) links?.get(1)?.title else "" leftLink.background = GradientDrawable().apply { @@ -140,11 +140,27 @@ class DownloadDialogAdapter( holder.bindItem(viewModel.gameEntity) } is DownloadDialogInstalledItemViewHolder -> { - holder.bindInstalledItem(listData[position].installed!!, viewModel, mTraceEvent, mEntrance, mPath, mLocation) + holder.bindInstalledItem( + listData[position].installed!!, + viewModel, + mTraceEvent, + mEntrance, + mPath, + mLocation + ) throwExceptionInDebug("合集页面不应该存在该条数据", isCollectionPage) } is DownloadDialogItemViewHolder -> { - holder.bindItem(listData, position, viewModel, isCollectionPage, mTraceEvent, mEntrance, mPath, mLocation) + holder.bindItem( + listData, + position, + viewModel, + isCollectionPage, + mTraceEvent, + mEntrance, + mPath, + mLocation + ) } } } diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt index 14cb4bd6dd..069b63157c 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt @@ -15,7 +15,8 @@ import com.gh.gamecenter.databinding.DownloadDialogInstalledItemBinding import com.gh.gamecenter.entity.ApkEntity import com.lightgame.download.DownloadStatus -class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalledItemBinding) : BaseRecyclerViewHolder(binding.root) { +class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalledItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindInstalledItem( apkEntity: ApkEntity, @@ -30,7 +31,11 @@ class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalled val apkCollection = apkEntity.apkCollection val pluginDesc = gameEntity.pluginDesc val apk = if (apkCollection != null) { - ApkEntity(platformIcon = apkCollection.newIcon, platformName = apkCollection.name, remark = apkCollection.remark) + ApkEntity( + platformIcon = apkCollection.newIcon, + platformName = apkCollection.name, + remark = apkCollection.remark + ) } else apkEntity ImageUtils.display(binding.icon, apk.getPlatformIcon()) binding.name.text = apk.getPlatformName() @@ -145,6 +150,14 @@ class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalled } } - DownloadDialogItemViewHolder.setDownloadClickListener(itemView, apkEntity, viewModel, traceEvent, entrance, path, location) + DownloadDialogItemViewHolder.setDownloadClickListener( + itemView, + apkEntity, + viewModel, + traceEvent, + entrance, + path, + location + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstructionItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstructionItemViewHolder.kt index 0b363a7086..49e3aa6a6a 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstructionItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstructionItemViewHolder.kt @@ -9,15 +9,17 @@ import com.gh.common.DefaultUrlHandler import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.databinding.DownloadDialogInstructionItemBinding -class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstructionItemBinding) : BaseRecyclerViewHolder(binding.root) { +class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstructionItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindItem(listData: List, position: Int, entrance: String) { val instruction = listData[position].instruction binding.webView.loadDataWithBaseURL( - null, - "$instruction", - "text/html", - "utf-8", null) + null, + "$instruction", + "text/html", + "utf-8", null + ) binding.webView.settings binding.webView.setBackgroundColor(Color.TRANSPARENT) binding.webView.webViewClient = object : WebViewClient() { @@ -26,7 +28,8 @@ class DownloadDialogInstructionItemViewHolder(val binding: DownloadDialogInstruc } } - val topOffset = if (position - 1 >= 0 && (listData[position - 1].normal?.url.isNullOrEmpty() || listData[position - 1].normal?.recommend != null)) 0 else 12f.dip2px() + val topOffset = + if (position - 1 >= 0 && (listData[position - 1].normal?.url.isNullOrEmpty() || listData[position - 1].normal?.recommend != null)) 0 else 12f.dip2px() (binding.root.layoutParams as RecyclerView.LayoutParams).apply { topMargin = topOffset binding.root.layoutParams = this diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt index e71c2f8596..dc43efe720 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt @@ -3,12 +3,14 @@ package com.gh.download.dialog import com.gh.gamecenter.entity.ApkEntity import com.gh.gamecenter.entity.GameEntity -data class DownloadDialogItemData(var links: List? = null, - var section: DownloadDialogSectionType? = null, - var installed: ApkEntity? = null, - var normal: ApkEntity? = null, - var instruction: String? = null, - var platformRequest: Any? = null) +data class DownloadDialogItemData( + var links: List? = null, + var section: DownloadDialogSectionType? = null, + var installed: ApkEntity? = null, + var normal: ApkEntity? = null, + var instruction: String? = null, + var platformRequest: Any? = null +) enum class DownloadDialogSectionType { INSTALLED, diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt index 579373ff45..4f821e2525 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -152,13 +152,18 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas binding.status.setCompoundDrawablesWithIntrinsicBounds( null, null, - ContextCompat.getDrawable(binding.status.context, R.drawable.download_dialog_collection_status_update), + ContextCompat.getDrawable( + binding.status.context, + R.drawable.download_dialog_collection_status_update + ), null ) binding.downloadStatusIcon.visibility = View.GONE itemView.setTag(DownloadDialogAdapter.ITEM_TAG_KEY, DownloadDialogItemStatus.UPDATE) } else if (PackageUtils.getGhId(apkEntity.packageName) == gameEntity.id || - PackagesManager.isInstalled(apkEntity.packageName) && Config.getSettings()?.gameDownloadBlackList?.contains(apkEntity.packageName) == true + PackagesManager.isInstalled(apkEntity.packageName) && Config.getSettings()?.gameDownloadBlackList?.contains( + apkEntity.packageName + ) == true ) { binding.downloadStatusIcon.visibility = View.GONE binding.status.visibility = View.VISIBLE @@ -182,7 +187,10 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas binding.status.setCompoundDrawablesWithIntrinsicBounds( null, null, - ContextCompat.getDrawable(binding.status.context, R.drawable.download_dialog_collection_status_launch), + ContextCompat.getDrawable( + binding.status.context, + R.drawable.download_dialog_collection_status_launch + ), null ) } @@ -220,9 +228,11 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas } val downloadEntity = DownloadManager.getInstance().getDownloadEntityByUrl(apkEntity.url) if (apkEntity.recommend != null && downloadEntity == null) { - binding.containerView.background = ContextCompat.getDrawable(binding.root.context, R.drawable.bg_download_dialog_item_recommend) + binding.containerView.background = + ContextCompat.getDrawable(binding.root.context, R.drawable.bg_download_dialog_item_recommend) } else { - binding.containerView.background = ContextCompat.getDrawable(binding.root.context, R.drawable.download_dialog_item_background) + binding.containerView.background = + ContextCompat.getDrawable(binding.root.context, R.drawable.download_dialog_item_background) } } @@ -361,35 +371,54 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas // todo 有时间存储判断统一处理 val msg = FileUtils.isCanDownload(context, apkEntity.size) if (msg.isNullOrEmpty()) { - BrowserInstallHelper.showBrowserInstallHintDialog(context, gameEntity.isVGame(), object : EmptyCallback { - override fun onCallback() { - DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apkEntity, object : EmptyCallback { - override fun onCallback() { - PackageCheckDialogFragment.show(context as AppCompatActivity, gameEntity, object : ConfirmListener { - override fun onConfirm() { - CertificationDialog.showCertificationDialog(context, gameEntity, object : ConfirmListener { - override fun onConfirm() { - DialogUtils.checkDownload(context, apkEntity.size) { isSubscribe -> - DownloadManager.createDownload( + BrowserInstallHelper.showBrowserInstallHintDialog( + context, + gameEntity.isVGame(), + object : EmptyCallback { + override fun onCallback() { + DownloadDialogHelper.findAvailableDialogAndShow( + context, + gameEntity, + apkEntity, + object : EmptyCallback { + override fun onCallback() { + PackageCheckDialogFragment.show( + context as AppCompatActivity, + gameEntity, + object : ConfirmListener { + override fun onConfirm() { + CertificationDialog.showCertificationDialog( context, - apkEntity, gameEntity, - downloadMethod, - entrance, - location, - isSubscribe, traceEvent - ) + object : ConfirmListener { + override fun onConfirm() { + DialogUtils.checkDownload( + context, + apkEntity.size + ) { isSubscribe -> + DownloadManager.createDownload( + context, + apkEntity, + gameEntity, + downloadMethod, + entrance, + location, + isSubscribe, traceEvent + ) - DeviceRemindDialog.showDeviceRemindDialog(context, gameEntity) + DeviceRemindDialog.showDeviceRemindDialog( + context, + gameEntity + ) + } + } + }) } - } - }) + }) } }) - } - }) - } - }) + } + }) } else { Utils.toast(context, msg) } diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt index cf454507e8..fe06f96dc1 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt @@ -3,6 +3,7 @@ package com.gh.download.dialog import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding -class DownloadDialogLinkItemViewHolder(val binding: DownloadDialogLinkItemBinding) : BaseRecyclerViewHolder(binding.root) { +class DownloadDialogLinkItemViewHolder(val binding: DownloadDialogLinkItemBinding) : + BaseRecyclerViewHolder(binding.root) { } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogPlatformRequestItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogPlatformRequestItemViewHolder.kt index b61775c90b..b4e927af29 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogPlatformRequestItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogPlatformRequestItemViewHolder.kt @@ -5,8 +5,8 @@ import com.gh.gamecenter.VoteActivity import com.gh.gamecenter.databinding.DownloadDialogPlatformRequestItemBinding import com.gh.gamecenter.entity.GameEntity -class DownloadDialogPlatformRequestItemViewHolder(val binding: DownloadDialogPlatformRequestItemBinding) - : BaseRecyclerViewHolder(binding.root) { +class DownloadDialogPlatformRequestItemViewHolder(val binding: DownloadDialogPlatformRequestItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindItem(gameEntity: GameEntity) { binding.content.setOnClickListener { diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt index 13ee777928..a42fa14483 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt @@ -3,6 +3,7 @@ package com.gh.download.dialog import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.databinding.DownloadDialogSectionItemBinding -class DownloadDialogSectionItemViewHolder(val binding: DownloadDialogSectionItemBinding) : BaseRecyclerViewHolder(binding.root) { +class DownloadDialogSectionItemViewHolder(val binding: DownloadDialogSectionItemBinding) : + BaseRecyclerViewHolder(binding.root) { } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt b/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt index 9365af500a..bf75f656a3 100644 --- a/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt +++ b/app/src/main/java/com/gh/download/server/BrowserInstallHelper.kt @@ -68,12 +68,17 @@ object BrowserInstallHelper { if (!mServer.isBuggyDevice) { fileName = fileName.removeSuffix(DownloadServer.APK_SUFFIX) } - val downloadUrl = if (mUseReservePort) "http://127.0.0.1:$RESERVE_PORT/$fileName" else "http://127.0.0.1:$PORT/$fileName" + val downloadUrl = + if (mUseReservePort) "http://127.0.0.1:$RESERVE_PORT/$fileName" else "http://127.0.0.1:$PORT/$fileName" mFileNameSet.add(fileName) if (mServer.isBuggyDevice) { - val encodedString = Base64.encodeToString(URLEncoder.encode(downloadUrl).trim().toByteArray(), Base64.NO_WRAP) - DirectUtils.directToExternalBrowser(mContext, "https://down-and.ghzs.com/redirect?location=base64($encodedString)") + val encodedString = + Base64.encodeToString(URLEncoder.encode(downloadUrl).trim().toByteArray(), Base64.NO_WRAP) + DirectUtils.directToExternalBrowser( + mContext, + "https://down-and.ghzs.com/redirect?location=base64($encodedString)" + ) } else { DirectUtils.directToExternalBrowser(mContext, downloadUrl) } @@ -123,7 +128,11 @@ object BrowserInstallHelper { } @JvmStatic - fun showBrowserInstallHintDialog(context: Context, skipBrowserInstallDialog: Boolean = false, callback: EmptyCallback) { + fun showBrowserInstallHintDialog( + context: Context, + skipBrowserInstallDialog: Boolean = false, + callback: EmptyCallback + ) { if (skipBrowserInstallDialog || !shouldShowUseBrowserToInstallHint()) { callback.onCallback() return @@ -139,21 +148,21 @@ object BrowserInstallHelper { } DialogHelper.showDialog( - context, - title = "温馨提示", - content = contentText, - confirmText = "切换安装方式", - cancelText = "继续下载", - confirmClickCallback = { - val intent = ShellActivity.getIntent(context, ShellActivity.Type.SWITCH_INSTALL_METHOD, null) - context.startActivity(intent) - logOrdinaryBrowserEvent(Type.SWITCH_INSTALL_DIALOG_ACCESS) - }, - cancelClickCallback = { - callback.onCallback() - logOrdinaryBrowserEvent(Type.SWITCH_INSTALL_DIALOG_QUIT) - }, - extraConfig = DialogHelper.Config(hint = "修改路径:我的光环-设置-切换安装方式") + context, + title = "温馨提示", + content = contentText, + confirmText = "切换安装方式", + cancelText = "继续下载", + confirmClickCallback = { + val intent = ShellActivity.getIntent(context, ShellActivity.Type.SWITCH_INSTALL_METHOD, null) + context.startActivity(intent) + logOrdinaryBrowserEvent(Type.SWITCH_INSTALL_DIALOG_ACCESS) + }, + cancelClickCallback = { + callback.onCallback() + logOrdinaryBrowserEvent(Type.SWITCH_INSTALL_DIALOG_QUIT) + }, + extraConfig = DialogHelper.Config(hint = "修改路径:我的光环-设置-切换安装方式") ) } diff --git a/app/src/main/java/com/gh/download/server/DownloadServer.kt b/app/src/main/java/com/gh/download/server/DownloadServer.kt index 686e1f3cf0..dcf242c440 100644 --- a/app/src/main/java/com/gh/download/server/DownloadServer.kt +++ b/app/src/main/java/com/gh/download/server/DownloadServer.kt @@ -26,12 +26,12 @@ class DownloadServer(port: Int) : NanoHTTPD(port) { init { // 某些浏览器会开启多线程下载,如果不 throttle 的话会出现多次调用 val disposable = mPublishSubject - .distinctUntilChanged() - .throttleWithTimeout(500, TimeUnit.MILLISECONDS) - .subscribeOn(Schedulers.io()) - .subscribe({ - logBrowserDownload(it, false) - }, {}) + .distinctUntilChanged() + .throttleWithTimeout(500, TimeUnit.MILLISECONDS) + .subscribeOn(Schedulers.io()) + .subscribe({ + logBrowserDownload(it, false) + }, {}) mCompositeDisposable.add(disposable) } @@ -39,11 +39,13 @@ class DownloadServer(port: Int) : NanoHTTPD(port) { /** * 默认截掉 .apk 后缀的原因是部分系统判断到 url 后缀为 .apk 就会调用系统下载器而不是浏览器下载 apk (下载完成不会自动触发安装) */ - override fun serve(fileName: String?, - method: Method?, - headers: MutableMap?, - parms: MutableMap?, - files: MutableMap?): Response { + override fun serve( + fileName: String?, + method: Method?, + headers: MutableMap?, + parms: MutableMap?, + files: MutableMap? + ): Response { var filePath = FileUtils.getDownloadDir(HaloApp.getInstance()) + fileName if (!filePath.contains(APK_SUFFIX)) { filePath += APK_SUFFIX @@ -66,7 +68,7 @@ class DownloadServer(port: Int) : NanoHTTPD(port) { return if (file.exists()) { val fileType = FileUtils.getFileMimeType(HaloApp.getInstance().applicationContext, filePath) - ?: "application/vnd.android.package-archive" + ?: "application/vnd.android.package-archive" // TODO 山寨机给了文件长度会下载失败,有空再看看为什么 if (isBuggyDevice) { @@ -88,7 +90,11 @@ class DownloadServer(port: Int) : NanoHTTPD(port) { for (download in DownloadManager.getInstance().allDownloadEntity) { if (download.path == path) { download.exposureTrace?.toObject()?.let { - BrowserInstallHelper.logWebDownloadStarted(it, download.getMetaExtra(Constants.DOWNLOAD_ID), isDownloadComplete) + BrowserInstallHelper.logWebDownloadStarted( + it, + download.getMetaExtra(Constants.DOWNLOAD_ID), + isDownloadComplete + ) } break } diff --git a/app/src/main/java/com/gh/gamecenter/BlockActivity.kt b/app/src/main/java/com/gh/gamecenter/BlockActivity.kt index 6859e6b744..39efca0e02 100644 --- a/app/src/main/java/com/gh/gamecenter/BlockActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/BlockActivity.kt @@ -39,7 +39,10 @@ class BlockActivity : DownloadToolbarActivity() { } override fun getBusinessId(): Pair { - return Pair(targetFragment?.arguments?.getParcelable(EntranceConsts.KEY_BLOCK_DATA)?.link ?: "", "") + return Pair( + targetFragment?.arguments?.getParcelable(EntranceConsts.KEY_BLOCK_DATA)?.link ?: "", + "" + ) } override fun onDarkModeChanged() { diff --git a/app/src/main/java/com/gh/gamecenter/CollectionActivity.java b/app/src/main/java/com/gh/gamecenter/CollectionActivity.java index 0a17392351..8548ce5a4e 100644 --- a/app/src/main/java/com/gh/gamecenter/CollectionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CollectionActivity.java @@ -3,7 +3,9 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import androidx.annotation.NonNull; + import com.gh.gamecenter.collection.CollectionWrapperFragment; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; diff --git a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java index f94bb2775b..65f858d37e 100644 --- a/app/src/main/java/com/gh/gamecenter/ConcernActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ConcernActivity.java @@ -3,7 +3,9 @@ package com.gh.gamecenter; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import androidx.annotation.NonNull; + import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.utils.ExtensionsKt; diff --git a/app/src/main/java/com/gh/gamecenter/FullScreenWebActivity.kt b/app/src/main/java/com/gh/gamecenter/FullScreenWebActivity.kt index 669dd1432a..3a7adcb46c 100644 --- a/app/src/main/java/com/gh/gamecenter/FullScreenWebActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/FullScreenWebActivity.kt @@ -19,8 +19,10 @@ class FullScreenWebActivity : BaseActivity() { DisplayUtils.transparentStatusBar(this) - mWebFragment = supportFragmentManager.findFragmentByTag("webFragment") as? WebFragment ?: WebFragment().apply { with(intent.extras) } - supportFragmentManager.beginTransaction().replace(R.id.placeholder, mWebFragment!!,"webFragment").commitAllowingStateLoss() + mWebFragment = supportFragmentManager.findFragmentByTag("webFragment") as? WebFragment + ?: WebFragment().apply { with(intent.extras) } + supportFragmentManager.beginTransaction().replace(R.id.placeholder, mWebFragment!!, "webFragment") + .commitAllowingStateLoss() } override fun handleBackPressed(): Boolean { @@ -28,7 +30,12 @@ class FullScreenWebActivity : BaseActivity() { } companion object { - fun getIntent(context: Context, url: String, webViewHandleBackPressed: Boolean = false, entrance: String? = null): Intent { + fun getIntent( + context: Context, + url: String, + webViewHandleBackPressed: Boolean = false, + entrance: String? = null + ): Intent { val intent = Intent(context, FullScreenWebActivity::class.java) if (entrance != null) intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance) intent.putExtra(EntranceConsts.KEY_URL, url) diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt index 2f1efac086..a49edc7154 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt @@ -80,13 +80,21 @@ class GameDetailActivity : DownloadToolbarActivity() { override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun updateStaticViewBackground(view: View?) { - updateStaticView(view, listOf(R.id.menu_download_iv, R.id.gameBigEvent, R.id.cardContainer, R.id.iv_reserve, R.id.iv_concern)) + updateStaticView( + view, + listOf(R.id.menu_download_iv, R.id.gameBigEvent, R.id.cardContainer, R.id.iv_reserve, R.id.iv_concern) + ) } companion object { @JvmStatic - fun startGameDetailActivity(context: Context, gameEntity: GameEntity?, entrance: String, traceEvent: ExposureEvent?) { + fun startGameDetailActivity( + context: Context, + gameEntity: GameEntity?, + entrance: String, + traceEvent: ExposureEvent? + ) { startGameDetailActivity(context, gameEntity, entrance, -1, traceEvent = traceEvent) } @@ -143,7 +151,14 @@ class GameDetailActivity : DownloadToolbarActivity() { bundle.putString(EntranceConsts.KEY_GAMEID, gameEntity?.id) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) bundle.putParcelable(GameEntity.TAG, gameEntity) - context.startActivity(getTargetIntent(context, GameDetailActivity::class.java, GameDetailFragment::class.java, bundle)) + context.startActivity( + getTargetIntent( + context, + GameDetailActivity::class.java, + GameDetailFragment::class.java, + bundle + ) + ) } @JvmStatic @@ -216,7 +231,14 @@ class GameDetailActivity : DownloadToolbarActivity() { } bundle.putString(EntranceConsts.KEY_GAMEID, gameId) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - context.startActivity(getTargetIntent(context, GameDetailActivity::class.java, GameDetailFragment::class.java, bundle)) + context.startActivity( + getTargetIntent( + context, + GameDetailActivity::class.java, + GameDetailFragment::class.java, + bundle + ) + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt b/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt index 28e14fe82e..1eef408890 100644 --- a/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/HelpAndFeedbackActivity.kt @@ -19,7 +19,8 @@ class HelpAndFeedbackActivity : BaseActivity_TabLayout() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == SuggestSelectFragment.SUGGEST_TYPE_REQUEST - && resultCode == SuggestSelectFragment.SUGGEST_TYPE_REQUEST) { + && resultCode == SuggestSelectFragment.SUGGEST_TYPE_REQUEST + ) { finish() } } diff --git a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt index fcf9f7504a..b674b141b3 100644 --- a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt @@ -225,7 +225,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { val intent = ArticleDetailActivity.getIntent( this, CommunityEntity( - if (!mAnswerEntity?.communityId.isNullOrEmpty()) mAnswerEntity?.communityId ?: "" else mAnswerEntity?.articleCommunityId ?: "", + if (!mAnswerEntity?.communityId.isNullOrEmpty()) mAnswerEntity?.communityId + ?: "" else mAnswerEntity?.articleCommunityId ?: "", mAnswerEntity?.communityName ?: "" ), mAnswerEntity?.id @@ -462,7 +463,13 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { if (mUseEnterAndExitAnimation && !fadeOnly) { if (mFinalUrl.contains(".gif") || mUrlList!![mViewPager.currentItem].contains(".gif")) { animatorSet.apply { - playTogether(translateXAnimator, translateYAnimator, scaleXAnimator, scaleYAnimator, backgroundAlphaAnimation) + playTogether( + translateXAnimator, + translateYAnimator, + scaleXAnimator, + scaleYAnimator, + backgroundAlphaAnimation + ) duration = ANIMATION_DURATION doOnStart { mIndicatorMask.visibility = View.GONE } doOnEnd { @@ -490,7 +497,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { private fun shouldResize() = abs(mImageRatio - mViewRatio) > RATIO_DIFF - private fun justChangeBoundsAndTransform() = mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1 + private fun justChangeBoundsAndTransform() = + mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1 private fun startEndTransition() { if (mAnimating) return @@ -618,7 +626,13 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { animatorSet.apply { if (mUseEnterAndExitAnimation) { - playTogether(translateXAnimator, translateYAnimator, scaleXAnimator, scaleYAnimator, backgroundAlphaAnimator) + playTogether( + translateXAnimator, + translateYAnimator, + scaleXAnimator, + scaleYAnimator, + backgroundAlphaAnimator + ) } else { playTogether(backgroundAlphaAnimator) } @@ -635,7 +649,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { private fun performExitAnimation(view: DraggableBigImageView, scale: Float, fadeOnly: Boolean) { val finalScale = mOriginWidth / mTargetWidth val finalTranslationX = mOriginLeft - (1 - finalScale) * mTargetWidth / 2 - val finalTranslationY = mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2 + val finalTranslationY = + mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2 val animatorSet = AnimatorSet() @@ -898,7 +913,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } } - private fun isFadeOnly() = mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0 + private fun isFadeOnly() = + mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0 override fun onBackPressed() { updateOriginPosition(mViewPager.currentItem) @@ -941,7 +957,13 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { } @JvmStatic - fun getIntent(context: Context, list: ArrayList, position: Int = 0, originalViewList: List? = null, entrance: String?): Intent { + fun getIntent( + context: Context, + list: ArrayList, + position: Int = 0, + originalViewList: List? = null, + entrance: String? + ): Intent { return getIntent(context, list, position, originalViewList, entrance, false, null) } diff --git a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt b/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt index 28944a9825..917172306e 100644 --- a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt @@ -112,7 +112,13 @@ class NetworkDiagnosisActivity : ToolBarActivity() { builder.append("-----------------------------------------------------------------------\n") // 2.ping域名 - val domains = arrayOf("api.ghzs.com", "download.ghzs.com", "apk.ghzs666.com", "image.ghzs666.com", "image.ghzhushou.com") + val domains = arrayOf( + "api.ghzs.com", + "download.ghzs.com", + "apk.ghzs666.com", + "image.ghzs666.com", + "image.ghzhushou.com" + ) for (domain in domains) { builder.append(DeviceUtils.ping(domain)) builder.append("-----------------------------------------------------------------------\n") @@ -121,7 +127,13 @@ class NetworkDiagnosisActivity : ToolBarActivity() { } // 3.okhttp访问链接 - val urls = arrayOf("https://api.ghzs.com/v3d3/index/columns", "https://download.ghzs.com/game?id=55097638fc1a6fa45f8b4568&platform=9u", "https://apk.ghzs666.com/packed/5af00abc02b30f7c038b456c.apk", "http://image.ghzs666.com/pic/5b29b3c92924bcaf5d438d38.jpg", "http://image.ghzhushou.com/pic/586cad378ab49e0f1b91b3e8.png") + val urls = arrayOf( + "https://api.ghzs.com/v3d3/index/columns", + "https://download.ghzs.com/game?id=55097638fc1a6fa45f8b4568&platform=9u", + "https://apk.ghzs666.com/packed/5af00abc02b30f7c038b456c.apk", + "http://image.ghzs666.com/pic/5b29b3c92924bcaf5d438d38.jpg", + "http://image.ghzhushou.com/pic/586cad378ab49e0f1b91b3e8.png" + ) for (url in urls) { builder.append("Url:") builder.append(url) @@ -129,9 +141,9 @@ class NetworkDiagnosisActivity : ToolBarActivity() { val client = OkHttpClient() val request = Request.Builder() - .head() - .url(url) - .build() + .head() + .url(url) + .build() try { val response = client.newCall(request).execute() builder.append("Success:\n") @@ -152,17 +164,17 @@ class NetworkDiagnosisActivity : ToolBarActivity() { it.onComplete() }).subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onNext(response: ProgressAndDetail) { - mResult.text = response.detail - setResultProgress(response.progress ?: 0) - } + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onNext(response: ProgressAndDetail) { + mResult.text = response.detail + setResultProgress(response.progress ?: 0) + } - override fun onComplete() { - initWebView() - } - }) + override fun onComplete() { + initWebView() + } + }) } @@ -191,13 +203,20 @@ class NetworkDiagnosisActivity : ToolBarActivity() { view.postDelayed({ // WebView生成长图,也就是超过一屏的图片,代码中的bitmap就是最后生成的长图 tryCatchInRelease { - mWebView.measure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED), - View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)) + mWebView.measure( + View.MeasureSpec.makeMeasureSpec( + View.MeasureSpec.UNSPECIFIED, + View.MeasureSpec.UNSPECIFIED + ), + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) + ) mWebView.layout(0, 0, mWebView.measuredWidth, mWebView.measuredHeight) mWebView.isDrawingCacheEnabled = true mWebView.buildDrawingCache() - val bitmap = Bitmap.createBitmap(mWebView.measuredWidth, - mWebView.measuredHeight, Bitmap.Config.ARGB_8888) + val bitmap = Bitmap.createBitmap( + mWebView.measuredWidth, + mWebView.measuredHeight, Bitmap.Config.ARGB_8888 + ) // 画布的宽高和WebView的网页保持一致 val canvas = Canvas(bitmap) @@ -246,9 +265,10 @@ class NetworkDiagnosisActivity : ToolBarActivity() { fun bitmap2File(bitmap: Bitmap): String { try { - val file = File(Environment.getExternalStorageDirectory().absolutePath + "/Pictures/ghzhushou/" - + (UUID.randomUUID().toString().replace("-".toRegex(), "")) - + ".jpg" + val file = File( + Environment.getExternalStorageDirectory().absolutePath + "/Pictures/ghzhushou/" + + (UUID.randomUUID().toString().replace("-".toRegex(), "")) + + ".jpg" ) if (!file.exists()) { file.parentFile.mkdirs() @@ -267,8 +287,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { override fun handleBackPressed(): Boolean { return if (mProgressData < 100) { - DialogHelper.showDialog(this, "确认退出", "网络诊断还未完成,退出会终止所有诊断进程,确定退出吗?" - , "确定", "取消", { + DialogHelper.showDialog(this, "确认退出", "网络诊断还未完成,退出会终止所有诊断进程,确定退出吗?", "确定", "取消", { finish() }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) true diff --git a/app/src/main/java/com/gh/gamecenter/QaActivity.kt b/app/src/main/java/com/gh/gamecenter/QaActivity.kt index 2e155faa39..11ed008d6a 100644 --- a/app/src/main/java/com/gh/gamecenter/QaActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/QaActivity.kt @@ -16,7 +16,12 @@ class QaActivity : ToolBarActivity() { * qaCollectionId 存在则是QA合集页面 * 两个都存在则默认时QA合集页面 */ - fun getIntent(context: Context, navigationTitle: String, qaId: String? = null, qaCollectionId: String? = null): Intent { + fun getIntent( + context: Context, + navigationTitle: String, + qaId: String? = null, + qaCollectionId: String? = null + ): Intent { val args = Bundle() args.putString(EntranceConsts.KEY_QA_ID, qaId) args.putString(EntranceConsts.KEY_QA_COLLECTION_ID, qaCollectionId) diff --git a/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java b/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java index 832dbc248e..8ca55b5403 100644 --- a/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SelectUserIconActivity.java @@ -15,7 +15,7 @@ public class SelectUserIconActivity extends ToolBarActivity { @NonNull public static Intent getIntent(Context context) { - return getTargetIntent(context,SelectUserIconActivity.class, SelectPortraitFragment.class); + return getTargetIntent(context, SelectUserIconActivity.class, SelectPortraitFragment.class); } } diff --git a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java index 4de238d172..1360bb8457 100644 --- a/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ShareCardPicActivity.java @@ -190,7 +190,7 @@ public class ShareCardPicActivity extends ToolBarActivity { mActionbar = findViewById(R.id.normal_toolbar_container); mShareChangImageRl = findViewById(R.id.sharecard_chang_img); mShareShareRl = findViewById(R.id.sharecard_share_btn); - mShareChangImageIcon = findViewById(R.id.sharecard_chang_img_icon); + mShareChangImageIcon = findViewById(R.id.sharecard_chang_img_icon); mShareChangImageTv = findViewById(R.id.sharecard_chang_img_tv); mShareShareRl.setOnClickListener(v -> { diff --git a/app/src/main/java/com/gh/gamecenter/SingletonWebActivity.kt b/app/src/main/java/com/gh/gamecenter/SingletonWebActivity.kt index 41f4e53d7c..6625cdb1c3 100644 --- a/app/src/main/java/com/gh/gamecenter/SingletonWebActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SingletonWebActivity.kt @@ -10,13 +10,16 @@ class SingletonWebActivity : WebActivity() { super.onNewIntent(intent) if (intent?.extras?.getString(EntranceConsts.KEY_URL) - == targetFragment.arguments?.getString(EntranceConsts.KEY_URL)) { + == targetFragment.arguments?.getString(EntranceConsts.KEY_URL) + ) { // 同样的地址,不理会 } else { if (targetFragment is WebFragment) { targetFragment.arguments?.putString( EntranceConsts.KEY_URL, intent?.extras?.getString( - EntranceConsts.KEY_URL)) + EntranceConsts.KEY_URL + ) + ) (targetFragment as WebFragment).reload() } } diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt index 83ea975bc2..971b5d4320 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt @@ -66,7 +66,8 @@ class SplashScreenActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { mViewModel = viewModelProvider() mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) - mIsNewForThisVersion = mSharedPreferences!!.getBoolean("isNewFirstLaunchV" + PackageUtils.getGhVersionName(), true) + mIsNewForThisVersion = + mSharedPreferences!!.getBoolean("isNewFirstLaunchV" + PackageUtils.getGhVersionName(), true) HaloApp.getInstance().isNewForThisVersion = mIsNewForThisVersion // 用户不是新版本,但应用最后更新时间不是上次的时间代表用户重新安装了当前版本 @@ -186,11 +187,14 @@ class SplashScreenActivity : BaseActivity() { // }) } else { - DialogUtils.showPrivacyPolicyDisallowDialog(this, PrivacyPolicyEntity.createDefaultData(), object : EmptyCallback { - override fun onCallback() { - showPrivacyDialog(guideLayout) - } - }) + DialogUtils.showPrivacyPolicyDisallowDialog( + this, + PrivacyPolicyEntity.createDefaultData(), + object : EmptyCallback { + override fun onCallback() { + showPrivacyDialog(guideLayout) + } + }) } } } diff --git a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt index 4b1b06cb50..a3a57b737c 100644 --- a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt @@ -17,7 +17,7 @@ class UserInfoActivity : ToolBarActivity() { } } - override fun isAutoResetViewBackgroundEnabled(): Boolean=true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java index 725861cffd..2b4552d0cd 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java @@ -79,11 +79,11 @@ public class CleanApkAdapter extends BaseRecyclerAdapter private void init() { Observable.create(emitter -> { - // 扫描和获取apk数据 分步操作 尽量避免 StackoverflowError - FindAllAPKPath(Environment.getExternalStorageDirectory()); - LoadApkData(); - emitter.onComplete(); - }) + // 扫描和获取apk数据 分步操作 尽量避免 StackoverflowError + FindAllAPKPath(Environment.getExternalStorageDirectory()); + LoadApkData(); + emitter.onComplete(); + }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response() { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java index 97ed76b286..61d75a7776 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java @@ -4,7 +4,9 @@ import android.content.Context; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; + import androidx.core.content.ContextCompat; + import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index abc5519611..5590abe694 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -39,19 +39,19 @@ import java.util.List; * @author Trinea 2014-2-23 */ public class ImagePagerAdapter extends RecyclingPagerAdapter { - + private Context mContext; private List mSlideEntityList; - + private int mSize; private boolean mIsInfiniteLoop; private SubjectRecommendEntity mBlockData; - + private String mSource; - + private GameItemData mItemData; private ArrayList mExposureSourceList; - + public ImagePagerAdapter(Context context, GameItemData itemData, boolean isInfiniteLoop, List basicExposureSource, SubjectRecommendEntity blockData) { mContext = context; mSlideEntityList = itemData.getSlideList(); @@ -65,30 +65,30 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { mExposureSourceList.addAll(basicExposureSource); mExposureSourceList.add(new ExposureSource("轮播图", "")); } - + public int getSize(List sourceList) { return sourceList == null ? 0 : sourceList.size(); } - + @Override public int getCount() { // Infinite loop return mIsInfiniteLoop ? Integer.MAX_VALUE : getSize(mSlideEntityList); } - + @Override public View getView(final int position, View view, ViewGroup container) { if (view == null) { view = new SimpleDraweeView(mContext); } - + int index = getPosition(position); if (index >= mSlideEntityList.size()) return view; - + final LinkEntity slideEntity = mSlideEntityList.get(index); - + ImageUtils.display(mContext.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload); - + ExposureEvent exposureEvent = null; if ("game".equals(slideEntity.getType())) { GameEntity fakeGameEntity = new GameEntity(); @@ -100,26 +100,26 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { exposureEvent = ExposureEvent.createEvent(fakeGameEntity, mExposureSourceList, null, ExposureType.EXPOSURE); } - + ExposureEvent finalExposureEvent = exposureEvent; view.setOnClickListener(v -> { int size = mSlideEntityList.size(); - + if (size == 0) return; - + // 轮播图数据统计 if (mContext instanceof MainActivity) { DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(), slideEntity.getText(), "", String - .valueOf(getPosition(position) % size + 1), "游戏库"); + .valueOf(getPosition(position) % size + 1), "游戏库"); } else { DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(), slideEntity.getText(), "", String - .valueOf(getPosition(position) % size + 1), mSource); + .valueOf(getPosition(position) % size + 1), mSource); } - + String indexName = String.valueOf(getPosition(position) % size + 1); String entrance = StringUtils.buildString("(", mSource, "-轮播图[", slideEntity.getText(), "=", slideEntity - .getType(), "=", indexName, "])"); - + .getType(), "=", indexName, "])"); + MtaHelper.onEvent("轮播图", mSource, indexName); HashMap map = new HashMap<>(); @@ -129,37 +129,37 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { PageSwitchDataHelper.pushCurrentPageData(map); DirectUtils.INSTANCE.directToLinkPage(mContext, slideEntity, entrance, "轮播图[" + slideEntity - .getText() + "=" + slideEntity.getType() + "=" + indexName + "]", finalExposureEvent); + .getText() + "=" + slideEntity.getType() + "=" + indexName + "]", finalExposureEvent); }); - + mItemData.getExposureEventList().add(finalExposureEvent); - + return view; } - + /** * get real position */ private int getPosition(int position) { return mIsInfiniteLoop ? position % mSize : position; } - + public int getDataSize() { return mSlideEntityList == null ? 0 : mSlideEntityList.size(); } - + @Override public int getItemPosition(@NonNull Object object) { return POSITION_NONE; } - + /** * @return the mIsInfiniteLoop */ public boolean isInfiniteLoop() { return mIsInfiniteLoop; } - + /** * @param isInfiniteLoop the mIsInfiniteLoop to set */ @@ -167,19 +167,19 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { this.mIsInfiniteLoop = isInfiniteLoop; return this; } - + public void checkResetData(GameItemData itemData) { if (mSlideEntityList != itemData.getSlideList()) { mSlideEntityList = itemData.getSlideList(); mSize = getSize(itemData.getSlideList()); } - + if (mItemData.getExposureEventList() != null) { mItemData.getExposureEventList().clear(); mItemData = itemData; mItemData.setExposureEventList(new ArrayList<>()); } - + notifyDataSetChanged(); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LiBaoCodeAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LiBaoCodeAdapter.java index 12ba1d26b5..80d1c6b197 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LiBaoCodeAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LiBaoCodeAdapter.java @@ -37,7 +37,7 @@ public class LiBaoCodeAdapter extends BaseRecyclerAdapter { @Override public void onBindViewHolder(LiBaoCodeViewHolder holder, int position) { final UserDataLibaoEntity userDataLibaoEntity = mUserDataLibaoList.get(position); - holder.binding.libaoCodeTv.setTextColor(ContextCompat.getColor(mContext,R.color.text_subtitle)); + holder.binding.libaoCodeTv.setTextColor(ContextCompat.getColor(mContext, R.color.text_subtitle)); if ("ling".equals(userDataLibaoEntity.getType()) || "linged".equals(userDataLibaoEntity.getType())) { StringBuilder content = new StringBuilder(); if (mUserDataLibaoList.size() > 1) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index bd06def8e1..22684e86a1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -193,7 +193,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter { } }); - ExtensionsKt.setRootBackgroundColor( holder.binding.getRoot(),R.color.background_white); + ExtensionsKt.setRootBackgroundColor(holder.binding.getRoot(), R.color.background_white); if (mLibaoEntity.getGame() != null) { holder.binding.libaodetailGameIcon.displayGameIcon(mLibaoEntity.getGame().getIcon(), mLibaoEntity.getGame().getIconSubscript()); } else { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 46e96824bc..c613390101 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -150,7 +150,7 @@ public class MessageDetailAdapter extends BaseRecyclerAdapter { if (isLoading) { return; } - if (isRefresh){ + if (isRefresh) { mNormalCommentList.clear(); mPage = 1; } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/RecyclingPagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/RecyclingPagerAdapter.java index 5473fa9c39..3c59c0a454 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/RecyclingPagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/RecyclingPagerAdapter.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.adapter; import androidx.viewpager.widget.PagerAdapter; + import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java index d411f2544a..53f6f7d8a3 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectTypeAdapter.java @@ -2,8 +2,10 @@ package com.gh.gamecenter.adapter; import android.content.Context; import android.graphics.Color; + import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; + import android.text.TextUtils; import android.view.Gravity; import android.view.View; @@ -57,7 +59,7 @@ public class SubjectTypeAdapter extends BaseRecyclerAdapter textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT , DisplayUtils.dip2px(mContext, 25))); textView.setGravity(Gravity.CENTER); - textView.setPadding(DisplayUtils.dip2px(mContext, 10), 0 , DisplayUtils.dip2px(mContext, 10), 0); + textView.setPadding(DisplayUtils.dip2px(mContext, 10), 0, DisplayUtils.dip2px(mContext, 10), 0); relativeLayout.addView(textView); return new GameTypeViewHolder(relativeLayout); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java index 1cba3f32b7..9452a86c24 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ToolBoxRvAdapter.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.List; import androidx.recyclerview.widget.RecyclerView; + import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.kt b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.kt index f4eb909cb1..8aac8aa0d6 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameImageViewHolder.kt @@ -25,7 +25,9 @@ class GameImageViewHolder(var binding: GameImageItemBinding) : BaseRecyclerViewH val width = context.resources.displayMetrics.widthPixels - DisplayUtils.dip2px(context, 16F) if (applyRoundCorner) { - val roundingParams = RoundingParams.fromCornersRadius(binding.root.resources.getDimensionPixelSize(R.dimen.home_large_image_radius).toFloat()) + val roundingParams = RoundingParams.fromCornersRadius( + binding.root.resources.getDimensionPixelSize(R.dimen.home_large_image_radius).toFloat() + ) binding.gameImageIcon.hierarchy.roundingParams = roundingParams } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/ViewHolder.kt b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/ViewHolder.kt index a56e7dd830..1db46a235c 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/ViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/ViewHolder.kt @@ -5,9 +5,18 @@ import com.gh.gamecenter.databinding.* class SearchGameFooterViewHolder(val binding: SearchGameFooterBinding) : BaseRecyclerViewHolder(binding.root) class PersonalHomeRatingViewHolder(val binding: PersonalHomeRatingBinding) : BaseRecyclerViewHolder(binding.root) -class GameColumnCollectionItemViewHolder(val binding: GameColumnCollectionItemBinding) : BaseRecyclerViewHolder(binding.root) +class GameColumnCollectionItemViewHolder(val binding: GameColumnCollectionItemBinding) : + BaseRecyclerViewHolder(binding.root) + class PrivacyPolicyItemViewHolder(val binding: PrivacyItemBinding) : BaseRecyclerViewHolder(binding.root) -class CommonCollectionItemViewHolder(val binding: CommonCollectionItemBinding) : BaseRecyclerViewHolder(binding.root) -class CommonCollectionDetailOneItemViewHolder(val binding: CommonCollectionDetailOneItemBinding) : BaseRecyclerViewHolder(binding.root) -class CommonCollectionDetailTwoItemViewHolder(val binding: CommonCollectionDetailTwoItemBinding) : BaseRecyclerViewHolder(binding.root) -class CommonCollectionImageTextItemViewHolder(val binding: CommonCollectionImageTextItemBinding) : BaseRecyclerViewHolder(binding.root) \ No newline at end of file +class CommonCollectionItemViewHolder(val binding: CommonCollectionItemBinding) : + BaseRecyclerViewHolder(binding.root) + +class CommonCollectionDetailOneItemViewHolder(val binding: CommonCollectionDetailOneItemBinding) : + BaseRecyclerViewHolder(binding.root) + +class CommonCollectionDetailTwoItemViewHolder(val binding: CommonCollectionDetailTwoItemBinding) : + BaseRecyclerViewHolder(binding.root) + +class CommonCollectionImageTextItemViewHolder(val binding: CommonCollectionImageTextItemBinding) : + BaseRecyclerViewHolder(binding.root) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayActivity.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayActivity.kt index 39471cd4bb..ae31ef9bdf 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayActivity.kt @@ -20,9 +20,10 @@ class AmwayActivity : BaseActivity() { DisplayUtils.transparentStatusBar(this) val containerFragment = supportFragmentManager.findFragmentByTag(AmwayFragment::class.java.name) - ?: AmwayFragment().with(intent.extras) + ?: AmwayFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, AmwayFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, AmwayFragment::class.java.name).commitAllowingStateLoss() } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt index 171bcb0e33..3795eb7a3b 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayAdapter.kt @@ -59,7 +59,13 @@ class AmwayAdapter( return when (viewType) { ITEM_AMWAY_COMMENT -> AmwayCommentViewHolder(parent.toBinding()) - ItemViewType.ITEM_FOOTER -> FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) + ItemViewType.ITEM_FOOTER -> FooterViewHolder( + mLayoutInflater.inflate( + R.layout.refresh_footerview, + parent, + false + ) + ) else -> mLegacyHomeFragmentAdapterAssistant.createLegacyViewHolder(parent, viewType) } @@ -91,7 +97,12 @@ class AmwayAdapter( when (holder) { is AmwayCommentViewHolder -> { mEntityList[position].amwayCommentItem?.let { - holder.bindComment(mViewModel, mEntityList[position], mEntityList[position].blockPosition, mBasicExposureSource) + holder.bindComment( + mViewModel, + mEntityList[position], + mEntityList[position].blockPosition, + mBasicExposureSource + ) } } @@ -131,7 +142,12 @@ class AmwayAdapter( if (position >= mEntityList.size) return arrayListOf() val itemData = mEntityList[position] - mLegacyHomeFragmentAdapterAssistant.getLegacyGameEntityByPackage(positionList, itemData, packageName, position) + mLegacyHomeFragmentAdapterAssistant.getLegacyGameEntityByPackage( + positionList, + itemData, + packageName, + position + ) } } return positionList @@ -182,7 +198,12 @@ class AmwayAdapter( } class AmwayCommentViewHolder(var binding: AmwayCommentItemBinding) : RecyclerView.ViewHolder(binding.root) { - fun bindComment(viewModel: AmwayViewModel, itemData: AmwayListItemData, blockPosition: Int, basicExposureSource: List) { + fun bindComment( + viewModel: AmwayViewModel, + itemData: AmwayListItemData, + blockPosition: Int, + basicExposureSource: List + ) { val context = binding.root.context val amway = itemData.amwayCommentItem!! @@ -199,22 +220,32 @@ class AmwayAdapter( binding.ratingTv.text = amway.game.star.toString() binding.userNameTv.text = amway.comment.user.name binding.ratingBar.rating = amway.comment.star.toFloat() - binding.likeCountTv.text = if (amway.comment.vote > 0) NumberUtils.transSimpleCount(amway.comment.vote) else "0" + binding.likeCountTv.text = + if (amway.comment.vote > 0) NumberUtils.transSimpleCount(amway.comment.vote) else "0" val user = itemData.amwayCommentItem?.comment?.user binding.userIcon.display(user?.border, user?.icon, user?.auth?.icon) val m = Pattern.compile(RatingEditActivity.LABEL_REGEX).matcher(amway.comment.content) if (m.find()) { - val contents = TextHelper.getCommentLabelSpannableStringBuilder(amway.comment.content, R.color.theme_font) + val contents = + TextHelper.getCommentLabelSpannableStringBuilder(amway.comment.content, R.color.theme_font) binding.amwayContentTv.setTextWithHighlightedTextWrappedInsideWrapper(contents, copyClickedText = true) } else { - binding.amwayContentTv.setTextWithHighlightedTextWrappedInsideWrapper(amway.comment.content, copyClickedText = true) + binding.amwayContentTv.setTextWithHighlightedTextWrappedInsideWrapper( + amway.comment.content, + copyClickedText = true + ) } itemData.exposureEvent = ExposureEvent.createEvent(amway.game.toGameEntity(), basicExposureSource) binding.gameContainer.setOnClickListener { - GameDetailActivity.startGameDetailActivity(binding.root.context, amway.game.id, "${viewModel.entrance}+(安利墙)", itemData.exposureEvent) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + amway.game.id, + "${viewModel.entrance}+(安利墙)", + itemData.exposureEvent + ) MtaHelper.onEvent("安利墙", "点击", "评论${blockPosition}_${amway.game.name}_游戏") NewLogUtils.logShareWallSquareCardClick(amway.game.name ?: "", amway.game.id, "游戏信息") } @@ -239,13 +270,23 @@ class AmwayAdapter( context, amway.game.id, amway.comment, false, viewModel.entrance ?: "", EntranceConsts.ENTRANCE_AMWAY ) - SyncDataBetweenPageHelper.startActivityForResult(binding.root.context, intent, RatingFragment.RATING_REPLAY_REQUEST, adapterPosition) + SyncDataBetweenPageHelper.startActivityForResult( + binding.root.context, + intent, + RatingFragment.RATING_REPLAY_REQUEST, + adapterPosition + ) MtaHelper.onEvent("安利墙", "点击", "评论${blockPosition}_${amway.game.name}_评论") NewLogUtils.logShareWallSquareCardClick(amway.game.name ?: "", amway.game.id, "评论内容") } binding.userClickableView.setOnClickListener { - DirectUtils.directToHomeActivity(context, amway.comment.user.id, viewModel.entrance, EntranceConsts.ENTRANCE_AMWAY) + DirectUtils.directToHomeActivity( + context, + amway.comment.user.id, + viewModel.entrance, + EntranceConsts.ENTRANCE_AMWAY + ) NewLogUtils.logShareWallSquareCardClick(amway.game.name ?: "", amway.game.id, "用户信息") } @@ -281,13 +322,22 @@ class AmwayAdapter( override fun onConfirm() { MtaHelper.onEvent("进入徽章墙_用户记录", "安利墙", "${amway.comment.user.name}(${amway.comment.user.id})") MtaHelper.onEvent("徽章中心", "进入徽章中心", "安利墙") - DirectUtils.directToBadgeWall(context, amway.comment.user.id, amway.comment.user.name, amway.comment.user.icon) + DirectUtils.directToBadgeWall( + context, + amway.comment.user.id, + amway.comment.user.name, + amway.comment.user.icon + ) } }) } } - private fun playLikedAnimation(likeTv: TextView, likeIv: CheckableImageView, likeAnimView: LottieAnimationView) { + private fun playLikedAnimation( + likeTv: TextView, + likeIv: CheckableImageView, + likeAnimView: LottieAnimationView + ) { likeTv.setTextColor(R.color.theme_font.toColor(likeTv.context)) likeIv.isChecked = true likeIv.visibility = View.INVISIBLE diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt index 41824e5c16..1e2c0d3d63 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt @@ -177,7 +177,8 @@ class AmwayFragment : LazyListFragment() { toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_bar_back) } else { titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) - toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white) + toolbar.navigationIcon = + ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white) } } @@ -208,8 +209,14 @@ class AmwayFragment : LazyListFragment() { } } - mListRefresh?.setProgressViewOffset(false, 0, 118F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources)) - mSkeletonScreen = Skeleton.bind(mDefaultBinding?.skeletonPlaceholder).shimmer(false).load(R.layout.fragment_amway_skeleton).show() + mListRefresh?.setProgressViewOffset( + false, + 0, + 118F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources) + ) + mSkeletonScreen = + Skeleton.bind(mDefaultBinding?.skeletonPlaceholder).shimmer(false).load(R.layout.fragment_amway_skeleton) + .show() } private fun initAlternativeLayout() { @@ -236,7 +243,8 @@ class AmwayFragment : LazyListFragment() { } }) - mSkeletonScreen = Skeleton.bind(mAlternativeBinding?.skeletonPlaceholder).shimmer(false).load(R.layout.fragment_amway_skeleton_al).show() + mSkeletonScreen = Skeleton.bind(mAlternativeBinding?.skeletonPlaceholder).shimmer(false) + .load(R.layout.fragment_amway_skeleton_al).show() } override fun onFragmentPause() { diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwaySuccessFragment.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwaySuccessFragment.kt index 32661a3dd7..e75fd4859c 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwaySuccessFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwaySuccessFragment.kt @@ -49,8 +49,12 @@ class AmwaySuccessFragment : ToolbarFragment() { commentRuleTv.setOnClickListener { startActivity( - WebActivity.getWebIntent(requireContext(), requireContext().getString( - R.string.comment_rules_title), requireContext().getString(R.string.comment_rules_url))) + WebActivity.getWebIntent( + requireContext(), requireContext().getString( + R.string.comment_rules_title + ), requireContext().getString(R.string.comment_rules_url) + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt index e2150c9e18..c0f9a213fb 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt @@ -61,70 +61,72 @@ class AmwayViewModel(application: Application) : ListViewModel() { - override fun onSuccess(data: AmwayCommentEntity) { - mFixedTopAmway = data - getFixedAmwayList(true) - } + .getAmwayDetail(fixedTopAmwayId) + .subscribeOn(Schedulers.io()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: AmwayCommentEntity) { + mFixedTopAmway = data + getFixedAmwayList(true) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - getFixedAmwayList(true) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + getFixedAmwayList(true) + } + }) } @SuppressLint("CheckResult") - private fun getFixedAmwayList(dumpOldData: Boolean, - emitter: SingleEmitter>? = null) { + private fun getFixedAmwayList( + dumpOldData: Boolean, + emitter: SingleEmitter>? = null + ) { RetrofitManager.getInstance().api - .getAmwayCommentList(1, 100) - .subscribeOn(Schedulers.io()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - updateFixedAmwayCommentList(ArrayList(data), dumpOldData) - getAmwaySubjectList(emitter) - } + .getAmwayCommentList(1, 100) + .subscribeOn(Schedulers.io()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + updateFixedAmwayCommentList(ArrayList(data), dumpOldData) + getAmwaySubjectList(emitter) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - mLoadStatusLiveData.postValue(LoadStatus.INIT_FAILED) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + mLoadStatusLiveData.postValue(LoadStatus.INIT_FAILED) + } + }) } @SuppressLint("CheckResult") private fun getAmwaySubjectList(emitter: SingleEmitter>? = null) { RetrofitManager.getInstance().api - .amwaySubjectList - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - // 为从启动弹窗跳转过来的 gameEntity 附上启动弹窗的相关数据供曝光数据使用 (草) - if (entrance == EntranceConsts.ENTRANCE_WELCOME) { - for (subject in data) { - subject.data?.let { - for (game in it) { - game.setWelcomeDialogInfoIfAvailable() - } + .amwaySubjectList + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + // 为从启动弹窗跳转过来的 gameEntity 附上启动弹窗的相关数据供曝光数据使用 (草) + if (entrance == EntranceConsts.ENTRANCE_WELCOME) { + for (subject in data) { + subject.data?.let { + for (game in it) { + game.setWelcomeDialogInfoIfAvailable() } } } - - mAmwaySubjectList = ArrayList(data) - load(LoadType.REFRESH) - - emitter?.onSuccess(getRandomItems()) } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - mLoadStatusLiveData.postValue(LoadStatus.INIT_FAILED) - } - }) + mAmwaySubjectList = ArrayList(data) + load(LoadType.REFRESH) + + emitter?.onSuccess(getRandomItems()) + } + + override fun onFailure(exception: Exception) { + super.onFailure(exception) + mLoadStatusLiveData.postValue(LoadStatus.INIT_FAILED) + } + }) } override fun provideDataObservable(page: Int): Observable>? = null @@ -148,13 +150,14 @@ class AmwayViewModel(application: Application) : ListViewModel, - subjectListCopy.poll(), - subjectPosition++, - { AmwayListItemData() }, - { addGamePositionAndPackage(itemDataList.size - 1, it) } + itemDataList as ArrayList, + subjectListCopy.poll(), + subjectPosition++, + { AmwayListItemData() }, + { addGamePositionAndPackage(itemDataList.size - 1, it) } ) } itemDataList.add(AmwayListItemData(amwayCommentItem = list[i]).apply { blockPosition = i + 1 }) @@ -191,7 +194,11 @@ class AmwayViewModel(application: Application) : ListViewModel() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) + .voteGameComment(gameId, commentId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) - Utils.toast(getApplication(), "点赞成功") - updateAmwayCommentLikeCount(commentId, increaseCount = true, isLiked = true) + Utils.toast(getApplication(), "点赞成功") + updateAmwayCommentLikeCount(commentId, increaseCount = true, isLiked = true) - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } fun undoLikeAmwayComment(gameId: String, commentId: String) { RetrofitManager.getInstance().api - .unvoteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) + .unvoteGameComment(gameId, commentId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) - Utils.toast(getApplication(), "取消点赞") - updateAmwayCommentLikeCount(commentId, decreaseCount = true, isLiked = false) - } + Utils.toast(getApplication(), "取消点赞") + updateAmwayCommentLikeCount(commentId, decreaseCount = true, isLiked = false) + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } - private fun updateAmwayCommentLikeCount(commentId: String, - increaseCount: Boolean = false, - decreaseCount: Boolean = false, - isLiked: Boolean = false, - updatedLikeCount: Int = -1) { + private fun updateAmwayCommentLikeCount( + commentId: String, + increaseCount: Boolean = false, + decreaseCount: Boolean = false, + isLiked: Boolean = false, + updatedLikeCount: Int = -1 + ) { mResultLiveData.value?.let { for ((i, item) in it.withIndex()) { if (item.amwayCommentItem != null) { diff --git a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchActivity.kt b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchActivity.kt index 3920e26891..e8968033f7 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchActivity.kt @@ -63,12 +63,12 @@ class AmwaySearchActivity : SearchActivity() { when (type) { DisplayType.DEFAULT -> { val fragment = supportFragmentManager.findFragmentByTag(SearchDefaultFragment::class.java.name) - ?: AmwaySearchDefaultFragment() + ?: AmwaySearchDefaultFragment() transaction.replace(R.id.search_result, fragment, SearchDefaultFragment::class.java.name) } else -> { val fragment = supportFragmentManager.findFragmentByTag(AmwaySearchListFragment::class.java.name) - ?: AmwaySearchListFragment() + ?: AmwaySearchListFragment() transaction.replace(R.id.search_result, fragment, AmwaySearchListFragment::class.java.name) } } diff --git a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchDefaultFragment.kt b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchDefaultFragment.kt index de03d7e168..00ead0ad2a 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchDefaultFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchDefaultFragment.kt @@ -68,7 +68,13 @@ class AmwaySearchDefaultFragment : SearchDefaultFragment() { headTitle.textSize = 16F headActionTv.text = "清空" headActionTv.setTextColor(R.color.text_subtitleDesc.toColor(requireContext())) - headActionTv.setCompoundDrawablesWithIntrinsicBounds(VectorDrawableCompat.create(resources, R.drawable.search_history_delete, null), null, null, null) + headActionTv.setCompoundDrawablesWithIntrinsicBounds( + VectorDrawableCompat.create( + resources, + R.drawable.search_history_delete, + null + ), null, null, null + ) headActionTv.setOnClickListener { DialogHelper.showCenterWarningDialog(requireContext(), "清空记录", "确定清空历史搜索记录?", confirmClickCallback = { mSearchDao.deleteAll() diff --git a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewHolder.kt b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewHolder.kt index 6f3811f22c..731b6ca9ac 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewHolder.kt @@ -19,7 +19,8 @@ import com.lightgame.utils.Util_System_Keyboard import com.lightgame.utils.Utils import java.lang.ref.WeakReference -class AmwaySearchViewHolder(var binding: AmwaySearchItemBinding, val mViewModel: AmwaySearchViewModel) : RecyclerView.ViewHolder(binding.root) { +class AmwaySearchViewHolder(var binding: AmwaySearchItemBinding, val mViewModel: AmwaySearchViewModel) : + RecyclerView.ViewHolder(binding.root) { fun bindView(gameEntity: GameEntity) { binding.iconIv.displayGameIcon(gameEntity) @@ -44,13 +45,24 @@ class AmwaySearchViewHolder(var binding: AmwaySearchItemBinding, val mViewModel: override fun onCallback(arg: Boolean) { if (arg) { // 已评论过此游戏 - GameDetailActivity.startGameDetailActivity(binding.root.context, gameEntity, "安利墙", isSkipGameComment = true) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + gameEntity, + "安利墙", + isSkipGameComment = true + ) } else { it.context.showRegulationTestDialogIfNeeded { val installPackageName = mViewModel.canUserCommentThisGame(gameEntity) if (gameEntity.directComment || !installPackageName.isNullOrEmpty()) { MtaHelper.onEvent("发表评论", "进入", "选中游戏_${gameEntity.name}") - val intent = RatingEditActivity.getIntent(binding.root.context, gameEntity, 0.0F, installPackageName, true) + val intent = RatingEditActivity.getIntent( + binding.root.context, + gameEntity, + 0.0F, + installPackageName, + true + ) activity.startActivity(intent) activity.finish() } else { diff --git a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewModel.kt b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewModel.kt index b9ba43cea2..28131d65a0 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/search/AmwaySearchViewModel.kt @@ -43,42 +43,42 @@ class AmwaySearchViewModel(application: Application) : AndroidViewModel(applicat mTempSearchKey = searchKey loadStatus.postValue(LoadStatus.INIT_LOADING) RetrofitManager - .getInstance().api - .getSearchGame(Config.API_HOST + "games:search?keyword=" + searchKey + "&view=anliwall" + "&channel=" + HaloApp.getInstance().channel + "&version=" + BuildConfig.VERSION_NAME) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - mTempSearchKey = "" - if (response != null && response.isNotEmpty()) { - loadStatus.postValue(LoadStatus.INIT_LOADED) - } else { - loadStatus.postValue(LoadStatus.INIT_EMPTY) - } - searchGames.postValue(response) + .getInstance().api + .getSearchGame(Config.API_HOST + "games:search?keyword=" + searchKey + "&view=anliwall" + "&channel=" + HaloApp.getInstance().channel + "&version=" + BuildConfig.VERSION_NAME) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + mTempSearchKey = "" + if (response != null && response.isNotEmpty()) { + loadStatus.postValue(LoadStatus.INIT_LOADED) + } else { + loadStatus.postValue(LoadStatus.INIT_EMPTY) } + searchGames.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - loadStatus.postValue(LoadStatus.INIT_FAILED) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + loadStatus.postValue(LoadStatus.INIT_FAILED) + } + }) } @SuppressLint("CheckResult") fun getPlayedGames() { RetrofitManager.getInstance() - .api - .getPlayedGames(UserManager.getInstance().userId, 1, Utils.getTime(getApplication()), mapOf()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - val sortedList = data.sortedBy { !it.showComment } - playedGames.postValue(sortedList.take(5)) - } - }) + .api + .getPlayedGames(UserManager.getInstance().userId, 1, Utils.getTime(getApplication()), mapOf()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + val sortedList = data.sortedBy { !it.showComment } + playedGames.postValue(sortedList.take(5)) + } + }) } fun canUserCommentThisGame(gameEntity: GameEntity): String? { @@ -87,9 +87,10 @@ class AmwaySearchViewModel(application: Application) : AndroidViewModel(applicat for (apk in gameEntity.getApk()) { val packageName = apk.packageName if (!TextUtils.isEmpty(packageName) - // 过滤黑名单包名 - && !PackageHelper.commentPackageNameBlackList.contains(packageName) - && !PackageHelper.downloadPackageNameBlackList.contains(packageName)) { + // 过滤黑名单包名 + && !PackageHelper.commentPackageNameBlackList.contains(packageName) + && !PackageHelper.downloadPackageNameBlackList.contains(packageName) + ) { packageNameList.add(packageName) } } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt index 2a80218f92..c087008d65 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt @@ -116,28 +116,40 @@ class CatalogFragment : LazyFragment() { selectedCatalogName = subCatalog[0].name } mBinding?.rvCatalog?.layoutManager = FixLinearLayoutManager(requireContext()) - mBinding?.rvCatalog?.adapter = CatalogAdapter(requireContext(), this@CatalogFragment, this, subCatalog) + mBinding?.rvCatalog?.adapter = + CatalogAdapter(requireContext(), this@CatalogFragment, this, subCatalog) if (hasSpecial && selectedCatalogPosition == 0) { - mSpecialCatalogFragment = childFragmentManager.findFragmentByTag(SpecialCatalogFragment::class.java.name) as? SpecialCatalogFragment + mSpecialCatalogFragment = + childFragmentManager.findFragmentByTag(SpecialCatalogFragment::class.java.name) as? SpecialCatalogFragment ?: SpecialCatalogFragment() mSpecialCatalogFragment?.arguments = bundleOf( - EntranceConsts.KEY_IS_CATEGORY_V2 to false, - EntranceConsts.KEY_CATALOG_ID to id, - EntranceConsts.KEY_CATALOG_TITLE to mCatalogTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable( - EntranceConsts.KEY_EXPOSURE_SOURCE) + EntranceConsts.KEY_IS_CATEGORY_V2 to false, + EntranceConsts.KEY_CATALOG_ID to id, + EntranceConsts.KEY_CATALOG_TITLE to mCatalogTitle, + EntranceConsts.KEY_EXPOSURE_SOURCE to arguments?.getParcelable( + EntranceConsts.KEY_EXPOSURE_SOURCE + ) ) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSpecialCatalogFragment!!, SpecialCatalogFragment::class.java.name).commitAllowingStateLoss() + childFragmentManager.beginTransaction().replace( + R.id.container_sub_catalog, + mSpecialCatalogFragment!!, + SpecialCatalogFragment::class.java.name + ).commitAllowingStateLoss() } else { - mSubCatalogFragment = childFragmentManager.findFragmentByTag(SubCatalogFragment::class.java.name) as? SubCatalogFragment + mSubCatalogFragment = + childFragmentManager.findFragmentByTag(SubCatalogFragment::class.java.name) as? SubCatalogFragment ?: SubCatalogFragment() mSubCatalogFragment?.arguments = bundleOf( - EntranceConsts.KEY_CATALOG_ID to id, - EntranceConsts.KEY_PRIMARY_CATALOG_ID to subCatalog[selectedCatalogPosition].id, - EntranceConsts.KEY_CATALOG_TITLE to mCatalogTitle + EntranceConsts.KEY_CATALOG_ID to id, + EntranceConsts.KEY_PRIMARY_CATALOG_ID to subCatalog[selectedCatalogPosition].id, + EntranceConsts.KEY_CATALOG_TITLE to mCatalogTitle ) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSubCatalogFragment!!, SubCatalogFragment::class.java.name).commitAllowingStateLoss() + childFragmentManager.beginTransaction().replace( + R.id.container_sub_catalog, + mSubCatalogFragment!!, + SubCatalogFragment::class.java.name + ).commitAllowingStateLoss() } } } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/CatalogViewModel.kt b/app/src/main/java/com/gh/gamecenter/catalog/CatalogViewModel.kt index 2d64321288..4934cb3067 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/CatalogViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/CatalogViewModel.kt @@ -14,8 +14,8 @@ import com.halo.assistant.HaloApp import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class CatalogViewModel(application: Application, val catalogId: String, val catalogTitle: String) - : AndroidViewModel(application) { +class CatalogViewModel(application: Application, val catalogId: String, val catalogTitle: String) : + AndroidViewModel(application) { private val api = RetrofitManager.getInstance().api var catalogs = MutableLiveData() @@ -32,18 +32,18 @@ class CatalogViewModel(application: Application, val catalogId: String, val cata @SuppressLint("CheckResult") fun getCatalogs() { api.getCatalogs(catalogId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: CatalogEntity) { - catalogs.postValue(data) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: CatalogEntity) { + catalogs.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - catalogs.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + catalogs.postValue(null) + } + }) } fun logAppearance() { @@ -55,10 +55,16 @@ class CatalogViewModel(application: Application, val catalogId: String, val cata } fun logSubCatalogContentClick(itemName: String, listPosition: Int) { - LogUtils.logSubCatalogContentClickEvent(validEntranceName, "${catalogTitle}_${selectedCatalogName}_${itemName}", selectedCatalogPosition, listPosition) + LogUtils.logSubCatalogContentClickEvent( + validEntranceName, + "${catalogTitle}_${selectedCatalogName}_${itemName}", + selectedCatalogPosition, + listPosition + ) } - class Factory(private val catalogId: String, private val catalogTitle: String) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val catalogId: String, private val catalogTitle: String) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return CatalogViewModel(HaloApp.getInstance().application, catalogId, catalogTitle) as T } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListActivity.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListActivity.kt index d38a45d34c..5725d07598 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListActivity.kt @@ -29,12 +29,14 @@ class NewCatalogListActivity : DownloadToolbarActivity() { override fun isAutoResetViewBackgroundEnabled() = true companion object { - fun getIntent(context: Context, - primaryCatalogId: String, // 一级分类 id - primaryCatalogName: String, // 一级分类名 - catalogTitle: String, - catalog: CatalogEntity, - initTitle: String): Intent { + fun getIntent( + context: Context, + primaryCatalogId: String, // 一级分类 id + primaryCatalogName: String, // 一级分类名 + catalogTitle: String, + catalog: CatalogEntity, + initTitle: String + ): Intent { val bundle = Bundle() bundle.putParcelable(EntranceConsts.KEY_DATA, catalog) bundle.putString(EntranceConsts.KEY_PRIMARY_CATALOG_ID, primaryCatalogId) @@ -42,7 +44,12 @@ class NewCatalogListActivity : DownloadToolbarActivity() { bundle.putString(EntranceConsts.KEY_NAME, catalog.name) bundle.putString(EntranceConsts.KEY_CATALOG_TITLE, catalogTitle) bundle.putString(EntranceConsts.KEY_CATALOG_INIT_TITLE, initTitle) - return getTargetIntent(context, NewCatalogListActivity::class.java, NewCatalogListFragment::class.java, bundle) + return getTargetIntent( + context, + NewCatalogListActivity::class.java, + NewCatalogListFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt index 8df1ae702f..cff85f76bd 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt @@ -24,10 +24,12 @@ import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.download.DownloadEntity import java.util.* -class NewCatalogListAdapter(context: Context, - private val mBaseExposureSource: ExposureSource, - private val mViewModel: NewCatalogListViewModel, - private val mEntrance: String?) : ListAdapter(context), IExposable { +class NewCatalogListAdapter( + context: Context, + private val mBaseExposureSource: ExposureSource, + private val mViewModel: NewCatalogListViewModel, + private val mEntrance: String? +) : ListAdapter(context), IExposable { private val mExposureEventSparseArray: SparseArray = SparseArray() @@ -103,19 +105,46 @@ class NewCatalogListAdapter(context: Context, holder.itemView.setOnClickListener { GameDetailActivity.startGameDetailActivity( - mContext, - gameEntity, - StringUtils.buildString(mEntrance, "+(", toolbarTitle, ":列表[", selectedCatalogName, "=", sortType, "=", (position + 1).toString(), "])"), - traceEvent = event) - } - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.downloadBtn, + mContext, gameEntity, - position, - this, - StringUtils.buildString(StringUtils.buildString(mEntrance, "+(", toolbarTitle, ":列表[", selectedCatalogName, "=", sortType, "=", (position + 1).toString(), "])")), - StringUtils.buildString(selectedCatalogName, ":", gameEntity.name), - event) + StringUtils.buildString( + mEntrance, + "+(", + toolbarTitle, + ":列表[", + selectedCatalogName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ), + traceEvent = event + ) + } + DownloadItemUtils.setOnClickListener( + mContext, + holder.binding.downloadBtn, + gameEntity, + position, + this, + StringUtils.buildString( + StringUtils.buildString( + mEntrance, + "+(", + toolbarTitle, + ":列表[", + selectedCatalogName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ) + ), + StringUtils.buildString(selectedCatalogName, ":", gameEntity.name), + event + ) DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true, "star&brief") } else if (holder is FooterViewHolder) { @@ -128,9 +157,10 @@ class NewCatalogListAdapter(context: Context, for (key in positionAndPackageMap.keys) { // sentry上报download.packageName可能为空 if (download.packageName != null - && download.gameId != null - && key.contains(download.packageName) - && key.contains(download.gameId)) { + && download.gameId != null + && key.contains(download.packageName) + && key.contains(download.gameId) + ) { val position = positionAndPackageMap[key] if (position != null && mEntityList != null && position < mEntityList.size) { mEntityList[position].getEntryMap()[download.platform] = download diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt index 15429e9b05..511a0bf94c 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt @@ -61,11 +61,12 @@ class NewCatalogListFragment : ListFragment override fun provideListViewModel() = viewModelProvider() override fun provideListAdapter() = mAdapter - ?: NewCatalogListAdapter( - requireContext(), - ExposureSource(mPrimaryCatalogName), - mViewModel, - mEntrance).apply { mAdapter = this } + ?: NewCatalogListAdapter( + requireContext(), + ExposureSource(mPrimaryCatalogName), + mViewModel, + mEntrance + ).apply { mAdapter = this } override fun getItemDecoration() = null @@ -83,7 +84,7 @@ class NewCatalogListFragment : ListFragment mPrimaryCatalogId = arguments?.getString(EntranceConsts.KEY_PRIMARY_CATALOG_ID) ?: "" mViewModel.selectedCatalog = mSubCatalogList.find { entity -> entity.name == mInitCatalogName } - ?: CatalogEntity.SubCatalogEntity() + ?: CatalogEntity.SubCatalogEntity() mViewModel.primaryCatalogId = mPrimaryCatalogId initSortType() diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListViewModel.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListViewModel.kt index 6596d1b0d7..638c249320 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListViewModel.kt @@ -50,9 +50,11 @@ class NewCatalogListViewModel(application: Application) : ListViewModel { this.sortSize = sortSize @@ -74,13 +76,15 @@ class NewCatalogListViewModel(application: Application) : ListViewModel? = mEntityList[pos].exposureEventList - inner class CatalogBannerItemHolder(val binding: CatalogBannerItemBinding) : BaseRecyclerViewHolder(binding.root) { + inner class CatalogBannerItemHolder(val binding: CatalogBannerItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindBanners(itemData: SpecialCatalogItemData, lastPageDataMap: HashMap?) { val banners = itemData.banner!!.data @@ -258,7 +269,11 @@ class SpecialCatalogAdapter( banners.isNotEmpty() && (pagerAdapter == null || pagerAdapter is BannerAdapter - && pagerAdapter.getDataSize() != banners.size) -> initBanners(itemData, banners, lastPageDataMap) + && pagerAdapter.getDataSize() != banners.size) -> initBanners( + itemData, + banners, + lastPageDataMap + ) banners.isNotEmpty() && pagerAdapter != null -> (pagerAdapter as BannerAdapter).checkResetData(itemData) banners.isEmpty() -> binding.viewPager.adapter = null } @@ -369,9 +384,11 @@ class SpecialCatalogAdapter( inner class CatalogImageItemHolder(val binding: CatalogImageItemBinding) : BaseRecyclerViewHolder(binding.root) - inner class CatalogHeaderItemHolder(val binding: CatalogHeaderItemBinding) : BaseRecyclerViewHolder(binding.root) + inner class CatalogHeaderItemHolder(val binding: CatalogHeaderItemBinding) : + BaseRecyclerViewHolder(binding.root) - inner class CatalogSubjectItemHolder(val binding: CatalogSubjectItemBinding) : BaseRecyclerViewHolder(binding.root) { + inner class CatalogSubjectItemHolder(val binding: CatalogSubjectItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindSubject(gameList: List, position: Int) { binding.gameList.run { @@ -390,7 +407,8 @@ class SpecialCatalogAdapter( } } - inner class CatalogSubjectCollectionItemHolder(val binding: CatalogSubjectCollectionItemBinding) : BaseRecyclerViewHolder(binding.root) { + inner class CatalogSubjectCollectionItemHolder(val binding: CatalogSubjectCollectionItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindSubjectCollection(subjectCollection: List, position: Int) { binding.subjectCollectionList.run { @@ -400,9 +418,10 @@ class SpecialCatalogAdapter( collectionAdapter.updatePosition(position) return } - collectionAdapter = SpecialCatalogSubjectCollectionAdapter(context, mCatalogViewModel, subjectCollection).apply { - updatePosition(position) - } + collectionAdapter = + SpecialCatalogSubjectCollectionAdapter(context, mCatalogViewModel, subjectCollection).apply { + updatePosition(position) + } layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) adapter = collectionAdapter } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt index f784be756d..8eee966107 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogFragment.kt @@ -28,11 +28,14 @@ class SpecialCatalogFragment : ListFragment(SpecialCatalogViewModel.Factory( - mCatalogId, - mCatalogTitle, - mIsCategoryV2, - arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST))) + viewModelProvider( + SpecialCatalogViewModel.Factory( + mCatalogId, + mCatalogTitle, + mIsCategoryV2, + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST) + ) + ) override fun provideListAdapter() = mAdapter ?: SpecialCatalogAdapter( requireContext(), diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogItemData.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogItemData.kt index e8cb518d8e..0422c3909c 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogItemData.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogItemData.kt @@ -4,12 +4,12 @@ import com.gh.common.exposure.ExposureEvent import com.gh.gamecenter.entity.SpecialCatalogEntity data class SpecialCatalogItemData( - val banner: SpecialCatalogEntity? = null, - val header: SpecialCatalogEntity? = null, - val bigImage: SpecialCatalogEntity? = null, - val subject: SpecialCatalogEntity? = null, - val subjectCollection: SpecialCatalogEntity? = null, + val banner: SpecialCatalogEntity? = null, + val header: SpecialCatalogEntity? = null, + val bigImage: SpecialCatalogEntity? = null, + val subject: SpecialCatalogEntity? = null, + val subjectCollection: SpecialCatalogEntity? = null, - var position: Int = 0, - var exposureEventList: ArrayList? = null + var position: Int = 0, + var exposureEventList: ArrayList? = null ) diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectAdapter.kt index b1dd767394..b4d5e29a1d 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectAdapter.kt @@ -32,7 +32,8 @@ class SpecialCatalogSubjectAdapter( override fun getItemCount() = mList.size - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = CatalogSubjectGameItemViewHolder(parent.toBinding()) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + CatalogSubjectGameItemViewHolder(parent.toBinding()) override fun onBindViewHolder(holder: CatalogSubjectGameItemViewHolder, position: Int) { holder.binding.run { @@ -83,5 +84,6 @@ class SpecialCatalogSubjectAdapter( mPosition = position } - class CatalogSubjectGameItemViewHolder(val binding: CatalogSubjectGameItemBinding) : BaseRecyclerViewHolder(binding.root) + class CatalogSubjectGameItemViewHolder(val binding: CatalogSubjectGameItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectCollectionAdapter.kt index 6f5499c33c..2b1d6f11f7 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogSubjectCollectionAdapter.kt @@ -13,10 +13,11 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.common.entity.LinkEntity import com.lightgame.adapter.BaseRecyclerAdapter -class SpecialCatalogSubjectCollectionAdapter(context: Context, - private val mCatalogViewModel: SpecialCatalogViewModel, - private var mList: List) - : BaseRecyclerAdapter(context) { +class SpecialCatalogSubjectCollectionAdapter( + context: Context, + private val mCatalogViewModel: SpecialCatalogViewModel, + private var mList: List +) : BaseRecyclerAdapter(context) { private var countAndKey: Pair? = null private var mPosition: Int = -1 @@ -31,8 +32,8 @@ class SpecialCatalogSubjectCollectionAdapter(context: Context, override fun getItemCount() = mList.size - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) - = CatalogSubjectCollectionListItemViewHolder(parent.toBinding()) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + CatalogSubjectCollectionListItemViewHolder(parent.toBinding()) override fun onBindViewHolder(holder: CatalogSubjectCollectionListItemViewHolder, position: Int) { @@ -51,13 +52,19 @@ class SpecialCatalogSubjectCollectionAdapter(context: Context, } } root.setOnClickListener { - DirectUtils.directToLinkPage(mContext, LinkEntity(link = entity.link, type = entity.type), "精选分类", "专题合集") + DirectUtils.directToLinkPage( + mContext, + LinkEntity(link = entity.link, type = entity.type), + "精选分类", + "专题合集" + ) mCatalogViewModel.logSpecialCatalogSpecificContentClick( - "专题合集", - entity.subjectName ?: "", - entity.name ?: "", - mPosition, - position) + "专题合集", + entity.subjectName ?: "", + entity.name ?: "", + mPosition, + position + ) } } } @@ -81,5 +88,6 @@ class SpecialCatalogSubjectCollectionAdapter(context: Context, mPosition = position } - class CatalogSubjectCollectionListItemViewHolder(val binding: CatalogSubjectCollectionListItemBinding) : BaseRecyclerViewHolder(binding.root) + class CatalogSubjectCollectionListItemViewHolder(val binding: CatalogSubjectCollectionListItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogViewModel.kt b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogViewModel.kt index dec8e0625c..1bf32d1298 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SpecialCatalogViewModel.kt @@ -13,11 +13,13 @@ import com.halo.assistant.HaloApp import io.reactivex.Observable import io.reactivex.Single -class SpecialCatalogViewModel(application: Application, - private val mCatalogId: String, - private val mCatalogTitle: String, - private val mIsCategoryV2: Boolean, - private val mExposureSourceList: List?) : ListViewModel(application) { +class SpecialCatalogViewModel( + application: Application, + private val mCatalogId: String, + private val mCatalogTitle: String, + private val mIsCategoryV2: Boolean, + private val mExposureSourceList: List? +) : ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api val basicExposureSource by lazy { @@ -53,7 +55,8 @@ class SpecialCatalogViewModel(application: Application, itemDataList.add(SpecialCatalogItemData(subject = it).apply { position = index }) it.link.data.forEach { game -> game.subjectId = it.link.id - game.containerType = if (mIsCategoryV2) ExposureEntity.CATEGORY_V2_ID else ExposureEntity.CATEGORY_ID + game.containerType = + if (mIsCategoryV2) ExposureEntity.CATEGORY_V2_ID else ExposureEntity.CATEGORY_ID game.containerId = mCatalogId } } @@ -70,45 +73,74 @@ class SpecialCatalogViewModel(application: Application, fun logSpecialCatalogContentClick(contentType: String, contentName: String, listPosition: Int) { if (mIsCategoryV2) { - LogUtils.logSpecialCategoryV2ContentClickEvent(catalogEntrance, mCatalogTitle, "${contentType}_${if (contentName.isBlank()) "图片" else contentName}", listPosition) + LogUtils.logSpecialCategoryV2ContentClickEvent( + catalogEntrance, + mCatalogTitle, + "${contentType}_${if (contentName.isBlank()) "图片" else contentName}", + listPosition + ) } else { - LogUtils.logSpecialCatalogContentClickEvent(catalogEntrance, "${mCatalogTitle}_${contentType}_${contentName}", 0, listPosition) + LogUtils.logSpecialCatalogContentClickEvent( + catalogEntrance, + "${mCatalogTitle}_${contentType}_${contentName}", + 0, + listPosition + ) } } - fun logSpecialCatalogSpecificContentClick(contentType: String, contentName: String, targetName: String, listPosition: Int, specificListPosition: Int) { + fun logSpecialCatalogSpecificContentClick( + contentType: String, + contentName: String, + targetName: String, + listPosition: Int, + specificListPosition: Int + ) { if (mIsCategoryV2) { - LogUtils.logSpecialCategoryV2SpecificContentClickEvent(catalogEntrance, mCatalogTitle, "${contentType}_${contentName}_${targetName}", listPosition, specificListPosition) + LogUtils.logSpecialCategoryV2SpecificContentClickEvent( + catalogEntrance, + mCatalogTitle, + "${contentType}_${contentName}_${targetName}", + listPosition, + specificListPosition + ) } else { - LogUtils.logSpecialCatalogSpecificContentClickEvent(catalogEntrance, "${mCatalogTitle}_${contentType}_${contentName}_${targetName}", 0, listPosition, specificListPosition) + LogUtils.logSpecialCatalogSpecificContentClickEvent( + catalogEntrance, + "${mCatalogTitle}_${contentType}_${contentName}_${targetName}", + 0, + listPosition, + specificListPosition + ) } } fun logSpecialCatalogBannerClick(bannerTitle: String, contentName: String, bannerPosition: Int) { if (mIsCategoryV2) { LogUtils.logSpecialCategoryV2BannerClickEvent( - catalogEntrance, - mCatalogTitle, - "${if (bannerTitle.isBlank()) "空" else bannerTitle}_${contentName}", - bannerPosition + catalogEntrance, + mCatalogTitle, + "${if (bannerTitle.isBlank()) "空" else bannerTitle}_${contentName}", + bannerPosition ) } else { LogUtils.logSpecialCatalogBannerClickEvent("${mCatalogTitle}_${bannerTitle}_${contentName}", bannerPosition) } } - class Factory(private val mCatalogId: String, - private val mCatalogTitle: String, - private val mIsCategoryV2: Boolean, - private val mExposureSourceList: List? + class Factory( + private val mCatalogId: String, + private val mCatalogTitle: String, + private val mIsCategoryV2: Boolean, + private val mExposureSourceList: List? ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return SpecialCatalogViewModel( - HaloApp.getInstance().application, - mCatalogId, - mCatalogTitle, - mIsCategoryV2, - mExposureSourceList + HaloApp.getInstance().application, + mCatalogId, + mCatalogTitle, + mIsCategoryV2, + mExposureSourceList ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogViewModel.kt b/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogViewModel.kt index 6a2c31205f..0965363148 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogViewModel.kt @@ -13,7 +13,7 @@ import com.halo.assistant.HaloApp import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class SubCatalogViewModel(application: Application, private val catalogId: String): AndroidViewModel(application) { +class SubCatalogViewModel(application: Application, private val catalogId: String) : AndroidViewModel(application) { private val api = RetrofitManager.getInstance().api var catalogs = MutableLiveData() @@ -22,18 +22,18 @@ class SubCatalogViewModel(application: Application, private val catalogId: Strin @SuppressLint("CheckResult") fun getSubCatalogs(primaryCatalogId: String) { api.getSubCatalogs(catalogId, primaryCatalogId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: CatalogEntity) { - catalogs.postValue(data) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: CatalogEntity) { + catalogs.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - catalogs.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + catalogs.postValue(null) + } + }) } class Factory(private val catalogId: String) : ViewModelProvider.NewInstanceFactory() { diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryActivity.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryActivity.kt index ffd6bd0d6c..9304680fa0 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryActivity.kt @@ -15,7 +15,12 @@ class CategoryDirectoryActivity : DownloadToolbarActivity() { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_CATEGORY_ID, categoryId) bundle.putString(EntranceConsts.KEY_CATEGORY_TITLE, categoryTitle) - return getTargetIntent(context, CategoryDirectoryActivity::class.java, CategoryDirectoryFragment::class.java, bundle) + return getTargetIntent( + context, + CategoryDirectoryActivity::class.java, + CategoryDirectoryFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryAdapter.kt index 73e9dd4614..4e1b45e4cc 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryAdapter.kt @@ -17,8 +17,7 @@ import com.gh.gamecenter.databinding.ItemCategoryBinding import com.gh.gamecenter.entity.CategoryEntity import net.cachapa.expandablelayout.ExpandableLayout -class CategoryDirectoryAdapter(context: Context, var categoryTitle: String) - : ListAdapter(context) { +class CategoryDirectoryAdapter(context: Context, var categoryTitle: String) : ListAdapter(context) { var recyclerView: RecyclerView? = null var expandStatusMap: HashMap = HashMap() @@ -47,23 +46,25 @@ class CategoryDirectoryAdapter(context: Context, var categoryTitle: String) categoryName.text = category.name } holder.bindCategory( - category = mEntityList[position], - expandableStatusMap = expandStatusMap, - isExpended = expandStatusMap[position] != null && expandStatusMap[position] == true, - marginTop = sixteenDp, - categoryTitle = categoryTitle, - expandedAction = { recyclerView?.smoothScrollToPosition(position) }) + category = mEntityList[position], + expandableStatusMap = expandStatusMap, + isExpended = expandStatusMap[position] != null && expandStatusMap[position] == true, + marginTop = sixteenDp, + categoryTitle = categoryTitle, + expandedAction = { recyclerView?.smoothScrollToPosition(position) }) } } } internal class CategoryViewHolder(var binding: ItemCategoryBinding) : RecyclerView.ViewHolder(binding.root) { - fun bindCategory(category: CategoryEntity, - expandableStatusMap: HashMap, - isExpended: Boolean, - marginTop: Int, - categoryTitle: String, - expandedAction: () -> Unit) { + fun bindCategory( + category: CategoryEntity, + expandableStatusMap: HashMap, + isExpended: Boolean, + marginTop: Int, + categoryTitle: String, + expandedAction: () -> Unit + ) { category.data?.let { var subCategoryView: SubCategoryView? = null @@ -73,7 +74,10 @@ class CategoryDirectoryAdapter(context: Context, var categoryTitle: String) unexpandableCategoryList.forEachIndexed { index, c -> when (index % 3) { 0 -> { - val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT) + val params = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT + ) if (subCategoryView != null) params.setMargins(0, marginTop, 0, 0) subCategoryView = SubCategoryView(binding.root.context) @@ -126,7 +130,10 @@ class CategoryDirectoryAdapter(context: Context, var categoryTitle: String) 0 -> { subCategoryView = SubCategoryView(binding.root.context) - val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT) + val params = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT + ) params.setMargins(0, marginTop, 0, 0) subCategoryView?.categoryTitle = categoryTitle diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt index 46c19326a5..cecc829693 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt @@ -29,7 +29,8 @@ class CategoryDirectoryFragment : LazyListFragment(application) { +class CategoryDirectoryListViewModel(application: Application) : + ListViewModel(application) { var categoryId = "" diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryListActivity.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryListActivity.kt index ff51b15ae7..3e90ab16af 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryListActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryListActivity.kt @@ -22,7 +22,12 @@ class CategoryListActivity : DownloadToolbarActivity() { bundle.putString(EntranceConsts.KEY_NAME, category.name) bundle.putString(EntranceConsts.KEY_CATEGORY_TITLE, categoryTitle) bundle.putString(EntranceConsts.KEY_CATEGORY_INIT_TITLE, initTitle) - return getTargetIntent(context, CategoryListActivity::class.java, NewCategoryListFragment::class.java, bundle) + return getTargetIntent( + context, + CategoryListActivity::class.java, + NewCategoryListFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryHorizontalAdapter.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryHorizontalAdapter.kt index 4c7729bc9d..a733e59934 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryHorizontalAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryHorizontalAdapter.kt @@ -11,11 +11,12 @@ import com.gh.gamecenter.databinding.ItemTagBinding import com.gh.gamecenter.entity.CategoryEntity import com.lightgame.adapter.BaseRecyclerAdapter -class NewCategoryHorizontalAdapter(context: Context, - private val mViewModel: NewCategoryListViewModel, - private val mCategoryList: List, - private val mSmoothScrollAction: (position: Int) -> Unit) - : BaseRecyclerAdapter(context) { +class NewCategoryHorizontalAdapter( + context: Context, + private val mViewModel: NewCategoryListViewModel, + private val mCategoryList: List, + private val mSmoothScrollAction: (position: Int) -> Unit +) : BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TagsViewHolder { return TagsViewHolder(parent.toBinding()) diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListAdapter.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListAdapter.kt index 8d0bebc627..6d6cbc93ab 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListAdapter.kt @@ -24,9 +24,11 @@ import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.download.DownloadEntity import java.util.* -class NewCategoryListAdapter(context: Context, - private val mViewModel: NewCategoryListViewModel, - private val mEntrance: String?) : ListAdapter(context), IExposable { +class NewCategoryListAdapter( + context: Context, + private val mViewModel: NewCategoryListViewModel, + private val mEntrance: String? +) : ListAdapter(context), IExposable { private val mExposureEventSparseArray: SparseArray = SparseArray() @@ -101,19 +103,46 @@ class NewCategoryListAdapter(context: Context, holder.itemView.setOnClickListener { GameDetailActivity.startGameDetailActivity( - mContext, - gameEntity, - StringUtils.buildString(mEntrance, "+(", toolbarTitle, ":列表[", selectedCategoryName, "=", sortType, "=", (position + 1).toString(), "])"), - traceEvent = event) - } - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.downloadBtn, + mContext, gameEntity, - position, - this, - StringUtils.buildString(StringUtils.buildString(mEntrance, "+(", toolbarTitle, ":列表[", selectedCategoryName, "=", sortType, "=", (position + 1).toString(), "])")), - StringUtils.buildString(selectedCategoryName, ":", gameEntity.name), - event) + StringUtils.buildString( + mEntrance, + "+(", + toolbarTitle, + ":列表[", + selectedCategoryName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ), + traceEvent = event + ) + } + DownloadItemUtils.setOnClickListener( + mContext, + holder.binding.downloadBtn, + gameEntity, + position, + this, + StringUtils.buildString( + StringUtils.buildString( + mEntrance, + "+(", + toolbarTitle, + ":列表[", + selectedCategoryName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ) + ), + StringUtils.buildString(selectedCategoryName, ":", gameEntity.name), + event + ) DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true) } else if (holder is FooterViewHolder) { diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt index 9bf7a8864e..2881b543b6 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt @@ -65,7 +65,8 @@ class NewCategoryListFragment : ListFragment categoryEntity.name == initSelectedCategory } + mViewModel.selectedCategory = + mSubCategoryList.find { categoryEntity -> categoryEntity.name == initSelectedCategory } ?: CategoryEntity() super.onCreate(savedInstanceState) @@ -97,7 +98,8 @@ class NewCategoryListFragment : ListFragment { return mAdapter - ?: NewCategoryListAdapter(requireContext(), mViewModel, mEntrance).apply { mAdapter = this } + ?: NewCategoryListAdapter(requireContext(), mViewModel, mEntrance).apply { mAdapter = this } } private fun updateCategoriesView(categoryList: ArrayList) { - mBinding.tagsRecyclerView.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + mBinding.tagsRecyclerView.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) mBinding.tagsRecyclerView.adapter = NewCategoryHorizontalAdapter(requireContext(), mViewModel, categoryList) { mBinding.tagsRecyclerView.smoothScrollToPosition(it) } diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListViewModel.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListViewModel.kt index 6079394f0d..6304e2b0c0 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListViewModel.kt @@ -13,8 +13,7 @@ import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.Observable import io.reactivex.Single -class NewCategoryListViewModel(application: Application) - : ListViewModel(application) { +class NewCategoryListViewModel(application: Application) : ListViewModel(application) { var title = "" // 显示在 Toolbar 的标题 var categoryTitle = "" // 跳转进来的分类的标题 @@ -32,8 +31,8 @@ class NewCategoryListViewModel(application: Application) override fun provideDataSingle(page: Int): Single> { return RetrofitManager.getInstance() - .api - .getGamesInCategory(selectedCategory.id, getSortType(), getSortSize(), page) + .api + .getGamesInCategory(selectedCategory.id, getSortType(), getSortSize(), page) } override fun mergeResultLiveData() { @@ -51,8 +50,10 @@ class NewCategoryListViewModel(application: Application) } } - fun updateSortConfig(sortSize: SubjectSettingEntity.Size? = null, - sortType: ConfigFilterView.SortType? = null) { + fun updateSortConfig( + sortSize: SubjectSettingEntity.Size? = null, + sortType: ConfigFilterView.SortType? = null + ) { if (sortSize != null && sortSize != mSortSize) { mSortSize = sortSize refresh.postValue(true) @@ -64,8 +65,9 @@ class NewCategoryListViewModel(application: Application) private fun getSortSize(): String? { return UrlFilterUtils.getFilterQuery( - "min_size", mSortSize.min.toString(), - "max_size", mSortSize.max.toString()) + "min_size", mSortSize.min.toString(), + "max_size", mSortSize.max.toString() + ) } fun getSortType(): String? { diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryDirectoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryDirectoryAdapter.kt index dc3c94565b..e1d1c93be9 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryDirectoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryDirectoryAdapter.kt @@ -13,10 +13,11 @@ import com.gh.gamecenter.databinding.CategoryDirectoryItemBinding import com.gh.gamecenter.entity.CategoryEntity import com.lightgame.adapter.BaseRecyclerAdapter -class CategoryDirectoryAdapter(context: Context, - private val mViewModel: CategoryV2ViewModel, - private var mList: List) - : BaseRecyclerAdapter(context) { +class CategoryDirectoryAdapter( + context: Context, + private val mViewModel: CategoryV2ViewModel, + private var mList: List +) : BaseRecyclerAdapter(context) { val width = mContext.resources.displayMetrics.widthPixels * 260 / 360 @@ -28,7 +29,7 @@ class CategoryDirectoryAdapter(context: Context, override fun getItemCount() = mList.size override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = - CategoryDirectoryItemViewHolder(CategoryDirectoryItemBinding.inflate(mLayoutInflater)) + CategoryDirectoryItemViewHolder(CategoryDirectoryItemBinding.inflate(mLayoutInflater)) override fun onBindViewHolder(holder: CategoryDirectoryItemViewHolder, position: Int) { holder.binding.run { @@ -48,20 +49,20 @@ class CategoryDirectoryAdapter(context: Context, layoutManager = GridLayoutManager(mContext, 3) adapter = entity.data?.let { SubCategoryAdapter( - mContext, - mViewModel, - it, - position + mContext, + mViewModel, + it, + position ) } } else { layoutManager = GridLayoutManager(mContext, 3) adapter = entity.data?.let { SubCategoryAdapter( - mContext, - mViewModel, - it, - position + mContext, + mViewModel, + it, + position ) } addItemDecoration( @@ -77,5 +78,6 @@ class CategoryDirectoryAdapter(context: Context, } } - class CategoryDirectoryItemViewHolder(val binding: CategoryDirectoryItemBinding): BaseRecyclerViewHolder(binding.root) + class CategoryDirectoryItemViewHolder(val binding: CategoryDirectoryItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt index c65ce83db5..8c12138174 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2Fragment.kt @@ -203,10 +203,10 @@ class CategoryV2Fragment : LazyFragment() { if (itemId == R.id.menu_search) { LogUtils.uploadSearchGame("access_to_search", mCategoryTitle, "", "") val intent = SearchActivity.getIntent( - requireContext(), - false, - "", - "新分类2.0" + requireContext(), + false, + "", + "新分类2.0" ) startActivity(intent) } @@ -221,9 +221,9 @@ class CategoryV2Fragment : LazyFragment() { } else { directoryRv.layoutManager = FixLinearLayoutManager(requireContext()) directoryRv.adapter = CategoryDirectoryAdapter( - requireContext(), - this, - list + requireContext(), + this, + list ) } } @@ -307,7 +307,9 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_IS_CATEGORY_V2 to true, EntranceConsts.KEY_CATALOG_ID to id, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -331,7 +333,9 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[selectedCategoryPosition].categoryId, EntranceConsts.KEY_CATEGORY_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager @@ -354,44 +358,58 @@ class CategoryV2Fragment : LazyFragment() { if (hasSpecial) { if (selectedCategoryPosition == 0) { mCategoryV2ListFragment = childFragmentManager - .findFragmentByTag(CategoryV2ListFragment::class.java.name) + .findFragmentByTag(CategoryV2ListFragment::class.java.name) as? CategoryV2ListFragment ?: CategoryV2ListFragment() mCategoryV2ListFragment?.arguments = bundleOf( EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager - .beginTransaction() - .replace(R.id.gamesContainer, mCategoryV2ListFragment!!, CategoryV2ListFragment::class.java.name) - .commitAllowingStateLoss() + .beginTransaction() + .replace( + R.id.gamesContainer, + mCategoryV2ListFragment!!, + CategoryV2ListFragment::class.java.name + ) + .commitAllowingStateLoss() } else { if (position == 0) { removeGuide() mSpecialCatalogFragment = childFragmentManager - .findFragmentByTag(SpecialCatalogFragment::class.java.name) + .findFragmentByTag(SpecialCatalogFragment::class.java.name) as? SpecialCatalogFragment ?: SpecialCatalogFragment() mSpecialCatalogFragment?.arguments = bundleOf( EntranceConsts.KEY_IS_CATEGORY_V2 to true, EntranceConsts.KEY_CATALOG_ID to id, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) childFragmentManager - .beginTransaction() - .replace(R.id.gamesContainer, mSpecialCatalogFragment!!, SpecialCatalogFragment::class.java.name) - .commitAllowingStateLoss() + .beginTransaction() + .replace( + R.id.gamesContainer, + mSpecialCatalogFragment!!, + SpecialCatalogFragment::class.java.name + ) + .commitAllowingStateLoss() } else { if (mCategoryV2ListFragment?.isStateSaved == false) { mCategoryV2ListFragment?.arguments = bundleOf( EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) } @@ -413,7 +431,9 @@ class CategoryV2Fragment : LazyFragment() { EntranceConsts.KEY_CATEGORY_ID to id, EntranceConsts.KEY_SUB_CATEGORY_ID to sidebars[position].categoryId, EntranceConsts.KEY_CATALOG_TITLE to mCategoryTitle, - EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST), + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST to arguments?.getParcelableArrayList( + EntranceConsts.KEY_EXPOSURE_SOURCE_LIST + ), EntranceConsts.KEY_LAST_PAGE_DATA to mLastPageDataMap ) } @@ -459,10 +479,11 @@ class CategoryV2Fragment : LazyFragment() { mHomeViewModel?.let { mBinding?.directoryContainer?.setPadding( - 0, - 0, - 0, - requireContext().resources.getDimension(R.dimen.main_bottom_tab_height).toInt() - it.appBarOffset) + 0, + 0, + 0, + requireContext().resources.getDimension(R.dimen.main_bottom_tab_height).toInt() - it.appBarOffset + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt index 0c99137e78..432471fade 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListAdapter.kt @@ -130,23 +130,54 @@ class CategoryV2ListAdapter( holder.itemView.setOnClickListener { GameDetailActivity.startGameDetailActivity( - mContext, - gameEntity, - StringUtils.buildString(mEntrance, "+(", selectedCategoryName, ":列表[", selectedSubCatalogName, "=", sortType, "=", (position + 1).toString(), "])"), - traceEvent = event + mContext, + gameEntity, + StringUtils.buildString( + mEntrance, + "+(", + selectedCategoryName, + ":列表[", + selectedSubCatalogName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ), + traceEvent = event ) } - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.downloadBtn, - gameEntity, - position, - this, - StringUtils.buildString(StringUtils.buildString(mEntrance, "+(", selectedCategoryName, ":列表[", selectedSubCatalogName, "=", sortType, "=", (position + 1).toString(), "])")), - StringUtils.buildString(selectedSubCatalogName, ":", gameEntity.name), - event + DownloadItemUtils.setOnClickListener( + mContext, + holder.binding.downloadBtn, + gameEntity, + position, + this, + StringUtils.buildString( + StringUtils.buildString( + mEntrance, + "+(", + selectedCategoryName, + ":列表[", + selectedSubCatalogName, + "=", + sortType, + "=", + (position + 1).toString(), + "])" + ) + ), + StringUtils.buildString(selectedSubCatalogName, ":", gameEntity.name), + event ) - DownloadItemUtils.updateItem(mContext, gameEntity, CategoryGameViewHolder(holder.binding), true, "star&brief") + DownloadItemUtils.updateItem( + mContext, + gameEntity, + CategoryGameViewHolder(holder.binding), + true, + "star&brief" + ) } else if (holder is FooterViewHolder) { holder.run { initItemPadding() @@ -189,7 +220,8 @@ class CategoryV2ListAdapter( return null } - inner class CategoryGameItemViewHolder(val binding: CategoryGameItemBinding): BaseRecyclerViewHolder(binding.root) { + inner class CategoryGameItemViewHolder(val binding: CategoryGameItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindGameItem(gameEntity: GameEntity) { binding.run { @@ -197,12 +229,21 @@ class CategoryV2ListAdapter( BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setPadding(0,0,if (gameEntity.commentCount > 3) 8F.dip2px() else 0,0) - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes } } @@ -227,7 +268,7 @@ class CategoryV2ListAdapter( } } - inner class CategoryGameViewHolder(val binding: CategoryGameItemBinding): GameViewHolder(binding.root) { + inner class CategoryGameViewHolder(val binding: CategoryGameItemBinding) : GameViewHolder(binding.root) { init { gameDownloadBtn = binding.downloadBtn gameProgressbar = binding.gameProgressbar diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt index 4b4415b991..5ac1e1f55a 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt @@ -54,13 +54,17 @@ class CategoryV2ListFragment : ListFragment override fun getLayoutId() = 0 - override fun getInflatedLayout() = FragmentCategoryListBinding.inflate(layoutInflater).apply { mBinding = this }.root + override fun getInflatedLayout() = + FragmentCategoryListBinding.inflate(layoutInflater).apply { mBinding = this }.root override fun provideListViewModel() = - viewModelProvider(CategoryV2ListViewModel.Factory( - mCategoryId, - mSubCategoryId, - arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST))) + viewModelProvider( + CategoryV2ListViewModel.Factory( + mCategoryId, + mSubCategoryId, + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST) + ) + ) override fun provideListAdapter() = mAdapter ?: CategoryV2ListAdapter( @@ -83,7 +87,8 @@ class CategoryV2ListFragment : ListFragment mSubCategoryId = arguments?.getString(EntranceConsts.KEY_SUB_CATEGORY_ID) ?: "" mCategoryTitle = arguments?.getString(EntranceConsts.KEY_CATEGORY_TITLE) ?: "" mLastPageDataMap = arguments?.getSerializable(EntranceConsts.KEY_LAST_PAGE_DATA) as? HashMap - mCategoryViewModel = viewModelProviderFromParent(CategoryV2ViewModel.Factory(mCategoryId, mCategoryTitle), mCategoryId) + mCategoryViewModel = + viewModelProviderFromParent(CategoryV2ViewModel.Factory(mCategoryId, mCategoryTitle), mCategoryId) mEntrance = arguments?.getString(EntranceConsts.KEY_ENTRANCE) ?: Constants.ENTRANCE_UNKNOWN super.onCreate(savedInstanceState) @@ -215,7 +220,8 @@ class CategoryV2ListFragment : ListFragment private fun addCategoryView(entity: CategoryEntity) { val binding = LayoutSelectedCategoryBinding.inflate(layoutInflater).apply { - val params = FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + val params = + FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) params.setMargins(0, 8F.dip2px(), 8F.dip2px(), 0) params.height = 24F.dip2px() root.layoutParams = params diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt index e002248f8f..07f34a47f7 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListViewModel.kt @@ -17,10 +17,12 @@ import com.halo.assistant.HaloApp import io.reactivex.Observable import io.reactivex.Single -class CategoryV2ListViewModel(application: Application, - val categoryId: String, - var categoryIds: String, - var exposureSourceList: List?) : ListViewModel(application) { +class CategoryV2ListViewModel( + application: Application, + val categoryId: String, + var categoryIds: String, + var exposureSourceList: List? +) : ListViewModel(application) { val refresh = MutableLiveData() @@ -31,9 +33,9 @@ class CategoryV2ListViewModel(application: Application, override fun provideDataSingle(page: Int): Single> { return RetrofitManager - .getInstance() - .api - .getCategoryV2Games(categoryId, getFilter(), getSortType(), page) + .getInstance() + .api + .getCategoryV2Games(categoryId, getFilter(), getSortType(), page) } override fun mergeResultLiveData() { @@ -48,9 +50,11 @@ class CategoryV2ListViewModel(application: Application, } } - fun updateSortConfig(sortSize: SubjectSettingEntity.Size? = null, - sortType: CategoryFilterView.SortType? = null, - categoryIds: String? = null) { + fun updateSortConfig( + sortSize: SubjectSettingEntity.Size? = null, + sortType: CategoryFilterView.SortType? = null, + categoryIds: String? = null + ) { when { sortSize != null && sortSize != this.sortSize -> { this.sortSize = sortSize @@ -71,9 +75,10 @@ class CategoryV2ListViewModel(application: Application, private fun getFilter(): String? { return UrlFilterUtils.getFilterQuery( - "category_ids", categoryIds, - "min_size", sortSize.min.toString(), - "max_size", sortSize.max.toString()) + "category_ids", categoryIds, + "min_size", sortSize.min.toString(), + "max_size", sortSize.max.toString() + ) } @@ -85,13 +90,14 @@ class CategoryV2ListViewModel(application: Application, } } - class Factory(val categoryId: String, val categoryIds: String, val exposureSourceList: List?): ViewModelProvider.NewInstanceFactory() { + class Factory(val categoryId: String, val categoryIds: String, val exposureSourceList: List?) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return CategoryV2ListViewModel( - HaloApp.getInstance().application, - categoryId, - categoryIds, - exposureSourceList + HaloApp.getInstance().application, + categoryId, + categoryIds, + exposureSourceList ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ViewModel.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ViewModel.kt index 881a957e73..ba6f329bd9 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ViewModel.kt @@ -15,9 +15,11 @@ import com.halo.assistant.HaloApp import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class CategoryV2ViewModel(application: Application, - private val mCategoryId: String, - val categoryTitle: String) : AndroidViewModel(application) { +class CategoryV2ViewModel( + application: Application, + private val mCategoryId: String, + val categoryTitle: String +) : AndroidViewModel(application) { private val api = RetrofitManager.getInstance().api var sidebarsLiveData = MutableLiveData() @@ -40,31 +42,31 @@ class CategoryV2ViewModel(application: Application, @SuppressLint("CheckResult") fun getSidebars() { api.getSidebars(mCategoryId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: SidebarsEntity) { - sidebarsLiveData.postValue(data) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: SidebarsEntity) { + sidebarsLiveData.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - sidebarsLiveData.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + sidebarsLiveData.postValue(null) + } + }) } @SuppressLint("CheckResult") fun getCategoryDirectories() { api.getCategoryDirectories(mCategoryId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - directories = ArrayList(data) - postCategoryDirectoryList() - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + directories = ArrayList(data) + postCategoryDirectoryList() + } + }) } fun postSelectedCount() { @@ -101,23 +103,23 @@ class CategoryV2ViewModel(application: Application, fun logClickClassification(primaryIndex: Int, categoryName: String, position: Int) { LogUtils.logCategoryV2ClickClassificationEvent( - entrance, - categoryTitle, - selectedCategoryName, - directories[primaryIndex].name, - categoryName, - primaryIndex, - position + entrance, + categoryTitle, + selectedCategoryName, + directories[primaryIndex].name, + categoryName, + primaryIndex, + position ) } fun logClickClassificationDelete(primaryIndex: Int, categoryName: String, location: String) { LogUtils.logCategoryV2ClickClassificationDeleteEvent( - entrance, - categoryTitle, - directories[primaryIndex].name, - categoryName, - location + entrance, + categoryTitle, + directories[primaryIndex].name, + categoryName, + location ) } @@ -143,13 +145,15 @@ class CategoryV2ViewModel(application: Application, LogUtils.logCategoryV2ClickResetEvent(entrance, categoryTitle, categoryName.toString(), location) } - class Factory(private val categoryId: String, - private val categoryTitle: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val categoryId: String, + private val categoryTitle: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return CategoryV2ViewModel( - HaloApp.getInstance().application, - categoryId, - categoryTitle + HaloApp.getInstance().application, + categoryId, + categoryTitle ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java b/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java index 0107714ca0..1d8350a9d3 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/AnswerFragment.java @@ -94,7 +94,7 @@ public class AnswerFragment extends ListFragment protected RecyclerView.ItemDecoration getItemDecoration() { Drawable insetDivider = ContextCompat.getDrawable(requireContext(), R.drawable.divider_item_line_space_16); mItemDecoration = new CustomDividerItemDecoration(requireContext(), false, false, true, false); - ((CustomDividerItemDecoration)mItemDecoration).setDrawable(insetDivider); + ((CustomDividerItemDecoration) mItemDecoration).setDrawable(insetDivider); return mItemDecoration; } diff --git a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java index 677ef94bb7..c75a324e33 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ArticleFragment.java @@ -118,7 +118,7 @@ public class ArticleFragment extends ListFragment protected RecyclerView.ItemDecoration getItemDecoration() { Drawable insetDivider = ContextCompat.getDrawable(requireContext(), R.drawable.divider_item_line_space_16); mItemDecoration = new CustomDividerItemDecoration(requireContext(), false, false, true, false); - ((CustomDividerItemDecoration)mItemDecoration).setDrawable(insetDivider); + ((CustomDividerItemDecoration) mItemDecoration).setDrawable(insetDivider); return mItemDecoration; } diff --git a/app/src/main/java/com/gh/gamecenter/collection/CollectionCommunityArticleViewHolder.kt b/app/src/main/java/com/gh/gamecenter/collection/CollectionCommunityArticleViewHolder.kt index 042f7ec251..3737a92d31 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CollectionCommunityArticleViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/CollectionCommunityArticleViewHolder.kt @@ -3,5 +3,5 @@ package com.gh.gamecenter.collection import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.databinding.CollectionComunityArticleItemBinding -class CollectionCommunityArticleViewHolder(val binding: CollectionComunityArticleItemBinding): +class CollectionCommunityArticleViewHolder(val binding: CollectionComunityArticleItemBinding) : BaseRecyclerViewHolder(binding.root) diff --git a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt index 1343344101..4f648ab149 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/CommunityArticleAdapter.kt @@ -109,10 +109,25 @@ class CommunityArticleAdapter( holder.itemView.setOnClickListener { if (mCurrentOption == ManageOption.OPTION_MANAGER) { if (entity.type == "question") { - mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, entity.id, mEntrance, path)) + mContext.startActivity( + NewQuestionDetailActivity.getIntent( + mContext, + entity.id, + mEntrance, + path + ) + ) } else { if (entity.active) { - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, entity.community, entity.id, mEntrance, path)) + mContext.startActivity( + ArticleDetailActivity.getIntent( + mContext, + entity.community, + entity.id, + mEntrance, + path + ) + ) } else { DialogHelper.showDialog(mContext, "提示", "内容已被删除,是否取消收藏?", "取消收藏", "暂不", { mViewModel.deleteCollection(entity.community.id, entity.id) @@ -174,8 +189,14 @@ class CommunityArticleAdapter( mPopupBinding?.run { selectNumTv.text = if (selectItems.isEmpty()) "" else "(${selectItems.size})" itemDelete.background = - if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - itemDelete.setTextColor(if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor(mContext)) + if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + itemDelete.setTextColor( + if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) itemDelete.isEnabled = selectItems.isNotEmpty() checkAllCb.isChecked = selectItems.size == mEntityList.size } diff --git a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt index 526db88477..88d788f1eb 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt @@ -122,11 +122,19 @@ class GamesCollectionAdapter( timeTv.text = TimeUtils.getFormatTime(itemEntity.time?.update ?: 0, "MM - dd") ImageUtils.display(userIcon, itemEntity.user?.icon) userName.text = itemEntity.user?.name - voteCount.text = if (itemEntity.count?.vote == 0) "赞同" else NumberUtils.transNewSimpleCount(itemEntity.count?.vote ?: 0, "#") - voteCount.setTextColor(if (itemEntity.me?.isVoted == true) R.color.theme_font.toColor(mContext) else R.color.white.toColor(mContext)) + voteCount.text = if (itemEntity.count?.vote == 0) "赞同" else NumberUtils.transNewSimpleCount( + itemEntity.count?.vote ?: 0, "#" + ) + voteCount.setTextColor( + if (itemEntity.me?.isVoted == true) R.color.theme_font.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) voteIcon.isChecked = itemEntity.me?.isVoted == true commentCount.text = - if (itemEntity.count?.comment == 0) "评论" else NumberUtils.transNewSimpleCount(itemEntity.count?.comment ?: 0, "#") + if (itemEntity.count?.comment == 0) "评论" else NumberUtils.transNewSimpleCount( + itemEntity.count?.comment ?: 0, "#" + ) moreIv.goneIf( mViewModel.type != TYPE_USER @@ -186,14 +194,26 @@ class GamesCollectionAdapter( } myselfTag.setOnClickListener { - DialogHelper.showDialog(mContext, "仅自己可见", "游戏单开启“仅自己可见”后,将不会对其他用户展示,您可以通过关闭仅自己可见或者投稿分享游戏单", "我知道了", "", { + DialogHelper.showDialog( + mContext, + "仅自己可见", + "游戏单开启“仅自己可见”后,将不会对其他用户展示,您可以通过关闭仅自己可见或者投稿分享游戏单", + "我知道了", + "", + { - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } gameIconList.forEachIndexed { index, gameIcon -> gameIcon.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, itemEntity.games?.safelyGetInRelease(index)?.id ?: "", "") + GameDetailActivity.startGameDetailActivity( + mContext, + itemEntity.games?.safelyGetInRelease(index)?.id ?: "", + "" + ) } } @@ -372,11 +392,12 @@ class GamesCollectionAdapter( private fun initTagsUI(tagContainer: FlexboxLayout, tags: ArrayList) { tagContainer.removeAllViews() tags.forEachIndexed { index, tag -> - val tagBinding = ItemGameCollectionFlexTagBinding.inflate(LayoutInflater.from(mContext), null, false).apply { - root.setPadding(0, 6F.dip2px(), 0, 0) - divider.goneIf(index == tags.size - 1) - tagNameTv.text = tag.name - } + val tagBinding = + ItemGameCollectionFlexTagBinding.inflate(LayoutInflater.from(mContext), null, false).apply { + root.setPadding(0, 6F.dip2px(), 0, 0) + divider.goneIf(index == tags.size - 1) + tagNameTv.text = tag.name + } tagContainer.addView(tagBinding.root) } } @@ -420,8 +441,14 @@ class GamesCollectionAdapter( mPopupBinding?.run { selectNumTv.text = if (selectItems.isEmpty()) "" else "(${selectItems.size})" itemDelete.background = - if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - itemDelete.setTextColor(if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor(mContext)) + if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + itemDelete.setTextColor( + if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) itemDelete.isEnabled = selectItems.isNotEmpty() checkAllCb.isChecked = selectItems.size == mEntityList.size } diff --git a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionFragment.kt b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionFragment.kt index de73716286..6eadcfea15 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionFragment.kt @@ -33,7 +33,10 @@ class GamesCollectionFragment : ListFragment(application) { private val mApi = RetrofitManager.getInstance().api @@ -151,10 +156,19 @@ class GamesCollectionViewModel(application: Application, var userId: String, var } } - class Factory(private val mUserId: String, private val mType: String, private val mIsInsertGameCollection: Boolean) : + class Factory( + private val mUserId: String, + private val mType: String, + private val mIsInsertGameCollection: Boolean + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return GamesCollectionViewModel(HaloApp.getInstance().application, mUserId, mType, mIsInsertGameCollection) as T + return GamesCollectionViewModel( + HaloApp.getInstance().application, + mUserId, + mType, + mIsInsertGameCollection + ) as T } } diff --git a/app/src/main/java/com/gh/gamecenter/collection/ToolsAdapter.java b/app/src/main/java/com/gh/gamecenter/collection/ToolsAdapter.java index 3dc60577c7..72ba4d30d0 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/ToolsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/collection/ToolsAdapter.java @@ -1,7 +1,9 @@ package com.gh.gamecenter.collection; import android.content.Context; + import androidx.recyclerview.widget.RecyclerView; + import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt index a43088281f..c0208f049d 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt @@ -183,8 +183,14 @@ class VideoAdapter( mPopupBinding?.run { selectNumTv.text = if (selectItems.isEmpty()) "" else "(${selectItems.size})" itemDelete.background = - if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - itemDelete.setTextColor(if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor(mContext)) + if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + itemDelete.setTextColor( + if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) itemDelete.isEnabled = selectItems.isNotEmpty() checkAllCb.isChecked = selectItems.size == mEntityList.size } diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt index 64489ca1ef..84fa75a8d4 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoViewModel.kt @@ -28,7 +28,12 @@ class VideoViewModel(application: Application) : ListViewModel { CloseableIterator iterator = dao.iterator(); diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index 5f446f422e..bdb7cff5f0 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -200,10 +200,10 @@ class DownloadFragment : BaseFragment_TabLayout() { } val updateCount = mDownloadManager.getUnreadUpdateCount(PackagesManager.getUpdateList() - .filter { gameUpdateEntity -> - gameUpdateEntity.isShowPlugin(PluginLocation.only_index) - && mPermanentInactivePluggableApkList?.filter { it.pkgName == gameUpdateEntity.packageName }?.size == 0 - }) + .filter { gameUpdateEntity -> + gameUpdateEntity.isShowPlugin(PluginLocation.only_index) + && mPermanentInactivePluggableApkList?.filter { it.pkgName == gameUpdateEntity.packageName }?.size == 0 + }) mUpdateNumberTv.visibleIf(updateCount != 0) } @@ -219,7 +219,8 @@ class DownloadFragment : BaseFragment_TabLayout() { if (fragments != null) { for (fragment in fragments) { if (fragment.isAdded - && fragment is GameDownloadFragment) { + && fragment is GameDownloadFragment + ) { fragment.onResume() // auto refresh list } } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java index 0a778c94ab..7e1fd60a60 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java @@ -173,8 +173,8 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi || status.equals(DownloadStatus.subscribe)) { // 静默更新任务,下载模拟器任务,畅玩游戏不需要添加 if (ExtensionsKt.isSilentUpdate(downloadEntity) - || ExtensionsKt.isSimulatorDownload(downloadEntity) - || ExtensionsKt.isVGame(downloadEntity)) { + || ExtensionsKt.isSimulatorDownload(downloadEntity) + || ExtensionsKt.isVGame(downloadEntity)) { return; } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index 64d16d351c..d6f81760a4 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -271,7 +271,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { DownloadManager.getInstance().subscribe(downloadEntity); statusMap.put(url, DownloadStatus.subscribe.getStatus()); notifyItemChanged(mDownloadedList.isEmpty() ? 0 : 1 + mDownloadedList - .size()); + .size()); } else { LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( 0, LinearLayout.LayoutParams.WRAP_CONTENT); @@ -288,7 +288,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { viewHolder.binding.dmItemTvStartorpause.setButtonStyle(DownloadButton.ButtonStyle.PAUSE); statusMap.put(url, DownloadStatus.downloading.getStatus()); notifyItemChanged(mDownloadedList.isEmpty() ? 0 : 1 + mDownloadedList - .size()); + .size()); Message msg = Message.obtain(); msg.what = DownloadConfig.CONTINUE_DOWNLOAD_TASK; @@ -342,7 +342,9 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { DialogHelper.showCenterDialog(mContext , "下载失败" , "安装包数据校验失败,无法完成下载,建议删除任务重新下载" - , "知道了", "", () -> { }, () -> { }); + , "知道了", "", () -> { + }, () -> { + }); break; case "取消": XapkInstaller.cancelUnzipTask(downloadEntity); diff --git a/app/src/main/java/com/gh/gamecenter/download/InstalledGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/download/InstalledGameViewModel.kt index 8e3738f2c0..093faf0271 100644 --- a/app/src/main/java/com/gh/gamecenter/download/InstalledGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/download/InstalledGameViewModel.kt @@ -156,7 +156,7 @@ class InstalledGameViewModel(application: Application) : AndroidViewModel(applic entity.setEntryMap(DownloadManager.getInstance().getEntryMap(entity.name)) } } - if (newGameList.isNotEmpty()){ + if (newGameList.isNotEmpty()) { isRemove = true initLocationMap(newGameList) } diff --git a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt index c0517da383..23febd387d 100644 --- a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt @@ -69,7 +69,7 @@ class NewInstalledGameFragment : ToolbarFragment() { if (locationList != null && locationList.size != 0) { var gameEntity: GameEntity? for (location in locationList) { - if (location < mInstallGameViewModel.gameListLiveData.value?.size?:0) { + if (location < mInstallGameViewModel.gameListLiveData.value?.size ?: 0) { gameEntity = mInstallGameViewModel.gameListLiveData.value?.get(location) if (gameEntity != null) { DownloadItemUtils.processDate( @@ -100,13 +100,19 @@ class NewInstalledGameFragment : ToolbarFragment() { false mAdapter = NewInstalledGameFragmentAdapter(requireContext(), mInstallGameViewModel) mExposureListener = ExposureListener(this, mAdapter!!) - mBinding.fmInstallRvShow.addItemDecoration(VerticalItemDecoration(requireContext(), 8F, true).apply { mItemDecoration = this }) + mBinding.fmInstallRvShow.addItemDecoration( + VerticalItemDecoration( + requireContext(), + 8F, + true + ).apply { mItemDecoration = this }) mBinding.fmInstallRvShow.addOnScrollListener(mExposureListener!!) mBinding.fmInstallRvShow.adapter = mAdapter mPackageViewModel = ViewModelProvider(this, PackageViewModel.Factory()).get(PackageViewModel::class.java) - mPackageViewModel?.getGameInstalledLiveData()?.observe(this + mPackageViewModel?.getGameInstalledLiveData()?.observe( + this ) { gameInstalls -> mInstallGameViewModel.initData( PackagesManager.filterSameApk( diff --git a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragmentAdapter.kt index 2ce19f135b..d12785dd62 100644 --- a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragmentAdapter.kt @@ -63,7 +63,7 @@ class NewInstalledGameFragmentAdapter(context: Context, private var mViewModel: binding.root.context, gameEntity.getApk()[0].packageName ) - if (drawable != null && (drawable.intrinsicWidth >= 300 || drawable.intrinsicHeight >= 300)){ + if (drawable != null && (drawable.intrinsicWidth >= 300 || drawable.intrinsicHeight >= 300)) { drawable = drawable.toBitmap(200, 200).toDrawable(mContext.resources) } binding.gameIconView.getIconIv().hierarchy.setPlaceholderImage(drawable) diff --git a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt index bb242a8edb..434456ac2e 100644 --- a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameViewModel.kt @@ -175,12 +175,14 @@ class UpdatableGameViewModel( } else if (samePackageNameUpdateList.find { it.signature == installedSignature.firstOrNull() || it.signature == installedSignature.secondOrNull() - || it.isPluggable } != null) { + || it.isPluggable + } != null) { // 1. 存在同包名同签名的游戏,以同包名同签名的游戏作为我的版本 // 2. 若不存在同包名同签名的游戏,以插件化的游戏作为我的版本 for (update in samePackageNameUpdateList) { if (update.isPluggable - || (matchedVersionUpdate == null && (installedSignature.firstOrNull() == update.signature || installedSignature.secondOrNull() == update.signature))) { + || (matchedVersionUpdate == null && (installedSignature.firstOrNull() == update.signature || installedSignature.secondOrNull() == update.signature)) + ) { matchedVersionUpdate = update } else { mismatchedVersionUpdateList.add(update) diff --git a/app/src/main/java/com/gh/gamecenter/energy/EnergyBridge.kt b/app/src/main/java/com/gh/gamecenter/energy/EnergyBridge.kt index c3a9357642..163c65d076 100644 --- a/app/src/main/java/com/gh/gamecenter/energy/EnergyBridge.kt +++ b/app/src/main/java/com/gh/gamecenter/energy/EnergyBridge.kt @@ -47,7 +47,10 @@ object EnergyBridge { } fun getEnergyCenterIntent(context: Context?, initTabIndex: Int): Intent { - return mEnergyTaskHelp?.getEnergyCenterIntent(context, initTabIndex) ?: Intent(context, MainActivity::class.java) + return mEnergyTaskHelp?.getEnergyCenterIntent(context, initTabIndex) ?: Intent( + context, + MainActivity::class.java + ) } fun getEnergyHouseIntent(context: Context?, categoryId: String?): Intent { diff --git a/app/src/main/java/com/gh/gamecenter/entity/AddonsUnreadEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/AddonsUnreadEntity.kt index 64e379ec55..f5e149f3cd 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/AddonsUnreadEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/AddonsUnreadEntity.kt @@ -1,5 +1,5 @@ package com.gh.gamecenter.entity data class AddonsUnreadEntity( - var favorite: Int = 0//我的收藏未读 + var favorite: Int = 0//我的收藏未读 ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/AliasEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/AliasEntity.kt index c175fa0381..be22540702 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/AliasEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/AliasEntity.kt @@ -2,6 +2,8 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -data class AliasEntity(var alias: String? = "", - @SerializedName("alias_type") - var aliasType: String? = "") \ No newline at end of file +data class AliasEntity( + var alias: String? = "", + @SerializedName("alias_type") + var aliasType: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/AmwayCommentEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/AmwayCommentEntity.kt index 35333a46ec..ac61570696 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/AmwayCommentEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/AmwayCommentEntity.kt @@ -7,33 +7,35 @@ import kotlinx.parcelize.Parcelize @Parcelize data class AmwayCommentEntity( - @SerializedName("_id") - var id: String, - var game: Game, - var comment: RatingComment, - var time: Long) : Parcelable { + @SerializedName("_id") + var id: String, + var game: Game, + var comment: RatingComment, + var time: Long +) : Parcelable { @Parcelize data class Game( - @SerializedName("_id") - var id: String, - var icon: String, - @SerializedName("ori_icon") - var rawIcon: String? = null, - @SerializedName("icon_subscript") - var iconSubscript: String? = "", - @SerializedName("name") - private var mName: String, - @SerializedName("name_suffix") - var nameSuffix: String? = "", - @SerializedName(value = "new_tag_style") - var tag: List? = arrayListOf(), - @SerializedName("new_star") - var star: Float, + @SerializedName("_id") + var id: String, + var icon: String, + @SerializedName("ori_icon") + var rawIcon: String? = null, + @SerializedName("icon_subscript") + var iconSubscript: String? = "", + @SerializedName("name") + private var mName: String, + @SerializedName("name_suffix") + var nameSuffix: String? = "", + @SerializedName(value = "new_tag_style") + var tag: List? = arrayListOf(), + @SerializedName("new_star") + var star: Float, - // 曝光用的位置 - var sequence: Int = 0, - var outerSequence: Int = 0) : Parcelable { + // 曝光用的位置 + var sequence: Int = 0, + var outerSequence: Int = 0 + ) : Parcelable { @IgnoredOnParcel val name: String? diff --git a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt index 534774f762..8d4629ee08 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt @@ -11,45 +11,47 @@ import com.halo.assistant.HaloApp import kotlinx.parcelize.Parcelize @Parcelize -data class ApkEntity(@SerializedName("package") - var packageName: String = "", - var size: String? = null, - var url: String? = null, - private var platform: String? = null, - var version: String? = null, - @SerializedName("gh_version") - var ghVersion: String? = null, - var etag: String? = null, - var apkCollection: GameCollectionEntity? = null, - var order: Int = 0, - @SerializedName("active") - var isActive: Boolean = true, - var force: Boolean = false, - var apkLink: ApkLink? = null, - var plugin: String? = "",/*控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close*/ - var time: Long? = null, - var md5: String? = null, // 包体的 MD5 用于内型为畅玩的游戏使用用来更新 - @SerializedName("platform_name") - private var platformName: String = "", - val remark: String = "", - @SerializedName("platform_icon") - private var platformIcon: String = "", - @SerializedName("download_instruction") - val downloadInstruction: String = "", - var recommend: Recommend? = null, - @SerializedName("sign") - var signature: String? = "", - @SerializedName("version_code") - var versionCode: Int = 0, +data class ApkEntity( + @SerializedName("package") + var packageName: String = "", + var size: String? = null, + var url: String? = null, + private var platform: String? = null, + var version: String? = null, + @SerializedName("gh_version") + var ghVersion: String? = null, + var etag: String? = null, + var apkCollection: GameCollectionEntity? = null, + var order: Int = 0, + @SerializedName("active") + var isActive: Boolean = true, + var force: Boolean = false, + var apkLink: ApkLink? = null, + var plugin: String? = "",/*控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close*/ + var time: Long? = null, + var md5: String? = null, // 包体的 MD5 用于内型为畅玩的游戏使用用来更新 + @SerializedName("platform_name") + private var platformName: String = "", + val remark: String = "", + @SerializedName("platform_icon") + private var platformIcon: String = "", + @SerializedName("download_instruction") + val downloadInstruction: String = "", + var recommend: Recommend? = null, + @SerializedName("sign") + var signature: String? = "", + @SerializedName("version_code") + var versionCode: Int = 0, - // 以下是历史版本用的字段,其它地方可能会没有 - @SerializedName("update_time") - var updateTime: Long = 0, - @SerializedName("update_des") - var updateDesc: String = "", - @SerializedName("download_status") - var downloadStatus: String = "", - var format: String = "") : Parcelable { + // 以下是历史版本用的字段,其它地方可能会没有 + @SerializedName("update_time") + var updateTime: Long = 0, + @SerializedName("update_des") + var updateDesc: String = "", + @SerializedName("download_status") + var downloadStatus: String = "", + var format: String = "" +) : Parcelable { fun getPlatform(): String? { if (TextUtils.isEmpty(platform)) { return "官方版" @@ -74,8 +76,8 @@ data class ApkEntity(@SerializedName("package") } return PlatformUtils - .getInstance(HaloApp.getInstance().application) - .getPlatformName(platform) ?: "" + .getInstance(HaloApp.getInstance().application) + .getPlatformName(platform) ?: "" } fun setPlatformName(platformName: String) { @@ -88,8 +90,8 @@ data class ApkEntity(@SerializedName("package") } return PlatformUtils - .getInstance(HaloApp.getInstance().application) - .getPlatformPicUrl(platform) ?: "" + .getInstance(HaloApp.getInstance().application) + .getPlatformPicUrl(platform) ?: "" } fun setPlatformIcon(platformIcon: String) { @@ -98,20 +100,21 @@ data class ApkEntity(@SerializedName("package") } @Parcelize -class ApkLink(@SerializedName("_id") - val id: String = "", - val name: String = "", - @SerializedName("new_icon") - val icon: String = "", - val type: String = "", - val link: String = "", - val text: String = "", - val sort: Int = 0, - val collection: String = "", - val remark: String = "", - @SerializedName("link_community", alternate = ["community"]) - var community: CommunityEntity? = CommunityEntity(), - var display: Display? = null +class ApkLink( + @SerializedName("_id") + val id: String = "", + val name: String = "", + @SerializedName("new_icon") + val icon: String = "", + val type: String = "", + val link: String = "", + val text: String = "", + val sort: Int = 0, + val collection: String = "", + val remark: String = "", + @SerializedName("link_community", alternate = ["community"]) + var community: CommunityEntity? = CommunityEntity(), + var display: Display? = null ) : Parcelable { fun getLinkEntity(): LinkEntity { diff --git a/app/src/main/java/com/gh/gamecenter/entity/ApplyModeratorTaskEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ApplyModeratorTaskEntity.kt index 32bccf15d0..3d771ef8e8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApplyModeratorTaskEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ApplyModeratorTaskEntity.kt @@ -4,11 +4,11 @@ import android.view.View import com.gh.gamecenter.R data class ApplyModeratorTaskEntity( - val taskId: String = "", - var taskIcon: Int = R.drawable.ic_moderator_task_etiquette, - var taskName: String = "", - var taskDescription: String = "", - var finishedTask: Boolean = false, - var taskAction: View.OnClickListener? = null, - var taskDesAction: View.OnClickListener? = null + val taskId: String = "", + var taskIcon: Int = R.drawable.ic_moderator_task_etiquette, + var taskName: String = "", + var taskDescription: String = "", + var finishedTask: Boolean = false, + var taskAction: View.OnClickListener? = null, + var taskDesAction: View.OnClickListener? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ArticleCommentParent.kt b/app/src/main/java/com/gh/gamecenter/entity/ArticleCommentParent.kt index 9843333ab1..f560aa0e2b 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ArticleCommentParent.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ArticleCommentParent.kt @@ -6,17 +6,20 @@ import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize @Parcelize -data class ArticleCommentParent(val user: User = User(), - val active: Boolean = true, - val comment: String = "", - var me: MeEntity? = MeEntity()) : Parcelable +data class ArticleCommentParent( + val user: User = User(), + val active: Boolean = true, + val comment: String = "", + var me: MeEntity? = MeEntity() +) : Parcelable @Parcelize data class User( - @SerializedName("_id") - var id: String = "", - var name: String = "", - var icon: String = "", - var badge: Badge? = null) : Parcelable + @SerializedName("_id") + var id: String = "", + var name: String = "", + var icon: String = "", + var badge: Badge? = null +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/AuthDialogEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/AuthDialogEntity.kt index a94896502c..b17536b2b7 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/AuthDialogEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/AuthDialogEntity.kt @@ -6,16 +6,16 @@ import kotlinx.parcelize.Parcelize @Parcelize data class AuthDialogEntity( - @SerializedName("_id") - var id: String = "", - var link: String = "", - @SerializedName("game_category") - var gameCategory:String="",//online (网络游戏) , local (单机游戏), welfare (福利游戏) - var level: String = ""//MUST_PASS:提示且认证通过 ALWAYS_HINT:仅提示且不可关闭 OPTIONAL_HINT:仅提示且可关闭 + @SerializedName("_id") + var id: String = "", + var link: String = "", + @SerializedName("game_category") + var gameCategory: String = "",//online (网络游戏) , local (单机游戏), welfare (福利游戏) + var level: String = ""//MUST_PASS:提示且认证通过 ALWAYS_HINT:仅提示且不可关闭 OPTIONAL_HINT:仅提示且可关闭 ) : Parcelable -enum class AuthDialogLevel(val value: String){ - MUST_PASS("MUST_PASS"), - ALWAYS_HINT("ALWAYS_HINT"), - OPTIONAL_HINT("OPTIONAL_HINT"), +enum class AuthDialogLevel(val value: String) { + MUST_PASS("MUST_PASS"), + ALWAYS_HINT("ALWAYS_HINT"), + OPTIONAL_HINT("OPTIONAL_HINT"), } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/AvatarBorderCategoryEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/AvatarBorderCategoryEntity.kt index 899823996a..dfb1b7a38c 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/AvatarBorderCategoryEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/AvatarBorderCategoryEntity.kt @@ -6,9 +6,9 @@ import kotlinx.parcelize.Parcelize @Parcelize data class AvatarBorderCategoryEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - @SerializedName("is_free") - var isFree: Boolean = false + @SerializedName("_id") + var id: String = "", + var name: String = "", + @SerializedName("is_free") + var isFree: Boolean = false ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/BadgeEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/BadgeEntity.kt index 80ed53c4de..72be533bb0 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/BadgeEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/BadgeEntity.kt @@ -4,16 +4,16 @@ import com.gh.gamecenter.login.entity.BadgeAction import com.google.gson.annotations.SerializedName data class BadgeEntity( - @SerializedName(value = "_id") - var id: String = "", - var expire: Int = 0, - var icon: String = "", - var name: String = "", //获取时间 - var time: Int = 0, //有效期,0代表无限期 - val wear: Boolean = false, //是否佩戴 - var image: String = "", - var actions: List? = null, - var receive: BadgeReceive? = null + @SerializedName(value = "_id") + var id: String = "", + var expire: Int = 0, + var icon: String = "", + var name: String = "", //获取时间 + var time: Int = 0, //有效期,0代表无限期 + val wear: Boolean = false, //是否佩戴 + var image: String = "", + var actions: List? = null, + var receive: BadgeReceive? = null ) // 领取类型 diff --git a/app/src/main/java/com/gh/gamecenter/entity/CatalogEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/CatalogEntity.kt index 524d090928..ca11780f88 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/CatalogEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/CatalogEntity.kt @@ -7,68 +7,68 @@ import kotlinx.parcelize.Parcelize @Parcelize data class CatalogEntity( + @SerializedName("_id") + var id: String = "", + var name: String = "", + var switch: CatalogSwitch = CatalogSwitch(), + @SerializedName("has_special") + var hasSpecial: Boolean = false, + @SerializedName("sub_catalogs") + var subCatalog: List = emptyList() +) : Parcelable { + + @Parcelize + data class SubCatalogEntity( @SerializedName("_id") var id: String = "", var name: String = "", - var switch: CatalogSwitch = CatalogSwitch(), - @SerializedName("has_special") - var hasSpecial: Boolean = false, - @SerializedName("sub_catalogs") - var subCatalog: List = emptyList() -): Parcelable { + var icon: String = "", + var type: String = "", + var link: LinkEntity = LinkEntity(), + var recommended: Boolean = false + ) : Parcelable - @Parcelize - data class SubCatalogEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - var icon: String = "", - var type: String = "", - var link: LinkEntity = LinkEntity(), - var recommended: Boolean = false - ): Parcelable - - @Parcelize - data class CatalogSwitch( - @SerializedName("sort_hot") - var hotSort: String = "", - @SerializedName("sort_new") - var newSort: String = "", - @SerializedName("sort_star") - var starSort: String = "" - ): Parcelable + @Parcelize + data class CatalogSwitch( + @SerializedName("sort_hot") + var hotSort: String = "", + @SerializedName("sort_new") + var newSort: String = "", + @SerializedName("sort_star") + var starSort: String = "" + ) : Parcelable } @Parcelize data class SpecialCatalogEntity( + @SerializedName("_id") + var id: String = "", + var type: String = "", + var link: SpecialLink = SpecialLink(), + var image: Image = Image(), + var data: List = emptyList() +) : Parcelable { + + @Parcelize + data class Banner( @SerializedName("_id") var id: String = "", - var type: String = "", - var link: SpecialLink = SpecialLink(), - var image: Image = Image(), - var data: List = emptyList() -): Parcelable { + var title: String = "", + var image: String = "", + var link: LinkEntity = LinkEntity() + ) : Parcelable - @Parcelize - data class Banner( - @SerializedName("_id") - var id: String = "", - var title: String = "", - var image: String = "", - var link: LinkEntity = LinkEntity() - ): Parcelable + @Parcelize + data class SpecialLink( + @SerializedName("_id") + var id: String = "", + var data: List = emptyList() + ) : LinkEntity(), Parcelable - @Parcelize - data class SpecialLink( - @SerializedName("_id") - var id: String = "", - var data: List = emptyList() - ): LinkEntity(), Parcelable - - @Parcelize - data class Image( - var url: String = "", - var title: String = "" - ): Parcelable + @Parcelize + data class Image( + var url: String = "", + var title: String = "" + ) : Parcelable } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/CategoryEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/CategoryEntity.kt index db2d0f8e4d..0d0079753d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/CategoryEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/CategoryEntity.kt @@ -6,12 +6,12 @@ import kotlinx.parcelize.Parcelize @Parcelize data class CategoryEntity( - @SerializedName("_id") - var id: String? = "", - var icon: String? = "", - var name: String? = "", - var recommend: Boolean? = false, - var data: List? = null, - var selected: Boolean = false, - var primaryIndex: Int = -1 + @SerializedName("_id") + var id: String? = "", + var icon: String? = "", + var name: String? = "", + var recommend: Boolean? = false, + var data: List? = null, + var selected: Boolean = false, + var primaryIndex: Int = -1 ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ColorEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ColorEntity.kt index 67a7c012c7..bc786e20f8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ColorEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ColorEntity.kt @@ -4,4 +4,4 @@ import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize -data class ColorEntity(var color: String = "", var value: String = ""): Parcelable \ No newline at end of file +data class ColorEntity(var color: String = "", var value: String = "") : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/CommentParentEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/CommentParentEntity.kt index 317d345621..b83761dfbc 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/CommentParentEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/CommentParentEntity.kt @@ -7,13 +7,14 @@ import kotlinx.parcelize.Parcelize @Parcelize data class CommentParentEntity( - var icon: String? = "", - @SerializedName("_id") - var id: String? = "", - var user: UserEntity? = null, - var content: String? = null, - var name: String? = null, - var comment: String? = null, - var active: Boolean = true, - var badge: Badge? = null, - var me: MeEntity? = null) : Parcelable \ No newline at end of file + var icon: String? = "", + @SerializedName("_id") + var id: String? = "", + var user: UserEntity? = null, + var content: String? = null, + var name: String? = null, + var comment: String? = null, + var active: Boolean = true, + var badge: Badge? = null, + var me: MeEntity? = null +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ConcernEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ConcernEntity.kt index 2c8bc0013b..7a4070cec4 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ConcernEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ConcernEntity.kt @@ -7,7 +7,7 @@ import com.google.gson.annotations.SerializedName /** * Created by khy on 2016/8/17. */ -class ConcernEntity() :Parcelable { +class ConcernEntity() : Parcelable { @SerializedName("_id") var id: String? = null @@ -51,7 +51,7 @@ class ConcernEntity() :Parcelable { @SerializedName("me") var me: MeEntity? = null - fun getGameName() : String { + fun getGameName(): String { return game?.name ?: "" } diff --git a/app/src/main/java/com/gh/gamecenter/entity/ConflictUserEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ConflictUserEntity.kt index 7e3b09f653..106aa69b93 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ConflictUserEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ConflictUserEntity.kt @@ -8,7 +8,7 @@ import kotlinx.parcelize.Parcelize @Keep @Parcelize data class ConflictUserEntity( - val user: User? = null, - @SerializedName("register_type") - var registerType: String = "" + val user: User? = null, + @SerializedName("register_type") + var registerType: String = "" ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/DeviceDialogEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/DeviceDialogEntity.kt index 196c6402ff..bff3bbf317 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/DeviceDialogEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/DeviceDialogEntity.kt @@ -3,10 +3,10 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class DeviceDialogEntity( - val manufacturer: String = "",// 厂商 - @SerializedName("exclude_tags") - val excludeTags: ArrayList = ArrayList(),// 筛除标签 - val title: String = "", - val content: String = "", - val gallery: ArrayList = ArrayList() + val manufacturer: String = "",// 厂商 + @SerializedName("exclude_tags") + val excludeTags: ArrayList = ArrayList(),// 筛除标签 + val title: String = "", + val content: String = "", + val gallery: ArrayList = ArrayList() ) diff --git a/app/src/main/java/com/gh/gamecenter/entity/DialogEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/DialogEntity.kt index dfc96174a6..5a438d2e20 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/DialogEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/DialogEntity.kt @@ -8,7 +8,8 @@ data class DialogEntity( @SerializedName("index") val welcomeDialog: WelcomeDialogEntity? = null, @SerializedName("privacy_policy") - val privacyPolicyDialog: PrivacyPolicyEntity? = null) { + val privacyPolicyDialog: PrivacyPolicyEntity? = null +) { @Parcelize data class PrivacyPolicyEntity( @@ -20,5 +21,5 @@ data class DialogEntity( var alertType: String,// INFORM/RECONFIRM var content: String, // 支持html var time: Long - ): Parcelable + ) : Parcelable } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/EmulatorGameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/EmulatorGameEntity.kt index a4d8c5edbc..630724c9a1 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/EmulatorGameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/EmulatorGameEntity.kt @@ -1,6 +1,6 @@ package com.gh.gamecenter.entity data class EmulatorGameEntity( - var gameName: String = "", - var filePath: String = "" + var gameName: String = "", + var filePath: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ErrorEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ErrorEntity.kt index abae2a938b..995c70ecda 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ErrorEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ErrorEntity.kt @@ -4,35 +4,37 @@ import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName -data class ErrorEntity(var code: Int? = 0, - var detail: String? = "", - var toast: String? = "", - var data: Data? = null) { +data class ErrorEntity( + var code: Int? = 0, + var detail: String? = "", + var toast: String? = "", + var data: Data? = null +) { data class Data( - @SerializedName("always_block") - var alwaysBlock: Boolean? = false, - @SerializedName("game_id") - var gameId: String = "", - @SerializedName("game_name") - var gameName: String = "", - var nickname: String = "", + @SerializedName("always_block") + var alwaysBlock: Boolean? = false, + @SerializedName("game_id") + var gameId: String = "", + @SerializedName("game_name") + var gameName: String = "", + var nickname: String = "", - // post question - @SerializedName("question_id") - var questionId: String = "", - @SerializedName("question_title") - var questionTitle: String = "", - @SerializedName("answer_count") - var answerCount: Int = 0, - @SerializedName("follow_count") - private var followCount: Int = 0, - val content: String = "", - val title: String = "", - val type: String = "", - val link: String = "", - val text: String = "", - @SerializedName("link_community", alternate = ["community"]) - var community: CommunityEntity? = CommunityEntity() + // post question + @SerializedName("question_id") + var questionId: String = "", + @SerializedName("question_title") + var questionTitle: String = "", + @SerializedName("answer_count") + var answerCount: Int = 0, + @SerializedName("follow_count") + private var followCount: Int = 0, + val content: String = "", + val title: String = "", + val type: String = "", + val link: String = "", + val text: String = "", + @SerializedName("link_community", alternate = ["community"]) + var community: CommunityEntity? = CommunityEntity() ) { // 问题关注数默认是1 fun getFollowCount(): Int { diff --git a/app/src/main/java/com/gh/gamecenter/entity/FollowersOrFansEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/FollowersOrFansEntity.kt index bb9d13a11e..670455139a 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/FollowersOrFansEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/FollowersOrFansEntity.kt @@ -5,22 +5,24 @@ import com.gh.gamecenter.login.entity.Badge import com.google.gson.annotations.SerializedName data class FollowersOrFansEntity( - @SerializedName("_id") - val id: String = "", - val icon: String = "", - val name: String = "", - var introduce: String? = "", - val count: Count = Count(), - val me: MeEntity = MeEntity(), - val auth: Auth = Auth(), - val badge: Badge? = null, - @SerializedName("icon_border_url") - val border: String = "") { + @SerializedName("_id") + val id: String = "", + val icon: String = "", + val name: String = "", + var introduce: String? = "", + val count: Count = Count(), + val me: MeEntity = MeEntity(), + val auth: Auth = Auth(), + val badge: Badge? = null, + @SerializedName("icon_border_url") + val border: String = "" +) { data class Count( - val vote: Int = 0, - val answer: Int = 0, - val fans :Int= 0) + val vote: Int = 0, + val answer: Int = 0, + val fans: Int = 0 + ) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/ForumActivityEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ForumActivityEntity.kt index 227c03178d..1080a92dac 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ForumActivityEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ForumActivityEntity.kt @@ -4,39 +4,39 @@ import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName data class ForumActivityCategoryEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "" + @SerializedName("_id") + var id: String = "", + var name: String = "" ) data class ForumActivityEntity( - @SerializedName("_id") - val id: String = "", - val title: String = "", - @SerializedName("tag_activity_id") - val activityId: String = "", //活动标签ID - @SerializedName("tag_activity_name") - val activityName: String = "", //活动标签名 - @SerializedName("game_id") - val gameId: String = "", - @SerializedName("game_name") - val gameName: String = "", - @SerializedName("effect_time") - val effectTime: ActivityTime = ActivityTime(), - @SerializedName("award_time") - val awardTime: ActivityTime = ActivityTime(), - val image: ActivityImage = ActivityImage(), - val name: String = "", - val unread: Boolean = false, - val link: LinkEntity? = null + @SerializedName("_id") + val id: String = "", + val title: String = "", + @SerializedName("tag_activity_id") + val activityId: String = "", //活动标签ID + @SerializedName("tag_activity_name") + val activityName: String = "", //活动标签名 + @SerializedName("game_id") + val gameId: String = "", + @SerializedName("game_name") + val gameName: String = "", + @SerializedName("effect_time") + val effectTime: ActivityTime = ActivityTime(), + @SerializedName("award_time") + val awardTime: ActivityTime = ActivityTime(), + val image: ActivityImage = ActivityImage(), + val name: String = "", + val unread: Boolean = false, + val link: LinkEntity? = null ) { - data class ActivityTime( - val start: Long = 0, - val end: Long = 0 - ) + data class ActivityTime( + val start: Long = 0, + val end: Long = 0 + ) - data class ActivityImage( - val cover: String = "" - ) + data class ActivityImage( + val cover: String = "" + ) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt index c0192b0c5b..ab9050ea11 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ForumDetailEntity.kt @@ -5,20 +5,20 @@ import com.gh.gamecenter.gamedetail.entity.ZoneEntity import com.google.gson.annotations.SerializedName data class ForumDetailEntity( - @SerializedName("_id") - var id: String = "", - var game: SimpleGame = SimpleGame(), - var background: String = "", - var name: String = "", - var icon: String = "", - var moderator: ArrayList = arrayListOf(), - @SerializedName("top") - var topLink: ArrayList = arrayListOf(), - @SerializedName("zone_tab") - var zone: ZoneEntity? = null, - var me: MeEntity = MeEntity(), - var type: String = "", //game_bbs/official_bbs - var hot: Int = 0 // 热度值 + @SerializedName("_id") + var id: String = "", + var game: SimpleGame = SimpleGame(), + var background: String = "", + var name: String = "", + var icon: String = "", + var moderator: ArrayList = arrayListOf(), + @SerializedName("top") + var topLink: ArrayList = arrayListOf(), + @SerializedName("zone_tab") + var zone: ZoneEntity? = null, + var me: MeEntity = MeEntity(), + var type: String = "", //game_bbs/official_bbs + var hot: Int = 0 // 热度值 ) { data class TopLinkEntity( diff --git a/app/src/main/java/com/gh/gamecenter/entity/ForumEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ForumEntity.kt index 3814374bc7..991ac9b609 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ForumEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ForumEntity.kt @@ -8,33 +8,33 @@ import com.google.gson.annotations.SerializedName @Entity data class ForumEntity( - @PrimaryKey - @SerializedName("_id") - var id: String = "", - var game: SimpleGame = SimpleGame(), - var name: String = "", - var icon: String = "", - @SerializedName("is_follow") - var isFollow: Boolean = false, - //本地字段,判断是否是推荐论坛 - var isRecommend: Boolean = false, - var orderTag: Long = 0, - var unread: Boolean = false, - var type: String = "", //game_bbs/official_bbs - var me: MeEntity = MeEntity(), - @Ignore - var hot: Int = 0 // 热度值 + @PrimaryKey + @SerializedName("_id") + var id: String = "", + var game: SimpleGame = SimpleGame(), + var name: String = "", + var icon: String = "", + @SerializedName("is_follow") + var isFollow: Boolean = false, + //本地字段,判断是否是推荐论坛 + var isRecommend: Boolean = false, + var orderTag: Long = 0, + var unread: Boolean = false, + var type: String = "", //game_bbs/official_bbs + var me: MeEntity = MeEntity(), + @Ignore + var hot: Int = 0 // 热度值 ) { - fun transformUnreadEntity(): ForumUnreadEntity { - val forumUnreadEntity = ForumUnreadEntity() - forumUnreadEntity.id = id - forumUnreadEntity.name = name - forumUnreadEntity.unread = unread - return forumUnreadEntity - } + fun transformUnreadEntity(): ForumUnreadEntity { + val forumUnreadEntity = ForumUnreadEntity() + forumUnreadEntity.id = id + forumUnreadEntity.name = name + forumUnreadEntity.unread = unread + return forumUnreadEntity + } } data class ForumBannerEntity( - @SerializedName("placeholder_color") - var placeholderColor: String = "" + @SerializedName("placeholder_color") + var placeholderColor: String = "" ) : LinkEntity() \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ForumUnreadEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ForumUnreadEntity.kt index 5d7983f2f6..1eca5bf549 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ForumUnreadEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ForumUnreadEntity.kt @@ -6,8 +6,8 @@ import kotlinx.parcelize.Parcelize @Parcelize data class ForumUnreadEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - var unread: Boolean = false + @SerializedName("_id") + var id: String = "", + var name: String = "", + var unread: Boolean = false ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt index 99b3c0efe0..f433e7a9aa 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt @@ -9,23 +9,24 @@ import kotlinx.parcelize.Parcelize */ @Parcelize data class GameCollectionEntity( - @SerializedName("_id") - var id: String? = "", - var color: String = "", - var name: String = "", - @SerializedName("package") - var packages: List = ArrayList(), - var saveApkEntity: MutableList? = null, - val remark: String = "", - @SerializedName("new_icon") - val newIcon: String = "", - @SerializedName("download_instruction") - var downloadInstruction: String = "", - var recommend: Recommend? = null, - /** - * 若该合集存在"可插件化"的包,则该版本在一级页面显示为“XX此版本,一旦设备中已安装合集中任一插件版本, - * 则即便设备中同时安装了合集中其它版本的原包,也不再于下载面板-一级页中提示可插件化 - *  - * 此步骤应在ViewModel提前算好 - */ - var showPluggableHint: Boolean = false) : Parcelable + @SerializedName("_id") + var id: String? = "", + var color: String = "", + var name: String = "", + @SerializedName("package") + var packages: List = ArrayList(), + var saveApkEntity: MutableList? = null, + val remark: String = "", + @SerializedName("new_icon") + val newIcon: String = "", + @SerializedName("download_instruction") + var downloadInstruction: String = "", + var recommend: Recommend? = null, + /** + * 若该合集存在"可插件化"的包,则该版本在一级页面显示为“XX此版本,一旦设备中已安装合集中任一插件版本, + * 则即便设备中同时安装了合集中其它版本的原包,也不再于下载面板-一级页中提示可插件化 + *  + * 此步骤应在ViewModel提前算好 + */ + var showPluggableHint: Boolean = false +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameColumnCollection.kt b/app/src/main/java/com/gh/gamecenter/entity/GameColumnCollection.kt index ecebcfcdb1..d6158d438d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameColumnCollection.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameColumnCollection.kt @@ -2,8 +2,10 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -class GameColumnCollection(@SerializedName("_id") - val id: String = "", - val name: String = "", - // 取值为 "1-1" 或 "1-2" 或 "top" 相应地代表 1行1个 或 1行2个 或 排行榜 - val style: String = "" ) \ No newline at end of file +class GameColumnCollection( + @SerializedName("_id") + val id: String = "", + val name: String = "", + // 取值为 "1-1" 或 "1-2" 或 "top" 相应地代表 1行1个 或 1行2个 或 排行榜 + val style: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailContact.kt b/app/src/main/java/com/gh/gamecenter/entity/GameDetailContact.kt index faa3163f01..6555bba6f0 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailContact.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailContact.kt @@ -31,7 +31,8 @@ class GameDetailContact : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): GameDetailContact { return GameDetailContact(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailPlayer.kt b/app/src/main/java/com/gh/gamecenter/entity/GameDetailPlayer.kt index 59c3c982aa..a396237cc8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailPlayer.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailPlayer.kt @@ -35,7 +35,8 @@ class GameDetailPlayer : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): GameDetailPlayer { return GameDetailPlayer(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailRelatedGame.kt b/app/src/main/java/com/gh/gamecenter/entity/GameDetailRelatedGame.kt index ac6a66ae8a..e252c93959 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailRelatedGame.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailRelatedGame.kt @@ -31,7 +31,8 @@ class GameDetailRelatedGame : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): GameDetailRelatedGame { return GameDetailRelatedGame(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailServer.kt b/app/src/main/java/com/gh/gamecenter/entity/GameDetailServer.kt index de25251bbd..92192550f1 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailServer.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailServer.kt @@ -9,9 +9,11 @@ import kotlinx.parcelize.Parcelize */ @Parcelize -class GameDetailServer(var des: String = "", - var total: Int = 0, - @SerializedName("show_des") - var showDes: Boolean = false,// 显示开服说明,true、false - var calendar: ArrayList = ArrayList(), - var status: String = "") : Parcelable +class GameDetailServer( + var des: String = "", + var total: Int = 0, + @SerializedName("show_des") + var showDes: Boolean = false,// 显示开服说明,true、false + var calendar: ArrayList = ArrayList(), + var status: String = "" +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameDetailService.kt b/app/src/main/java/com/gh/gamecenter/entity/GameDetailService.kt index d48b73e73d..92cbc99e30 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameDetailService.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameDetailService.kt @@ -31,7 +31,8 @@ class GameDetailService : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): GameDetailService { return GameDetailService(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameInstall.kt b/app/src/main/java/com/gh/gamecenter/entity/GameInstall.kt index 1d27db820e..a333c7abe3 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameInstall.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameInstall.kt @@ -5,17 +5,18 @@ import com.google.gson.annotations.SerializedName import com.halo.assistant.HaloApp data class GameInstall( - @SerializedName("_id") - var id: String? = "", - var packageName: String = "", - var name: String? = "", - var icon: String? = "", - var iconSubScript: String? = "", - var isSignByGh: Boolean = false, - var installTime: Long = 0, - var version: String = "", - var isSmoothGame: Boolean = false, // 是否是畅玩游戏 - var tag: Any? = null) { + @SerializedName("_id") + var id: String? = "", + var packageName: String = "", + var name: String? = "", + var icon: String? = "", + var iconSubScript: String? = "", + var isSignByGh: Boolean = false, + var installTime: Long = 0, + var version: String = "", + var isSmoothGame: Boolean = false, // 是否是畅玩游戏 + var tag: Any? = null +) { companion object { fun transformGameInstall(game: GameEntity, installedPkgName: String): GameInstall { diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.kt index 579f42a0bf..0118a490be 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameUpdateEntity.kt @@ -4,45 +4,45 @@ import com.gh.common.exposure.ExposureEvent import com.google.gson.annotations.SerializedName data class GameUpdateEntity( - @SerializedName("game_id") - var id: String = "", - var name: String? = null, - var icon: String? = null, - @SerializedName("ori_icon") - var rawIcon: String? = null, - @SerializedName("icon_subscript") - var iconSubscript: String? = "", - @SerializedName("package") - var packageName: String = "", - var size: String? = null, - var version: String? = null, - var currentVersion: String? = null, - @SerializedName("gh_version") - var ghVersion: String? = null, - var url: String? = null, - var platform: String? = null, - var readablePlatform: String? = "", - var isPluggable: Boolean = false, - var isPluggableDownloaded: Boolean = false, // 插件化是否被下载完成 - var etag: String? = null, - var brief: String? = null, - var tag: ArrayList? = null, - var tagStyle: ArrayList = ArrayList(), - // 控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close - var plugin: String? = "", - // 只控制首页是否显示插件化 open/close(此开关优先级最高) - @SerializedName("index_plugin") - var indexPlugin: String = "open", - var exposureEvent: ExposureEvent? = null, - var download: Int = 0/*7天下载量*/, - @SerializedName("p_button_add_word") - var pluginDesc: String = "", //插件功能描述 - var pluggableCollection: GameCollectionEntity? = null, // 插件化包所在的合集 - var format: String = "", - var signature: String? = "", - var category: String? = "", - var md5: String? = "", - var downloadStatus: String? = "" + @SerializedName("game_id") + var id: String = "", + var name: String? = null, + var icon: String? = null, + @SerializedName("ori_icon") + var rawIcon: String? = null, + @SerializedName("icon_subscript") + var iconSubscript: String? = "", + @SerializedName("package") + var packageName: String = "", + var size: String? = null, + var version: String? = null, + var currentVersion: String? = null, + @SerializedName("gh_version") + var ghVersion: String? = null, + var url: String? = null, + var platform: String? = null, + var readablePlatform: String? = "", + var isPluggable: Boolean = false, + var isPluggableDownloaded: Boolean = false, // 插件化是否被下载完成 + var etag: String? = null, + var brief: String? = null, + var tag: ArrayList? = null, + var tagStyle: ArrayList = ArrayList(), + // 控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close + var plugin: String? = "", + // 只控制首页是否显示插件化 open/close(此开关优先级最高) + @SerializedName("index_plugin") + var indexPlugin: String = "open", + var exposureEvent: ExposureEvent? = null, + var download: Int = 0/*7天下载量*/, + @SerializedName("p_button_add_word") + var pluginDesc: String = "", //插件功能描述 + var pluggableCollection: GameCollectionEntity? = null, // 插件化包所在的合集 + var format: String = "", + var signature: String? = "", + var category: String? = "", + var md5: String? = "", + var downloadStatus: String? = "" ) { fun isShowPlugin(location: PluginLocation): Boolean { diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt b/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt index 3e3ab4270e..3091cbacd7 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt @@ -3,14 +3,15 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class GameVideoInfo( - var game: SimpleGame? = null, - @SerializedName("game_name") - val gameName: String = "", - @SerializedName("game_icon") - val gameIcon: String = "", - @SerializedName("name_suffix") - var nameSuffix: String? = null, - @SerializedName("video_count") - val videoCount: Int = 0, - @SerializedName("vote_count") - val likeCount: Int = 0) \ No newline at end of file + var game: SimpleGame? = null, + @SerializedName("game_name") + val gameName: String = "", + @SerializedName("game_icon") + val gameIcon: String = "", + @SerializedName("name_suffix") + var nameSuffix: String? = null, + @SerializedName("video_count") + val videoCount: Int = 0, + @SerializedName("vote_count") + val likeCount: Int = 0 +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/HelpCategoryEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/HelpCategoryEntity.kt index de78ba7ce3..85a427af16 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/HelpCategoryEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/HelpCategoryEntity.kt @@ -2,9 +2,11 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -data class HelpCategoryEntity(@SerializedName(value = "_id", alternate = ["qa_id"]) - val id: String = "", - val icon: String = "", - val name: String = "", - @SerializedName("contents") - val helpEntities: ArrayList = arrayListOf()) \ No newline at end of file +data class HelpCategoryEntity( + @SerializedName(value = "_id", alternate = ["qa_id"]) + val id: String = "", + val icon: String = "", + val name: String = "", + @SerializedName("contents") + val helpEntities: ArrayList = arrayListOf() +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/HistoryGameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/HistoryGameEntity.kt index ab1740516a..4891fe21ae 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/HistoryGameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/HistoryGameEntity.kt @@ -6,21 +6,22 @@ import com.google.gson.annotations.SerializedName @Entity data class HistoryGameEntity( - @PrimaryKey - var id: String = "", - var icon: String? = null, - var iconSubscript: String? = null, - var name: String? = null, - var brief: String? = null, + @PrimaryKey + var id: String = "", + var icon: String? = null, + var iconSubscript: String? = null, + var name: String? = null, + var brief: String? = null, - var tag: ArrayList? = null, - var isLibaoExist: Boolean = false, + var tag: ArrayList? = null, + var isLibaoExist: Boolean = false, - @SerializedName("tag_style") - var tagStyle: ArrayList = ArrayList(), + @SerializedName("tag_style") + var tagStyle: ArrayList = ArrayList(), - var orderTag: Long = 0, - var des: String? = null) { + var orderTag: Long = 0, + var des: String? = null +) { fun convertHistoryGameEntityToGameEntity(): GameEntity { val gameEntity = GameEntity() diff --git a/app/src/main/java/com/gh/gamecenter/entity/HomePluggableFilterEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/HomePluggableFilterEntity.kt index 2128083d67..3579707420 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/HomePluggableFilterEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/HomePluggableFilterEntity.kt @@ -7,8 +7,8 @@ import androidx.room.PrimaryKey @Keep @Entity data class HomePluggableFilterEntity( - @PrimaryKey - val pkgName: String, - val tag: String, // gameVersion or never - var active: Boolean // 是否可用 + @PrimaryKey + val pkgName: String, + val tag: String, // gameVersion or never + var active: Boolean // 是否可用 ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/HomeRecommend.kt b/app/src/main/java/com/gh/gamecenter/entity/HomeRecommend.kt index a3576accc3..35806fc6ee 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/HomeRecommend.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/HomeRecommend.kt @@ -4,22 +4,25 @@ import com.gh.gamecenter.common.entity.Display import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName -data class HomeRecommend(@SerializedName("link_type") - val linkType: String = "", - @SerializedName("link_id") - val linkId: String = "", - @SerializedName("link_text") - val linkText: String = "", - val icon: String = "", - val name: String = "", - val display: Display = Display()) { +data class HomeRecommend( + @SerializedName("link_type") + val linkType: String = "", + @SerializedName("link_id") + val linkId: String = "", + @SerializedName("link_text") + val linkText: String = "", + val icon: String = "", + val name: String = "", + val display: Display = Display() +) { fun transformLinkEntity(): LinkEntity { return LinkEntity( - name = name, - type = linkType, - display = display, - link = linkId, - text = linkText) + name = name, + type = linkType, + display = display, + link = linkId, + text = linkText + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/HomeSlide.kt b/app/src/main/java/com/gh/gamecenter/entity/HomeSlide.kt index cad775e719..65abacc3fa 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/HomeSlide.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/HomeSlide.kt @@ -3,25 +3,28 @@ package com.gh.gamecenter.entity import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName -data class HomeSlide(@SerializedName("link_type") - val linkType: String = "", - @SerializedName("link_id") - val linkId: String = "", - @SerializedName("link_text") - val linkText: String = "", - @SerializedName("link_game") - val linkGame: GameEntity? = null, - val image: String = "", - val title: String = "", - val text: String = "", - @SerializedName("placeholder_color") - val placeholderColor: String = "#5C9599") { +data class HomeSlide( + @SerializedName("link_type") + val linkType: String = "", + @SerializedName("link_id") + val linkId: String = "", + @SerializedName("link_text") + val linkText: String = "", + @SerializedName("link_game") + val linkGame: GameEntity? = null, + val image: String = "", + val title: String = "", + val text: String = "", + @SerializedName("placeholder_color") + val placeholderColor: String = "#5C9599" +) { fun transformLinkEntity(): LinkEntity { return LinkEntity( - name = title, - type = linkType, - link = linkId, - text = linkText) + name = title, + type = linkType, + link = linkId, + text = linkText + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ImageInfoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ImageInfoEntity.kt index 6cf08a323f..bb652d8e61 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ImageInfoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ImageInfoEntity.kt @@ -3,14 +3,15 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class ImageInfoEntity( - @SerializedName("FileSize") - val fileSize: FileSize? = null, - @SerializedName("Format") - val format: Format? = null, - @SerializedName("ImageHeight") - val imageHeight: ImageHeight? = null, - @SerializedName("ImageWidth") - val imageWidth: ImageWidth? = null) { + @SerializedName("FileSize") + val fileSize: FileSize? = null, + @SerializedName("Format") + val format: Format? = null, + @SerializedName("ImageHeight") + val imageHeight: ImageHeight? = null, + @SerializedName("ImageWidth") + val imageWidth: ImageWidth? = null +) { class FileSize { val value: String = "0" } diff --git a/app/src/main/java/com/gh/gamecenter/entity/InnerMetaInfoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/InnerMetaInfoEntity.kt index 796e8d0142..3ecd2f60a1 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/InnerMetaInfoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/InnerMetaInfoEntity.kt @@ -1,5 +1,7 @@ package com.gh.gamecenter.entity -data class InnerMetaInfoEntity(var link: String? = "", - var type: String? = "", - var text: String? = "") \ No newline at end of file +data class InnerMetaInfoEntity( + var link: String? = "", + var type: String? = "", + var text: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/LibaoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/LibaoEntity.kt index 73d4677ed2..31240d03b3 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/LibaoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/LibaoEntity.kt @@ -9,35 +9,35 @@ import kotlinx.parcelize.Parcelize */ @Parcelize data class LibaoEntity( - @SerializedName(value = "_id", alternate = arrayOf("libao_id")) - var id: String? = null, - var content: String? = null, - var game: SimpleGame? = null, - private var icon: String? = null, - var name: String? = null, - var des: String? = null, //使用说明 - var platform: String? = null, - @SerializedName("type", alternate = ["status"]) - var status: String? = null, - var beforeStatus: String? = null, - var code: String? = null, - var available: Int = 0, - var total: Int = 0, - @SerializedName("package") - var packageName: String? = null, - @SerializedName("active") - var isActive: Boolean = false, // 存号箱数据是否被删除(true:没被删除(可以作为存号箱列表标识), false:删除(不会显示在列表)) - var time: Long = 0, - var repeat: Int = 0, // 剩余可领取数量 - @SerializedName("me") - var me: MeEntity? = null, - var universal: Boolean = false,//是否是通用码,true/false - var expires: Int = 0,//过期时间 - @SerializedName("libao_active") - var libaoActive: Boolean = false,//后台礼包是否被隐藏 + @SerializedName(value = "_id", alternate = arrayOf("libao_id")) + var id: String? = null, + var content: String? = null, + var game: SimpleGame? = null, + private var icon: String? = null, + var name: String? = null, + var des: String? = null, //使用说明 + var platform: String? = null, + @SerializedName("type", alternate = ["status"]) + var status: String? = null, + var beforeStatus: String? = null, + var code: String? = null, + var available: Int = 0, + var total: Int = 0, + @SerializedName("package") + var packageName: String? = null, + @SerializedName("active") + var isActive: Boolean = false, // 存号箱数据是否被删除(true:没被删除(可以作为存号箱列表标识), false:删除(不会显示在列表)) + var time: Long = 0, + var repeat: Int = 0, // 剩余可领取数量 + @SerializedName("me") + var me: MeEntity? = null, + var universal: Boolean = false,//是否是通用码,true/false + var expires: Int = 0,//过期时间 + @SerializedName("libao_active") + var libaoActive: Boolean = false,//后台礼包是否被隐藏 - //本地字段 - var clickReceiveBtnIn: Boolean = false//是否是点击列表领取按钮进入 + //本地字段 + var clickReceiveBtnIn: Boolean = false//是否是点击列表领取按钮进入 ) : Parcelable { fun getIcon(): String { diff --git a/app/src/main/java/com/gh/gamecenter/entity/LocalVideoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/LocalVideoEntity.kt index 62573975a8..1363603b39 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/LocalVideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/LocalVideoEntity.kt @@ -6,11 +6,11 @@ import kotlinx.parcelize.Parcelize @Parcelize data class LocalVideoEntity( - var id: String = "", - var filePath: String = "", - var poster: String = "", - var contentUri: Uri? = null, - var duration: Long = 0, - var format: String = "", - var size: Long = 0 + var id: String = "", + var filePath: String = "", + var poster: String = "", + var contentUri: Uri? = null, + var duration: Long = 0, + var format: String = "", + var size: Long = 0 ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt index 729b350178..7b6f04185a 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MeEntity.kt @@ -12,190 +12,203 @@ import kotlinx.parcelize.Parcelize * Created by khy on 11/12/17. */ @Parcelize -class MeEntity(@SerializedName("is_community_voted") - var isCommunityVoted: Boolean = false, +class MeEntity( + @SerializedName("is_community_voted") + var isCommunityVoted: Boolean = false, - @SerializedName("is_user_invite") - var isUserInvite: Boolean = false, + @SerializedName("is_user_invite") + var isUserInvite: Boolean = false, - @SyncPage(syncNames = [SyncFieldConstants.ANSWER_VOTE]) - @SerializedName("is_answer_voted") - var isAnswerVoted: Boolean = false, + @SyncPage(syncNames = [SyncFieldConstants.ANSWER_VOTE]) + @SerializedName("is_answer_voted") + var isAnswerVoted: Boolean = false, - @SerializedName("is_answer_opposed") - var isAnswerOpposed: Boolean = false, // 是否已经踩过回答 + @SerializedName("is_answer_opposed") + var isAnswerOpposed: Boolean = false, // 是否已经踩过回答 - @SerializedName(value = "is_answer_own", alternate = ["is_community_article_own", "is_question_own", "is_video_own", "is_game_list_own"]) - var isContentOwner: Boolean = false, // 是否是当前内容(回答/社区文章/问题/视频/游戏单)的拥有者 + @SerializedName( + value = "is_answer_own", + alternate = ["is_community_article_own", "is_question_own", "is_video_own", "is_game_list_own"] + ) + var isContentOwner: Boolean = false, // 是否是当前内容(回答/社区文章/问题/视频/游戏单)的拥有者 - @SerializedName("is_answer_favorite") - var isAnswerFavorite: Boolean = false, + @SerializedName("is_answer_favorite") + var isAnswerFavorite: Boolean = false, - @SerializedName("has_draft") - var hasDraft: Boolean = false, + @SerializedName("has_draft") + var hasDraft: Boolean = false, - @SerializedName("is_question_followed") - var isQuestionFollowed: Boolean = false, + @SerializedName("is_question_followed") + var isQuestionFollowed: Boolean = false, - @SerializedName("answer_id") - var myAnswerId: String? = null, // 有自身发的评论Id + @SerializedName("answer_id") + var myAnswerId: String? = null, // 有自身发的评论Id - @SerializedName("is_part_time") - var isPartTime: Boolean = false, + @SerializedName("is_part_time") + var isPartTime: Boolean = false, - @SerializedName("is_game_concerned") - var isGameConcerned: Boolean = false, + @SerializedName("is_game_concerned") + var isGameConcerned: Boolean = false, - @SerializedName("is_game_related_concerned") - var isGameRelatedConcerned: Boolean = false, // 关联关注 + @SerializedName("is_game_related_concerned") + var isGameRelatedConcerned: Boolean = false, // 关联关注 - @SerializedName("is_article_favorite") - var isArticleFavorite: Boolean = false, + @SerializedName("is_article_favorite") + var isArticleFavorite: Boolean = false, - @SerializedName("is_question_favorite") - var isQuestionFavorite: Boolean = false, + @SerializedName("is_question_favorite") + var isQuestionFavorite: Boolean = false, - @SerializedName("is_toolkit_favorite") - var isToolkitFavorite: Boolean = false, + @SerializedName("is_toolkit_favorite") + var isToolkitFavorite: Boolean = false, - @SerializedName("is_comment_own", alternate = ["is_answer_commented", "is_community_article_commented", "is_video_commented", "is_question_commented"]) - var isCommentOwner: Boolean = false, // 是否是当前评论的拥有者 + @SerializedName( + "is_comment_own", + alternate = ["is_answer_commented", "is_community_article_commented", "is_video_commented", "is_question_commented"] + ) + var isCommentOwner: Boolean = false, // 是否是当前评论的拥有者 - @SyncPage(syncNames = [SyncFieldConstants.ARTICLE_COMMENT_VOTE]) - @SerializedName("is_comment_voted", alternate = ["is_answer_comment_voted", "is_video_comment_voted", "is_community_article_comment_voted", "is_question_comment_voted", "is_game_list_voted"]) - var isCommentVoted: Boolean = false, // 是否已经点赞过当前评论 + @SyncPage(syncNames = [SyncFieldConstants.ARTICLE_COMMENT_VOTE]) + @SerializedName( + "is_comment_voted", + alternate = ["is_answer_comment_voted", "is_video_comment_voted", "is_community_article_comment_voted", "is_question_comment_voted", "is_game_list_voted"] + ) + var isCommentVoted: Boolean = false, // 是否已经点赞过当前评论 - @SerializedName("is_version_requested") - var isVersionRequested: Boolean = false, + @SerializedName("is_version_requested") + var isVersionRequested: Boolean = false, - @SyncPage(syncNames = [SyncFieldConstants.IS_FOLLOWER]) - @SerializedName("is_follower", alternate = ["is_follow"]) - var isFollower: Boolean = false, // 是否已经关注该用户 + @SyncPage(syncNames = [SyncFieldConstants.IS_FOLLOWER]) + @SerializedName("is_follower", alternate = ["is_follow"]) + var isFollower: Boolean = false, // 是否已经关注该用户 - @SerializedName("is_favorite", alternate = ["favorite"]) - var isFavorite: Boolean = false, + @SerializedName("is_favorite", alternate = ["favorite"]) + var isFavorite: Boolean = false, - @SyncPage(syncNames = [SyncFieldConstants.ARTICLE_VOTE]) - @SerializedName("is_vote") - var isCommunityArticleVote: Boolean = false, + @SyncPage(syncNames = [SyncFieldConstants.ARTICLE_VOTE]) + @SerializedName("is_vote") + var isCommunityArticleVote: Boolean = false, - @SerializedName("is_oppose") - var isCommunityArticleOppose: Boolean = false, + @SerializedName("is_oppose") + var isCommunityArticleOppose: Boolean = false, - @SyncPage(syncNames = [SyncFieldConstants.GAME_COLLECTION_VOTE]) - @SerializedName("is_voted", alternate = ["vote"]) - var isVoted: Boolean = false, + @SyncPage(syncNames = [SyncFieldConstants.GAME_COLLECTION_VOTE]) + @SerializedName("is_voted", alternate = ["vote"]) + var isVoted: Boolean = false, - @SerializedName("is_commented") - var isCommented: Boolean = false, + @SerializedName("is_commented") + var isCommented: Boolean = false, - @SerializedName("libao") - var userDataLibaoList: List? = null, + @SerializedName("libao") + var userDataLibaoList: List? = null, - @SerializedName("is_video_favorite") - var isVideoFavorite: Boolean = false, + @SerializedName("is_video_favorite") + var isVideoFavorite: Boolean = false, - @SerializedName("is_moderator") - val isModerator: Boolean = false, + @SerializedName("is_moderator") + val isModerator: Boolean = false, - @SerializedName("is_appointment") - var isGameReserved: Boolean = false, // 是否已预约了游戏 + @SerializedName("is_appointment") + var isGameReserved: Boolean = false, // 是否已预约了游戏 - @SerializedName("is_smart_invite") - var isSmartInvited: Boolean = false, // 是否在具体问题详情页面点了智能邀请按钮 + @SerializedName("is_smart_invite") + var isSmartInvited: Boolean = false, // 是否在具体问题详情页面点了智能邀请按钮 - @SerializedName("permissions") - val moderatorPermissions: Permissions = Permissions(), + @SerializedName("permissions") + val moderatorPermissions: Permissions = Permissions(), - @SerializedName("is_answer_author", alternate = ["is_community_article_author", "is_question_author", "is_video_author"]) - val isContentAuthor: Boolean = false, //用于判断当前登录用户是否是此评论关联的回答/文章/问题/视频的作者 + @SerializedName( + "is_answer_author", + alternate = ["is_community_article_author", "is_question_author", "is_video_author"] + ) + val isContentAuthor: Boolean = false, //用于判断当前登录用户是否是此评论关联的回答/文章/问题/视频的作者 - @SerializedName("article_draft") - var articleDraft: ArticleDraftEntity? = null,//帖子详情可能返回草稿 + @SerializedName("article_draft") + var articleDraft: ArticleDraftEntity? = null,//帖子详情可能返回草稿 - @SerializedName("question_draft") - var questionDraft: QuestionDraftEntity? = null,//问题详情可能返回草稿 + @SerializedName("question_draft") + var questionDraft: QuestionDraftEntity? = null,//问题详情可能返回草稿 - @SerializedName("is_follow_bbs") - var isFollowForum: Boolean = false, + @SerializedName("is_follow_bbs") + var isFollowForum: Boolean = false, - @SerializedName("request_version_apk_uploaded") - var requestsVersionApkUploaded: Boolean = false, + @SerializedName("request_version_apk_uploaded") + var requestsVersionApkUploaded: Boolean = false, ) : Parcelable @Parcelize data class Permissions( - // -1 为无权限,0 为初级权限,1 为高级权限 + // -1 为无权限,0 为初级权限,1 为高级权限 - // 回答相关 - @SerializedName("choiceness-answer") - var highlightAnswer: Int = GUEST, // 将回答加入精选列表 + // 回答相关 + @SerializedName("choiceness-answer") + var highlightAnswer: Int = GUEST, // 将回答加入精选列表 - @SerializedName("fold-answer") - var foldAnswer: Int = GUEST, // 折叠回答 + @SerializedName("fold-answer") + var foldAnswer: Int = GUEST, // 折叠回答 - @SerializedName("hide-answer") - var hideAnswer: Int = GUEST, // 隐藏回答 + @SerializedName("hide-answer") + var hideAnswer: Int = GUEST, // 隐藏回答 - @SerializedName("top-answer-comment") - var topAnswerComment: Int = GUEST, // 置顶回答的评论 + @SerializedName("top-answer-comment") + var topAnswerComment: Int = GUEST, // 置顶回答的评论 - @SerializedName("hide-answer-comment") - var hideAnswerComment: Int = GUEST, // 隐藏回答的评论 + @SerializedName("hide-answer-comment") + var hideAnswerComment: Int = GUEST, // 隐藏回答的评论 - @SerializedName("cancel-choiceness-answer") - var cancelChoicenessAnswer: Int = GUEST, //取消回答精选权限 + @SerializedName("cancel-choiceness-answer") + var cancelChoicenessAnswer: Int = GUEST, //取消回答精选权限 - // 问题相关 - @SerializedName("update-question-tag") - var updateQuestionTag: Int = GUEST, // 修改问题标签:只修改标签 + // 问题相关 + @SerializedName("update-question-tag") + var updateQuestionTag: Int = GUEST, // 修改问题标签:只修改标签 - @SerializedName("update-question") - var updateQuestion: Int = GUEST, // 修改问题:除标签以外的字段 + @SerializedName("update-question") + var updateQuestion: Int = GUEST, // 修改问题:除标签以外的字段 - @SerializedName("hide-question") - var hideQuestion: Int = GUEST, // 隐藏问题 + @SerializedName("hide-question") + var hideQuestion: Int = GUEST, // 隐藏问题 - @SerializedName("get-modified-versions") - var getModifiedVersions: Int = GUEST, // 查看问题的修改历史 + @SerializedName("get-modified-versions") + var getModifiedVersions: Int = GUEST, // 查看问题的修改历史 - @SerializedName("update-question-activity-tag") - var updateQuestionActivityTag: Int = GUEST, // 修改问题活动标签 + @SerializedName("update-question-activity-tag") + var updateQuestionActivityTag: Int = GUEST, // 修改问题活动标签 - // 文章相关 - @SerializedName("update-community-article") - var updateCommunityArticle: Int = GUEST, // 修改文章 + // 文章相关 + @SerializedName("update-community-article") + var updateCommunityArticle: Int = GUEST, // 修改文章 - @SerializedName("choiceness-community-article") - var highlightCommunityArticle: Int = GUEST, // 加精文章 + @SerializedName("choiceness-community-article") + var highlightCommunityArticle: Int = GUEST, // 加精文章 - @SerializedName("hide-community-article") - var hideCommunityArticle: Int = GUEST, // 隐藏文章 + @SerializedName("hide-community-article") + var hideCommunityArticle: Int = GUEST, // 隐藏文章 - @SerializedName("top-community-article-comment") - var topCommunityArticleComment: Int = GUEST, // 置顶文章评论 + @SerializedName("top-community-article-comment") + var topCommunityArticleComment: Int = GUEST, // 置顶文章评论 - @SerializedName("hide-community-article-comment") - var hideCommunityArticleComment: Int = GUEST, // 隐藏文章评论 + @SerializedName("hide-community-article-comment") + var hideCommunityArticleComment: Int = GUEST, // 隐藏文章评论 - @SerializedName("cancel-choiceness-community-article") - var cancelHighlightCommunityArticle: Int = GUEST, // 取消精选 + @SerializedName("cancel-choiceness-community-article") + var cancelHighlightCommunityArticle: Int = GUEST, // 取消精选 - @SerializedName("update-community-article-activity-tag") - var updateArticleActivityTag: Int = GUEST, // 修改文章活动标签 + @SerializedName("update-community-article-activity-tag") + var updateArticleActivityTag: Int = GUEST, // 修改文章活动标签 - //视频相关 - @SerializedName("choiceness-video") - var highlightVideo: Int = GUEST, // 加精视频帖 + //视频相关 + @SerializedName("choiceness-video") + var highlightVideo: Int = GUEST, // 加精视频帖 - @SerializedName("cancel-choiceness-video") - var cancelHighlightVideo: Int = GUEST, // 取消加精视频帖 + @SerializedName("cancel-choiceness-video") + var cancelHighlightVideo: Int = GUEST, // 取消加精视频帖 - @SerializedName("hide-video") - var hideVideo: Int = GUEST, //隐藏视频帖 + @SerializedName("hide-video") + var hideVideo: Int = GUEST, //隐藏视频帖 - @SerializedName("update-video-activity-tag") - var updateVideoActivityTag: Int = GUEST // 修改视频活动标签 + @SerializedName("update-video-activity-tag") + var updateVideoActivityTag: Int = GUEST // 修改视频活动标签 ) : Parcelable { companion object { // -1 为无权限,0 为初级权限,1 为高级权限 diff --git a/app/src/main/java/com/gh/gamecenter/entity/MenuItemEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MenuItemEntity.kt index 669f0d65a0..05decbdac0 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MenuItemEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MenuItemEntity.kt @@ -5,8 +5,8 @@ import kotlinx.parcelize.Parcelize @Parcelize data class MenuItemEntity( - val text: String = "", - val normalIcon: Int = 0, - val disableIcon: Int = 0, - val isEnable:Boolean = true -): Parcelable \ No newline at end of file + val text: String = "", + val normalIcon: Int = 0, + val disableIcon: Int = 0, + val isEnable: Boolean = true +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt b/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt index f7eb1ef1bb..461cdc288f 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt @@ -1,4 +1,6 @@ package com.gh.gamecenter.entity -data class MessageFold(val time: Long = 0, - var user: UserEntity = UserEntity()) \ No newline at end of file +data class MessageFold( + val time: Long = 0, + var user: UserEntity = UserEntity() +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt index b9e836855b..9e92f1046b 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt @@ -24,10 +24,10 @@ class MessageKeFuEntity { var suggestion: String? = null - var links : List? = null + var links: List? = null @SerializedName("new_links") - var newLinks : List? = null + var newLinks: List? = null var images: List? = null @@ -40,6 +40,7 @@ class MessageKeFuEntity { class ServiceEntity { var name: String? = null var icon: String? = null + @SerializedName("_id") var id: String? = null var auth: Auth? = null diff --git a/app/src/main/java/com/gh/gamecenter/entity/PackageDialogEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PackageDialogEntity.kt index c5a4b026f2..7825874c45 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PackageDialogEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PackageDialogEntity.kt @@ -7,22 +7,22 @@ import kotlinx.parcelize.Parcelize @Parcelize data class PackageDialogEntity( - @SerializedName("_id") - val id: String = "", - val title: String = "", - val content: String = "", - @SerializedName("detection_objects") - val detectionObjects: ArrayList = arrayListOf(), - @SerializedName("link_hint_text") - val linkHintText: String = "", - val links: ArrayList = arrayListOf(), - val level: String = "HINT_SKIP"// 弹窗级别,HINT_SKIP(提示且跳转)、ALWAYS_HINT(仅提示(每次提示))、OPTIONAL_HINT(仅提示(可不再提示))、OPTIONAL_CURRENT_HINT(仅提示(可关闭当前游戏的弹窗) + @SerializedName("_id") + val id: String = "", + val title: String = "", + val content: String = "", + @SerializedName("detection_objects") + val detectionObjects: ArrayList = arrayListOf(), + @SerializedName("link_hint_text") + val linkHintText: String = "", + val links: ArrayList = arrayListOf(), + val level: String = "HINT_SKIP"// 弹窗级别,HINT_SKIP(提示且跳转)、ALWAYS_HINT(仅提示(每次提示))、OPTIONAL_HINT(仅提示(可不再提示))、OPTIONAL_CURRENT_HINT(仅提示(可关闭当前游戏的弹窗) ) : Parcelable @Parcelize data class DetectionObjectEntity( - val text: String = "", - val packages: ArrayList = arrayListOf(), - @SerializedName("assign_download") - var assignDownload: ArrayList = arrayListOf() + val text: String = "", + val packages: ArrayList = arrayListOf(), + @SerializedName("assign_download") + var assignDownload: ArrayList = arrayListOf() ) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/PersonalHistoryEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PersonalHistoryEntity.kt index 86f8ec0586..bfcc350545 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PersonalHistoryEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PersonalHistoryEntity.kt @@ -62,17 +62,19 @@ data class PersonalHistoryEntity( @Parcelize data class Question( - @SerializedName("_id") - val id: String = "", - var title: String = "") : Parcelable + @SerializedName("_id") + val id: String = "", + var title: String = "" + ) : Parcelable @Parcelize data class Count( - @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COMMENT_COUNT, SyncFieldConstants.ARTICLE_COMMENT_COUNT]) - var comment: Int = 0, - @SyncPage(syncNames = [SyncFieldConstants.ANSWER_VOTE_COUNT, SyncFieldConstants.ARTICLE_VOTE_COUNT]) - var vote: Int = 0, - var reply: Int = 0) : Parcelable { + @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COMMENT_COUNT, SyncFieldConstants.ARTICLE_COMMENT_COUNT]) + var comment: Int = 0, + @SyncPage(syncNames = [SyncFieldConstants.ANSWER_VOTE_COUNT, SyncFieldConstants.ARTICLE_VOTE_COUNT]) + var vote: Int = 0, + var reply: Int = 0 + ) : Parcelable { @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COUNT]) var answer: Int = 0 @@ -108,34 +110,35 @@ data class PersonalHistoryEntity( @Parcelize data class Comment( - @SerializedName("_id") - val id: String = "", - var star: Int = 0, - var content: String = "", - val game: Game = Game()) : Parcelable + @SerializedName("_id") + val id: String = "", + var star: Int = 0, + var content: String = "", + val game: Game = Game() + ) : Parcelable @Parcelize data class Game( - @SerializedName("_id") - val id: String = "", - @SerializedName("name") - private var mName: String = "", - @SerializedName("name_suffix") - val nameSuffix: String = "", + @SerializedName("_id") + val id: String = "", + @SerializedName("name") + private var mName: String = "", + @SerializedName("name_suffix") + val nameSuffix: String = "", - val icon: String = "", - @SerializedName(value = "new_tag_style") - val tag: ArrayList = ArrayList(), - val star: Float = 0F, - val active: Boolean = true, //游戏是否被隐藏 false被隐藏 + val icon: String = "", + @SerializedName(value = "new_tag_style") + val tag: ArrayList = ArrayList(), + val star: Float = 0F, + val active: Boolean = true, //游戏是否被隐藏 false被隐藏 - @SerializedName("ori_icon") - var rawIcon: String? = null, - @SerializedName("icon_subscript") - var iconSubscript: String? = null, + @SerializedName("ori_icon") + var rawIcon: String? = null, + @SerializedName("icon_subscript") + var iconSubscript: String? = null, - @SerializedName("played_time") - val playedTime: Long = 0 + @SerializedName("played_time") + val playedTime: Long = 0 ) : Parcelable { @IgnoredOnParcel var name: String diff --git a/app/src/main/java/com/gh/gamecenter/entity/PrivacyPolicyEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PrivacyPolicyEntity.kt index b47bdfe705..b33cfa2ccf 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PrivacyPolicyEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PrivacyPolicyEntity.kt @@ -4,12 +4,13 @@ import com.gh.gamecenter.R import com.google.gson.annotations.SerializedName data class PrivacyPolicyEntity( - var title: String = "", - @SerializedName("top_content") - var topContent: String = "", - @SerializedName("bottom_content") - var bottomContent: String = "", - var permissions: List = arrayListOf()) { + var title: String = "", + @SerializedName("top_content") + var topContent: String = "", + @SerializedName("bottom_content") + var bottomContent: String = "", + var permissions: List = arrayListOf() +) { companion object { @JvmStatic @@ -17,16 +18,23 @@ data class PrivacyPolicyEntity( val data = PrivacyPolicyEntity() data.title = "欢迎来到光环助手" data.topContent = "为提供完整的功能与稳定的服务,光环助手将向你申请开启以下权限:" - data.bottomContent = "点击查看权限应用场景,你可以在系统设置中关闭授权,但可能会影响部分功能的正常使用" + data.bottomContent = + "点击查看权限应用场景,你可以在系统设置中关闭授权,但可能会影响部分功能的正常使用" val permissions = arrayListOf() - permissions.add(PermissionsEntity( + permissions.add( + PermissionsEntity( icon = "res:///" + R.drawable.permission_storage, name = "存储权限", - intro = "用于下载游戏,以及实现内容缓存提升浏览体验")) - permissions.add(PermissionsEntity( + intro = "用于下载游戏,以及实现内容缓存提升浏览体验" + ) + ) + permissions.add( + PermissionsEntity( icon = "res:///" + R.drawable.permission_phone_state, name = "设备信息", - intro = "为保障您的账号安全及使用软件与服务可安全运行")) + intro = "为保障您的账号安全及使用软件与服务可安全运行" + ) + ) // permissions.add(PermissionsEntity( // icon = "res:///" + R.drawable.permission_sdk, // name = "第三方SDK使用信息提醒", @@ -38,6 +46,7 @@ data class PrivacyPolicyEntity( } data class PermissionsEntity( - val icon: String = "", - val name: String = "", - val intro: String = "") \ No newline at end of file + val icon: String = "", + val name: String = "", + val intro: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt index 5084ff87c6..fbc910329f 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt @@ -3,25 +3,27 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class PushEntity( - @SerializedName("display_type") - var displayType: String = "", - @SerializedName("msg_id") - var msgId: String = "", - var body: Body? = null, - @SerializedName("random_min") - var randomMin: Int = 0) { + @SerializedName("display_type") + var displayType: String = "", + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int = 0 +) { data class Body( - @SerializedName("after_open") - var afterOpen: String = "", - @SerializedName("play_lights") - var playLights: String = "", - var ticker: String = "", - @SerializedName("play_vibrate") - var playVibrate: String = "", - var custom: String = "", - var text: String = "", - var title: String = "", - @SerializedName("play_sound") - var playSound: String = "") + @SerializedName("after_open") + var afterOpen: String = "", + @SerializedName("play_lights") + var playLights: String = "", + var ticker: String = "", + @SerializedName("play_vibrate") + var playVibrate: String = "", + var custom: String = "", + var text: String = "", + var title: String = "", + @SerializedName("play_sound") + var playSound: String = "" + ) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt index 734b87ab89..cf9f2043a5 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt @@ -3,28 +3,30 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class PushMessageEntity( - @SerializedName("display_type") - var displayType: String = "", - var extra: Extra? = null, - @SerializedName("msg_id") - var msgId: String = "", - var body: Body? = null, - @SerializedName("random_min") - var randomMin: Int = 0) { + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int = 0 +) { data class Body( - @SerializedName("after_open") - var afterOpen: String = "", - @SerializedName("play_lights") - var playLights: String = "", - var ticker: String = "", - @SerializedName("play_vibrate") - var playVibrate: String = "", - var custom: String = "", - var text: String = "", - var title: String = "", - @SerializedName("play_sound") - var playSound: String = "") + @SerializedName("after_open") + var afterOpen: String = "", + @SerializedName("play_lights") + var playLights: String = "", + var ticker: String = "", + @SerializedName("play_vibrate") + var playVibrate: String = "", + var custom: String = "", + var text: String = "", + var title: String = "", + @SerializedName("play_sound") + var playSound: String = "" + ) data class Extra(var data: MessageEntity? = null) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt index 38f16db33b..999328d4a0 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt @@ -3,28 +3,30 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class PushMessageUnreadEntity( - @SerializedName("display_type") - var displayType: String = "", - var extra: Extra? = null, - @SerializedName("msg_id") - var msgId: String = "", - var body: Body? = null, - @SerializedName("random_min") - var randomMin: Int = 0) { + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int = 0 +) { data class Body( - @SerializedName("after_open") - var afterOpen: String = "", - @SerializedName("play_lights") - var playLights: String = "", - var ticker: String = "", - @SerializedName("play_vibrate") - var playVibrate: String = "", - var custom: String = "", - var text: String = "", - var title: String = "", - @SerializedName("play_sound") - var playSound: String = "") + @SerializedName("after_open") + var afterOpen: String = "", + @SerializedName("play_lights") + var playLights: String = "", + var ticker: String = "", + @SerializedName("play_vibrate") + var playVibrate: String = "", + var custom: String = "", + var text: String = "", + var title: String = "", + @SerializedName("play_sound") + var playSound: String = "" + ) data class Extra(var data: MessageUnreadEntity? = null) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt index 37c1073dc7..6aea197b3a 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt @@ -5,43 +5,47 @@ import com.google.gson.annotations.SerializedName // 相关文档可见 https://gitlab.ghzs.com/halo/halo-api/wikis/push#%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81 data class PushNotificationEntity( - @SerializedName("display_type") - var displayType: String = "", - var extra: Extra? = null, - @SerializedName("msg_id") - var msgId: String = "", - var body: Body? = null, - @SerializedName("random_min") - var randomMin: Int? = 0) { + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int? = 0 +) { data class Body( - @SerializedName("after_open") - var afterOpen: String? = "", - @SerializedName("play_lights") - var playLights: String? = "", - var ticker: String? = "", - @SerializedName("play_vibrate") - var playVibrate: String? = "", - var custom: String? = "", - var text: String? = "", - var title: String? = "", - @SerializedName("play_sound") - var playSound: String? = "") + @SerializedName("after_open") + var afterOpen: String? = "", + @SerializedName("play_lights") + var playLights: String? = "", + var ticker: String? = "", + @SerializedName("play_vibrate") + var playVibrate: String? = "", + var custom: String? = "", + var text: String? = "", + var title: String? = "", + @SerializedName("play_sound") + var playSound: String? = "" + ) data class Extra(var data: Data? = null) data class Data( - @SerializedName("push_id") - var pushId: String? = "", - var condition: Condition? = null, - @SerializedName("message_id") - var messageId: String? = "", - var link: LinkEntity? = null) { + @SerializedName("push_id") + var pushId: String? = "", + var condition: Condition? = null, + @SerializedName("message_id") + var messageId: String? = "", + var link: LinkEntity? = null + ) { data class Condition( - @SerializedName("package") - var packageName: String = "", - var ghzs: Ghzs? = null) + @SerializedName("package") + var packageName: String = "", + var ghzs: Ghzs? = null + ) data class Ghzs(var channel: String? = "", var version: String? = "") } diff --git a/app/src/main/java/com/gh/gamecenter/entity/QuoteCountEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/QuoteCountEntity.kt index a7a44d0413..e6f4d89789 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/QuoteCountEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/QuoteCountEntity.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.entity data class QuoteCountEntity( - var textCount: Int = 0, - var imageCount: Int = 0, - var articleCount: Int = 0, - var answerCount: Int = 0, - var videoCount: Int = 0, - var gameCount: Int = 0 + var textCount: Int = 0, + var imageCount: Int = 0, + var articleCount: Int = 0, + var answerCount: Int = 0, + var videoCount: Int = 0, + var gameCount: Int = 0 ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/Rating.kt b/app/src/main/java/com/gh/gamecenter/entity/Rating.kt index 484d0cb25d..cd928e93fd 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/Rating.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/Rating.kt @@ -2,31 +2,34 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -class Rating(val star: Star = Star(), - val device: String = "", - val me: MeEntity = MeEntity(), - var isExistComment: Boolean = true, - @SerializedName("service_comment") - var serviceComment: RatingComment? = null, - @SerializedName("comment") - var myComment: RatingComment? = null, - @SerializedName("comment_count") - var commentCount: Int = 0, - @SerializedName("ignore_comment") - var ignoreComment: Boolean = false, - @SerializedName("comment_description") - var commentDescription: String = "", - @SerializedName("fold_count") - var foldCount: Int = 0//折叠评论数量 +class Rating( + val star: Star = Star(), + val device: String = "", + val me: MeEntity = MeEntity(), + var isExistComment: Boolean = true, + @SerializedName("service_comment") + var serviceComment: RatingComment? = null, + @SerializedName("comment") + var myComment: RatingComment? = null, + @SerializedName("comment_count") + var commentCount: Int = 0, + @SerializedName("ignore_comment") + var ignoreComment: Boolean = false, + @SerializedName("comment_description") + var commentDescription: String = "", + @SerializedName("fold_count") + var foldCount: Int = 0//折叠评论数量 ) -class Star(var average: Float = 0F, - val hits: Int = 0, - val total: Int = 0, - val one: Int = 0, - val two: Int = 0, - val three: Int = 0, - val four: Int = 0, - val five: Int = 0) +class Star( + var average: Float = 0F, + val hits: Int = 0, + val total: Int = 0, + val one: Int = 0, + val two: Int = 0, + val three: Int = 0, + val four: Int = 0, + val five: Int = 0 +) diff --git a/app/src/main/java/com/gh/gamecenter/entity/RecommendPopupEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/RecommendPopupEntity.kt index 89be52c8f3..62a95955c4 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/RecommendPopupEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/RecommendPopupEntity.kt @@ -4,28 +4,28 @@ import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName data class RecommendPopupEntity( - @SerializedName("_id") - val id: String = "", - val notice: RecommendNotice = RecommendNotice(), - @SerializedName("package") - val recommendPackage: RecommendPackage, - @SerializedName("popup") - val popupDetail: PopupDetail = PopupDetail() + @SerializedName("_id") + val id: String = "", + val notice: RecommendNotice = RecommendNotice(), + @SerializedName("package") + val recommendPackage: RecommendPackage, + @SerializedName("popup") + val popupDetail: PopupDetail = PopupDetail() ) data class RecommendNotice( - val plan: String = "",// 通知的方案, 一次once, 累计次数count, 每周一次weekly, 每天一次daily, 每次always - val times: Int = 0// 累计约定的次数 + val plan: String = "",// 通知的方案, 一次once, 累计次数count, 每周一次weekly, 每天一次daily, 每次always + val times: Int = 0// 累计约定的次数 ) data class RecommendPackage( - @SerializedName("download_type") - private val downloadType: ArrayList = arrayListOf(), // 下载类型, 下载download, 更新upgrade, 插件化to_plugin - @SerializedName("min_size") - val minSize: Long = 0,// 安装包最小值 - @SerializedName("name_rule") - val nameRule: String = "",//包名限制规则, 全部all, 安装的installed, 未安装uninstalled - val details: ArrayList = arrayListOf()//安装或者未安装的明细包名 + @SerializedName("download_type") + private val downloadType: ArrayList = arrayListOf(), // 下载类型, 下载download, 更新upgrade, 插件化to_plugin + @SerializedName("min_size") + val minSize: Long = 0,// 安装包最小值 + @SerializedName("name_rule") + val nameRule: String = "",//包名限制规则, 全部all, 安装的installed, 未安装uninstalled + val details: ArrayList = arrayListOf()//安装或者未安装的明细包名 ) { fun getDownloadType(): List { return downloadType.map { @@ -41,15 +41,15 @@ data class RecommendPackage( } data class PopupDetail( - val duration: Long = 0, - val text: String = "", - val images: ArrayList = arrayListOf(), - @SerializedName("jump") - val link: LinkEntity? = null + val duration: Long = 0, + val text: String = "", + val images: ArrayList = arrayListOf(), + @SerializedName("jump") + val link: LinkEntity? = null ) data class RecommendRecord( - var popupId: String = "", - var showTime: Long = 0L, - var count: Int = 0 + var popupId: String = "", + var showTime: Long = 0L, + var count: Int = 0 ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ServerEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ServerEntity.kt index 4d5ae0829b..bbbb7ea0f8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ServerEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ServerEntity.kt @@ -29,7 +29,8 @@ class ServerEntity : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): ServerEntity { return ServerEntity(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/ServerPublishEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ServerPublishEntity.kt index a5c59dcc32..d778b21a1c 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ServerPublishEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ServerPublishEntity.kt @@ -3,9 +3,9 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName data class ServerPublishEntity( - @SerializedName("prev_server_id") - var prevId: String = "", - @SerializedName("next_server_id") - var nextId: String = "", - var data: List = listOf() + @SerializedName("prev_server_id") + var prevId: String = "", + @SerializedName("next_server_id") + var nextId: String = "", + var data: List = listOf() ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ServerTestEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ServerTestEntity.kt index 2b7e1fa7bc..5984c37b9f 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ServerTestEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ServerTestEntity.kt @@ -3,35 +3,39 @@ package com.gh.gamecenter.entity import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName -data class ServerTestEntity(val settings: Settings, - var remark: String = "", - @SerializedName("data") - val sliceData: ArrayList = arrayListOf()) { +data class ServerTestEntity( + val settings: Settings, + var remark: String = "", + @SerializedName("data") + val sliceData: ArrayList = arrayListOf() +) { data class Settings( - @SerializedName("index_show") - val indexShow: String, - @SerializedName("index_right_top") - val indexRightTop: String, - @SerializedName("index_date_format") - val indexDateFormat: String, - @SerializedName("game_info") - val gameInfo: String, - @SerializedName("game_tag") - val gameTag: String, - @SerializedName("ad_game_info") - val adGameInfo: String, - @SerializedName("ad_game_tag") - val adGameTag: String, - @SerializedName("index_show_newest_count") - val indexShowNewestCount: Long = 0, - @SerializedName("index_right_top_link") - val indexRightTopLink: LinkEntity? = null, - @SerializedName("test_time_range") - val testTimeRange: Int = 0) + @SerializedName("index_show") + val indexShow: String, + @SerializedName("index_right_top") + val indexRightTop: String, + @SerializedName("index_date_format") + val indexDateFormat: String, + @SerializedName("game_info") + val gameInfo: String, + @SerializedName("game_tag") + val gameTag: String, + @SerializedName("ad_game_info") + val adGameInfo: String, + @SerializedName("ad_game_tag") + val adGameTag: String, + @SerializedName("index_show_newest_count") + val indexShowNewestCount: Long = 0, + @SerializedName("index_right_top_link") + val indexRightTopLink: LinkEntity? = null, + @SerializedName("test_time_range") + val testTimeRange: Int = 0 + ) data class SliceData( - @SerializedName("start_midnight") - val testTime: Long, - @SerializedName("games") - val gameList: ArrayList = arrayListOf()) + @SerializedName("start_midnight") + val testTime: Long, + @SerializedName("games") + val gameList: ArrayList = arrayListOf() + ) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/ServersGameCategory.kt b/app/src/main/java/com/gh/gamecenter/entity/ServersGameCategory.kt index 91063c0cdc..bd3d280ce7 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ServersGameCategory.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ServersGameCategory.kt @@ -1,4 +1,6 @@ package com.gh.gamecenter.entity -class ServersGameCategory(val name: String, - val label: List) \ No newline at end of file +class ServersGameCategory( + val name: String, + val label: List +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SidebarsEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SidebarsEntity.kt index 1640c73b46..d92bbcf4b3 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SidebarsEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SidebarsEntity.kt @@ -6,23 +6,23 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SidebarsEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - @SerializedName("has_choiceness") - var hasSpecial: Boolean = false, - var sidebars: List = emptyList() -): Parcelable { + @SerializedName("_id") + var id: String = "", + var name: String = "", + @SerializedName("has_choiceness") + var hasSpecial: Boolean = false, + var sidebars: List = emptyList() +) : Parcelable { - @Parcelize - data class SidebarEntity( - var name: String = "", - @SerializedName("link_type") - var type: String = "", // level_two二级分类,level_one一级分类 - @SerializedName("link_category") - var categoryId: String = "", - var recommended: Boolean = false, - @SerializedName("parent_id") - var parentId: String = "" - ): Parcelable + @Parcelize + data class SidebarEntity( + var name: String = "", + @SerializedName("link_type") + var type: String = "", // level_two二级分类,level_one一级分类 + @SerializedName("link_category") + var categoryId: String = "", + var recommended: Boolean = false, + @SerializedName("parent_id") + var parentId: String = "" + ) : Parcelable } diff --git a/app/src/main/java/com/gh/gamecenter/entity/SimpleGameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SimpleGameEntity.kt index 4544cb89b4..01e4272995 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SimpleGameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SimpleGameEntity.kt @@ -6,7 +6,8 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SimpleGameEntity( - @SerializedName("_id") - val id: String = "", - val name: String = "", - val icon: String = "") : Parcelable \ No newline at end of file + @SerializedName("_id") + val id: String = "", + val name: String = "", + val icon: String = "" +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SimpleVideoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SimpleVideoEntity.kt index 80ea5c5172..4e963af6e8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SimpleVideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SimpleVideoEntity.kt @@ -6,9 +6,9 @@ import kotlinx.parcelize.Parcelize @Parcelize class SimpleVideoEntity( - @SerializedName("video_id") - val id: String = "", - val title: String = "", - val poster: String = "", - val url: String = "" + @SerializedName("video_id") + val id: String = "", + val title: String = "", + val poster: String = "", + val url: String = "" ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SimulatorEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SimulatorEntity.kt index 6cdc022c09..2c5a939e47 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SimulatorEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SimulatorEntity.kt @@ -6,14 +6,14 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SimulatorEntity( - @SerializedName("_id") - var id: String = "", - var active: Boolean = false, - var name: String = "", - var type: String = "", - @SerializedName("type_alias") - var typeAlias: String = "", - @SerializedName("file_type") - var fileType: List = listOf(), - var apk: ApkEntity? = null + @SerializedName("_id") + var id: String = "", + var active: Boolean = false, + var name: String = "", + var type: String = "", + @SerializedName("type_alias") + var typeAlias: String = "", + @SerializedName("file_type") + var fileType: List = listOf(), + var apk: ApkEntity? = null ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SimulatorGameRecordEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SimulatorGameRecordEntity.kt index 7505ec67b5..bf62678d94 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SimulatorGameRecordEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SimulatorGameRecordEntity.kt @@ -6,28 +6,28 @@ import com.google.gson.annotations.SerializedName @Entity data class SimulatorGameRecordEntity( - @PrimaryKey - var id: String = "", - var icon: String? = null, - var iconSubscript: String? = null, - var name: String? = null, - var brief: String? = null, - var tag: ArrayList? = null, - var isLibaoExist: Boolean = false, - @SerializedName("tag_style") - var tagStyle: ArrayList = ArrayList(), - var orderTag: Long = 0, - var des: String? = null, - var apk: ArrayList? = null, - @SerializedName("apk_normal") - var apkNormal: ArrayList? = null, - @SerializedName("simulator_type") - var simulatorType: String = "", - var simulator: SimulatorEntity? = null, - var category: String = "", - @SerializedName("is_recently_played") - var isRecentlyPlayed: Boolean = false, - var isDeleted: Boolean = false + @PrimaryKey + var id: String = "", + var icon: String? = null, + var iconSubscript: String? = null, + var name: String? = null, + var brief: String? = null, + var tag: ArrayList? = null, + var isLibaoExist: Boolean = false, + @SerializedName("tag_style") + var tagStyle: ArrayList = ArrayList(), + var orderTag: Long = 0, + var des: String? = null, + var apk: ArrayList? = null, + @SerializedName("apk_normal") + var apkNormal: ArrayList? = null, + @SerializedName("simulator_type") + var simulatorType: String = "", + var simulator: SimulatorEntity? = null, + var category: String = "", + @SerializedName("is_recently_played") + var isRecentlyPlayed: Boolean = false, + var isDeleted: Boolean = false ) { fun convertSimulatorGameRecordEntityToGameEntity(): GameEntity { diff --git a/app/src/main/java/com/gh/gamecenter/entity/SpecialColumnEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SpecialColumnEntity.kt index f4693a4d17..5c246dd0a5 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SpecialColumnEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SpecialColumnEntity.kt @@ -5,7 +5,7 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SpecialColumn( - var type: String? = "", - var name: String? = "", - var tab: String? = "" + var type: String? = "", + var name: String? = "", + var tab: String? = "" ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/StartupAdEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/StartupAdEntity.kt index 3a82eb1c99..401306d15e 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/StartupAdEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/StartupAdEntity.kt @@ -4,9 +4,9 @@ import com.gh.gamecenter.common.entity.LinkEntity import com.google.gson.annotations.SerializedName data class StartupAdEntity( - @SerializedName("_id") - val id: String, - val desc: String, - val button: Boolean, - val jump: LinkEntity + @SerializedName("_id") + val id: String, + val desc: String, + val button: Boolean, + val jump: LinkEntity ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt index 83b7e64840..b94580e874 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt @@ -6,18 +6,18 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SubjectData( - // 入口必填 - var subjectId: String?, - var subjectName: String?, - var isOrder: Boolean?, - // 专题内参数 - var sort: String = "", // Filter:评分/最新/最热/更新 - var filter: String = "", // Filter: 类型(分类) - var tagType: String? = "", // 游戏Item 标签类型 - var briefStyle: String = "", - var showSuffix: Boolean = true, + // 入口必填 + var subjectId: String?, + var subjectName: String?, + var isOrder: Boolean?, + // 专题内参数 + var sort: String = "", // Filter:评分/最新/最热/更新 + var filter: String = "", // Filter: 类型(分类) + var tagType: String? = "", // 游戏Item 标签类型 + var briefStyle: String = "", + var showSuffix: Boolean = true, - var requireUpdateSetting: Boolean = false // 多专题页面需要专题页面自行获取专题配置 + var requireUpdateSetting: Boolean = false // 多专题页面需要专题页面自行获取专题配置 ) : Parcelable, Cloneable { fun deepCopy(): SubjectData { @@ -28,7 +28,7 @@ data class SubjectData( return GameSubjectData( id = subjectId, name = subjectName, - isOrder = isOrder?: false, + isOrder = isOrder ?: false, briefStyle = briefStyle, isShowSuffix = showSuffix, tag = tagType diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectRefreshEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectRefreshEntity.kt index 5cee63c6b8..656b8ce354 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectRefreshEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectRefreshEntity.kt @@ -2,6 +2,8 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -data class SubjectRefreshEntity(@SerializedName("column_id") - val columnId: String = "", - val games: List) \ No newline at end of file +data class SubjectRefreshEntity( + @SerializedName("column_id") + val columnId: String = "", + val games: List +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectSettingEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectSettingEntity.kt index 1176c5e688..0ae1252743 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectSettingEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectSettingEntity.kt @@ -10,40 +10,42 @@ import kotlinx.parcelize.Parcelize @Parcelize data class SubjectSettingEntity( - @SerializedName("type") - var typeEntity: TypeEntity = TypeEntity(), - var tag: String = "", - var filter: String = "", // rows: off/on - var order: Boolean = false, // 是否显示序号 + @SerializedName("type") + var typeEntity: TypeEntity = TypeEntity(), + var tag: String = "", + var filter: String = "", // rows: off/on + var order: Boolean = false, // 是否显示序号 - @SerializedName("show_suffix") - var showSuffix: Boolean = true, - @SerializedName("brief_style") - var briefStyle: String = "", + @SerializedName("show_suffix") + var showSuffix: Boolean = true, + @SerializedName("brief_style") + var briefStyle: String = "", - @SerializedName("filter_sizes") - var filterSizes: ArrayList? = null, + @SerializedName("filter_sizes") + var filterSizes: ArrayList? = null, - @SerializedName("filter_options") - var filterOptions: List = ArrayList() // 过滤选项,推荐、最新、评分、更新 + @SerializedName("filter_options") + var filterOptions: List = ArrayList() // 过滤选项,推荐、最新、评分、更新 ) : Parcelable { @Parcelize data class TypeEntity( - var content: MutableList = ArrayList(), // top/tile - var labels: MutableList = ArrayList(), // rows - var layout: String = "" // top/tile/rows + var content: MutableList = ArrayList(), // top/tile + var labels: MutableList = ArrayList(), // rows + var layout: String = "" // top/tile/rows ) : Parcelable @Parcelize data class LabelEntity( - var name: String = "", - var label: MutableList = ArrayList() + var name: String = "", + var label: MutableList = ArrayList() ) : Parcelable @Parcelize - data class Size(var min: Int? = -1, - var max: Int? = -1, - var text: String? = "全部大小") : Parcelable + data class Size( + var min: Int? = -1, + var max: Int? = -1, + var text: String? = "全部大小" + ) : Parcelable } diff --git a/app/src/main/java/com/gh/gamecenter/entity/TagEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TagEntity.kt index 5def597443..2b3c602048 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TagEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TagEntity.kt @@ -6,9 +6,10 @@ import kotlinx.parcelize.Parcelize @Parcelize data class TagEntity( - @SerializedName("_id") - var id: String? = null, - var name: String? = null, - var icon: String? = null, - var des: String? = null, - var color: String? = null) : Parcelable + @SerializedName("_id") + var id: String? = null, + var name: String? = null, + var icon: String? = null, + var des: String? = null, + var color: String? = null +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt index da97f1c932..1bf9f702a4 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TagStyleEntity.kt @@ -6,15 +6,15 @@ import kotlinx.parcelize.Parcelize @Parcelize class TagStyleEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - @SerializedName("style", alternate = ["type"]) - var style: String = "", - var color: String = "", + @SerializedName("_id") + var id: String = "", + var name: String = "", + @SerializedName("style", alternate = ["type"]) + var style: String = "", + var color: String = "", - // 新样式 - var background: String? = "", - // 首页排行榜专题标签颜色 - var column: String? = "", + // 新样式 + var background: String? = "", + // 首页排行榜专题标签颜色 + var column: String? = "", ) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/TestEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TestEntity.kt index ba2c6d674a..92db120d02 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TestEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TestEntity.kt @@ -13,8 +13,10 @@ class TestEntity : Parcelable { @SerializedName("game_tag") var gameTag: String? = null + @SerializedName("game_info") var gameInfo: String? = null + @SerializedName("start_midnight") val testTime: Long? = null @@ -38,7 +40,8 @@ class TestEntity : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): TestEntity { return TestEntity(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/ThumbnailEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/ThumbnailEntity.kt index 5fae5b7006..ac71d69035 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ThumbnailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ThumbnailEntity.kt @@ -30,7 +30,8 @@ class ThumbnailEntity : Parcelable { companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): ThumbnailEntity { return ThumbnailEntity(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/TipsEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TipsEntity.kt index d27125d42c..961fe91e70 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TipsEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TipsEntity.kt @@ -5,6 +5,7 @@ import kotlinx.parcelize.Parcelize @Parcelize data class TipsEntity( - var icon: String? = null, - var title: TitleEntity? = null, - var content: String? = null) : Parcelable \ No newline at end of file + var icon: String? = null, + var title: TitleEntity? = null, + var content: String? = null +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/TitleEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TitleEntity.kt index 65aebc49ce..faffcc4d1e 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TitleEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TitleEntity.kt @@ -5,5 +5,6 @@ import kotlinx.parcelize.Parcelize @Parcelize data class TitleEntity( - var color: String? = null, - var value: String? = null) : Parcelable + var color: String? = null, + var value: String? = null +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt index a8c8208304..892f14d169 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/TrackableEntity.kt @@ -1,8 +1,10 @@ package com.gh.gamecenter.entity -data class TrackableEntity(val event: String = "", - val key: String = "", - val value: String? = null, - val cancelValue: String? = null, - val keyBackValue: String? = null, - val logShowEvent: Boolean = false) \ No newline at end of file +data class TrackableEntity( + val event: String = "", + val key: String = "", + val value: String? = null, + val cancelValue: String? = null, + val keyBackValue: String? = null, + val logShowEvent: Boolean = false +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/UnifiedGameDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/UnifiedGameDetailEntity.kt index 72c52ea583..0a3d8a4775 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/UnifiedGameDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/UnifiedGameDetailEntity.kt @@ -22,7 +22,8 @@ data class UnifiedGameDetailEntity( var libao: List?, var community: CommunityEntity?, @SerializedName("community_column_contents") - var communityColumnContents: List?) : Parcelable { + var communityColumnContents: List? +) : Parcelable { companion object { const val TAG: String = "UnifiedGameDetailEntity" } diff --git a/app/src/main/java/com/gh/gamecenter/entity/UnifiedUserTrendEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/UnifiedUserTrendEntity.kt index 7e01ff4290..8d7b1c88cf 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/UnifiedUserTrendEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/UnifiedUserTrendEntity.kt @@ -9,4 +9,5 @@ data class UnifiedUserTrendEntity( var toolkit: List?, var libao: List?, @SerializedName("community_column_content") - var communityColumnContents: List?) \ No newline at end of file + var communityColumnContents: List? +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/UserDataLibaoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/UserDataLibaoEntity.kt index f4392ba0cd..d28af83948 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/UserDataLibaoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/UserDataLibaoEntity.kt @@ -45,7 +45,8 @@ class UserDataLibaoEntity : Parcelable { const val TAG = "UserDataLibaoEntity" - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + @JvmField + val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel): UserDataLibaoEntity { return UserDataLibaoEntity(source) } diff --git a/app/src/main/java/com/gh/gamecenter/entity/UserEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/UserEntity.kt index ce3f883871..c971715d6d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/UserEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/UserEntity.kt @@ -10,13 +10,15 @@ import kotlinx.parcelize.Parcelize * Created by khy on 2016/11/8. */ @Parcelize -class UserEntity(var icon: String? = "", - var name: String? = "", - @SerializedName("_id") - // 用于parent的user - var id: String? = "", - var time: Long? = 0, - var auth: Auth? = null, - val badge: Badge? = null, - @SerializedName("icon_border_url") - val border: String = "") : Parcelable +class UserEntity( + var icon: String? = "", + var name: String? = "", + @SerializedName("_id") + // 用于parent的user + var id: String? = "", + var time: Long? = 0, + var auth: Auth? = null, + val badge: Badge? = null, + @SerializedName("icon_border_url") + val border: String = "" +) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/VersionVoteEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VersionVoteEntity.kt index bca8e9f3ec..4ee418ebd3 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VersionVoteEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VersionVoteEntity.kt @@ -21,7 +21,7 @@ class VersionVoteEntity { var reply: String? = null - var open : Boolean = true + var open: Boolean = true var link: LinkEntity = LinkEntity() diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoDataOverViewEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoDataOverViewEntity.kt index 5b171e57d8..1454ef4dc6 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoDataOverViewEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoDataOverViewEntity.kt @@ -4,31 +4,31 @@ import com.google.gson.annotations.SerializedName import java.util.LinkedHashMap data class VideoDataOverViewEntity( - var comment: Int = 0, - var date: String = "", - var fan: Int = 0, - var favorite: Int = 0, - var play: Int = 0, - var share: Int = 0, - @SerializedName("user_id") - var userId: String = "", - var vote: Int = 0, - @SerializedName("yesterday_comment") - var yesterdayComment: Int = 0, - @SerializedName("yesterday_fan") - var yesterdayFan: Int = 0, - @SerializedName("yesterday_favorite") - var yesterdayFavorite: Int = 0, - @SerializedName("yesterday_play") - var yesterdayPlay: Int = 0, - @SerializedName("yesterday_share") - var yesterdayShare: Int = 0, - @SerializedName("yesterday_vote") - var yesterdayVote: Int = 0 + var comment: Int = 0, + var date: String = "", + var fan: Int = 0, + var favorite: Int = 0, + var play: Int = 0, + var share: Int = 0, + @SerializedName("user_id") + var userId: String = "", + var vote: Int = 0, + @SerializedName("yesterday_comment") + var yesterdayComment: Int = 0, + @SerializedName("yesterday_fan") + var yesterdayFan: Int = 0, + @SerializedName("yesterday_favorite") + var yesterdayFavorite: Int = 0, + @SerializedName("yesterday_play") + var yesterdayPlay: Int = 0, + @SerializedName("yesterday_share") + var yesterdayShare: Int = 0, + @SerializedName("yesterday_vote") + var yesterdayVote: Int = 0 ) data class VideoDataItem( - var videoDataOverView: VideoDataOverViewEntity? = null, - var videoFans: LinkedHashMap? = null, - var videoPlay: LinkedHashMap? = null + var videoDataOverView: VideoDataOverViewEntity? = null, + var videoFans: LinkedHashMap? = null, + var videoPlay: LinkedHashMap? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoDescItemEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoDescItemEntity.kt index 3670d1afbe..c97d9ade91 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoDescItemEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoDescItemEntity.kt @@ -1,6 +1,6 @@ package com.gh.gamecenter.entity data class VideoDescItemEntity( - var topVideoInfo: ForumVideoEntity? = null, - var recommendVideo: ForumVideoEntity? = null + var topVideoInfo: ForumVideoEntity? = null, + var recommendVideo: ForumVideoEntity? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoDraftEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoDraftEntity.kt index 8d914ca699..9707ffaa09 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoDraftEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoDraftEntity.kt @@ -6,38 +6,42 @@ import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize @Parcelize -class VideoDraftEntity(@SerializedName("_id") - val id: String = "", - val title: String = "", - val des: String = "", - var poster: String = "", - val url: String = "", - @SerializedName("game_id") - val gameId: String = "", - @SerializedName("game_name") - val gameName: String = "", - @SerializedName("category_id") - val categoryId: String? = "", - val size: Long = 0, - val length: Long = 0, - @SerializedName("tag_id") - val tagsId: List? = ArrayList(), - val user: UserEntity = UserEntity(), - val time: VideoTimeEntity = VideoTimeEntity(), - @SerializedName("local_path") - var localPath: String? = "", - val original: String = "",//是否原创 //是否原创 yes/no 默认为空字符串 - val source: String = "",//转载来源, 当 original=yes - @SerializedName("tag_activity_name") - val tagActivityName: String = "", - @SerializedName("tag_activity_id") - var tagActivityId: String = "", - var type: String = "", - var game: GameEntity? = null, - @SerializedName("bbs_id") - var bbsId: String = "", - var bbs: CommunityEntity? = null) : Parcelable +class VideoDraftEntity( + @SerializedName("_id") + val id: String = "", + val title: String = "", + val des: String = "", + var poster: String = "", + val url: String = "", + @SerializedName("game_id") + val gameId: String = "", + @SerializedName("game_name") + val gameName: String = "", + @SerializedName("category_id") + val categoryId: String? = "", + val size: Long = 0, + val length: Long = 0, + @SerializedName("tag_id") + val tagsId: List? = ArrayList(), + val user: UserEntity = UserEntity(), + val time: VideoTimeEntity = VideoTimeEntity(), + @SerializedName("local_path") + var localPath: String? = "", + val original: String = "",//是否原创 //是否原创 yes/no 默认为空字符串 + val source: String = "",//转载来源, 当 original=yes + @SerializedName("tag_activity_name") + val tagActivityName: String = "", + @SerializedName("tag_activity_id") + var tagActivityId: String = "", + var type: String = "", + var game: GameEntity? = null, + @SerializedName("bbs_id") + var bbsId: String = "", + var bbs: CommunityEntity? = null +) : Parcelable @Parcelize -class VideoTimeEntity(val create: Long = 0, - val update: Long = 0) : Parcelable \ No newline at end of file +class VideoTimeEntity( + val create: Long = 0, + val update: Long = 0 +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt index 9c1249ab90..0ad5f0b9d8 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt @@ -8,61 +8,61 @@ import kotlinx.parcelize.Parcelize @Parcelize open class VideoEntity( - @SerializedName("_id") - val id: String = "", - @SerializedName("_seq") - var shortId: String = "", - var title: String = "", - var poster: String = "", - val url: String = "", - @SerializedName("game_id") - val gameId: String = "", - @SerializedName("game_name") - private var mGameName: String = "", - @SerializedName("name_suffix") - var nameSuffix: String? = null, - @SerializedName("game_icon") - val gameIcon: String = "", - @SerializedName("category_id") - var categoryId: String = "", - var vote: Int = 0, - @SerializedName("vote_recently") - val voteRecently: Int = 0, - @SerializedName("comment_count") - var commentCount: Int = 0, - val user: UserEntity = UserEntity(), - val me: MeEntity = MeEntity(), - val size: Long = 0, - val length: Long = 0, - // 有三种状态 pass通过,fail未通过,pending审核中 - var status: String = "", - val format: String = "Mp4", - @SerializedName("tag_id") - var tagsId: List = ArrayList(), - @SerializedName("game_active") - val gameActive: Boolean = false,//游戏是否被隐藏 false隐藏 - var game: GameEntity? = null, - @SerializedName("share") - var shareCount: Int = 0,//分享数量 v3.7.5新增 - val time: Time = Time(), - var watched: Boolean = false, + @SerializedName("_id") + val id: String = "", + @SerializedName("_seq") + var shortId: String = "", + var title: String = "", + var poster: String = "", + val url: String = "", + @SerializedName("game_id") + val gameId: String = "", + @SerializedName("game_name") + private var mGameName: String = "", + @SerializedName("name_suffix") + var nameSuffix: String? = null, + @SerializedName("game_icon") + val gameIcon: String = "", + @SerializedName("category_id") + var categoryId: String = "", + var vote: Int = 0, + @SerializedName("vote_recently") + val voteRecently: Int = 0, + @SerializedName("comment_count") + var commentCount: Int = 0, + val user: UserEntity = UserEntity(), + val me: MeEntity = MeEntity(), + val size: Long = 0, + val length: Long = 0, + // 有三种状态 pass通过,fail未通过,pending审核中 + var status: String = "", + val format: String = "Mp4", + @SerializedName("tag_id") + var tagsId: List = ArrayList(), + @SerializedName("game_active") + val gameActive: Boolean = false,//游戏是否被隐藏 false隐藏 + var game: GameEntity? = null, + @SerializedName("share") + var shareCount: Int = 0,//分享数量 v3.7.5新增 + val time: Time = Time(), + var watched: Boolean = false, - val watermark: Boolean = false, - val audit: Boolean = false, - val original: String = "",//是否原创 yes/no 默认为空字符串 - val source: String = "",//转载来源, 当 original=yes - @SerializedName("tag_activity_name") - val tagActivityName: String = "", - @SerializedName("tag_activity_id") - var tagActivityId: String = "",//活动标签的id, 当 original=true - @SerializedName("_source") - val ipSource: SourceEntity? = null, + val watermark: Boolean = false, + val audit: Boolean = false, + val original: String = "",//是否原创 yes/no 默认为空字符串 + val source: String = "",//转载来源, 当 original=yes + @SerializedName("tag_activity_name") + val tagActivityName: String = "", + @SerializedName("tag_activity_id") + var tagActivityId: String = "",//活动标签的id, 当 original=true + @SerializedName("_source") + val ipSource: SourceEntity? = null, - //本地数据 - @IgnoredOnParcel - var videoIsMuted: Boolean = false,//是否静音标记 - @IgnoredOnParcel - var isFirstBind: Boolean = false + //本地数据 + @IgnoredOnParcel + var videoIsMuted: Boolean = false,//是否静音标记 + @IgnoredOnParcel + var isFirstBind: Boolean = false ) : Parcelable { @IgnoredOnParcel diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt index 019bc82065..d679a2e96d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt @@ -4,8 +4,10 @@ import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize -data class VideoLinkEntity(val title: String? = "", - val categoryId: String? = "", - val link: String? = "", - val tagActivityId: String? = "", - val tagActivityName: String? = "") : Parcelable \ No newline at end of file +data class VideoLinkEntity( + val title: String? = "", + val categoryId: String? = "", + val link: String? = "", + val tagActivityId: String? = "", + val tagActivityName: String? = "" +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoTagEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoTagEntity.kt index 5ce170b73d..7e93948029 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoTagEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoTagEntity.kt @@ -2,6 +2,8 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -data class VideoTagEntity(@SerializedName("_id") - val id: String, - val name: String) \ No newline at end of file +data class VideoTagEntity( + @SerializedName("_id") + val id: String, + val name: String +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/VoteEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VoteEntity.kt index df5485c39b..57d95f36d6 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VoteEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VoteEntity.kt @@ -2,6 +2,8 @@ package com.gh.gamecenter.entity import com.google.gson.annotations.SerializedName -data class VoteEntity(var vote: Int? = 0, - @SerializedName("is_guide_follow") - var isGuideFollow: Boolean = false) \ No newline at end of file +data class VoteEntity( + var vote: Int? = 0, + @SerializedName("is_guide_follow") + var isGuideFollow: Boolean = false +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/WebShareEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/WebShareEntity.kt index e27233f871..8404074d96 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/WebShareEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/WebShareEntity.kt @@ -1,6 +1,8 @@ package com.gh.gamecenter.entity -data class WebShareEntity(var title: String = "", - val description: String = "", - val icon: String = "", - val url: String = "") \ No newline at end of file +data class WebShareEntity( + var title: String = "", + val description: String = "", + val icon: String = "", + val url: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListAdapter.kt index 9649bcf5cd..068ec5ec0a 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListAdapter.kt @@ -24,7 +24,8 @@ import com.gh.gamecenter.qa.entity.Questions import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity -class ForumArticleAskListAdapter(context: Context, val bbsId: String, val mEntrance: String, val path: String) : ListAdapter(context), ISyncAdapterHandler { +class ForumArticleAskListAdapter(context: Context, val bbsId: String, val mEntrance: String, val path: String) : + ListAdapter(context), ISyncAdapterHandler { override fun areItemsTheSame(oldItem: AnswerEntity?, newItem: AnswerEntity?): Boolean { return oldItem?.id == newItem?.id @@ -36,7 +37,15 @@ class ForumArticleAskListAdapter(context: Context, val bbsId: String, val mEntra FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) } else -> { - ForumArticleAskItemViewHolder(CommunityAnswerItemBinding.bind(mLayoutInflater.inflate(R.layout.community_answer_item, parent, false))) + ForumArticleAskItemViewHolder( + CommunityAnswerItemBinding.bind( + mLayoutInflater.inflate( + R.layout.community_answer_item, + parent, + false + ) + ) + ) } } } @@ -89,26 +98,94 @@ class ForumArticleAskListAdapter(context: Context, val bbsId: String, val mEntra val bbsType = if (answer.bbs.type == "official_bbs") "综合论坛" else "游戏论坛" when (answer.type) { "community_article" -> { - NewLogUtils.logForumDetailFeedContentClick("click_forum_detail_content", userId, contentId, "帖子", sequence, bbsId, bbsType, tabInfo) - MtaHelper.onEvent(holder.getEventId(entrance), holder.getKey(entrance), "${answer.articleTitle}(${answer.id})") - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, CommunityEntity(bbsId), answer.id!!, mEntrance, path)) + NewLogUtils.logForumDetailFeedContentClick( + "click_forum_detail_content", + userId, + contentId, + "帖子", + sequence, + bbsId, + bbsType, + tabInfo + ) + MtaHelper.onEvent( + holder.getEventId(entrance), + holder.getKey(entrance), + "${answer.articleTitle}(${answer.id})" + ) + mContext.startActivity( + ArticleDetailActivity.getIntent( + mContext, + CommunityEntity(bbsId), + answer.id!!, + mEntrance, + path + ) + ) } "video" -> { - NewLogUtils.logForumDetailFeedContentClick("click_forum_detail_content", userId, contentId, "视频帖", sequence, bbsId, bbsType, tabInfo) - MtaHelper.onEvent(holder.getEventId(entrance), holder.getKey(entrance), "${answer.articleTitle}(${answer.id})") - mContext.startActivity(ForumVideoDetailActivity.getIntent(mContext, answer.id ?:"", bbsId)) + NewLogUtils.logForumDetailFeedContentClick( + "click_forum_detail_content", + userId, + contentId, + "视频帖", + sequence, + bbsId, + bbsType, + tabInfo + ) + MtaHelper.onEvent( + holder.getEventId(entrance), + holder.getKey(entrance), + "${answer.articleTitle}(${answer.id})" + ) + mContext.startActivity(ForumVideoDetailActivity.getIntent(mContext, answer.id ?: "", bbsId)) } "question" -> { - NewLogUtils.logForumDetailFeedContentClick("click_forum_detail_content", userId, contentId, "提问帖", sequence, bbsId, bbsType, tabInfo) - MtaHelper.onEvent(holder.getEventId(entrance), holder.getKey(entrance), "${answer.articleTitle}(${answer.id})") - mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, answer.id - ?: "", mEntrance, path)) + NewLogUtils.logForumDetailFeedContentClick( + "click_forum_detail_content", + userId, + contentId, + "提问帖", + sequence, + bbsId, + bbsType, + tabInfo + ) + MtaHelper.onEvent( + holder.getEventId(entrance), + holder.getKey(entrance), + "${answer.articleTitle}(${answer.id})" + ) + mContext.startActivity( + NewQuestionDetailActivity.getIntent( + mContext, answer.id + ?: "", mEntrance, path + ) + ) } "answer" -> { - NewLogUtils.logForumDetailFeedContentClick("click_forum_detail_content", userId, contentId, "提问帖评论", sequence, bbsId, bbsType, tabInfo) - MtaHelper.onEvent(holder.getEventId(entrance), holder.getKey(entrance), "${answer.articleTitle}(${answer.id})") - mContext.startActivity(NewQuestionDetailActivity.getCommentIntent(mContext, answer.questions.id, answer.id - ?: "", mEntrance, path)) + NewLogUtils.logForumDetailFeedContentClick( + "click_forum_detail_content", + userId, + contentId, + "提问帖评论", + sequence, + bbsId, + bbsType, + tabInfo + ) + MtaHelper.onEvent( + holder.getEventId(entrance), + holder.getKey(entrance), + "${answer.articleTitle}(${answer.id})" + ) + mContext.startActivity( + NewQuestionDetailActivity.getCommentIntent( + mContext, answer.questions.id, answer.id + ?: "", mEntrance, path + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListViewModel.kt index f919e1399a..7ca290aa21 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumArticleAskListViewModel.kt @@ -14,7 +14,8 @@ import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp import io.reactivex.Observable -class ForumArticleAskListViewModel(application: Application, val bbsId: String = "", val mPath: String = "") : ListViewModel(application) { +class ForumArticleAskListViewModel(application: Application, val bbsId: String = "", val mPath: String = "") : + ListViewModel(application) { var sort: String = "time.reply" var videoSort: String = "recommend" @@ -33,9 +34,20 @@ class ForumArticleAskListViewModel(application: Application, val bbsId: String = if (bbsId == TEMP_FIXED_TOP_BBS && SPUtils.getBoolean("$FIXED_TOP_KEY$bbsId", true)) { val fixedTopId = TEMP_FIXED_TOP_POST SPUtils.setBoolean("$FIXED_TOP_KEY$bbsId", false) - RetrofitManager.getInstance().api.getAllForumList(bbsId, fixedTopId, UrlFilterUtils.getFilterQuery(sort, "-1"), page, map) + RetrofitManager.getInstance().api.getAllForumList( + bbsId, + fixedTopId, + UrlFilterUtils.getFilterQuery(sort, "-1"), + page, + map + ) } else { - RetrofitManager.getInstance().api.getAllForumList(bbsId, UrlFilterUtils.getFilterQuery(sort, "-1"), page, map) + RetrofitManager.getInstance().api.getAllForumList( + bbsId, + UrlFilterUtils.getFilterQuery(sort, "-1"), + page, + map + ) } } @@ -46,7 +58,11 @@ class ForumArticleAskListViewModel(application: Application, val bbsId: String = RetrofitManager.getInstance().api.getAskForumList(bbsId, page) } else -> { - RetrofitManager.getInstance().api.getVideoForumList(bbsId, UrlFilterUtils.getFilterQuery(videoSort, "-1"), page) + RetrofitManager.getInstance().api.getVideoForumList( + bbsId, + UrlFilterUtils.getFilterQuery(videoSort, "-1"), + page + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailActivity.kt index f3151edaf3..0ddf3b107d 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailActivity.kt @@ -25,9 +25,11 @@ class ForumDetailActivity : BaseActivity() { updateStatusBarColor(R.color.background_white, R.color.background_white) mContainerFragment = supportFragmentManager.findFragmentByTag(ForumDetailFragment::class.java.name) - ?: ForumDetailFragment().with(intent.extras) + ?: ForumDetailFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, mContainerFragment!!, ForumDetailFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, mContainerFragment!!, ForumDetailFragment::class.java.name) + .commitAllowingStateLoss() } override fun getBusinessId(): Pair { diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt index 8fe56a43ac..a56258d133 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt @@ -353,14 +353,20 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { } } layoutManager = LinearLayoutManager(requireContext()) - adapter = ForumTopLinkAdapter(requireContext(), topLink, mViewModel?.bbsId ?: "", mForumDetail?.type ?: "") + adapter = ForumTopLinkAdapter( + requireContext(), + topLink, + mViewModel?.bbsId ?: "", + mForumDetail?.type ?: "" + ) } } else { mBinding.forumTopContentContainer.visibility = View.GONE val params = mBinding.tabContainer.layoutParams as LinearLayout.LayoutParams params.topMargin = DisplayUtils.dip2px(-8f) mBinding.tabContainer.layoutParams = params - mBinding.tabContainer.background = ContextCompat.getDrawable(requireContext(), R.drawable.background_shape_white_radius_5_top_only) + mBinding.tabContainer.background = + ContextCompat.getDrawable(requireContext(), R.drawable.background_shape_white_radius_5_top_only) } if (background.isEmpty()) { @@ -379,9 +385,17 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { } else { ImageUtils.display(mBinding.forumBackground, background) } - mBinding.followTv.setTextColor(ContextCompat.getColor(requireContext(), if (me.isFollower) R.color.text_subtitleDesc else R.color.white)) + mBinding.followTv.setTextColor( + ContextCompat.getColor( + requireContext(), + if (me.isFollower) R.color.text_subtitleDesc else R.color.white + ) + ) mBinding.followTv.background = - ContextCompat.getDrawable(requireContext(), if (me.isFollower) R.drawable.button_round_gray_light else R.drawable.download_button_normal_style) + ContextCompat.getDrawable( + requireContext(), + if (me.isFollower) R.drawable.button_round_gray_light else R.drawable.download_button_normal_style + ) mBinding.allOrderSfv.setItemList(mAllOrderList, 0) mBinding.videoOrderSfv.setItemList(mVideoOrderList, 0) @@ -398,9 +412,10 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { tryCatchInRelease { val location = IntArray(2) moderatorTv.getLocationOnScreen(location) - moderatorGuideContainer.layoutParams = (moderatorGuideContainer.layoutParams as ViewGroup.MarginLayoutParams).apply { - leftMargin = location[0] - 16F.dip2px() - } + moderatorGuideContainer.layoutParams = + (moderatorGuideContainer.layoutParams as ViewGroup.MarginLayoutParams).apply { + leftMargin = location[0] - 16F.dip2px() + } moderatorGuideContainer.alpha = 0F moderatorGuideContainer.visibility = View.VISIBLE moderatorGuideContainer.animate().alpha(1F).setDuration(200).start() @@ -561,7 +576,12 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { } else { mViewModel?.followForum { val userId = UserManager.getInstance().userId - NewLogUtils.logForumDetailEnterOrClick("click_forum_detail_follow", mBbsId, mBbsType, userId) + NewLogUtils.logForumDetailEnterOrClick( + "click_forum_detail_follow", + mBbsId, + mBbsType, + userId + ) MtaHelper.onEvent("论坛详情", "顶部区域", "关注") mForumDetail?.me?.isFollower = true ToastUtils.showToast("关注成功") @@ -575,40 +595,77 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { mBinding.forumRuleContainer.setOnClickListener { NewLogUtils.logForumDetailEnterOrClick("click_layout_description", mBbsId, mBbsType) NewLogUtils.logForumRuleEnter(mBbsId, mBbsType) - startActivity(NewsDetailActivity.getIntentById(requireContext(), Constants.FORUM_REGULATIONS_NEWS_ID, "论坛详情")) + startActivity( + NewsDetailActivity.getIntentById( + requireContext(), + Constants.FORUM_REGULATIONS_NEWS_ID, + "论坛详情" + ) + ) } } private fun updateToolbarStyle(isToolbarWhite: Boolean) { if (!mIsDarkModeOn) { - mBinding.titleTv.setTextColor(ContextCompat.getColor(requireContext(), if (isToolbarWhite) R.color.black else R.color.transparent)) + mBinding.titleTv.setTextColor( + ContextCompat.getColor( + requireContext(), + if (isToolbarWhite) R.color.black else R.color.transparent + ) + ) mBinding.toolbar.setBackgroundColor( ContextCompat.getColor( requireContext(), if (isToolbarWhite) R.color.white else R.color.transparent ) ) - DisplayUtils.setStatusBarColor(requireActivity(), if (isToolbarWhite) R.color.white else R.color.transparent) + DisplayUtils.setStatusBarColor( + requireActivity(), + if (isToolbarWhite) R.color.white else R.color.transparent + ) if (isToolbarWhite) { DisplayUtils.setLightStatusBar(requireActivity(), true) mBinding.toolbar.setNavigationIcon(R.drawable.ic_bar_back) - mBinding.searchIv.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.ic_forum_detail_search)) + mBinding.searchIv.setImageDrawable( + ContextCompat.getDrawable( + requireContext(), + R.drawable.ic_forum_detail_search + ) + ) } else { DisplayUtils.setLightStatusBar(requireActivity(), false) mBinding.toolbar.setNavigationIcon(R.drawable.ic_bar_back_light) - mBinding.searchIv.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.ic_forum_detail_search_light)) + mBinding.searchIv.setImageDrawable( + ContextCompat.getDrawable( + requireContext(), + R.drawable.ic_forum_detail_search_light + ) + ) } } else { - mBinding.titleTv.setTextColor(ContextCompat.getColor(requireContext(), if (isToolbarWhite) R.color.white else R.color.transparent)) + mBinding.titleTv.setTextColor( + ContextCompat.getColor( + requireContext(), + if (isToolbarWhite) R.color.white else R.color.transparent + ) + ) mBinding.toolbar.setBackgroundColor( ContextCompat.getColor( requireContext(), if (isToolbarWhite) R.color.black else R.color.transparent ) ) - DisplayUtils.setStatusBarColor(requireActivity(), if (isToolbarWhite) R.color.black else R.color.transparent) + DisplayUtils.setStatusBarColor( + requireActivity(), + if (isToolbarWhite) R.color.black else R.color.transparent + ) mBinding.toolbar.setNavigationIcon(R.drawable.ic_bar_back_light) - mBinding.searchIv.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.ic_forum_detail_search_light)) + mBinding.searchIv.setImageDrawable( + ContextCompat.getDrawable( + requireContext(), + R.drawable.ic_forum_detail_search_light + ) + ) } } @@ -673,8 +730,11 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { ArticleEditActivity.getIntent( requireContext(), CommunityEntity( mForumDetail?.id - ?: "", mForumDetail?.name - ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript + ?: "", + mForumDetail?.name + ?: "", + icon = mForumDetail?.game?.getIcon(), + iconSubscript = mForumDetail?.game?.iconSubscript ), mForumDetail?.type ?: "" ), @@ -693,8 +753,11 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { QuestionEditActivity.getIntent( requireContext(), CommunityEntity( mForumDetail?.id - ?: "", mForumDetail?.name - ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript + ?: "", + mForumDetail?.name + ?: "", + icon = mForumDetail?.game?.getIcon(), + iconSubscript = mForumDetail?.game?.iconSubscript ), mForumDetail?.type ?: "" ), @@ -711,8 +774,11 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { NewLogUtils.logPublishVideoEnter(entrance, mBbsId, mBbsType) val communityEntity = CommunityEntity( mForumDetail?.id - ?: "", mForumDetail?.name - ?: "", icon = mForumDetail?.game?.getIcon(), iconSubscript = mForumDetail?.game?.iconSubscript + ?: "", + mForumDetail?.name + ?: "", + icon = mForumDetail?.game?.getIcon(), + iconSubscript = mForumDetail?.game?.iconSubscript ) startActivityForResult( VideoPublishActivity.getIntent( @@ -752,8 +818,9 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { } CommunityHomeFragment.VIDEO_REQUEST_CODE -> { - val forumVideoEntity = data?.getParcelableExtra(ForumVideoEntity::class.java.simpleName) - ?: return + val forumVideoEntity = + data?.getParcelableExtra(ForumVideoEntity::class.java.simpleName) + ?: return mViewModel?.getVideoDetail(forumVideoEntity.id) } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailViewModel.kt index 495aaef66a..83c192ef25 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailViewModel.kt @@ -172,7 +172,8 @@ class ForumDetailViewModel(application: Application, val bbsId: String) : Androi answerEntity.id = questionDetailEntity.id ?: "" answerEntity.articleTitle = questionDetailEntity.title answerEntity.brief = questionDetailEntity.description?.removeVideoContent()?.clearHtmlFormatCompletely() ?: "" - answerEntity.description = questionDetailEntity.description?.removeVideoContent()?.clearHtmlFormatCompletely() ?: "" + answerEntity.description = + questionDetailEntity.description?.removeVideoContent()?.clearHtmlFormatCompletely() ?: "" answerEntity.count = questionDetailEntity.count answerEntity.bbs = questionDetailEntity.community answerEntity.time = questionDetailEntity.time.create diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ArticleItemVideoView.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ArticleItemVideoView.kt index 76d8a84e33..2d92a6ad74 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ArticleItemVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ArticleItemVideoView.kt @@ -24,7 +24,8 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge import io.reactivex.disposables.Disposable import java.util.* -class ArticleItemVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class ArticleItemVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private var mVideoEntity: ForumVideoEntity? = null private var mMuteDisposable: Disposable? = null @@ -179,7 +180,13 @@ class ArticleItemVideoView @JvmOverloads constructor(context: Context, attrs: At hideBackBtn() } - override fun setProgressAndTime(progress: Int, secProgress: Int, currentTime: Int, totalTime: Int, forceChange: Boolean) { + override fun setProgressAndTime( + progress: Int, + secProgress: Int, + currentTime: Int, + totalTime: Int, + forceChange: Boolean + ) { super.setProgressAndTime(progress, secProgress, currentTime, totalTime, forceChange) if (remainingTv.visibility == View.VISIBLE) { remainingTv.text = CommonUtil.stringForTime(totalTime - currentTime) @@ -327,20 +334,20 @@ class ArticleItemVideoView @JvmOverloads constructor(context: Context, attrs: At "https://resource.ghzs.com/page/video_play/video/video.html?video=${it.id}" } ShareUtils.getInstance(context).showShareWindowsCallback(context as Activity, - this, - shareUrl, - shareIcon, - it.title, - it.des, - ShareUtils.ShareEntrance.video, it.id, object : ShareUtils.ShareCallBack { - override fun onSuccess(label: String) { + this, + shareUrl, + shareIcon, + it.title, + it.des, + ShareUtils.ShareEntrance.video, it.id, object : ShareUtils.ShareCallBack { + override fun onSuccess(label: String) { // if ("短信" == label || "复制链接" == label) viewModel?.shareVideoStatistics(it) - } + } - override fun onCancel() { - uploadVideoStreamingPlaying("取消分享") - } - }) + override fun onCancel() { + uploadVideoStreamingPlaying("取消分享") + } + }) } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt index c6cdffb4e1..ab821ea17c 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeFragment.kt @@ -138,7 +138,12 @@ class CommunityHomeFragment : LazyFragment() { mFragmentList.clear() val tag = "android:switcher:${viewPager.id}:" val forumArticleListFragment = childFragmentManager.findFragmentByTag("${tag}0") - ?: ForumArticleListFragment().with(bundleOf(EntranceConsts.KEY_ENTRANCE to "社区", EntranceConsts.KEY_PATH to "推荐")) + ?: ForumArticleListFragment().with( + bundleOf( + EntranceConsts.KEY_ENTRANCE to "社区", + EntranceConsts.KEY_PATH to "推荐" + ) + ) mFragmentList.add(forumArticleListFragment) val forumFragment = childFragmentManager.findFragmentByTag("${tag}1") @@ -190,7 +195,8 @@ class CommunityHomeFragment : LazyFragment() { onPageScrolled = { position, positionOffset, _ -> if (position + 1 != mTabList.size) { (mTabList[position] as TextView).run { - layoutParams.width = (DEFAULT_TAB_TEXT_WIDTH + ((1 - positionOffset) * 4F.dip2px())).roundToInt() + layoutParams.width = + (DEFAULT_TAB_TEXT_WIDTH + ((1 - positionOffset) * 4F.dip2px())).roundToInt() textSize = (DEFAULT_TAB_TEXT_SIZE + ((1 - positionOffset) * 4)).roundTo(1) setTextColor( ColorUtils.blendARGB( @@ -202,7 +208,8 @@ class CommunityHomeFragment : LazyFragment() { } if (mTabList[position + 1] is TextView) { (mTabList[position + 1] as TextView).run { - layoutParams.width = (DEFAULT_TAB_TEXT_WIDTH + ((positionOffset) * 4F.dip2px())).roundToInt() + layoutParams.width = + (DEFAULT_TAB_TEXT_WIDTH + ((positionOffset) * 4F.dip2px())).roundToInt() textSize = (DEFAULT_TAB_TEXT_SIZE + ((positionOffset) * 4)).roundTo(1) setTextColor( ColorUtils.blendARGB( @@ -214,10 +221,13 @@ class CommunityHomeFragment : LazyFragment() { } } else { (mTabList[position + 1] as TabItemCommunityBinding).run { - tabTitle.layoutParams.width = (DEFAULT_TAB_TEXT_WIDTH + ((positionOffset) * 4F.dip2px())).roundToInt() + tabTitle.layoutParams.width = + (DEFAULT_TAB_TEXT_WIDTH + ((positionOffset) * 4F.dip2px())).roundToInt() tabTitle.textSize = (DEFAULT_TAB_TEXT_SIZE + ((positionOffset) * 4)).roundTo(1) - tabImg.scaleX = (DEFAULT_TAB_IMG_WIDTH + ((positionOffset) * 8)).roundTo(1) / DEFAULT_TAB_IMG_WIDTH - tabImg.scaleY = (DEFAULT_TAB_IMG_HEIGHT + ((positionOffset) * 4)).roundTo(1) / DEFAULT_TAB_IMG_HEIGHT + tabImg.scaleX = + (DEFAULT_TAB_IMG_WIDTH + ((positionOffset) * 8)).roundTo(1) / DEFAULT_TAB_IMG_WIDTH + tabImg.scaleY = + (DEFAULT_TAB_IMG_HEIGHT + ((positionOffset) * 4)).roundTo(1) / DEFAULT_TAB_IMG_HEIGHT if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { tabImg.imageTintList = ColorStateList.valueOf( @@ -233,7 +243,8 @@ class CommunityHomeFragment : LazyFragment() { // 多 tab 切换的时候可能会出现某些 tab 的文字没有回归到原始大小的问题的问题 (positionOffset 不保证连续) for ((index, tabTv) in mTabList.withIndex()) { - val isNeedReset = abs(index - position) >= 2 && tabTv is TextView && tabTv.textSize != DEFAULT_TAB_TEXT_SIZE + val isNeedReset = + abs(index - position) >= 2 && tabTv is TextView && tabTv.textSize != DEFAULT_TAB_TEXT_SIZE if (isNeedReset) { (tabTv as TextView).textSize = DEFAULT_TAB_TEXT_SIZE tabTv.setTextColor(TAB_DEFAULT_COLOR.toColor(requireContext())) @@ -398,7 +409,10 @@ class CommunityHomeFragment : LazyFragment() { showRegulationTestDialogIfNeeded { MtaHelper.onEvent("论坛首页", "发布", "发帖子") NewLogUtils.logArticleEditEnter("推荐信息流", "", "") - startActivityForResult(ArticleEditActivity.getIntent(requireContext(), null), ARTICLE_REQUEST_CODE) + startActivityForResult( + ArticleEditActivity.getIntent(requireContext(), null), + ARTICLE_REQUEST_CODE + ) dialog.dismiss() } } @@ -458,8 +472,9 @@ class CommunityHomeFragment : LazyFragment() { } VIDEO_REQUEST_CODE -> { - val forumVideoEntity = data?.getParcelableExtra(ForumVideoEntity::class.java.simpleName) - ?: return + val forumVideoEntity = + data?.getParcelableExtra(ForumVideoEntity::class.java.simpleName) + ?: return mViewModel?.getVideoDetail(forumVideoEntity.id) } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeViewModel.kt index a6d622ebf5..d77aca76f3 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/CommunityHomeViewModel.kt @@ -61,7 +61,8 @@ class CommunityHomeViewModel(application: Application) : AndroidViewModel(applic val articleEntity = ArticleEntity() articleEntity.id = articleDetailEntity.id - articleEntity.brief = articleDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely() + articleEntity.brief = + articleDetailEntity.content.removeVideoContent().removeInsertedContent().clearHtmlFormatCompletely() articleEntity.count = articleDetailEntity.count articleDetailEntity.community.id = articleDetailEntity.communityId articleEntity.community = articleDetailEntity.community @@ -82,7 +83,9 @@ class CommunityHomeViewModel(application: Application) : AndroidViewModel(applic val articleEntity = ArticleEntity() articleEntity.id = questionDetailEntity.id ?: "" - articleEntity.brief = questionDetailEntity.description?.removeVideoContent()?.removeInsertedContent()?.clearHtmlFormatCompletely() ?: "" + articleEntity.brief = + questionDetailEntity.description?.removeVideoContent()?.removeInsertedContent()?.clearHtmlFormatCompletely() + ?: "" articleEntity.count = questionDetailEntity.count articleEntity.community = questionDetailEntity.community articleEntity.bbs = questionDetailEntity.community diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityFragment.kt index d2389f92aa..5de2cf33c4 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityFragment.kt @@ -20,7 +20,7 @@ import com.gh.gamecenter.entity.ForumActivityCategoryEntity import com.gh.gamecenter.entity.ForumActivityEntity import com.google.android.flexbox.FlexboxLayout -class ForumActivityFragment: LazyListFragment() { +class ForumActivityFragment : LazyListFragment() { private var mBinding: FragmentForumActivityBinding? = null private var mAdapter: ForumActivityAdapter? = null @@ -30,7 +30,7 @@ class ForumActivityFragment: LazyListFragment) { if (list.isEmpty()) return @@ -116,7 +117,8 @@ class ForumActivityFragment: LazyListFragment val binding = LayoutForumActivityCategoryItemBinding.inflate(layoutInflater).apply { - val params = FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + val params = + FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) params.setMargins(0, 8F.dip2px(), 8F.dip2px(), 0) params.height = 24F.dip2px() root.layoutParams = params diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityViewModel.kt index c71527a215..53c540ca99 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumActivityViewModel.kt @@ -11,7 +11,8 @@ import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.Single -class ForumActivityViewModel(application: Application) : ListViewModel(application) { +class ForumActivityViewModel(application: Application) : + ListViewModel(application) { var categoryId = "" var categories = MutableLiveData>() @@ -23,21 +24,21 @@ class ForumActivityViewModel(application: Application) : ListViewModel>() { - override fun onSuccess(data: List) { - categories.postValue(data) - } - }) + .api + .forumActivityCategories + .compose(singleToMain()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categories.postValue(data) + } + }) } override fun provideDataObservable(page: Int) = null override fun provideDataSingle(page: Int): Single> { return RetrofitManager.getInstance() - .api.getForumActivities(categoryId, page) + .api.getForumActivities(categoryId, page) } override fun mergeResultLiveData() { diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleAskItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleAskItemViewHolder.kt index a513bc9ced..3e495fac4d 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleAskItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleAskItemViewHolder.kt @@ -34,7 +34,8 @@ import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack import com.shuyu.gsyvideoplayer.utils.OrientationUtils import org.greenrobot.eventbus.EventBus -class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : BaseAnswerOrArticleItemViewHolder(binding.root) { +class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : + BaseAnswerOrArticleItemViewHolder(binding.root) { fun bindForumAnswerItem(entity: AnswerEntity, entrance: String, path: String, position: Int? = null) { bindItem(entity, entrance, path) @@ -57,7 +58,10 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B ImageUtils.display(popularAnswerUserIcon, entity.popularAnswer?.user?.icon) userBadgeIcon.goneIf(entity.user.badge == null) concernBtn.goneIf(entity.me.isFollower || entity.user.id == UserManager.getInstance().userId) - time.text = (if (entity.me.isFollower || entity.status == "pending" || entity.status == "fail") " · " else "") + NewsUtils.getFormattedTime(entity.time!!) + time.text = + (if (entity.me.isFollower || entity.status == "pending" || entity.status == "fail") " · " else "") + NewsUtils.getFormattedTime( + entity.time!! + ) statusTv.goneIf(!(entity.status == "pending" || entity.status == "fail") && !entity.me.isFollower) statusTv.setText( when { @@ -164,7 +168,14 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B NewLogUtils.logRecommendFeedUserClick("click_for_you_profile_photo", userId, contentType) } if (entrance == "论坛详情") { - NewLogUtils.logForumDetailFeedUserClick("click_forum_detail_profile_photo", userId, contentType, "${path}tab", bbsId, bbsType) + NewLogUtils.logForumDetailFeedUserClick( + "click_forum_detail_profile_photo", + userId, + contentType, + "${path}tab", + bbsId, + bbsType + ) } MtaHelper.onEvent( getEventId(BaseActivity.mergeEntranceAndPath(entrance, path)), @@ -178,7 +189,14 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B NewLogUtils.logRecommendFeedUserClick("click_for_you_nickname", userId, contentType) } if (entrance == "论坛详情") { - NewLogUtils.logForumDetailFeedUserClick("click_forum_detail_nickname", userId, contentType, "${path}tab", bbsId, bbsType) + NewLogUtils.logForumDetailFeedUserClick( + "click_forum_detail_nickname", + userId, + contentType, + "${path}tab", + bbsId, + bbsType + ) } MtaHelper.onEvent( getEventId(BaseActivity.mergeEntranceAndPath(entrance, path)), @@ -197,14 +215,26 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B NewLogUtils.logForumSearchFollowClick("关注用户", bbsId, bbsType, userId) } if (entrance == "论坛详情") { - NewLogUtils.logForumDetailFeedUserClick("click_forum_detail_follow", userId, contentType, "${path}tab", bbsId, bbsType) + NewLogUtils.logForumDetailFeedUserClick( + "click_forum_detail_follow", + userId, + contentType, + "${path}tab", + bbsId, + bbsType + ) } followUser(entity, object : EmptyCallback { override fun onCallback() { entity.me.isFollower = true binding.concernBtn.visibility = View.GONE binding.statusTv.visibility = View.VISIBLE - binding.statusTv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_forum_follow.toDrawable(), null, null, null) + binding.statusTv.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.ic_forum_follow.toDrawable(), + null, + null, + null + ) binding.statusTv.setTextColor(R.color.theme_alpha_80.toColor(binding.statusTv.context)) binding.statusTv.text = R.string.follow_status.toResString() binding.time.text = " · ${binding.time.text}" @@ -262,7 +292,8 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B setVideoStatus(entity.status) fullscreenButton.setOnClickListener { - val horizontalVideoView = startWindowFullscreen(itemView.context, true, true) as? ArticleItemVideoView + val horizontalVideoView = + startWindowFullscreen(itemView.context, true, true) as? ArticleItemVideoView if (horizontalVideoView == null) { toastInInternalRelease("全屏失败,请向技术人员提供具体的操作步骤") return@setOnClickListener @@ -319,10 +350,15 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B id = entity.id, title = entity.questions.title, images = entity.images, - description = entity.questions.description) - it.context.startActivity(QuestionsInviteActivity.getIntent(it.context, - questionsDetailEntity, - entrance)) + description = entity.questions.description + ) + it.context.startActivity( + QuestionsInviteActivity.getIntent( + it.context, + questionsDetailEntity, + entrance + ) + ) } } @@ -386,7 +422,14 @@ class ForumArticleAskItemViewHolder(val binding: CommunityAnswerItemBinding) : B if (entity.questions.answerCount == 0) { MtaHelper.onEvent(getEventId(entrance), getKey(entrance), "我来回答") } - itemView.context.startActivity(NewQuestionDetailActivity.getCommentIntent(it.context, entity.questions.id, entrance, "")) + itemView.context.startActivity( + NewQuestionDetailActivity.getCommentIntent( + it.context, + entity.questions.id, + entrance, + "" + ) + ) } "answer" -> { itemView.context.startActivity( diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt index f0bfbe02d1..ae8d7823e3 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListAdapter.kt @@ -25,10 +25,12 @@ import com.gh.gamecenter.qa.entity.ArticleEntity import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity -class ForumArticleListAdapter(context: Context, - val mEntrance: String, - val path: String, - val viewModel: ForumArticleListViewModel) : ListAdapter(context), ISyncAdapterHandler { +class ForumArticleListAdapter( + context: Context, + val mEntrance: String, + val path: String, + val viewModel: ForumArticleListViewModel +) : ListAdapter(context), ISyncAdapterHandler { override fun areItemsTheSame(oldItem: ArticleEntity?, newItem: ArticleEntity?): Boolean { return oldItem?.id == newItem?.id @@ -89,7 +91,12 @@ class ForumArticleListAdapter(context: Context, } else { viewHolder.commentCount.text = "回答" } - viewHolder.commentCount.setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(mContext, R.drawable.community_comment_count), null, null, null) + viewHolder.commentCount.setCompoundDrawablesWithIntrinsicBounds( + ContextCompat.getDrawable( + mContext, + R.drawable.community_comment_count + ), null, null, null + ) viewHolder.voteCountContainer.visibility = View.GONE } else { viewHolder.voteCountContainer.visibility = View.VISIBLE @@ -104,7 +111,15 @@ class ForumArticleListAdapter(context: Context, else -> "提问帖评论" } val bbsType = if (bbs.type == "official_bbs") "综合论坛" else "游戏论坛" - NewLogUtils.logRecommendFeedContentClick("click_for_you_content", contentType, id, position + 1, bbs.id, bbsType, user.id ?: "") + NewLogUtils.logRecommendFeedContentClick( + "click_for_you_content", + contentType, + id, + position + 1, + bbs.id, + bbsType, + user.id ?: "" + ) } when (articleEntity.type) { diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListFragment.kt index ab21b3d19c..40e2fc5140 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumArticleListFragment.kt @@ -58,7 +58,8 @@ class ForumArticleListFragment : LazyListFragment= 0 - && currentPosition < mViewModel?.videoList?.size ?: 0) { + && currentPosition >= 0 + && currentPosition < mViewModel?.videoList?.size ?: 0 + ) { val video = mViewModel?.videoList?.safelyGetInRelease(currentPosition) if (video != null) { val position = getPlaySchedule(MD5Utils.getContentMD5(video.url)) @@ -277,8 +281,9 @@ class ForumArticleListFragment : LazyListFragment= 0 - && currentPosition < mViewModel?.videoList?.size ?: 0) { + && currentPosition >= 0 + && currentPosition < mViewModel?.videoList?.size ?: 0 + ) { currentPlayer?.onVideoPause() val position = currentPlayer?.getCurrentPosition() ?: 0L val video = mViewModel?.videoList?.safelyGetInRelease(currentPosition) @@ -302,7 +307,7 @@ class ForumArticleListFragment : LazyListFragment>? { return RetrofitManager.getInstance() - .api.getForumRecommends(UrlFilterUtils.getFilterQuery(sort, "-1"), page) + .api.getForumRecommends(UrlFilterUtils.getFilterQuery(sort, "-1"), page) } override fun mergeResultLiveData() { @@ -48,14 +48,14 @@ class ForumArticleListViewModel(application: Application) : ListViewModel>() { + .api + .getForumUnreadStatus(body) + .compose(singleToMain()) + .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - if (data.isNotEmpty() && data.size == recordForums.size) { - data.forEachIndexed { index, unreadEntity -> - recordForums[index].unread = unreadEntity.unread - recordStatusForums[index].unread = unreadEntity.unread - } + override fun onSuccess(data: List) { + if (data.isNotEmpty() && data.size == recordForums.size) { + data.forEachIndexed { index, unreadEntity -> + recordForums[index].unread = unreadEntity.unread + recordStatusForums[index].unread = unreadEntity.unread } - recordForumsLiveData.postValue(Pair(recordForums, isFromRefresh)) } + recordForumsLiveData.postValue(Pair(recordForums, isFromRefresh)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - recordForumsLiveData.postValue(Pair(recordForums, isFromRefresh)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + recordForumsLiveData.postValue(Pair(recordForums, isFromRefresh)) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumFragment.kt index 8115a41804..74b553b61d 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumFragment.kt @@ -35,7 +35,7 @@ import com.halo.assistant.HaloApp import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -class ForumFragment: LazyFragment(), SwipeRefreshLayout.OnRefreshListener { +class ForumFragment : LazyFragment(), SwipeRefreshLayout.OnRefreshListener { private var mBinding: FragmentForumBinding? = null private var mViewModel: ForumViewModel? = null @@ -247,8 +247,9 @@ class ForumFragment: LazyFragment(), SwipeRefreshLayout.OnRefreshListener { initBannerIndicator() } - val realPosition = (bannerViewPager.adapter as ForumBannerAdapter).getRealPosition(bannerViewPager.currentItem) - if (realPosition < mBanners.size ) { + val realPosition = + (bannerViewPager.adapter as ForumBannerAdapter).getRealPosition(bannerViewPager.currentItem) + if (realPosition < mBanners.size) { changeBannerItem(mBanners[realPosition], realPosition, true) } } @@ -458,7 +459,14 @@ class ForumFragment: LazyFragment(), SwipeRefreshLayout.OnRefreshListener { otherWelfareContainer.visibility = View.VISIBLE otherWelfareRv.layoutManager = GridLayoutManager(requireContext(), 2) otherWelfareRv.adapter = WelfaresAdapter(requireContext(), welfareLists) - otherWelfareRv.addItemDecoration(GridSpacingItemColorDecoration(requireContext(), 8, 8, R.color.transparent)) + otherWelfareRv.addItemDecoration( + GridSpacingItemColorDecoration( + requireContext(), + 8, + 8, + R.color.transparent + ) + ) } } @@ -481,7 +489,7 @@ class ForumFragment: LazyFragment(), SwipeRefreshLayout.OnRefreshListener { followForums.remove(findEntity) if (followForums.isEmpty()) { followForumContainer.visibility = View.GONE - } else{ + } else { (followForumRv.adapter as? HorizontalForumsAdapter)?.checkResetData(followForums) } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeViewModel.kt index 030bdb659c..1975efc060 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumHomeViewModel.kt @@ -23,43 +23,46 @@ class ForumHomeViewModel(application: Application) : AndroidViewModel(applicatio fun loadSlide() { RetrofitManager.getInstance().api - .forumSlide - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - slideLiveData.postValue(response) - } + .forumSlide + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + slideLiveData.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - slideLiveData.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + slideLiveData.postValue(null) + } + }) } fun loadForums() { - Observable.zip(loadFollowsForum(), getRecommendForum(), BiFunction, List, ArrayList> { t1, t2 -> - val list = arrayListOf() - list.addAll(t1) - t2.forEach { - it.isRecommend = true - list.add(it) - } - list - }).compose(observableToMain()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - forumData.postValue(response) - } + Observable.zip( + loadFollowsForum(), + getRecommendForum(), + BiFunction, List, ArrayList> { t1, t2 -> + val list = arrayListOf() + list.addAll(t1) + t2.forEach { + it.isRecommend = true + list.add(it) + } + list + }).compose(observableToMain()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + forumData.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - forumData.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + forumData.postValue(null) + } + }) } @@ -67,7 +70,7 @@ class ForumHomeViewModel(application: Application) : AndroidViewModel(applicatio private fun loadFollowsForum(): Observable> { return if (UserManager.getInstance().isLoggedIn) { RetrofitManager.getInstance().api - .getFollowsForum(UserManager.getInstance().userId) + .getFollowsForum(UserManager.getInstance().userId) } else { Observable.create> { it.onNext(listOf()) @@ -76,13 +79,14 @@ class ForumHomeViewModel(application: Application) : AndroidViewModel(applicatio } private fun getRecommendForum(): Observable> { - val installedList = PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) + val installedList = + PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) val gameIds = installedList.map { it.id }.toList() val requestMap = hashMapOf() requestMap["game_ids"] = gameIds return if (UserManager.getInstance().isLoggedIn) { RetrofitManager.getInstance().api - .getRecommendForum(UserManager.getInstance().userId, requestMap.toRequestBody()) + .getRecommendForum(UserManager.getInstance().userId, requestMap.toRequestBody()) } else { RetrofitManager.getInstance().api.getRecommendForumNotLoggedIn(requestMap.toRequestBody()) } diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt index b5a41fb79a..c6872e1965 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt @@ -17,9 +17,11 @@ import com.gh.gamecenter.video.detail.CustomManager import com.halo.assistant.HaloApp import com.shuyu.gsyvideoplayer.video.base.GSYBaseVideoPlayer -class ForumScrollCalculatorHelper(private val horizontalId: Int, - private val verticalId: Int, - private val rangeTop: Int) { +class ForumScrollCalculatorHelper( + private val horizontalId: Int, + private val verticalId: Int, + private val rangeTop: Int +) { private var firstVisible = -1 private var lastVisible = 0 private var visibleCount = 0 @@ -147,7 +149,8 @@ class ForumScrollCalculatorHelper(private val horizontalId: Int, override fun run() { if (gsyBaseVideoPlayer != null && !gsyBaseVideoPlayer!!.isInPlayingState) { - val videoOption = SPUtils.getString(Constants.SP_CONTENT_VIDEO_OPTION, VideoSettingFragment.VIDEO_OPTION_WIFI) + val videoOption = + SPUtils.getString(Constants.SP_CONTENT_VIDEO_OPTION, VideoSettingFragment.VIDEO_OPTION_WIFI) ?: VideoSettingFragment.VIDEO_OPTION_WIFI when (videoOption) { diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumViewModel.kt index 85b5b3da04..8a7306ef91 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumViewModel.kt @@ -57,24 +57,24 @@ class ForumViewModel(application: Application) : AndroidViewModel(application) { fun getFollowForum() { if (followForums.isEmpty()) { api.getFollowsForum(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - if (response?.isNotEmpty() == true) { - followForums = ArrayList(response.reversed()) - getForumUnreadStatus() - } else { - followForumsLiveData.postValue(response) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + if (response?.isNotEmpty() == true) { + followForums = ArrayList(response.reversed()) + getForumUnreadStatus() + } else { + followForumsLiveData.postValue(response) } + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - followForumsLiveData.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + followForumsLiveData.postValue(null) + } + }) } else { getForumUnreadStatus() } @@ -92,86 +92,86 @@ class ForumViewModel(application: Application) : AndroidViewModel(application) { requestMap["bbs"] = followStatusForums val body = requestMap.createRequestBodyAny() RetrofitManager.getInstance() - .api - .getForumUnreadStatus(body) - .compose(singleToMain()) - .subscribe(object : BiResponse>() { + .api + .getForumUnreadStatus(body) + .compose(singleToMain()) + .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - if (data.isNotEmpty() && data.size == followForums.size) { - data.forEachIndexed { index, unreadEntity -> - followForums[index].unread = unreadEntity.unread - } + override fun onSuccess(data: List) { + if (data.isNotEmpty() && data.size == followForums.size) { + data.forEachIndexed { index, unreadEntity -> + followForums[index].unread = unreadEntity.unread } - followForumsLiveData.postValue(followForums) } + followForumsLiveData.postValue(followForums) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - followForumsLiveData.postValue(followForums) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + followForumsLiveData.postValue(followForums) + } + }) } @SuppressLint("CheckResult") fun getHotForum() { api.getHotForum(1) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - hotForums.postValue(response) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + hotForums.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - hotForums.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + hotForums.postValue(null) + } + }) } @SuppressLint("CheckResult") fun getOfficialForum() { api.getOfficialForum(1) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - officialForums.postValue(response) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + officialForums.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - officialForums.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + officialForums.postValue(null) + } + }) } @SuppressLint("CheckResult") fun followForum(bbsId: String, onSuccess: () -> Unit) { RetrofitManager.getInstance().api - .followForum(bbsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - onSuccess.invoke() - } - }) + .followForum(bbsId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + onSuccess.invoke() + } + }) } @SuppressLint("CheckResult") fun unFollowForum(bbsId: String, onSuccess: () -> Unit) { RetrofitManager.getInstance().api - .unFollowForum(bbsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - onSuccess.invoke() - } - }) + .unFollowForum(bbsId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + onSuccess.invoke() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListAdapter.kt index ab22df5331..4f430cac7b 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListAdapter.kt @@ -40,7 +40,13 @@ class ForumListAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { - ItemViewType.ITEM_FOOTER -> FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) + ItemViewType.ITEM_FOOTER -> FooterViewHolder( + mLayoutInflater.inflate( + R.layout.refresh_footerview, + parent, + false + ) + ) else -> ForumItemViewHolder(parent.toBinding()) } diff --git a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListFragment.kt index c507e67204..784d8565ee 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListFragment.kt @@ -9,18 +9,18 @@ import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.entity.ForumEntity -class ForumListFragment: ListFragment() { +class ForumListFragment : ListFragment() { private var mAdapter: ForumListAdapter? = null private var mViewModel: ForumListViewModel? = null override fun provideListAdapter() = mAdapter - ?: ForumListAdapter(requireContext(), mEntrance, provideListViewModel()).apply { mAdapter = this } + ?: ForumListAdapter(requireContext(), mEntrance, provideListViewModel()).apply { mAdapter = this } override fun provideListViewModel() = viewModelProvider() - override fun getItemDecoration()= SpacingItemDecoration(onlyDecorateTheFirstItem = true, top = 8F.dip2px()) + override fun getItemDecoration() = SpacingItemDecoration(onlyDecorateTheFirstItem = true, top = 8F.dip2px()) override fun onCreate(savedInstanceState: Bundle?) { val type = arguments?.getString(EntranceConsts.KEY_TYPE) ?: "" diff --git a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListVIewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListVIewModel.kt index 73263f562e..fa8b2f6f42 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/list/ForumListVIewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/list/ForumListVIewModel.kt @@ -12,7 +12,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import okhttp3.ResponseBody -class ForumListViewModel(application: Application): ListViewModel(application) { +class ForumListViewModel(application: Application) : ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api var type = ForumListActivity.TYPE_FOLLOW @@ -33,24 +33,24 @@ class ForumListViewModel(application: Application): ListViewModel Unit) { mApi.followForum(bbsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - onSuccess.invoke() - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + onSuccess.invoke() + } + }) } @SuppressLint("CheckResult") fun unFollowForum(bbsId: String, onSuccess: () -> Unit) { mApi.unFollowForum(bbsId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - onSuccess.invoke() - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + onSuccess.invoke() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorActivity.kt b/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorActivity.kt index 8857cffbd6..f882803f81 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorActivity.kt @@ -44,6 +44,7 @@ class ApplyModeratorActivity : ToolBarActivity() { updateStatusBarColor(R.color.background_white, R.color.background_white) } + private fun setStatusBarTransparent() { DisplayUtils.transparentStatusBar(this) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorFragment.kt index f2744f05f9..16dc8b33aa 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/moderator/ApplyModeratorFragment.kt @@ -106,7 +106,8 @@ class ApplyModeratorFragment : ToolbarFragment() { val currentActivity = AppManager.getInstance().currentActivity() AvoidOnResultManager.getInstance(currentActivity as AppCompatActivity) .startForResult( - ShellActivity.getIntent(requireContext(), ShellActivity.Type.REAL_NAME_INFO, null), object : + ShellActivity.getIntent(requireContext(), ShellActivity.Type.REAL_NAME_INFO, null), + object : Callback { override fun onActivityResult(resultCode: Int, data: Intent?) { Utils.log(resultCode) @@ -202,10 +203,10 @@ class ApplyModeratorFragment : ToolbarFragment() { NewLogUtils.logApplyModeratorFApplyOrQQClick("click_apply", UserManager.getInstance().userId) mViewModel?.applyModerator({ ApplyModeratorDialogFragment.show( - requireActivity() as AppCompatActivity, - mStatus.qqGroup, - mStatus.qqGroupKey, - tag ?: "" + requireActivity() as AppCompatActivity, + mStatus.qqGroup, + mStatus.qqGroupKey, + tag ?: "" ) }, { Utils.toast(requireContext(), R.string.loading_failed_hint) diff --git a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListActivity.kt b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListActivity.kt index 13f22100bd..b05587aee5 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListActivity.kt @@ -11,14 +11,26 @@ import com.gh.gamecenter.common.utils.updateStatusBarColor class ModeratorListActivity : ToolBarActivity() { companion object { - fun getIntent(context: Context, bbsId: String, bbsName: String, bbsType: String, entrance: String, path: String): Intent { + fun getIntent( + context: Context, + bbsId: String, + bbsName: String, + bbsType: String, + entrance: String, + path: String + ): Intent { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) bundle.putString(EntranceConsts.KEY_PATH, path) bundle.putString(EntranceConsts.KEY_BBS_ID, bbsId) bundle.putString(EntranceConsts.KEY_NAME, bbsName) bundle.putString(EntranceConsts.KEY_TYPE, bbsType) - return getTargetIntent(context, ModeratorListActivity::class.java, ModeratorListFragment::class.java, bundle) + return getTargetIntent( + context, + ModeratorListActivity::class.java, + ModeratorListFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListAdapter.kt index d0e4969a8e..152d5a92cf 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorListAdapter.kt @@ -15,7 +15,8 @@ import com.gh.gamecenter.entity.PersonalEntity import com.gh.gamecenter.login.user.UserManager import com.lightgame.adapter.BaseRecyclerAdapter -class ModeratorListAdapter(context: Context, val mViewModel: ModeratorListViewModel?) : BaseRecyclerAdapter(context) { +class ModeratorListAdapter(context: Context, val mViewModel: ModeratorListViewModel?) : + BaseRecyclerAdapter(context) { val datas = ArrayList() fun setListData(datas: ArrayList) { @@ -43,9 +44,15 @@ class ModeratorListAdapter(context: Context, val mViewModel: ModeratorListViewMo labelTv.text = personalEntity.nameLabel labelTv.visibility = if (mHasNameLabel) View.VISIBLE else View.GONE followTv.background = - if (personalEntity.me.isFollower) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.bg_forum_follow.toDrawable(mContext) + if (personalEntity.me.isFollower) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.bg_forum_follow.toDrawable( + mContext + ) followTv.text = if (personalEntity.me.isFollower) "已关注" else "关注" - followTv.setTextColor(if (personalEntity.me.isFollower) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor(mContext)) + followTv.setTextColor( + if (personalEntity.me.isFollower) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor( + mContext + ) + ) followTv.goneIf(personalEntity.id == UserManager.getInstance().userId) @@ -84,5 +91,6 @@ class ModeratorListAdapter(context: Context, val mViewModel: ModeratorListViewMo } } - class ModeratorItemViewHolder(val binding: ModeratorListItemBinding) : BaseRecyclerViewHolder(binding.root) + class ModeratorItemViewHolder(val binding: ModeratorListItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorTaskAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorTaskAdapter.kt index 93107ef3d3..255ad2f77b 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorTaskAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/moderator/ModeratorTaskAdapter.kt @@ -39,9 +39,15 @@ class ModeratorTaskAdapter(context: Context) : taskNameTv.text = taskEntity.taskName taskIconIv.setImageDrawable(taskEntity.taskIcon.toDrawable()) finishTv.background = - if (taskEntity.finishedTask) R.drawable.bg_moderator_task_disabled.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) + if (taskEntity.finishedTask) R.drawable.bg_moderator_task_disabled.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) finishTv.text = if (taskEntity.finishedTask) "已完成" else "去完成" - finishTv.setTextColor(if (taskEntity.finishedTask) R.color.text_subtitleDesc.toColor(mContext) else R.color.white.toColor(mContext)) + finishTv.setTextColor( + if (taskEntity.finishedTask) R.color.text_subtitleDesc.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) finishTv.setOnClickListener(taskEntity.taskAction) taskDesTv.setOnClickListener(taskEntity.taskDesAction) diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListAdapter.kt index c0590485f6..83c254cdcc 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListAdapter.kt @@ -294,7 +294,7 @@ class ForumContentSearchListAdapter( timeTv.text = TimeUtils.getFormatTime(answer.time ?: 0, "yyyy-MM-dd") } if (answer.type == "question") { - forumSearchHolder.binding.countTv.text = "${answer.count.answer + answer.count.reply }评论" + forumSearchHolder.binding.countTv.text = "${answer.count.answer + answer.count.reply}评论" forumSearchHolder.binding.contentTv.visibility = View.GONE val title = answer.questions.title ?: "" val spannableStringBuilder = SpannableStringBuilder(" ") diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListFragment.kt index 36c34351a9..d020b13ec3 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/ForumContentSearchListFragment.kt @@ -24,7 +24,9 @@ class ForumContentSearchListFragment : ListFragment { return mAdapter - ?: ForumContentSearchListAdapter(requireContext(), mListViewModel, "${mEntrance}+(搜索)").apply { mAdapter = this } + ?: ForumContentSearchListAdapter(requireContext(), mListViewModel, "${mEntrance}+(搜索)").apply { + mAdapter = this + } } override fun provideListViewModel(): ForumContentSearchListViewModel { @@ -90,9 +92,9 @@ class ForumContentSearchListFragment : ListFragment(application) { +class ForumContentSearchListViewModel(application: Application, val bbsId: String) : + ListViewModel(application) { var searchKey = "" var mSort = "" diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultFragment.kt index e58d0e6d88..fb6583d6e9 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultFragment.kt @@ -78,7 +78,13 @@ class ForumOrUserSearchDefaultFragment : SearchDefaultFragment() { headTitle.textSize = 16F headActionTv.text = "清空" headActionTv.setTextColor(R.color.text_subtitleDesc.toColor(requireContext())) - headActionTv.setCompoundDrawablesWithIntrinsicBounds(VectorDrawableCompat.create(resources, R.drawable.search_history_delete, null), null, null, null) + headActionTv.setCompoundDrawablesWithIntrinsicBounds( + VectorDrawableCompat.create( + resources, + R.drawable.search_history_delete, + null + ), null, null, null + ) headActionTv.setOnClickListener { DialogHelper.showCenterWarningDialog(requireContext(), "清空记录", "确定清空历史搜索记录?", confirmClickCallback = { mSearchDao.deleteAll() diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultViewModel.kt index 7b3b178a43..bf231999ed 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/ForumOrUserSearchDefaultViewModel.kt @@ -16,27 +16,30 @@ class ForumOrUserSearchDefaultViewModel(application: Application) : AndroidViewM val hotContentLiveData = MutableLiveData>() - fun getForumSearchHotContent(){ - Observable.zip( getHotSearch(), getHotContent(), BiFunction, List, ArrayList> { t1, t2 -> - val dataList = arrayListOf() - val forumRank = SettingsEntity.Search.RankList() - forumRank.title = "热门论坛" - val forumContent = mutableListOf() - t1.forEachIndexed{_ , hotSearch -> - val content = hotSearch.toRankContent() - forumContent.add(content) - } - forumRank.content = forumContent - val contentRank = SettingsEntity.Search.RankList() - contentRank.title = "热门内容" - t2.forEachIndexed { _, rankContent -> - rankContent.name = rankContent.title - } - contentRank.content = t2 - dataList.add(forumRank) - dataList.add(contentRank) - dataList - }).compose(observableToMain()) + fun getForumSearchHotContent() { + Observable.zip( + getHotSearch(), + getHotContent(), + BiFunction, List, ArrayList> { t1, t2 -> + val dataList = arrayListOf() + val forumRank = SettingsEntity.Search.RankList() + forumRank.title = "热门论坛" + val forumContent = mutableListOf() + t1.forEachIndexed { _, hotSearch -> + val content = hotSearch.toRankContent() + forumContent.add(content) + } + forumRank.content = forumContent + val contentRank = SettingsEntity.Search.RankList() + contentRank.title = "热门内容" + t2.forEachIndexed { _, rankContent -> + rankContent.name = rankContent.title + } + contentRank.content = t2 + dataList.add(forumRank) + dataList.add(contentRank) + dataList + }).compose(observableToMain()) .subscribe(object : Response>() { override fun onResponse(response: List?) { super.onResponse(response) @@ -48,7 +51,7 @@ class ForumOrUserSearchDefaultViewModel(application: Application) : AndroidViewM } - private fun getHotSearch(): Observable> { + private fun getHotSearch(): Observable> { return RetrofitManager.getInstance().api .hotSearches } diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListAdapter.kt index 1008b2ba19..39b23906da 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListAdapter.kt @@ -72,9 +72,15 @@ class UserSearchListAdapter(context: Context, val mEntrance: String, val mViewMo binding.userSignatureTv.text = if (entity.introduce.isNullOrEmpty()) "这是一个很神秘的崽~" else entity.introduce binding.userFansCountTv.text = "${entity.count.fans} 粉丝" binding.attentionTv.background = - if (entity.me.isFollower) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.bg_forum_follow.toDrawable(mContext) + if (entity.me.isFollower) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.bg_forum_follow.toDrawable( + mContext + ) binding.attentionTv.text = if (entity.me.isFollower) "已关注" else "关注" - binding.attentionTv.setTextColor(if (entity.me.isFollower) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor(mContext)) + binding.attentionTv.setTextColor( + if (entity.me.isFollower) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor( + mContext + ) + ) if (entity.id == UserManager.getInstance().userId) { binding.attentionTv.text = "自己" binding.attentionTv.setTextColor(ContextCompat.getColor(mContext, R.color.text_subtitleDesc)) diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListFragment.kt index 361adafc32..2dec7fe798 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListFragment.kt @@ -21,7 +21,7 @@ class UserSearchListFragment : ListFragment { return mAdapter - ?: UserSearchListAdapter(requireContext(), mEntrance, mListViewModel).apply { mAdapter = this } + ?: UserSearchListAdapter(requireContext(), mEntrance, mListViewModel).apply { mAdapter = this } } override fun isAutomaticLoad(): Boolean = false diff --git a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListViewModel.kt b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListViewModel.kt index a95cbe5def..698bc790c5 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/search/UserSearchListViewModel.kt @@ -16,7 +16,8 @@ import okhttp3.ResponseBody import org.greenrobot.eventbus.EventBus import retrofit2.HttpException -class UserSearchListViewModel(application: Application) : ListViewModel(application) { +class UserSearchListViewModel(application: Application) : + ListViewModel(application) { var searchKey = "" override fun provideDataObservable(page: Int): Observable> { return RetrofitManager.getInstance().api.searchUsers(searchKey, page) @@ -46,25 +47,25 @@ class UserSearchListViewModel(application: Application) : ListViewModel() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - if (isFollow) { - Utils.toast(getApplication(), R.string.concern_success) - } else { - Utils.toast(getApplication(), R.string.concern_already_cancel) - } - callback.invoke() - EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + if (isFollow) { + Utils.toast(getApplication(), R.string.concern_success) + } else { + Utils.toast(getApplication(), R.string.concern_already_cancel) } + callback.invoke() + EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - Utils.toast(getApplication(), R.string.loading_failed_hint) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + Utils.toast(getApplication(), R.string.loading_failed_hint) + } + }) } fun getLinkPageSize(): Int { diff --git a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt index 5d833664c8..65ad168bfd 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/HomeSearchToolWrapperFragment.kt @@ -207,7 +207,10 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { if (isContentStyleChanged) { updateIndicatorDrawable() - DisplayUtils.setLightStatusBar(requireActivity(), !mIsDisplayingLightContent && !mIsDarkModeOn) + DisplayUtils.setLightStatusBar( + requireActivity(), + !mIsDisplayingLightContent && !mIsDarkModeOn + ) } mTabTitleList[position].run { @@ -277,10 +280,12 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { tab.customView = tabViewBinding.root tab.view.setPadding(0, 0, 0, 0) if (i == 0) { - tab.view.layoutParams = (tab.view.layoutParams as LinearLayout.LayoutParams).apply { setMargins(10F.dip2px(), 0, 0, 0) } + tab.view.layoutParams = + (tab.view.layoutParams as LinearLayout.LayoutParams).apply { setMargins(10F.dip2px(), 0, 0, 0) } } if (i == mBinding?.tabLayout?.tabCount!! - 1) { - tab.view.layoutParams = (tab.view.layoutParams as LinearLayout.LayoutParams).apply { setMargins(0, 0, 10F.dip2px(), 0) } + tab.view.layoutParams = + (tab.view.layoutParams as LinearLayout.LayoutParams).apply { setMargins(0, 0, 10F.dip2px(), 0) } } } } @@ -307,7 +312,8 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { currentTab?.offsetRatio = offset / totalHeight.toFloat() if ((currentTab?.isTopViewShow == true && offset >= totalHeight) - || currentTab?.isSlideEmpty == true) { + || currentTab?.isSlideEmpty == true + ) { currentTab.isTopViewShow = false currentTab.primaryColor = backgroundWhiteColor currentTab.useLightStyle = false @@ -374,7 +380,11 @@ class HomeSearchToolWrapperFragment : SearchToolWrapperFragment() { currentTab.currentSelectColor = color if (currentTab.isTopViewShow) { val colorInBetween = - ColorUtils.blendARGB(color, R.color.background_white.toColor(requireContext()), currentTab.offsetRatio) + ColorUtils.blendARGB( + color, + R.color.background_white.toColor(requireContext()), + currentTab.offsetRatio + ) currentTab.primaryColor = colorInBetween updateAppBarStyle(colorInBetween, colorInBetween != R.color.background_white.toColor(requireContext())) } diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperRepository.kt b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperRepository.kt index a25ddaecec..1777da21ce 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperRepository.kt @@ -22,7 +22,7 @@ class MainWrapperRepository { fun getNavBarLiveData() = mNavBar @SuppressLint("CheckResult") - fun getHomeNavBar() { + fun getHomeNavBar() { mSensitiveApi.getHomeNavBarV2(HaloApp.getInstance().channel, BuildConfig.VERSION_NAME) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperViewModel.kt b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperViewModel.kt index effcb4f12c..caac110004 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperViewModel.kt @@ -22,7 +22,8 @@ import com.halo.assistant.HaloApp import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class MainWrapperViewModel(application: Application, repository: MainWrapperRepository) : AndroidViewModel(application) { +class MainWrapperViewModel(application: Application, repository: MainWrapperRepository) : + AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api private val mSensitiveApi = RetrofitManager.getInstance().api diff --git a/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt index 7295aa078e..cb9c6fa1ca 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt @@ -43,35 +43,65 @@ class WelcomeDialogFragment : BaseDialogFragment() { HaloApp.put(Constants.WELCOME_DIALOG_ID, mWelcomeEntity?.id) HaloApp.put(Constants.WELCOME_DIALOG_LINK_TITLE, mWelcomeEntity?.text) LogUtils.uploadWelcomeDialog("click", mWelcomeEntity?.id, mWelcomeEntity?.text) - + when (mWelcomeEntity?.type) { EntranceConsts.HOST_ARTICLE -> { - DirectUtils.directToArticle(requireContext(), mWelcomeEntity?.link!!, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToArticle( + requireContext(), + mWelcomeEntity?.link!!, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_GAME -> { - DirectUtils.directToGameDetail(requireContext(), mWelcomeEntity?.link!!, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToGameDetail( + requireContext(), + mWelcomeEntity?.link!!, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_COLUMN -> { - DirectUtils.directToSubject(requireContext(), mWelcomeEntity?.link!!, null, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToSubject( + requireContext(), + mWelcomeEntity?.link!!, + null, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_QUESTION -> { - DirectUtils.directToQuestionDetail(requireContext(), mWelcomeEntity?.link!!, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToQuestionDetail( + requireContext(), + mWelcomeEntity?.link!!, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_ANSWER -> { - DirectUtils.directToAnswerDetail(requireContext(), mWelcomeEntity?.link!!, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToAnswerDetail( + requireContext(), + mWelcomeEntity?.link!!, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_WEB -> { - DirectUtils.directToWebView(requireContext(), mWelcomeEntity?.link!!, EntranceConsts.ENTRANCE_WELCOME) + DirectUtils.directToWebView( + requireContext(), + mWelcomeEntity?.link!!, + EntranceConsts.ENTRANCE_WELCOME + ) } EntranceConsts.HOST_QQ -> { DirectUtils.directToQqConversation(requireContext(), mWelcomeEntity?.link!!) } EntranceConsts.HOST_COMMUNITY -> { - DirectUtils.directToCommunity(requireContext(), CommunityEntity(mWelcomeEntity?.link!!, mWelcomeEntity?.text!!)) + DirectUtils.directToCommunity( + requireContext(), + CommunityEntity(mWelcomeEntity?.link!!, mWelcomeEntity?.text!!) + ) } // else -> DialogUtils.showLowVersionDialog(context) - else -> DirectUtils.directToLinkPage(requireContext(), mWelcomeEntity - ?: WelcomeDialogEntity(), EntranceConsts.ENTRANCE_WELCOME, "") + else -> DirectUtils.directToLinkPage( + requireContext(), mWelcomeEntity + ?: WelcomeDialogEntity(), EntranceConsts.ENTRANCE_WELCOME, "" + ) } mDismissByClickImage = true diff --git a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt index 2aa6ebd727..05d14be663 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt @@ -43,12 +43,21 @@ class GameItemViewHolder(var binding: GameItemBinding) : BaseRecyclerViewHolder< BindingAdapters.setGameName(gameName, entity, isShowPlatform, isShowSuffix) BindingAdapters.setTextSize(gameRating, if (entity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, entity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (entity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (entity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.setPadding(0, 0, if (entity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (entity.commentCount > 3) { if (entity.star == 10.0F) "10" else entity.star.toString() } else "" - gameRating.setTextColor(if (entity.commentCount > 3) R.color.theme_font.toColor(root.context) else R.color.theme.toColor(root.context)) + gameRating.setTextColor( + if (entity.commentCount > 3) R.color.theme_font.toColor(root.context) else R.color.theme.toColor( + root.context + ) + ) gameDes.text = entity.decoratedDes recommendStar.rating = entity.recommendStar.toFloat() initGameSubtitle(entity, gameSubtitleTv, gameDesSpace, root, forceShowSubtitle) @@ -77,7 +86,13 @@ class GameItemViewHolder(var binding: GameItemBinding) : BaseRecyclerViewHolder< } @JvmStatic - fun initGameSubtitle(entity: GameEntity, gameSubtitleTv: TextView, gameDesSpace: Space, rootContainer: ConstraintLayout, forceShowSubtitle: Boolean = false) { + fun initGameSubtitle( + entity: GameEntity, + gameSubtitleTv: TextView, + gameDesSpace: Space, + rootContainer: ConstraintLayout, + forceShowSubtitle: Boolean = false + ) { gameSubtitleTv.visibility = View.GONE if ((entity.serverLabel == null && entity.subtitle.isNotEmpty() && !entity.advanceDownload) || (forceShowSubtitle && entity.subtitle.isNotEmpty())) { gameSubtitleTv.run { @@ -111,7 +126,12 @@ class GameItemViewHolder(var binding: GameItemBinding) : BaseRecyclerViewHolder< } ConstraintSet().apply { clone(rootContainer) - connect(R.id.game_name, ConstraintSet.END, if (entity.serverLabel != null && !entity.advanceDownload && !forceShowSubtitle) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (entity.serverLabel != null && !entity.advanceDownload && !forceShowSubtitle) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(rootContainer) } } diff --git a/app/src/main/java/com/gh/gamecenter/game/GameNavigationAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameNavigationAdapter.kt index 501710e130..f3f99a325a 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameNavigationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameNavigationAdapter.kt @@ -21,7 +21,8 @@ import com.gh.gamecenter.databinding.ItemGameNavigationBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.GameNavigationEntity -class GameNavigationAdapter(val mContext: Context, val blockId: String, val blockName: String) : ListAdapter(mContext) { +class GameNavigationAdapter(val mContext: Context, val blockId: String, val blockName: String) : + ListAdapter(mContext) { var exposureEventList: ArrayList? = null private var mRecordMap = SPUtils.getMap(Constants.SP_GAME_NAVIGATION) @@ -123,5 +124,6 @@ class GameNavigationAdapter(val mContext: Context, val blockId: String, val bloc const val divider = "|" } - class GameNavigationViewHolder(val binding: ItemGameNavigationBinding) : BaseRecyclerViewHolder(binding.root) + class GameNavigationViewHolder(val binding: ItemGameNavigationBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/game/bigimagerecommend/BigImageRecommendViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/bigimagerecommend/BigImageRecommendViewHolder.kt index dd706ffc0b..f7da09fdc4 100644 --- a/app/src/main/java/com/gh/gamecenter/game/bigimagerecommend/BigImageRecommendViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/bigimagerecommend/BigImageRecommendViewHolder.kt @@ -8,7 +8,8 @@ import com.gh.gamecenter.databinding.BigImageRecommendItemBinding import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.entity.SubjectEntity -class BigImageRecommendViewHolder(val binding: BigImageRecommendItemBinding) : BaseRecyclerViewHolder(binding.root) { +class BigImageRecommendViewHolder(val binding: BigImageRecommendItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindBigImageRecommend(subjectEntity: SubjectEntity, entrance: String, clickCallback: (LinkEntity) -> Unit) { binding.run { @@ -19,7 +20,8 @@ class BigImageRecommendViewHolder(val binding: BigImageRecommendItemBinding) : B recommendTextOne.text = subjectEntity.firstLineRecommend recommendTextTwo.text = subjectEntity.secondLineRecommend root.setOnClickListener { - val linkEntity = LinkEntity(link = subjectEntity.id, type = subjectEntity.type, linkText = subjectEntity.columnName) + val linkEntity = + LinkEntity(link = subjectEntity.id, type = subjectEntity.type, linkText = subjectEntity.columnName) clickCallback.invoke(linkEntity) DirectUtils.directToLinkPage(root.context, linkEntity, entrance, "") } diff --git a/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionAdapter.kt index 3cf3ed0f77..f2fbf17841 100644 --- a/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionAdapter.kt @@ -11,10 +11,11 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity import com.lightgame.adapter.BaseRecyclerAdapter -class GameColumnCollectionAdapter(context: Context, - private var mSubjectEntity: SubjectEntity, - private var mClickClosure: (position: Int, gameEntity: GameEntity) -> Unit) - : BaseRecyclerAdapter(context) { +class GameColumnCollectionAdapter( + context: Context, + private var mSubjectEntity: SubjectEntity, + private var mClickClosure: (position: Int, gameEntity: GameEntity) -> Unit +) : BaseRecyclerAdapter(context) { var columnCollectionHeight = 0 @@ -37,10 +38,11 @@ class GameColumnCollectionAdapter(context: Context, ImageUtils.display(holder.binding.columnCollectionImage, data.image) holder.binding.columnCollectionImage.loadingCallback = object : WrapContentDraweeView.LoadingCallback { override fun loaded() { - holder.binding.columnCollectionImage.layoutParams = holder.binding.columnCollectionImage.layoutParams.apply { - height = columnCollectionHeight - width = (holder.binding.columnCollectionImage.aspectRatio * columnCollectionHeight).toInt() - } + holder.binding.columnCollectionImage.layoutParams = + holder.binding.columnCollectionImage.layoutParams.apply { + height = columnCollectionHeight + width = (holder.binding.columnCollectionImage.aspectRatio * columnCollectionHeight).toInt() + } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionViewHolder.kt index 6b21bcd14b..da0b26eafc 100644 --- a/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/columncollection/GameColumnCollectionViewHolder.kt @@ -11,9 +11,13 @@ import com.gh.gamecenter.databinding.GameColumnCollectionListBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity -class GameColumnCollectionViewHolder(val binding: GameColumnCollectionListBinding) : BaseRecyclerViewHolder(binding.root) { +class GameColumnCollectionViewHolder(val binding: GameColumnCollectionListBinding) : + BaseRecyclerViewHolder(binding.root) { - fun bindColumnCollection(columnCollection: SubjectEntity, clickClosure: (position: Int, gameEntity: GameEntity) -> Unit) { + fun bindColumnCollection( + columnCollection: SubjectEntity, + clickClosure: (position: Int, gameEntity: GameEntity) -> Unit + ) { val context = binding.root.context val dataList = columnCollection.data!! @@ -29,8 +33,14 @@ class GameColumnCollectionViewHolder(val binding: GameColumnCollectionListBindin var slideAdapter = binding.columnCollectionList.adapter if (slideAdapter == null) { slideAdapter = GameColumnCollectionAdapter(context, columnCollection, clickClosure) - binding.columnCollectionList.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) - binding.columnCollectionList.addItemDecoration(SpacingItemDecoration(notDecorateTheFirstItem = true, left = 12F.dip2px())) + binding.columnCollectionList.layoutManager = + LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) + binding.columnCollectionList.addItemDecoration( + SpacingItemDecoration( + notDecorateTheFirstItem = true, + left = 12F.dip2px() + ) + ) binding.columnCollectionList.adapter = slideAdapter } else { (slideAdapter as GameColumnCollectionAdapter).checkResetData(columnCollection) diff --git a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailActivity.kt index e7fd0141cb..8a261e6d91 100644 --- a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailActivity.kt @@ -17,7 +17,11 @@ class ColumnCollectionDetailActivity : ToolBarActivity() { } override fun provideNormalIntent(): Intent { - return getTargetIntent(this, ColumnCollectionDetailActivity::class.java, ColumnCollectionDetailFragment::class.java) + return getTargetIntent( + this, + ColumnCollectionDetailActivity::class.java, + ColumnCollectionDetailFragment::class.java + ) } override fun isAutoResetViewBackgroundEnabled(): Boolean = true @@ -40,13 +44,24 @@ class ColumnCollectionDetailActivity : ToolBarActivity() { /** * [position] 当专题合集是排行榜(多专题)类型时的起始位置 */ - fun getIntent(context: Context, collectionId: String, position: Int = -1, entrance: String = "", columnName: String = ""): Intent { + fun getIntent( + context: Context, + collectionId: String, + position: Int = -1, + entrance: String = "", + columnName: String = "" + ): Intent { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) bundle.putString(EntranceConsts.KEY_COLLECTION_ID, collectionId) bundle.putInt(EntranceConsts.KEY_POSITION, position) bundle.putString(EntranceConsts.KEY_COLUMNNAME, columnName) - return getTargetIntent(context, CatalogActivity::class.java, ColumnCollectionDetailFragment::class.java, bundle) + return getTargetIntent( + context, + CatalogActivity::class.java, + ColumnCollectionDetailFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt index 0782906ade..4f698728cb 100644 --- a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt @@ -54,7 +54,8 @@ class ColumnCollectionDetailFragment : LazyListFragment(application) { +class ColumnCollectionDetailViewModel( + application: Application, + private val mCollectionId: String +) : ListViewModel(application) { private val mSensitiveApi = RetrofitManager.getInstance().api @@ -42,24 +44,24 @@ class ColumnCollectionDetailViewModel(application: Application, @SuppressLint("CheckResult") fun getGameColumnCollection() { mSensitiveApi.getGameColumnCollection(mCollectionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: GameColumnCollection?) { - super.onResponse(response) - columnCollection.postValue(response) - loadData() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: GameColumnCollection?) { + super.onResponse(response) + columnCollection.postValue(response) + loadData() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - if (e != null && e.code() == 404) { - mLoadStatusLiveData.setValue(LoadStatus.INIT_EXCEPTION) - } else { - mLoadStatusLiveData.setValue(LoadStatus.INIT_FAILED) - } + override fun onFailure(e: HttpException?) { + super.onFailure(e) + if (e != null && e.code() == 404) { + mLoadStatusLiveData.setValue(LoadStatus.INIT_EXCEPTION) + } else { + mLoadStatusLiveData.setValue(LoadStatus.INIT_FAILED) } - }) + } + }) } override fun load(loadType: LoadType) { diff --git a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailActivity.kt index 4ee44a7942..622aad84dd 100644 --- a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailActivity.kt @@ -11,7 +11,11 @@ import com.gh.gamecenter.common.utils.updateStatusBarColor class CommonCollectionDetailActivity : ToolBarActivity() { override fun provideNormalIntent(): Intent { - return getTargetIntent(this, CommonCollectionDetailActivity::class.java, CommonCollectionDetailFragment::class.java) + return getTargetIntent( + this, + CommonCollectionDetailActivity::class.java, + CommonCollectionDetailFragment::class.java + ) } override fun isAutoResetViewBackgroundEnabled(): Boolean = true @@ -24,7 +28,10 @@ class CommonCollectionDetailActivity : ToolBarActivity() { override fun getBusinessId(): Pair { val fragment = targetFragment as CommonCollectionDetailFragment return if (fragment.arguments != null) { - Pair(fragment.requireArguments().getString(EntranceConsts.KEY_COLLECTION_ID) ?: "", fragment.requireArguments().getString(EntranceConsts.KEY_BLOCK_ID) ?: "") + Pair( + fragment.requireArguments().getString(EntranceConsts.KEY_COLLECTION_ID) ?: "", + fragment.requireArguments().getString(EntranceConsts.KEY_BLOCK_ID) ?: "" + ) } else { super.getBusinessId() } @@ -44,7 +51,12 @@ class CommonCollectionDetailActivity : ToolBarActivity() { bundle.putString(EntranceConsts.KEY_BLOCK_ID, blockId) bundle.putString(EntranceConsts.KEY_BLOCK_NAME, blockName) bundle.putString(EntranceConsts.KEY_COLLECTION_ID, collectionId) - return getTargetIntent(context, CommonCollectionDetailActivity::class.java, CommonCollectionDetailFragment::class.java, bundle) + return getTargetIntent( + context, + CommonCollectionDetailActivity::class.java, + CommonCollectionDetailFragment::class.java, + bundle + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailAdapter.kt index 55076e47bd..12f1bace1a 100644 --- a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailAdapter.kt @@ -30,7 +30,10 @@ class CommonCollectionDetailAdapter( private val mExposureEventSparseArray = SparseArray() - override fun areItemsTheSame(oldItem: CommonCollectionContentEntity?, newItem: CommonCollectionContentEntity?): Boolean { + override fun areItemsTheSame( + oldItem: CommonCollectionContentEntity?, + newItem: CommonCollectionContentEntity? + ): Boolean { return oldItem == newItem } diff --git a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailFragment.kt index f730c5bbe6..4934665b25 100644 --- a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CommonCollectionDetailFragment.kt @@ -47,7 +47,14 @@ class CommonCollectionDetailFragment : LazyListFragment { if (mAdapter == null) { - mAdapter = CommonCollectionDetailAdapter(requireContext(), mCollectionStyle, mViewModel, mBlockId, mBlockName, mEntrance) + mAdapter = CommonCollectionDetailAdapter( + requireContext(), + mCollectionStyle, + mViewModel, + mBlockId, + mBlockName, + mEntrance + ) } return mAdapter!! } diff --git a/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt index 9ae6d78a40..623b34a4ab 100644 --- a/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/doublecard/DoubleCardListAdapter.kt @@ -93,5 +93,6 @@ class DoubleCardListAdapter( countAndKey = Pair(subjectEntity.data?.size ?: 0, dataIds) } - inner class DoubleCardItemViewHolder(val binding: GameDoubleCardItemBinding): BaseRecyclerViewHolder(binding.root) + inner class DoubleCardItemViewHolder(val binding: GameDoubleCardItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/game/gallery/GameGallerySlideViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/gallery/GameGallerySlideViewHolder.kt index e37f0c2a16..13339af720 100644 --- a/app/src/main/java/com/gh/gamecenter/game/gallery/GameGallerySlideViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/gallery/GameGallerySlideViewHolder.kt @@ -19,8 +19,7 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity import com.lightgame.adapter.BaseRecyclerAdapter -class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) - : BaseRecyclerViewHolder(binding.root) { +class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) : BaseRecyclerViewHolder(binding.root) { private var mCachedSubject: SubjectEntity? = null private var mRecyclerViewList: ArrayList? = null @@ -29,10 +28,12 @@ class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) private var mExposureClosure: ((ExposureEvent) -> Unit)? = null private var mBasicExposureSource: List? = null - fun bindView(subjectEntity: SubjectEntity, - basicExposureSource: List, - entrance: String, - exposureClosure: (ExposureEvent) -> Unit) { + fun bindView( + subjectEntity: SubjectEntity, + basicExposureSource: List, + entrance: String, + exposureClosure: (ExposureEvent) -> Unit + ) { if (subjectEntity.data == null) return resumeScrolling() @@ -44,7 +45,8 @@ class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) mBasicExposureSource = basicExposureSource mCachedSubject = subjectEntity - mRecyclerViewList = arrayListOf(binding.firstRecyclerView, binding.secondRecyclerView, binding.thirdRecyclerView) + mRecyclerViewList = + arrayListOf(binding.firstRecyclerView, binding.secondRecyclerView, binding.thirdRecyclerView) for ((index, recyclerView) in mRecyclerViewList!!.withIndex()) { recyclerView.layoutManager = LinearLayoutManager(binding.root.context, RecyclerView.HORIZONTAL, false) @@ -76,7 +78,8 @@ class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) binding.container.pauseScrolling() } - inner class GameGallerySlideAdapter(context: Context, var gameList: ArrayList) : BaseRecyclerAdapter(context) { + inner class GameGallerySlideAdapter(context: Context, var gameList: ArrayList) : + BaseRecyclerAdapter(context) { override fun getItemCount() = Int.MAX_VALUE @@ -101,11 +104,17 @@ class GameGallerySlideViewHolder(val binding: GameGallerySlideItemBinding) holder.bindView(gameEntity) } - inner class GameGallerySlideItemViewHolder(val binding: ItemWithinGameGallerySlideBinding) : BaseRecyclerViewHolder(binding.root) { + inner class GameGallerySlideItemViewHolder(val binding: ItemWithinGameGallerySlideBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindView(gameEntity: GameEntity) { binding.iconIv.displayGameIcon(gameEntity) binding.iconIv.setOnClickListener { - GameDetailActivity.startGameDetailActivity(binding.root.context, gameEntity.id, mEntrance, gameEntity.exposureEvent) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + gameEntity.id, + mEntrance, + gameEntity.exposureEvent + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/gallery/GameGalleryViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/gallery/GameGalleryViewHolder.kt index a559ae0cac..c69a436ce7 100644 --- a/app/src/main/java/com/gh/gamecenter/game/gallery/GameGalleryViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/gallery/GameGalleryViewHolder.kt @@ -14,7 +14,7 @@ import com.gh.gamecenter.databinding.GameGalleryItemBinding import com.gh.gamecenter.entity.SubjectEntity class GameGalleryViewHolder(val cell: GameGalleryItemCell) : - BaseRecyclerViewHolder(cell) { + BaseRecyclerViewHolder(cell) { fun bindView( subjectEntity: SubjectEntity, diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt index 00d63c8983..313eadb370 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalAdapter.kt @@ -70,10 +70,20 @@ class GameHorizontalAdapter( val entranceResult: String val locationResult: String if (exposureEventList.isNullOrEmpty()) { - entranceResult = StringUtils.buildString(entrance, "+(", "游戏详情", "[", gameName, "]:大家都在玩[", (position + 1).toString(), "])") + entranceResult = StringUtils.buildString( + entrance, + "+(", + "游戏详情", + "[", + gameName, + "]:大家都在玩[", + (position + 1).toString(), + "])" + ) locationResult = StringUtils.buildString("游戏详情-", gameName, "-大家都在玩", ":", gameEntity.name) } else { - entranceResult = StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])") + entranceResult = + StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])") locationResult = StringUtils.buildString("游戏-专题-", mSubjectEntity.name, ":", gameEntity.name) } holder.itemView.setOnClickListener { diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalListViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalListViewHolder.kt index 3b0a98826b..c662180efa 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalListViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalListViewHolder.kt @@ -8,7 +8,8 @@ import com.gh.gamecenter.databinding.GameHorizontalListBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity -class GameHorizontalListViewHolder(val binding: GameHorizontalListBinding) : BaseRecyclerViewHolder(binding.root) { +class GameHorizontalListViewHolder(val binding: GameHorizontalListBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindHorizontalList(subjectEntity: SubjectEntity): GameHorizontalAdapter { val context = binding.root.context diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSimpleItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSimpleItemViewHolder.kt index b97499ca66..cf426c6db6 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSimpleItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSimpleItemViewHolder.kt @@ -7,7 +7,8 @@ import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.databinding.GameHorizontalSimpleItemBinding import com.gh.gamecenter.entity.GameEntity -class GameHorizontalSimpleItemViewHolder(val binding: GameHorizontalSimpleItemBinding) : BaseRecyclerViewHolder(binding.root) { +class GameHorizontalSimpleItemViewHolder(val binding: GameHorizontalSimpleItemBinding) : + BaseRecyclerViewHolder(binding.root) { companion object { @JvmStatic fun setHorizontalNameAndGravity(view: TextView, name: String?) { @@ -32,10 +33,10 @@ class GameHorizontalSimpleItemViewHolder(val binding: GameHorizontalSimpleItemBi if (width == 0) return null // 为零时,执行以下代码会进入死循环 val tvWidth = (width - tv.paddingLeft - tv.paddingRight).toFloat() val rawTextLines = rawText - .replace("\r".toRegex(), "") - .split("\n".toRegex()) - .dropLastWhile { it.isEmpty() } - .toTypedArray() + .replace("\r".toRegex(), "") + .split("\n".toRegex()) + .dropLastWhile { it.isEmpty() } + .toTypedArray() val sbNewText = StringBuilder() for (rawTextLine in rawTextLines) { if (tvPaint.measureText(rawTextLine) <= tvWidth) { diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideAdapter.kt index 6173fa362d..412534e9a9 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideAdapter.kt @@ -64,13 +64,15 @@ class GameHorizontalSlideAdapter( gameIcon.displayGameIcon(gameEntity) GameHorizontalSimpleItemViewHolder.setHorizontalNameAndGravity(gameName, gameEntity.name) } - holder.bindGameHorizontalItem(gameEntity,mSubjectEntity) + holder.bindGameHorizontalItem(gameEntity, mSubjectEntity) holder.itemView.setOnClickListener { val exposureEvent = exposureEventList?.safelyGetInRelease(position) if (exposureEvent != null) { GameDetailActivity.startGameDetailActivity( - mContext, gameEntity.id, - StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])"), traceEvent = exposureEvent + mContext, + gameEntity.id, + StringUtils.buildString("(游戏-专题:", mSubjectEntity.name, "-列表[", (position + 1).toString(), "])"), + traceEvent = exposureEvent ) } else { GameDetailActivity.startGameDetailActivity( @@ -112,6 +114,7 @@ class GameHorizontalSlideAdapter( } } } + fun notifyChildItem(packageName: String) { mSubjectEntity.data?.forEachIndexed { position, gameEntity -> gameEntity.getApk().forEach { apkEntity -> diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt index 33d39c2006..eadb179686 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt @@ -17,14 +17,15 @@ import com.gh.gamecenter.databinding.GameHorizontalListBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity -class GameHorizontalSlideListViewHolder(val binding: GameHorizontalListBinding) - : BaseRecyclerViewHolder(binding.root) { +class GameHorizontalSlideListViewHolder(val binding: GameHorizontalListBinding) : + BaseRecyclerViewHolder(binding.root) { private var mScrollListener: RecyclerView.OnScrollListener? = null private var mLastScrolledPosition = 0 // 上次记录的最后滚动位置 - fun bindHorizontalSlideList(subjectEntity: SubjectEntity, - offsetable: IOffsetable + fun bindHorizontalSlideList( + subjectEntity: SubjectEntity, + offsetable: IOffsetable ): GameHorizontalSlideAdapter { val context = binding.root.context var subjectAdapter = binding.recyclerView.adapter @@ -135,9 +136,10 @@ class GameHorizontalSlideListViewHolder(val binding: GameHorizontalListBinding) if (shouldShowFirstRemark && subjectEntity.typeStyle != "star") { // 这里显示一条假的线供上层 recyclerView 列表使用,因为写在 item 里面很复杂 binding.root.post { - binding.fakeRemarkLine.layoutParams = (binding.fakeRemarkLine.layoutParams as ConstraintLayout.LayoutParams).apply { - topMargin = getTopOfLineContainer(binding.recyclerView) + 2F.dip2px() // 这里加上的2F是点的边距 - } + binding.fakeRemarkLine.layoutParams = + (binding.fakeRemarkLine.layoutParams as ConstraintLayout.LayoutParams).apply { + topMargin = getTopOfLineContainer(binding.recyclerView) + 2F.dip2px() // 这里加上的2F是点的边距 + } } binding.fakeRemarkLine.visibility = View.VISIBLE } else { diff --git a/app/src/main/java/com/gh/gamecenter/game/imageslide/GameImageSlideViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/imageslide/GameImageSlideViewHolder.kt index 67a8eed230..7583a992e5 100644 --- a/app/src/main/java/com/gh/gamecenter/game/imageslide/GameImageSlideViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/imageslide/GameImageSlideViewHolder.kt @@ -20,10 +20,11 @@ class GameImageSlideViewHolder(val binding: GameImageSlideItemBinding) : BaseRec private var mScrollListener: RecyclerView.OnScrollListener? = null private var mLastScrolledPosition = 0 - fun bindImageSlide(entity: GameEntity, - imageClickListener: View.OnClickListener, - entrance: String, - offsetable: IOffsetable + fun bindImageSlide( + entity: GameEntity, + imageClickListener: View.OnClickListener, + entrance: String, + offsetable: IOffsetable ) { val context = binding.root.context @@ -116,8 +117,9 @@ class GameImageSlideViewHolder(val binding: GameImageSlideItemBinding) : BaseRec val startColor = "#" + DrawableView.convertAlphaKey(startAlpha.toInt()) + "0C1926" val endColor = "#" + DrawableView.convertAlphaKey(100) + "0C1926" binding.columnBackground.background = DrawableView.getGradientDrawable( - binding.columnBackground.width, - Color.parseColor(startColor), - Color.parseColor(endColor)) + binding.columnBackground.width, + Color.parseColor(startColor), + Color.parseColor(endColor) + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/game/imageslide/ImageSlideAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/imageslide/ImageSlideAdapter.kt index e75a2a72c1..3802913e0d 100644 --- a/app/src/main/java/com/gh/gamecenter/game/imageslide/ImageSlideAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/imageslide/ImageSlideAdapter.kt @@ -24,7 +24,8 @@ class ImageSlideAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameHorizontalSimpleItemViewHolder { val binding: GameHorizontalSimpleItemBinding = parent.toBinding() - val layoutParam = ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + val layoutParam = + ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) binding.root.layoutParams = layoutParam binding.gameName.setTextColor(Color.WHITE) return GameHorizontalSimpleItemViewHolder(binding) @@ -54,8 +55,10 @@ class ImageSlideAdapter( private fun skipGameDetail(gameEntity: GameEntity?, position: Int) { GameDetailActivity.startGameDetailActivity( - mContext, gameEntity, - StringUtils.buildString("($entrance:", subject.name, "-列表[", (position + 1).toString(), "])"), traceEvent = gameEntity?.exposureEvent + mContext, + gameEntity, + StringUtils.buildString("($entrance:", subject.name, "-列表[", (position + 1).toString(), "])"), + traceEvent = gameEntity?.exposureEvent ) } diff --git a/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt index 44ef8c4627..9e57497b6e 100644 --- a/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt @@ -60,7 +60,15 @@ class RankAdapter( override fun getItemCount() = mList.size override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RankGameItemViewHolder { - return RankGameItemViewHolder(RankGameItemBinding.bind(mLayoutInflater.inflate(R.layout.rank_game_item, parent, false))) + return RankGameItemViewHolder( + RankGameItemBinding.bind( + mLayoutInflater.inflate( + R.layout.rank_game_item, + parent, + false + ) + ) + ) } override fun onBindViewHolder(holder: RankGameItemViewHolder, position: Int) { @@ -74,7 +82,7 @@ class RankAdapter( getChildAt(i).visibility = View.GONE } - run outside@ { + run outside@{ gameEntity.tagStyle.forEachIndexed { index, tagStyleEntity -> if (index < childCount) { updateGameTagView(getChildAt(index) as TextView, tagStyleEntity) @@ -179,19 +187,20 @@ class RankAdapter( this@RankAdapter, entrance, "专题合集-排行榜-$columnName:${gameEntity.name}", - exposureEvent) + exposureEvent + ) DownloadItemUtils.updateDownloadButton(mContext, downloadBtn, gameEntity, false) } } - private fun getGameTagView(tagEntity: TagStyleEntity): TextView { + private fun getGameTagView(tagEntity: TagStyleEntity): TextView { return TextView(mContext).apply { updateGameTagView(this, tagEntity) } } - private fun updateGameTagView(textView: TextView, tagEntity: TagStyleEntity) { + private fun updateGameTagView(textView: TextView, tagEntity: TagStyleEntity) { textView.run { visibility = View.VISIBLE @@ -249,5 +258,5 @@ class RankAdapter( countAndKey = Pair(update.size, dataIds) } - inner class RankGameItemViewHolder(val binding: RankGameItemBinding): RecyclerView.ViewHolder(binding.root) + inner class RankGameItemViewHolder(val binding: RankGameItemBinding) : RecyclerView.ViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/game/rank/RankCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/rank/RankCollectionAdapter.kt index e172452510..40bab35353 100644 --- a/app/src/main/java/com/gh/gamecenter/game/rank/RankCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/rank/RankCollectionAdapter.kt @@ -22,7 +22,7 @@ import com.lightgame.download.DownloadEntity class RankCollectionAdapter( context: Context, private var mSubjectEntity: SubjectEntity, - private var clickClosure:(SubjectEntity)->Unit + private var clickClosure: (SubjectEntity) -> Unit ) : BaseRecyclerAdapter(context) { private val mViewHolderList = SparseArray() diff --git a/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadFragment.kt b/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadFragment.kt index 9c7dac1d26..be9568cef0 100644 --- a/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadFragment.kt @@ -334,7 +334,8 @@ class GameUploadFragment : ToolbarFragment() { override fun onSuccess(map: Map) { mPathMap.putAll(map) // 从90%开始增加 - val progress = 324 + 36 / (mIconAdapter!!.fileList.size + mAdapter!!.fileList.size + 1) * (mPathMap.size + 1) + val progress = + 324 + 36 / (mIconAdapter!!.fileList.size + mAdapter!!.fileList.size + 1) * (mPathMap.size + 1) mUploadDialog.updateProgress(progress) } @@ -362,19 +363,22 @@ class GameUploadFragment : ToolbarFragment() { } } - mUploadFileDisposable = OssUploadUtils.uploadFile(apkPath, OssUploadUtils.UploadType.GAME, object : OssUploadUtils.OnUploadFileListener { - override fun onSuccess(url: String) { - mApkUrl = url - mUploadProgressDisposable?.dispose() - mUploadFileDisposable?.dispose() - mUploadDialog.updateProgress(324) // 上传完APK就到90% - uploadPicture(getFileList()) - } + mUploadFileDisposable = OssUploadUtils.uploadFile( + apkPath, + OssUploadUtils.UploadType.GAME, + object : OssUploadUtils.OnUploadFileListener { + override fun onSuccess(url: String) { + mApkUrl = url + mUploadProgressDisposable?.dispose() + mUploadFileDisposable?.dispose() + mUploadDialog.updateProgress(324) // 上传完APK就到90% + uploadPicture(getFileList()) + } - override fun onError(e: Throwable?) { - mUploadDialog.uploadFail() - } - }) + override fun onError(e: Throwable?) { + mUploadDialog.uploadFail() + } + }) } //上传游戏 diff --git a/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadViewModel.kt index 796bf1e04e..a6d3af09d0 100644 --- a/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/game/upload/GameUploadViewModel.kt @@ -25,36 +25,36 @@ class GameUploadViewModel(application: Application) : AndroidViewModel(applicati //上传游戏 fun uploadGames(body: RequestBody) { RetrofitManager.getInstance() - .api.uploadGames(UserManager.getInstance().userId, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - upLoadSuccess.postValue(true) - } + .api.uploadGames(UserManager.getInstance().userId, body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + upLoadSuccess.postValue(true) + } - override fun onApiFailure(e: ApiResponse?) { - super.onApiFailure(e) - upLoadSuccess.postValue(false) - } - }) + override fun onApiFailure(e: ApiResponse?) { + super.onApiFailure(e) + upLoadSuccess.postValue(false) + } + }) } @SuppressLint("CheckResult") fun getUploadGamesTips() { RetrofitManager.getInstance() - .api.uploadGamesTips() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: JsonObject) { - val tips = data.get("text").asString - if(!tips.isNullOrEmpty()) { - uploadGameTips.postValue(tips) - } + .api.uploadGamesTips() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: JsonObject) { + val tips = data.get("text").asString + if (!tips.isNullOrEmpty()) { + uploadGameTips.postValue(tips) } - }) + } + }) } class Factory(private val mApplication: Application) : ViewModelProvider.NewInstanceFactory() { diff --git a/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalAdapter.kt index 337873f0c1..77f4571220 100644 --- a/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalAdapter.kt @@ -99,7 +99,10 @@ class GameVerticalAdapter( cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) diff --git a/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalSlideViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalSlideViewHolder.kt index 372748b70c..db2a15cdac 100644 --- a/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalSlideViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/vertical/GameVerticalSlideViewHolder.kt @@ -8,12 +8,15 @@ import com.gh.gamecenter.databinding.GameVerticalSlideItemBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectEntity -class GameVerticalSlideViewHolder(val binding: GameVerticalSlideItemBinding) : BaseRecyclerViewHolder(binding.root) { +class GameVerticalSlideViewHolder(val binding: GameVerticalSlideItemBinding) : + BaseRecyclerViewHolder(binding.root) { - fun bindVerticalSlide(verticalSlide: SubjectEntity, - itemClick: (Int, GameEntity) -> Unit, - transparentBackground: Boolean = false, - showGameIconGif: Boolean = true): SpanCountPagerSnapHelper { + fun bindVerticalSlide( + verticalSlide: SubjectEntity, + itemClick: (Int, GameEntity) -> Unit, + transparentBackground: Boolean = false, + showGameIconGif: Boolean = true + ): SpanCountPagerSnapHelper { val context = binding.root.context val spanCount = verticalSlide.list val snapHelper = SpanCountPagerSnapHelper(spanCount, true) diff --git a/app/src/main/java/com/gh/gamecenter/game/vertical/OnPagerSnapScrollListener.kt b/app/src/main/java/com/gh/gamecenter/game/vertical/OnPagerSnapScrollListener.kt index f3f4f711aa..2c38a06565 100644 --- a/app/src/main/java/com/gh/gamecenter/game/vertical/OnPagerSnapScrollListener.kt +++ b/app/src/main/java/com/gh/gamecenter/game/vertical/OnPagerSnapScrollListener.kt @@ -4,8 +4,9 @@ import androidx.recyclerview.widget.RecyclerView class OnPagerSnapScrollListener( - private val snapHelper: SpanCountPagerSnapHelper, - private val onPageChangeListener: (Int) -> Unit) : RecyclerView.OnScrollListener() { + private val snapHelper: SpanCountPagerSnapHelper, + private val onPageChangeListener: (Int) -> Unit +) : RecyclerView.OnScrollListener() { private var oldPosition = -1 //防止同一Position多次触发 diff --git a/app/src/main/java/com/gh/gamecenter/game/vertical/SpanCountPagerSnapHelper.java b/app/src/main/java/com/gh/gamecenter/game/vertical/SpanCountPagerSnapHelper.java index addccb049b..fa69370710 100644 --- a/app/src/main/java/com/gh/gamecenter/game/vertical/SpanCountPagerSnapHelper.java +++ b/app/src/main/java/com/gh/gamecenter/game/vertical/SpanCountPagerSnapHelper.java @@ -137,7 +137,7 @@ public class SpanCountPagerSnapHelper extends PagerSnapHelper { return out; } - private int distanceToLeft(View targetView, OrientationHelper helper){ + private int distanceToLeft(View targetView, OrientationHelper helper) { int childLeft = helper.getDecoratedStart(targetView); int containerLeft = helper.getStartAfterPadding(); return childLeft - containerLeft; diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchAndPlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchAndPlayedGameAdapter.kt index 15009b75d9..d051af3fce 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchAndPlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchAndPlayedGameAdapter.kt @@ -15,7 +15,8 @@ import com.gh.gamecenter.game.GameItemViewHolder import com.gh.gamecenter.qa.editor.GameAdapter import com.lightgame.utils.Utils -class AddSearchAndPlayedGameAdapter(context: Context, val mChooseGamesViewModel: ChooseGamesViewModel) : GameAdapter(context) { +class AddSearchAndPlayedGameAdapter(context: Context, val mChooseGamesViewModel: ChooseGamesViewModel) : + GameAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return if (viewType == ItemViewType.ITEM_BODY) { @@ -40,8 +41,14 @@ class AddSearchAndPlayedGameAdapter(context: Context, val mChooseGamesViewModel: holder.bindGameItem(entity) holder.binding.downloadBtn.text = if (isSelected) "删除" else "添加" holder.binding.downloadBtn.background = - if (isSelected) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - holder.binding.downloadBtn.setTextColor(if (isSelected) R.color.text_subtitleDesc.toColor(mContext) else R.color.white.toColor(mContext)) + if (isSelected) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + holder.binding.downloadBtn.setTextColor( + if (isSelected) R.color.text_subtitleDesc.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) holder.binding.downloadBtn.setOnClickListener { val chooseGameList = mChooseGamesViewModel.chooseGamesLiveData.value ?: arrayListOf() diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchGameFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchGameFragment.kt index e7b15d06db..2229b1d4f6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddSearchGameFragment.kt @@ -107,7 +107,8 @@ class AddSearchGameFragment : GameFragment() { mBinding.divider.setBackgroundColor(R.color.divider.toColor(requireContext())) mBinding.promptTv.setBackgroundColor(R.color.background_white.toColor(requireContext())) // mBinding.reuseNoneData.reuseResetLoadTv.background = R.drawable.game_detail_btn_receive.toDrawable(requireContext()) - mBinding.searchInput.background = R.drawable.community_editor_insert_search_background.toDrawable(requireContext()) + mBinding.searchInput.background = + R.drawable.community_editor_insert_search_background.toDrawable(requireContext()) mBinding.searchInput.setTextColor(R.color.text_title.toColor(requireContext())) mBinding.searchButton.setTextColor(R.color.theme_font.toColor(requireContext())) mBinding.promptTv.setTextColor(R.color.text_body.toColor(requireContext())) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddUserPlayedGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddUserPlayedGameViewModel.kt index 8a7fda8a76..e32f4da2e3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddUserPlayedGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/AddUserPlayedGameViewModel.kt @@ -18,7 +18,8 @@ class AddUserPlayedGameViewModel(application: Application, userId: String, isKee return RetrofitManager.getInstance().api.getPlayedGames(userId, page, Utils.getTime(getApplication()), map) } - class Factory(private val mUserId: String, val isKeepTagStyle: Boolean = false) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val mUserId: String, val isKeepTagStyle: Boolean = false) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return AddUserPlayedGameViewModel(HaloApp.getInstance().application, mUserId, isKeepTagStyle) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesFragment.kt index ec99880096..3c184ad5ce 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesFragment.kt @@ -118,7 +118,11 @@ class ChooseGamesFragment : ToolbarFragment(), ChooseGamesAdapter.ItemDragListen return makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0) } - override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { + override fun onMove( + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder, + target: RecyclerView.ViewHolder + ): Boolean { val fragment = fragmentReference.get() fragment?.run { mAdapter.notifyItemMoved(viewHolder.bindingAdapterPosition, target.bindingAdapterPosition) @@ -133,7 +137,11 @@ class ChooseGamesFragment : ToolbarFragment(), ChooseGamesAdapter.ItemDragListen } - override fun canDropOver(recyclerView: RecyclerView, current: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { + override fun canDropOver( + recyclerView: RecyclerView, + current: RecyclerView.ViewHolder, + target: RecyclerView.ViewHolder + ): Boolean { return true } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesViewModel.kt index 2bc2747905..e3246cd04a 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/choose/ChooseGamesViewModel.kt @@ -6,7 +6,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.halo.assistant.HaloApp -class ChooseGamesViewModel(application: Application, repository: ChooseGamesRepository) : AndroidViewModel(application) { +class ChooseGamesViewModel(application: Application, repository: ChooseGamesRepository) : + AndroidViewModel(application) { val chooseGamesLiveData = repository.chooseGamesLiveData val deleteOrAddGameLiveData = repository.deleteOrAddGameLiveData diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt index 48d22064e6..56705904cd 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt @@ -328,14 +328,24 @@ open class GameCollectionDetailAdapter( layoutManager = GridLayoutManager(context, 3) adapter = CommentPictureAdapter(context, comment.images!!, "") if (itemDecorationCount == 0) { - addItemDecoration(GridSpacingItemColorDecoration(context, 2, R.color.background_white).apply { mItemDecoration = this }) + addItemDecoration( + GridSpacingItemColorDecoration( + context, + 2, + R.color.background_white + ).apply { mItemDecoration = this }) } visibility = View.VISIBLE } } else { (commentPictureRv.adapter as CommentPictureAdapter).checkResetData(comment.images!!) mItemDecoration?.let { commentPictureRv.removeItemDecoration(it) } - commentPictureRv.addItemDecoration(GridSpacingItemColorDecoration(commentPictureRv.context, 2, R.color.background_white).apply { mItemDecoration = this }) + commentPictureRv.addItemDecoration( + GridSpacingItemColorDecoration( + commentPictureRv.context, + 2, + R.color.background_white + ).apply { mItemDecoration = this }) } } else { binding.commentPictureRv.visibility = View.GONE @@ -563,11 +573,13 @@ open class GameCollectionDetailAdapter( } } - inner class GameCollectionGameEmptyViewHolder(val binding: GameCollectionDetailNoneGameItemBinding) : RecyclerView.ViewHolder(binding.root) + inner class GameCollectionGameEmptyViewHolder(val binding: GameCollectionDetailNoneGameItemBinding) : + RecyclerView.ViewHolder(binding.root) inner class GameCollectionDividerViewHolder(view: View) : RecyclerView.ViewHolder(view) - inner class GameCollectionGameItemViewHolder(val binding: GameCollectionGameItemBinding) : RecyclerView.ViewHolder(binding.root) { + inner class GameCollectionGameItemViewHolder(val binding: GameCollectionGameItemBinding) : + RecyclerView.ViewHolder(binding.root) { fun bindView(gameEntity: GameEntity, position: Int, isLast: Boolean) { binding.run { @@ -587,12 +599,20 @@ open class GameCollectionDetailAdapter( BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable(mContext) else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable( + mContext + ) else null, null, null, null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes recommendStar.rating = gameEntity.recommendStar.toFloat() gameSubtitleTv.visibility = View.GONE @@ -606,7 +626,10 @@ open class GameCollectionDetailAdapter( cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) @@ -628,7 +651,12 @@ open class GameCollectionDetailAdapter( } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } root.setPadding( @@ -659,7 +687,8 @@ open class GameCollectionDetailAdapter( } val drawable = BitmapDrawable(mContext.resources, recommendPrefBitmap) drawable.setBounds(0, 0, 54F.dip2px(), 14F.dip2px()) - gameCollectionRecommendTv.text = SpanBuilder(" ${gameEntity.recommendText.take(45)}").image(0, 1, drawable).build() + gameCollectionRecommendTv.text = + SpanBuilder(" ${gameEntity.recommendText.take(45)}").image(0, 1, drawable).build() } else { gameCollectionRecommendTv.text = gameEntity.brief?.take(45) } @@ -684,7 +713,13 @@ open class GameCollectionDetailAdapter( exposureEvent ) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(binding.gameItemIncluded), true, isShowRecommendStar = true) + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(binding.gameItemIncluded), + true, + isShowRecommendStar = true + ) } mViewModel.postFirstItemInitOver() diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt index 65abcdee96..10ec68e884 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt @@ -455,7 +455,14 @@ class GameCollectionDetailFragment : if (!activityTags.isNullOrEmpty()) { imageActivityLabelTv.text = activityTags!![0].name nameTv.layoutParams = - (nameTv.layoutParams as ConstraintLayout.LayoutParams).apply { setMargins(16F.dip2px(), 0, 30F.dip2px(), 6F.dip2px()) } + (nameTv.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins( + 16F.dip2px(), + 0, + 30F.dip2px(), + 6F.dip2px() + ) + } } when (stamp) { @@ -485,7 +492,14 @@ class GameCollectionDetailFragment : if (!activityTags.isNullOrEmpty()) { videoActivityLabelTv.text = activityTags!![0].name videoItemDesContainer.layoutParams = - (videoItemDesContainer.layoutParams as ConstraintLayout.LayoutParams).apply { setMargins(0, 6F.dip2px(), 0, 0) } + (videoItemDesContainer.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins( + 0, + 6F.dip2px(), + 0, + 0 + ) + } } when (stamp) { @@ -534,7 +548,11 @@ class GameCollectionDetailFragment : visibility = View.VISIBLE text = if (isFollow) "已关注" else "关注" setBackgroundResource(if (isFollow) R.drawable.button_round_f5f5f5 else R.drawable.button_round_2496ff_alpha_10) - setTextColor(if (isFollow) R.color.text_subtitleDesc.toColor(requireContext()) else R.color.theme.toColor(requireContext())) + setTextColor( + if (isFollow) R.color.text_subtitleDesc.toColor(requireContext()) else R.color.theme.toColor( + requireContext() + ) + ) } } @@ -867,7 +885,12 @@ class GameCollectionDetailFragment : R.id.imageItemDesTv, R.id.videoItemDesTv -> { logEvent("click_game_collect_detail_product") - startActivity(GameCollectionPosterActivity.getIntent(requireContext(), mEntity ?: GamesCollectionDetailEntity())) + startActivity( + GameCollectionPosterActivity.getIntent( + requireContext(), + mEntity ?: GamesCollectionDetailEntity() + ) + ) } R.id.toolbarUserContainer, diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterActivity.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterActivity.kt index 142f0959a0..c26e8c6ae6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterActivity.kt @@ -22,7 +22,12 @@ class GameCollectionPosterActivity : ToolBarActivity() { fun getIntent(context: Context, entity: GamesCollectionDetailEntity): Intent { val bundle = Bundle() bundle.putParcelable(EntranceConsts.KEY_DATA, entity) - return getTargetIntent(context, GameCollectionPosterActivity::class.java, GameCollectionPosterFragment::class.java, bundle) + return getTargetIntent( + context, + GameCollectionPosterActivity::class.java, + GameCollectionPosterFragment::class.java, + bundle + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterFragment.kt index 8a88807cac..52fea3c1c9 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionPosterFragment.kt @@ -57,7 +57,7 @@ class GameCollectionPosterFragment : ToolbarFragment() { mEntity.apply { nameTv.text = title userName.text = user?.name - desTv.text=intro + desTv.text = intro followTv.goneIf(user?.id == UserManager.getInstance().userId) ImageUtils.getBitmap(cover, object : BiCallback { @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @@ -89,7 +89,11 @@ class GameCollectionPosterFragment : ToolbarFragment() { private fun setFollowStatus(isFollow: Boolean) { mBinding.followTv.run { setBackgroundResource(if (isFollow) R.drawable.button_round_white_alpha_10 else R.drawable.button_round_white_alpha_20) - setTextColor(if (isFollow) R.color.white_alpha_60.toColor(requireContext()) else R.color.white.toColor(requireContext())) + setTextColor( + if (isFollow) R.color.white_alpha_60.toColor(requireContext()) else R.color.white.toColor( + requireContext() + ) + ) text = if (isFollow) "已关注" else "关注" } } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionVideoView.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionVideoView.kt index b9e99a13fb..d535506dd8 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionVideoView.kt @@ -35,7 +35,8 @@ import io.reactivex.disposables.Disposable import java.text.DecimalFormat import java.util.* -class GameCollectionVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class GameCollectionVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private var mMuteCallback: MuteCallback private var mVolumeObserver: VolumeObserver @@ -59,14 +60,15 @@ class GameCollectionVideoView @JvmOverloads constructor(context: Context, attrs: init { post { - gestureDetector = GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { - override fun onSingleTapConfirmed(e: MotionEvent): Boolean { - if (!mChangePosition && !mChangeVolume && !mBrightness) { - onClickUiToggle(e) + gestureDetector = + GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + if (!mChangePosition && !mChangeVolume && !mBrightness) { + onClickUiToggle(e) + } + return super.onSingleTapConfirmed(e) } - return super.onSingleTapConfirmed(e) - } - }) + }) if (mIfCurrentIsFullscreen) { showBackBtn() @@ -113,17 +115,19 @@ class GameCollectionVideoView @JvmOverloads constructor(context: Context, attrs: fun observeVolume(fragment: Fragment?) { fragment?.context?.applicationContext?.contentResolver?.registerContentObserver( - android.provider.Settings.System.CONTENT_URI, true, mVolumeObserver) + android.provider.Settings.System.CONTENT_URI, true, mVolumeObserver + ) fragment?.fragmentManager?.registerFragmentLifecycleCallbacks( - object : FragmentManager.FragmentLifecycleCallbacks() { - override fun onFragmentPaused(fm: FragmentManager, f: Fragment) { - if (f === fragment) { - fragment.context?.applicationContext?.contentResolver?.unregisterContentObserver(mVolumeObserver) - fragment.fragmentManager?.unregisterFragmentLifecycleCallbacks(this) - } + object : FragmentManager.FragmentLifecycleCallbacks() { + override fun onFragmentPaused(fm: FragmentManager, f: Fragment) { + if (f === fragment) { + fragment.context?.applicationContext?.contentResolver?.unregisterContentObserver(mVolumeObserver) + fragment.fragmentManager?.unregisterFragmentLifecycleCallbacks(this) } - }, false) + } + }, false + ) } fun startPlayLogic(isAutoPlay: Boolean) { @@ -264,7 +268,9 @@ class GameCollectionVideoView @JvmOverloads constructor(context: Context, attrs: } override fun isShowNetConfirm(): Boolean { - return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected(context) + return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected( + context + ) && mNeedShowWifiTip) } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationAdapter.kt index ce81b4d4ea..f0d8cf6acc 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationAdapter.kt @@ -58,7 +58,8 @@ class GameCollectionCommentConversationAdapter( } } - inner class TopCommentItemViewHolder(var binding: ItemArticleDetailCommentBinding) : RecyclerView.ViewHolder(binding.root) { + inner class TopCommentItemViewHolder(var binding: ItemArticleDetailCommentBinding) : + RecyclerView.ViewHolder(binding.root) { fun bindView(comment: CommentEntity) { ConstraintSet().apply { diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationFragment.kt index ecaf9e0427..056a86aa05 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/conversation/GameCollectionCommentConversationFragment.kt @@ -154,7 +154,8 @@ class GameCollectionCommentConversationFragment : mViewModel.deleteComment(commentDetail!!) { requireActivity().finish() } - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) ) } } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionFragment.kt index fdae0d448d..a9fcc4989e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionFragment.kt @@ -96,7 +96,9 @@ class MyGameCollectionFragment : ListFragment { - DialogHelper.showDialog(binding.root.context, "仅自己可见", "游戏单开启“仅自己可见”后,将不会对其他用户展示,您可以通过关闭仅自己可见或者投稿分享游戏单", "我知道了", "", { + DialogHelper.showDialog( + binding.root.context, + "仅自己可见", + "游戏单开启“仅自己可见”后,将不会对其他用户展示,您可以通过关闭仅自己可见或者投稿分享游戏单", + "我知道了", + "", + { - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } entity.status == "pending" -> { DialogHelper.showDialog(binding.root.context, "审核中", "游戏单会在1-2个工作日内审核完成,请您耐心等候", "我知道了", "", { @@ -47,15 +55,28 @@ class MyGameCollectionViewHolder( }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) } entity.status == "failed" -> { - DialogHelper.showDialog(binding.root.context, "未通过", "您的游戏单可能含有违规内容或语意不明确,请您仔细检查后再次尝试提交", "我知道了", "", { + DialogHelper.showDialog( + binding.root.context, + "未通过", + "您的游戏单可能含有违规内容或语意不明确,请您仔细检查后再次尝试提交", + "我知道了", + "", + { - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } } } binding.root.setOnClickListener { if (entity.status == "pass") { - binding.root.context.startActivity(GameCollectionDetailActivity.getIntent(binding.root.context, entity.id)) + binding.root.context.startActivity( + GameCollectionDetailActivity.getIntent( + binding.root.context, + entity.id + ) + ) } else { binding.statusView.performClick() } @@ -63,17 +84,39 @@ class MyGameCollectionViewHolder( binding.publishBtn.setOnClickListener { if ((entity.count?.game ?: 0) >= 8) { - DialogHelper.showDialog(binding.root.context, "温馨提示", "投稿通过后,将自动关闭“仅自己可见”,所有用户都能浏览到游戏单,确定投稿?", "确定", "取消", { - mViewModel.publishGameCollection(entity) - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + DialogHelper.showDialog( + binding.root.context, + "温馨提示", + "投稿通过后,将自动关闭“仅自己可见”,所有用户都能浏览到游戏单,确定投稿?", + "确定", + "取消", + { + mViewModel.publishGameCollection(entity) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } else { DialogHelper.showDialog(binding.root.context, "温馨提示", "游戏单需要收录至少8个游戏,才可以投稿至游戏单广场哦~", "添加游戏", "我知道了", { - binding.root.context.startActivity(GameCollectionEditActivity.getIntent(binding.root.context, entity, entrance, path)) + binding.root.context.startActivity( + GameCollectionEditActivity.getIntent( + binding.root.context, + entity, + entrance, + path + ) + ) }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) } } binding.editBtn.setOnClickListener { - binding.root.context.startActivity(GameCollectionEditActivity.getIntent(binding.root.context, entity, entrance, path)) + binding.root.context.startActivity( + GameCollectionEditActivity.getIntent( + binding.root.context, + entity, + entrance, + path + ) + ) } binding.deleteBtn.setOnClickListener { DialogHelper.showDialog(binding.root.context, "温馨提示", "游戏单删除后将无法恢复,是否确认删除", "确定", "取消", { @@ -85,7 +128,8 @@ class MyGameCollectionViewHolder( private fun initTagsUI(tags: ArrayList) { binding.gameCollectionTagsContainer.removeAllViews() tags.forEachIndexed { index, tag -> - val tagBinding = ItemGameCollectionFlexTagBinding.inflate(LayoutInflater.from(binding.root.context), null, false) + val tagBinding = + ItemGameCollectionFlexTagBinding.inflate(LayoutInflater.from(binding.root.context), null, false) tagBinding.tagNameTv.text = tag.name tagBinding.divider.goneIf(index == tags.size - 1) binding.gameCollectionTagsContainer.addView(tagBinding.root) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionViewModel.kt index d256531e5f..a2c3300373 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/mine/MyGameCollectionViewModel.kt @@ -13,7 +13,8 @@ import io.reactivex.Observable import okhttp3.ResponseBody import retrofit2.HttpException -class MyGameCollectionViewModel(application: Application) : ListViewModel(application) { +class MyGameCollectionViewModel(application: Application) : + ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api val deleteLiveData = MutableLiveData() val publishLiveData = MutableLiveData() diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionActivityDialog.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionActivityDialog.kt index 51ed6c5dd1..3fc84bdef8 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionActivityDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionActivityDialog.kt @@ -32,8 +32,9 @@ class ChooseGameCollectionActivityDialog : BaseDialogFragment() { super.onViewCreated(view, savedInstanceState) mLastSelectActivityId = requireArguments().getString(TAG_ACTIVITY_ID) ?: "" val beginTransaction = childFragmentManager.beginTransaction() - val fragment = childFragmentManager.findFragmentByTag(GameCollectionActivityLabelFragment::class.java.name) as? GameCollectionActivityLabelFragment - ?: GameCollectionActivityLabelFragment() + val fragment = + childFragmentManager.findFragmentByTag(GameCollectionActivityLabelFragment::class.java.name) as? GameCollectionActivityLabelFragment + ?: GameCollectionActivityLabelFragment() fragment.arguments = arguments beginTransaction.replace(mBinding.container.id, fragment, GameCollectionActivityLabelFragment::class.java.name) beginTransaction.commitAllowingStateLoss() @@ -43,7 +44,11 @@ class ChooseGameCollectionActivityDialog : BaseDialogFragment() { val intent = Intent().apply { putExtra(EntranceConsts.KEY_DATA, activityLabelEntity) } - (requireActivity() as GameCollectionEditActivity).onActivityDialogResult(GameCollectionEditActivity.REQUEST_CHOOSE_ACTIVITY, Activity.RESULT_OK, intent) + (requireActivity() as GameCollectionEditActivity).onActivityDialogResult( + GameCollectionEditActivity.REQUEST_CHOOSE_ACTIVITY, + Activity.RESULT_OK, + intent + ) dismissAllowingStateLoss() } @@ -88,7 +93,8 @@ class ChooseGameCollectionActivityDialog : BaseDialogFragment() { override fun onDarkModeChanged() { super.onDarkModeChanged() if (::mBinding.isInitialized) { - mBinding.dialogContainer.background = R.drawable.game_detail_more_dialog_background.toDrawable(requireContext()) + mBinding.dialogContainer.background = + R.drawable.game_detail_more_dialog_background.toDrawable(requireContext()) mBinding.titleTv.setTextColor(R.color.text_title.toColor(requireContext())) mBinding.confirmTv.setTextColor(R.color.theme_font.toColor(requireContext())) } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionCoverTypeDialog.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionCoverTypeDialog.kt index 64c904b346..4a2617b514 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionCoverTypeDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionCoverTypeDialog.kt @@ -101,8 +101,10 @@ class ChooseGameCollectionCoverTypeDialog : BaseDialogFragment() { line1.setBackgroundColor(R.color.divider.toColor(requireContext())) line2.setBackgroundColor(R.color.divider.toColor(requireContext())) line3.setBackgroundColor(R.color.divider.toColor(requireContext())) - localUploadContainer.background = R.drawable.choose_game_collection_cover_type_selector.toDrawable(requireContext()) - defaultUploadContainer.background = R.drawable.choose_game_collection_cover_type_selector.toDrawable(requireContext()) + localUploadContainer.background = + R.drawable.choose_game_collection_cover_type_selector.toDrawable(requireContext()) + defaultUploadContainer.background = + R.drawable.choose_game_collection_cover_type_selector.toDrawable(requireContext()) cancelBtn.background = R.drawable.bg_shape_f5_radius_999.toDrawable(requireContext()) recommentTv.background = R.drawable.bg_game_collection_cover_tag.toDrawable(requireContext()) titleTv.setTextColor(R.color.text_subtitleDesc.toColor(requireContext())) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverDialog.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverDialog.kt index cf8791d8bb..50a4620676 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverDialog.kt @@ -60,7 +60,12 @@ class ChooseGameCollectionDefaultCoverDialog : BaseDialogFragment() { } adapter = mAdapter layoutManager = GridLayoutManager(requireContext(), 2) - addItemDecoration(GridSpacingItemColorDecoration(context, 8, R.color.background_white).apply { mItemDecoration = this }) + addItemDecoration( + GridSpacingItemColorDecoration( + context, + 8, + R.color.background_white + ).apply { mItemDecoration = this }) } mViewModel = viewModelProvider() @@ -113,7 +118,12 @@ class ChooseGameCollectionDefaultCoverDialog : BaseDialogFragment() { cancelBtn.setTextColor(R.color.text_subtitle.toColor(requireContext())) coverRv.run { mItemDecoration?.let { removeItemDecoration(it) } - addItemDecoration(GridSpacingItemColorDecoration(context, 8, R.color.background_white).apply { mItemDecoration = this }) + addItemDecoration( + GridSpacingItemColorDecoration( + context, + 8, + R.color.background_white + ).apply { mItemDecoration = this }) } } } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverViewModel.kt index e36e0ea0d2..a1652eba5e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/publish/ChooseGameCollectionDefaultCoverViewModel.kt @@ -21,6 +21,7 @@ class ChooseGameCollectionDefaultCoverViewModel(application: Application) : Andr init { getRandomCover() } + fun getRandomCover() { mApi.randomCover.compose(observableToMain()) .subscribe(object : Response>() { 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 916b28dbb9..cfc7c04df5 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 @@ -154,7 +154,10 @@ class GameCollectionEditActivity : ToolBarActivity() { } mBinding.chooseLabelContainer.setOnClickListener { - startActivityForResult(GameCollectionTagSelectActivity.getIntent(this, 3, mViewModel.tags), REQUEST_CHOOSE_TAG) + startActivityForResult( + GameCollectionTagSelectActivity.getIntent(this, 3, mViewModel.tags), + REQUEST_CHOOSE_TAG + ) } mBinding.chooseGameContainer.setOnClickListener { @@ -318,7 +321,8 @@ class GameCollectionEditActivity : ToolBarActivity() { initPosterUI() } REQUEST_CHOOSE_TAG -> { - val tags = data.getParcelableArrayListExtra(GameCollectionTagSelectFragment.SELECTED_TAG) ?: arrayListOf() + val tags = data.getParcelableArrayListExtra(GameCollectionTagSelectFragment.SELECTED_TAG) + ?: arrayListOf() mViewModel.tags = tags initTagsUI(tags) } @@ -332,7 +336,14 @@ class GameCollectionEditActivity : ToolBarActivity() { if (!selectedPaths.isNullOrEmpty()) { val path = PathUtils.getPath(this, selectedPaths[0]) val intent = - CropImageActivity.getIntent(this, path, 142 / 328F, false, R.layout.layout_game_collection_crop_image_assist, mEntrance) + CropImageActivity.getIntent( + this, + path, + 142 / 328F, + false, + R.layout.layout_game_collection_crop_image_assist, + mEntrance + ) startActivityForResult(intent, REQUEST_CODE_IMAGE_CROP) } } else if (requestCode == ChooseGameCollectionDefaultCoverDialog.REQUEST_CODE_DEFAULT_IMAGE) { @@ -416,7 +427,8 @@ class GameCollectionEditActivity : ToolBarActivity() { ) { val entity = GameCollectionDraft() entity.tags = mViewModel.tags - if (mViewModel.selectActivityTag != null) entity.activityTags = arrayListOf(mViewModel.selectActivityTag!!) + if (mViewModel.selectActivityTag != null) entity.activityTags = + arrayListOf(mViewModel.selectActivityTag!!) entity.title = title entity.intro = introduce entity.cover = mViewModel.imageUrl @@ -493,11 +505,20 @@ class GameCollectionEditActivity : ToolBarActivity() { }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) } else { if (games.size < 8) { - DialogHelper.showDialog(this, "温馨提示", "游戏单需要收录至少8个游戏,才可以投稿至游戏单广场,是否在“我的光环-我的游戏单”继续保存为草稿", "继续保存", "添加游戏", { - mViewModel.uploadContent(this, requestMap) - }, { - startActivity(ChooseGamesActivity.getIntent(this)) - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + DialogHelper.showDialog( + this, + "温馨提示", + "游戏单需要收录至少8个游戏,才可以投稿至游戏单广场,是否在“我的光环-我的游戏单”继续保存为草稿", + "继续保存", + "添加游戏", + { + mViewModel.uploadContent(this, requestMap) + }, + { + startActivity(ChooseGamesActivity.getIntent(this)) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } else { DialogHelper.showDialog(this, "温馨提示", "游戏单会在1-2个工作日内审核完成,您可以在“我的光环-我的游戏单”查看进度", "继续提交", "取消", { mViewModel.uploadContent(this, requestMap) @@ -514,7 +535,8 @@ class GameCollectionEditActivity : ToolBarActivity() { override fun onDarkModeChanged() { super.onDarkModeChanged() updateStatusBarColor(R.color.background_white, R.color.background_white) - mMenuPost.actionView?.findViewById(R.id.postTv)?.background = R.drawable.textview_concern_red_up_round.toDrawable(this) + mMenuPost.actionView?.findViewById(R.id.postTv)?.background = + R.drawable.textview_concern_red_up_round.toDrawable(this) if (::mBinding.isInitialized) { mBinding.run { root.setBackgroundColor(R.color.background_white.toColor(this@GameCollectionEditActivity)) @@ -524,7 +546,8 @@ class GameCollectionEditActivity : ToolBarActivity() { titleDivider.setBackgroundColor(R.color.divider.toColor(this@GameCollectionEditActivity)) introduceDivider.setBackgroundColor(R.color.divider.toColor(this@GameCollectionEditActivity)) placeholderView.background = R.drawable.bg_shape_f5_radius_8.toDrawable(this@GameCollectionEditActivity) - selfOnlyCb.background = R.drawable.border_round_stroke_0dot5_eee_999.toDrawable(this@GameCollectionEditActivity) + selfOnlyCb.background = + R.drawable.border_round_stroke_0dot5_eee_999.toDrawable(this@GameCollectionEditActivity) uploadPictureTv.setTextColor(R.color.text_body.toColor(this@GameCollectionEditActivity)) labelTipTv.setTextColor(R.color.text_body.toColor(this@GameCollectionEditActivity)) gamesTv.setTextColor(R.color.text_title.toColor(this@GameCollectionEditActivity)) @@ -567,7 +590,12 @@ class GameCollectionEditActivity : ToolBarActivity() { } @JvmStatic - fun getIntent(context: Context, entity: GamesCollectionEntity, entrance: String = "", path: String = ""): Intent { + fun getIntent( + context: Context, + entity: GamesCollectionEntity, + entrance: String = "", + path: String = "" + ): Intent { val intent = Intent(context, GameCollectionEditActivity::class.java) intent.putExtra(GamesCollectionEntity::class.java.name, entity) intent.putExtra(EntranceConsts.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayAdapter.kt index 06f5c39020..25c9ab16a1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayAdapter.kt @@ -23,7 +23,13 @@ class GameCollectionAmwayAdapter(context: Context) : } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = - GameCollectionAmwayContentItemViewHolder(GameCollectionAmwayContentItemBinding.inflate(mLayoutInflater, parent, false)) + GameCollectionAmwayContentItemViewHolder( + GameCollectionAmwayContentItemBinding.inflate( + mLayoutInflater, + parent, + false + ) + ) override fun getItemCount() = Int.MAX_VALUE @@ -31,7 +37,8 @@ class GameCollectionAmwayAdapter(context: Context) : if (holder is GameCollectionAmwayContentItemViewHolder && getRealCount() != 0) { val entity = mAmwayList[getRealPosition(position)] holder.binding.gameIcon.displayGameIcon(entity.game.toGameEntity()) - holder.binding.amwayTv.text = TextHelper.getCommentLabelSpannableStringBuilder(entity.comment.content, R.color.white_alpha_80) + holder.binding.amwayTv.text = + TextHelper.getCommentLabelSpannableStringBuilder(entity.comment.content, R.color.white_alpha_80) } } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt index 1d94861b5d..9f62455d62 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt @@ -15,7 +15,8 @@ import com.gh.gamecenter.databinding.GameCollectionSquareAmwayItemBinding import com.gh.gamecenter.entity.AmwayCommentEntity import java.lang.ref.WeakReference -class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBinding) : RecyclerView.ViewHolder(binding.root) { +class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBinding) : + RecyclerView.ViewHolder(binding.root) { private val mAdapter = GameCollectionAmwayAdapter(binding.root.context) private val mLooperHandle = LooperHandle(this) @@ -69,10 +70,16 @@ class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBi previousValue = currentValue } animator.addListener(object : Animator.AnimatorListener { - override fun onAnimationStart(animation: Animator) { beginFakeDrag() } - override fun onAnimationEnd(animation: Animator) { endFakeDrag() } - override fun onAnimationCancel(animation: Animator) { } - override fun onAnimationRepeat(animation: Animator) { } + override fun onAnimationStart(animation: Animator) { + beginFakeDrag() + } + + override fun onAnimationEnd(animation: Animator) { + endFakeDrag() + } + + override fun onAnimationCancel(animation: Animator) {} + override fun onAnimationRepeat(animation: Animator) {} }) animator.interpolator = interpolator animator.duration = duration @@ -84,8 +91,9 @@ class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBi const val AMWAY_LOOP_TIME = 5000L } - class LooperHandle(viewHolder: GameCollectionAmwayViewHolder): Handler( - Looper.getMainLooper()) { + class LooperHandle(viewHolder: GameCollectionAmwayViewHolder) : Handler( + Looper.getMainLooper() + ) { private val mWeakReference: WeakReference = WeakReference(viewHolder) override fun handleMessage(msg: Message) { diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionBannerAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionBannerAdapter.kt index a054cb97a4..b99a4ac6b6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionBannerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionBannerAdapter.kt @@ -38,7 +38,10 @@ class GameCollectionBannerAdapter( override fun getItemViewType(position: Int) = if (shouldShowAmway(position)) ITEM_AMWAY else ITEM_BANNER - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = if (viewType == ITEM_AMWAY) GameCollectionAmwayViewHolder(parent.toBinding()) else GameCollectionBannerViewHolder(parent.toBinding()) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + if (viewType == ITEM_AMWAY) GameCollectionAmwayViewHolder(parent.toBinding()) else GameCollectionBannerViewHolder( + parent.toBinding() + ) override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is GameCollectionBannerViewHolder && mBannerList.isNotEmpty()) { diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareActivity.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareActivity.kt index 769f3cedf8..2b5ae147dc 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareActivity.kt @@ -17,14 +17,17 @@ class GameCollectionSquareActivity : BaseActivity() { DisplayUtils.transparentStatusBar(this) val containerFragment = supportFragmentManager.findFragmentByTag( - GameCollectionSquareFragment::class.java.name) + GameCollectionSquareFragment::class.java.name + ) ?: GameCollectionSquareFragment().with(intent.extras) - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, GameCollectionSquareFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, GameCollectionSquareFragment::class.java.name) + .commitAllowingStateLoss() } override fun finish() { GameCollectionSquareBrowseTaskHelper.run { - if (intent.getBooleanExtra(KEY_IS_FORM_BROWSE_TASK, false)){ + if (intent.getBooleanExtra(KEY_IS_FORM_BROWSE_TASK, false)) { disableBrowseTimeCount() unregisterActivityLifecycleCallbacks() } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareAdapter.kt index 6e28781a89..173b9921d5 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareAdapter.kt @@ -66,9 +66,11 @@ class GameCollectionSquareAdapter( } } - override fun areItemsTheSame(oldItem: GameCollectionListItemData?, newItem: GameCollectionListItemData?) = oldItem == newItem + override fun areItemsTheSame(oldItem: GameCollectionListItemData?, newItem: GameCollectionListItemData?) = + oldItem == newItem - override fun areContentsTheSame(oldItem: GameCollectionListItemData?, newItem: GameCollectionListItemData?) = oldItem == newItem + override fun areContentsTheSame(oldItem: GameCollectionListItemData?, newItem: GameCollectionListItemData?) = + oldItem == newItem override fun getItemViewType(position: Int): Int { return if (position == itemCount - 1) { @@ -144,7 +146,8 @@ class GameCollectionSquareAdapter( override fun getItemCount() = if (mEntityList.isNullOrEmpty()) 0 else mEntityList.size + 1 - class GameCollectionBannerItemViewHolder(val binding: ItemGameCollectionBannerBinding) : RecyclerView.ViewHolder(binding.root) { + class GameCollectionBannerItemViewHolder(val binding: ItemGameCollectionBannerBinding) : + RecyclerView.ViewHolder(binding.root) { private lateinit var mBannerAdapter: GameCollectionBannerAdapter private lateinit var mSnapHelper: PagerSnapHelper private lateinit var mBannerLayoutManager: LinearLayoutManager @@ -174,7 +177,14 @@ class GameCollectionSquareAdapter( } mSnapHelper = PagerSnapHelper() mBannerLayoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) - mBannerAdapter = GameCollectionBannerAdapter(context, true, bannerList, amwayListItem, "顶部tab-游戏单广场", mBasicExposureSource) + mBannerAdapter = GameCollectionBannerAdapter( + context, + true, + bannerList, + amwayListItem, + "顶部tab-游戏单广场", + mBasicExposureSource + ) binding.bannerIndicator.run { mPageSize = mBannerAdapter.getActualSize() notifyDataChanged() @@ -208,7 +218,10 @@ class GameCollectionSquareAdapter( setOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { super.onPageScrolled(position, positionOffset, positionOffsetPixels) - binding.bannerIndicator.onPageScrolled(mBannerAdapter.getActualPosition(position), positionOffset) + binding.bannerIndicator.onPageScrolled( + mBannerAdapter.getActualPosition(position), + positionOffset + ) } }) }) @@ -308,7 +321,8 @@ class GameCollectionSquareAdapter( userTv.text = gamesCollectionEntity.user?.name playedGameProgress.max = gamesCollectionEntity.count?.game ?: 0 playedGameProgress.progress = gamesCollectionEntity.count?.playedGame ?: 0 - playedGameTv.text = "玩过 ${gamesCollectionEntity.count?.playedGame ?: 0} / ${gamesCollectionEntity.count?.game ?: 0} 款" + playedGameTv.text = + "玩过 ${gamesCollectionEntity.count?.playedGame ?: 0} / ${gamesCollectionEntity.count?.game ?: 0} 款" stampIv.goneIf(gamesCollectionEntity.stamp.isEmpty()) stampIv.setBackgroundResource(if (gamesCollectionEntity.stamp == "official") R.drawable.ic_official else R.drawable.ic_chosen) tagContainer.removeAllViews() @@ -321,7 +335,10 @@ class GameCollectionSquareAdapter( }) // 添加标签 tagContainer.addView(TextView(context).apply { - layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT) + layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) setPadding(if (index == 0) 0 else 6F.dip2px(), 0, 6F.dip2px(), 0) text = tagEntity.name setTextColor(R.color.white.toColor()) @@ -384,11 +401,23 @@ class GameCollectionSquareAdapter( } userContainer.setOnClickListener { NewLogUtils.logClickGameCollectionAuthor(gamesCollectionEntity.title, gamesCollectionEntity.id) - DirectUtils.directToHomeActivity(context, gamesCollectionEntity.user?.id, 0, viewModel.entrance, "游戏单广场") + DirectUtils.directToHomeActivity( + context, + gamesCollectionEntity.user?.id, + 0, + viewModel.entrance, + "游戏单广场" + ) } root.setOnClickListener { NewLogUtils.logEnterGameCollectionDetail(gamesCollectionEntity.title, gamesCollectionEntity.id) - context.startActivity(GameCollectionDetailActivity.getIntent(context, gamesCollectionEntity.id, !isHome)) + context.startActivity( + GameCollectionDetailActivity.getIntent( + context, + gamesCollectionEntity.id, + !isHome + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareFragment.kt index 0a8499126e..9e7bfd84be 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionSquareFragment.kt @@ -178,11 +178,22 @@ class GameCollectionSquareFragment : LazyListFragment - (mDefaultBinding.toolbar.layoutParams as ViewGroup.MarginLayoutParams).topMargin = insets.systemWindowInsetTop + (mDefaultBinding.toolbar.layoutParams as ViewGroup.MarginLayoutParams).topMargin = + insets.systemWindowInsetTop insets.consumeSystemWindowInsets() } @@ -238,7 +253,8 @@ class GameCollectionSquareFragment : LazyListFragment(R.id.skeletonPlaceholder)?.fitsSystemWindows = true } @@ -547,7 +591,10 @@ class GameCollectionSquareFragment : LazyListFragment> = - if (isHome) - RetrofitManager.getInstance() - .api.getHomeGameCollectionSquareList(UUID.randomUUID().toString(), page, PAGE_SIZE) - else - RetrofitManager.getInstance() - .api.getGameCollectionSquareList(view, selectedTagId, page, PAGE_SIZE) + if (isHome) + RetrofitManager.getInstance() + .api.getHomeGameCollectionSquareList(UUID.randomUUID().toString(), page, PAGE_SIZE) + else + RetrofitManager.getInstance() + .api.getGameCollectionSquareList(view, selectedTagId, page, PAGE_SIZE) override fun mergeResultLiveData() { mResultLiveData.addSource(mListLiveData) { list -> val itemDataList = arrayListOf().apply { var position = 0 - if (isHome) add(GameCollectionListItemData(amwayListItem = mAmwayCommentList.value, carouselListItem = mBannerList.value)) + if (isHome) add( + GameCollectionListItemData( + amwayListItem = mAmwayCommentList.value, + carouselListItem = mBannerList.value + ) + ) for (item in list) { add(GameCollectionListItemData(gameCollectionItem = item, gameStartPosition = position)) - position += if (item.count?.game!! > 2) 3 else if (item.games?.size == 0) 0 else item.count?.game ?: 0 + position += if (item.count?.game!! > 2) 3 else if (item.games?.size == 0) 0 else item.count?.game + ?: 0 } } mResultLiveData.postValue(itemDataList) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagAdapter.kt index 84dd5ae688..59c5f2f490 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagAdapter.kt @@ -86,7 +86,8 @@ class GameCollectionTagAdapter( if (position == itemCount - 1) 97F.dip2px() else 15F.dip2px() ) for (tagEntity in data.tags) { - val tag = if (singleChoice) getSingleTag(tagEntity, data.categoryName) else getMultipleTag(tagEntity) + val tag = + if (singleChoice) getSingleTag(tagEntity, data.categoryName) else getMultipleTag(tagEntity) mTagViewList.add(tag) holder.binding.tagFlexbox.addView(tag.root) } @@ -94,28 +95,29 @@ class GameCollectionTagAdapter( } } - private fun getSingleTag(tag: TagInfoEntity, tagCategory: String) = ItemGameCollectionTagBinding.inflate(mLayoutInflater).apply { - tagTv.text = tag.name - tagTv.layoutParams = tagTv.layoutParams.apply { width = (DisplayUtils.getScreenWidth() - 56F.dip2px()) / 4 } - selectedTagEntity?.let { - if (tag == it) tagTv.isChecked = true - } - root.setOnClickListener { - for (tagView in mTagViewList) { - if (tagView.tagTv != tagTv) tagView.tagTv.isChecked = false + private fun getSingleTag(tag: TagInfoEntity, tagCategory: String) = + ItemGameCollectionTagBinding.inflate(mLayoutInflater).apply { + tagTv.text = tag.name + tagTv.layoutParams = tagTv.layoutParams.apply { width = (DisplayUtils.getScreenWidth() - 56F.dip2px()) / 4 } + selectedTagEntity?.let { + if (tag == it) tagTv.isChecked = true } - tagTv.isChecked = !tagTv.isChecked - if (tagTv.isChecked) { - selectedTagEntity = tag - selectedTagCategory = tagCategory - singleClickCallback?.invoke() - } else { - selectedTagEntity = null - selectedTagCategory = "" - singleClickCallback?.invoke() + root.setOnClickListener { + for (tagView in mTagViewList) { + if (tagView.tagTv != tagTv) tagView.tagTv.isChecked = false + } + tagTv.isChecked = !tagTv.isChecked + if (tagTv.isChecked) { + selectedTagEntity = tag + selectedTagCategory = tagCategory + singleClickCallback?.invoke() + } else { + selectedTagEntity = null + selectedTagCategory = "" + singleClickCallback?.invoke() + } } } - } private fun getMultipleTag(tag: TagInfoEntity) = ItemGameCollectionTagBinding.inflate(mLayoutInflater).apply { diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectActivity.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectActivity.kt index 2ba91c74c0..43ea9f5158 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectActivity.kt @@ -33,7 +33,11 @@ class GameCollectionTagSelectActivity : ToolBarActivity() { const val KEY_SELECT_TAGS = "select_tags" @JvmStatic - fun getIntent(context: Context, singleChoice: Boolean = false, singleSelectedTag: TagInfoEntity? = null): Intent { + fun getIntent( + context: Context, + singleChoice: Boolean = false, + singleSelectedTag: TagInfoEntity? = null + ): Intent { val bundle = Bundle() bundle.putBoolean(KEY_IS_SINGLE_CHOICE, singleChoice) bundle.putParcelable(KEY_SINGLE_SELECTED_TAG, singleSelectedTag) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectFragment.kt index 491d0949d9..dc29db88a1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagSelectFragment.kt @@ -39,12 +39,14 @@ class GameCollectionTagSelectFragment : ToolbarFragment() { list.remove(tag) mBinding.selectedTagContainer.removeView(selectedTagView.root) mAdapter.notifyDataSetChanged() - mBinding.selectedTagScrollView.visibility = if (firstVisibleItemPosition == 0 || list.isEmpty()) View.GONE else View.VISIBLE + mBinding.selectedTagScrollView.visibility = + if (firstVisibleItemPosition == 0 || list.isEmpty()) View.GONE else View.VISIBLE } } mBinding.selectedTagContainer.addView(selectedTagView.root) } - mBinding.selectedTagScrollView.visibility = if (firstVisibleItemPosition == 0 || list.isEmpty()) View.GONE else View.VISIBLE + mBinding.selectedTagScrollView.visibility = + if (firstVisibleItemPosition == 0 || list.isEmpty()) View.GONE else View.VISIBLE } } @@ -59,8 +61,8 @@ class GameCollectionTagSelectFragment : ToolbarFragment() { if (menuItem?.itemId == R.id.layout_menu_save) { if (!mSingleChoice) { requireActivity().setResult( - Activity.RESULT_OK, - Intent().putExtra(SELECTED_TAG, mAdapter.selectedTagEntityList) + Activity.RESULT_OK, + Intent().putExtra(SELECTED_TAG, mAdapter.selectedTagEntityList) ) } requireActivity().finish() @@ -77,8 +79,15 @@ class GameCollectionTagSelectFragment : ToolbarFragment() { mSingleChoice = arguments?.getBoolean(GameCollectionTagSelectActivity.KEY_IS_SINGLE_CHOICE) ?: false mSelectedTag = arguments?.getParcelable(GameCollectionTagSelectActivity.KEY_SINGLE_SELECTED_TAG) mMaxSelectCount = arguments?.getInt(GameCollectionTagSelectActivity.KEY_MAX_SELECT_COUNT_TAG, 1) ?: 1 - mSelectedTags = arguments?.getParcelableArrayList(GameCollectionTagSelectActivity.KEY_SELECT_TAGS) ?: arrayListOf() - mAdapter = GameCollectionTagAdapter(requireContext(), mSingleChoice, mMaxSelectCount, mSelectedTag, updateSelectedTagView, { back() }) + mSelectedTags = + arguments?.getParcelableArrayList(GameCollectionTagSelectActivity.KEY_SELECT_TAGS) ?: arrayListOf() + mAdapter = GameCollectionTagAdapter( + requireContext(), + mSingleChoice, + mMaxSelectCount, + mSelectedTag, + updateSelectedTagView, + { back() }) if (!mSelectedTags.isNullOrEmpty()) { mAdapter.selectedTagEntityList.addAll(mSelectedTags!!) } @@ -109,8 +118,8 @@ class GameCollectionTagSelectFragment : ToolbarFragment() { NewLogUtils.logFilterGameCollectionTag(mAdapter.selectedTagCategory, mAdapter.selectedTagEntity!!.name) } requireActivity().setResult( - Activity.RESULT_OK, - Intent().putExtra(SELECTED_TAG, mAdapter.selectedTagEntity) + Activity.RESULT_OK, + Intent().putExtra(SELECTED_TAG, mAdapter.selectedTagEntity) ) requireActivity().finish() } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagViewModel.kt index 6a9363e402..eaee627cda 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/tag/GameCollectionTagViewModel.kt @@ -24,7 +24,7 @@ class GameCollectionTagViewModel(application: Application) : AndroidViewModel(ap mApi.gameCollectionTagList .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object: BiResponse>(){ + .subscribe(object : BiResponse>() { override fun onSuccess(data: ArrayList) { tagListLiveData.postValue(data) } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt index c885d8d2de..9a979bc299 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailContentCardContentAdapter.kt @@ -12,13 +12,22 @@ import com.gh.gamecenter.databinding.ItemGameDetailContentCardContentBinding import com.gh.gamecenter.gamedetail.entity.ContentCardEntity import com.lightgame.adapter.BaseRecyclerAdapter -class GameDetailContentCardContentAdapter(context: Context, private val linkEntity: ContentCardEntity, private val isHighlightBg: Boolean = false): BaseRecyclerAdapter(context) { +class GameDetailContentCardContentAdapter( + context: Context, + private val linkEntity: ContentCardEntity, + private val isHighlightBg: Boolean = false +) : BaseRecyclerAdapter(context) { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = GameDetailContentCardContentItemViewHolder(parent.toBinding()) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = + GameDetailContentCardContentItemViewHolder(parent.toBinding()) override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is GameDetailContentCardContentItemViewHolder) { - holder.binding.root.setTextColor(if (isHighlightBg) R.color.text_subtitle.toColor(mContext) else R.color.text_subtitleDesc.toColor(mContext)) + holder.binding.root.setTextColor( + if (isHighlightBg) R.color.text_subtitle.toColor(mContext) else R.color.text_subtitleDesc.toColor( + mContext + ) + ) if (linkEntity.type == "func_server" && linkEntity.server != null && linkEntity.server?.calendar?.isNotEmpty() == true) { val calendarList = linkEntity.server!!.calendar val realPosition = position % calendarList.size @@ -38,5 +47,6 @@ class GameDetailContentCardContentAdapter(context: Context, private val linkEnti override fun getItemCount(): Int = Int.MAX_VALUE - class GameDetailContentCardContentItemViewHolder(var binding: ItemGameDetailContentCardContentBinding) : RecyclerView.ViewHolder(binding.root) + class GameDetailContentCardContentItemViewHolder(var binding: ItemGameDetailContentCardContentBinding) : + RecyclerView.ViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 2312c2cabc..e6b3224f9b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -154,7 +154,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { || downloadEntity.status == DownloadStatus.done || downloadEntity.status == DownloadStatus.downloading || downloadEntity.status == DownloadStatus.pause - || downloadEntity.status == DownloadStatus.redirected) { + || downloadEntity.status == DownloadStatus.redirected + ) { showInstallHint() if (!SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_GAME_DETAIL_INSTALL_GUIDE, false)) { SPUtils.setBoolean(Constants.SP_SHOULD_SHOW_GAME_DETAIL_INSTALL_GUIDE, true) @@ -171,7 +172,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { DialogUtils.showUnzipFailureDialog(requireContext(), downloadEntity) } - val gameDetailRecommendMeta = downloadEntity.getMetaExtra(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND) + val gameDetailRecommendMeta = + downloadEntity.getMetaExtra(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND) if (downloadEntity.status == DownloadStatus.add) { mRecommendBinding.recommendView.postDelayed({ showRecommendView() }, 500) if (gameDetailRecommendMeta.isNotEmpty() && mRecommendPopupEntity != null) { @@ -226,7 +228,14 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { ) private val contentCardClick: (contentCard: ContentCardEntity) -> Unit = { contentCardEntity -> - NewFlatLogUtils.logGameDetailGameContentCardClick(contentCardEntity.title ?: "", mGameEntity?.name ?: "", mGameEntity?.id ?: "", contentCardEntity.type ?: "", contentCardEntity.link ?: "", contentCardEntity.text ?: "") + NewFlatLogUtils.logGameDetailGameContentCardClick( + contentCardEntity.title ?: "", + mGameEntity?.name ?: "", + mGameEntity?.id ?: "", + contentCardEntity.type ?: "", + contentCardEntity.link ?: "", + contentCardEntity.text ?: "" + ) when (contentCardEntity.type) { "func_server" -> { if (contentCardEntity.server != null) { @@ -258,7 +267,13 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { "func_zone" -> { val gameDetailEntity = mViewModel.gameDetailLiveData.value?.data if (contentCardEntity.zoneTab && gameDetailEntity?.zone != null && gameDetailEntity.zone!!.style == "link") { - requireContext().startActivity(WebActivity.getIntent(requireContext(), gameDetailEntity.zone!!.link, true)) + requireContext().startActivity( + WebActivity.getIntent( + requireContext(), + gameDetailEntity.zone!!.link, + true + ) + ) } } "func_tool_kit" -> { @@ -281,7 +296,16 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } } - else -> DirectUtils.directToLinkPage(requireContext(), contentCardEntity.toLinkEntity(), mEntrance, "游戏详情->内容卡片", ExposureEvent.createEvent(null, listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)))) + else -> DirectUtils.directToLinkPage( + requireContext(), + contentCardEntity.toLinkEntity(), + mEntrance, + "游戏详情->内容卡片", + ExposureEvent.createEvent( + null, + listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)) + ) + ) } } @@ -482,7 +506,12 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { observeData() } - private fun initGameSubtitle(gameTitleTv: TextView, gameSubtitle: String, gameSubtitleStyle: TagStyleEntity? = null, advanceDownload: Boolean = false) { + private fun initGameSubtitle( + gameTitleTv: TextView, + gameSubtitle: String, + gameSubtitleStyle: TagStyleEntity? = null, + advanceDownload: Boolean = false + ) { gameTitleTv.post { if (!isAdded) return@post gameTitleTv.run { @@ -491,7 +520,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { lastPosX = layout.getSecondaryHorizontal(text.length) } var remainWidth = (width - lastPosX).toInt() - val tagMaxWidth = if (lineCount == 2 && layout.getEllipsisCount(1) == 0) remainWidth - 4F.dip2px() else width + val tagMaxWidth = + if (lineCount == 2 && layout.getEllipsisCount(1) == 0) remainWidth - 4F.dip2px() else width val tagLayout = FrameLayout(context) val tagView = TextView(context).apply { layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 14F.dip2px()) @@ -514,8 +544,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } } else { - setTextColor(R.color.text_subtitle.toColor(requireContext())) - background = R.drawable.bg_advance_download_game_subtitle.toDrawable(requireContext()) + setTextColor(R.color.text_subtitle.toColor(requireContext())) + background = R.drawable.bg_advance_download_game_subtitle.toDrawable(requireContext()) } } tagView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) @@ -537,9 +567,11 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { lastPosX = layout.getSecondaryHorizontal(text.length) } remainWidth = (width - lastPosX).toInt() - tagLayout.addView(tagView, FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 14F.dip2px()).apply { - leftMargin = if (remainWidth >= tagView.measuredWidth) 4F.dip2px() else 0 - }) + tagLayout.addView( + tagView, + FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 14F.dip2px()).apply { + leftMargin = if (remainWidth >= tagView.measuredWidth) 4F.dip2px() else 0 + }) val tagBitmap = tagLayout.convertViewToBitmap() if (changeDisplayName) ellipsize = null text = SpannableStringBuilder("$displayName ").apply { @@ -755,7 +787,7 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mViewModel.bigEventLiveData.observeNonNull(this) { GameBigEventDialog.showGameBigEventDialog( - requireContext(), mGameEntity?.name ?: "",mGameEntity?.id ?: "", it, mEntrance + requireContext(), mGameEntity?.name ?: "", mGameEntity?.id ?: "", it, mEntrance ) } mViewModel.recommendPopupLiveData.observe(this, Observer { @@ -1022,7 +1054,12 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mBodyBinding.gamedetailTvName.text = mGameEntity!!.name if (mGameEntity!!.subtitle.isNotEmpty() || mGameEntity!!.advanceDownload) { - initGameSubtitle(mBodyBinding.gamedetailTvName, mGameEntity!!.subtitle, mGameEntity!!.subtitleStyle, mGameEntity!!.advanceDownload) + initGameSubtitle( + mBodyBinding.gamedetailTvName, + mGameEntity!!.subtitle, + mGameEntity!!.subtitleStyle, + mGameEntity!!.advanceDownload + ) } mBodyBinding.gamedetailTvName.isSelected = true val ranking = mNewGameDetailEntity!!.ranking @@ -1032,7 +1069,12 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mBodyBinding.gameDetailRankTv.isSelected = true mBodyBinding.gameDetailRankLl.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "点击榜单", "${mViewModel.game?.name}+${ranking.columnName}") - DirectUtils.directToColumnCollection(requireContext(), ranking.collectionId, entrance = mEntrance, columnName = ranking.columnName) + DirectUtils.directToColumnCollection( + requireContext(), + ranking.collectionId, + entrance = mEntrance, + columnName = ranking.columnName + ) } } @@ -1043,17 +1085,25 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mBodyBinding.gameBigEvent.visibility = View.VISIBLE if (it.highLight) { mBodyBinding.gameBigEvent.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_2A85FB)) - mBodyBinding.gameBigEvent.background = ContextCompat.getDrawable(requireContext(), R.drawable.bg_game_big_event_light) + mBodyBinding.gameBigEvent.background = + ContextCompat.getDrawable(requireContext(), R.drawable.bg_game_big_event_light) mBodyBinding.gameBigEvent.setCompoundDrawablesWithIntrinsicBounds( ContextCompat.getDrawable(requireContext(), R.drawable.ic_game_detail_big_event), null, ContextCompat.getDrawable(requireContext(), R.drawable.ic_game_detail_big_event_arrow), null ) - var eventStr = "${TimeUtils.getFormatTime(it.time, "MM-dd")}${TimeUtils.getDayString(it.time)}:${it.content}" + var eventStr = + "${TimeUtils.getFormatTime(it.time, "MM-dd")}${TimeUtils.getDayString(it.time)}:${it.content}" if (eventStr.contains("\n")) eventStr = eventStr.substring(0, eventStr.indexOf("\n")) mBodyBinding.gameBigEvent.text = eventStr } else { - mBodyBinding.gameBigEvent.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_subtitleDesc)) - mBodyBinding.gameBigEvent.background = ContextCompat.getDrawable(requireContext(), R.drawable.bg_game_big_event) + mBodyBinding.gameBigEvent.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_subtitleDesc + ) + ) + mBodyBinding.gameBigEvent.background = + ContextCompat.getDrawable(requireContext(), R.drawable.bg_game_big_event) mBodyBinding.gameBigEvent.setCompoundDrawablesWithIntrinsicBounds( ContextCompat.getDrawable(requireContext(), R.drawable.ic_game_detail_big_event_gray), null, ContextCompat.getDrawable(requireContext(), R.drawable.ic_game_detail_big_event_arrow_gray), null @@ -1078,38 +1128,71 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mBodyBinding.contentCardContainer.visibility = View.VISIBLE if (linkEntityList.size >= 3) { linkEntityList.safelyGetInRelease(0)?.let { - mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it, true, position = 1), LinearLayout.LayoutParams(0, 56F.dip2px(), 2F)) + mBodyBinding.contentCardContainer.addView( + getLargeContentCardView(it, true, position = 1), + LinearLayout.LayoutParams(0, 56F.dip2px(), 2F) + ) } linkEntityList.safelyGetInRelease(1)?.let { - mBodyBinding.contentCardContainer.addView(getSmallContentCardView(it, position = 2), LinearLayout.LayoutParams(0, 56F.dip2px(), 1F)) + mBodyBinding.contentCardContainer.addView( + getSmallContentCardView(it, position = 2), + LinearLayout.LayoutParams(0, 56F.dip2px(), 1F) + ) } linkEntityList.safelyGetInRelease(2)?.let { - mBodyBinding.contentCardContainer.addView(getSmallContentCardView(it, true, position = 3), LinearLayout.LayoutParams(0, 56F.dip2px(), 1F)) + mBodyBinding.contentCardContainer.addView( + getSmallContentCardView(it, true, position = 3), + LinearLayout.LayoutParams(0, 56F.dip2px(), 1F) + ) } } else if (linkEntityList.size == 2) { linkEntityList.safelyGetInRelease(0)?.let { - mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it, position = 1), LinearLayout.LayoutParams(0, 56F.dip2px(), 1F)) + mBodyBinding.contentCardContainer.addView( + getLargeContentCardView(it, position = 1), + LinearLayout.LayoutParams(0, 56F.dip2px(), 1F) + ) } linkEntityList.safelyGetInRelease(1)?.let { - mBodyBinding.contentCardContainer.addView(getLargeContentCardView(it, isLastView = true, position = 2), LinearLayout.LayoutParams(0, 56F.dip2px(), 1F)) + mBodyBinding.contentCardContainer.addView( + getLargeContentCardView(it, isLastView = true, position = 2), + LinearLayout.LayoutParams(0, 56F.dip2px(), 1F) + ) } } } - private fun getLargeContentCardView(contentCardEntity: ContentCardEntity, isHighlightBg: Boolean = false, isLastView: Boolean = false, position: Int) = LayoutGameDetailContentCardLargeBinding.inflate(layoutInflater).apply { + private fun getLargeContentCardView( + contentCardEntity: ContentCardEntity, + isHighlightBg: Boolean = false, + isLastView: Boolean = false, + position: Int + ) = LayoutGameDetailContentCardLargeBinding.inflate(layoutInflater).apply { when { - isHighlightBg && !isLastView -> root.background = R.drawable.bg_content_card_large_primary.toDrawable(requireContext()) - !isHighlightBg && !isLastView -> root.background = R.drawable.bg_content_card_large.toDrawable(requireContext()) - !isHighlightBg && isLastView -> root.background = R.drawable.bg_content_card_large_right.toDrawable(requireContext()) + isHighlightBg && !isLastView -> root.background = + R.drawable.bg_content_card_large_primary.toDrawable(requireContext()) + !isHighlightBg && !isLastView -> root.background = + R.drawable.bg_content_card_large.toDrawable(requireContext()) + !isHighlightBg && isLastView -> root.background = + R.drawable.bg_content_card_large_right.toDrawable(requireContext()) } - root.setPadding(if (isLastView) 20F.dip2px() else 12F.dip2px(), 0, if (isLastView) 8F.dip2px() else 12F.dip2px(), 0) + root.setPadding( + if (isLastView) 20F.dip2px() else 12F.dip2px(), + 0, + if (isLastView) 8F.dip2px() else 12F.dip2px(), + 0 + ) titleTv.text = contentCardEntity.title ImageUtils.display(iconIv, contentCardEntity.icon) if (contentCardEntity.des.isNotEmpty() || contentCardEntity.type == "func_libao") { contentTv.visibility = View.VISIBLE contentVp.visibility = View.GONE - contentTv.text = if (contentCardEntity.type == "func_libao" && contentCardEntity.des.isEmpty()) "${contentCardEntity.libao?.total}个游戏礼包" else contentCardEntity.des - contentTv.setTextColor(if (isHighlightBg) R.color.text_subtitle.toColor(requireContext()) else R.color.text_subtitleDesc.toColor(requireContext())) + contentTv.text = + if (contentCardEntity.type == "func_libao" && contentCardEntity.des.isEmpty()) "${contentCardEntity.libao?.total}个游戏礼包" else contentCardEntity.des + contentTv.setTextColor( + if (isHighlightBg) R.color.text_subtitle.toColor(requireContext()) else R.color.text_subtitleDesc.toColor( + requireContext() + ) + ) } else if (contentCardEntity.type == "func_server") { contentTv.visibility = View.GONE contentVp.visibility = View.VISIBLE @@ -1137,26 +1220,54 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } redDotTv.goneIf(!((contentCardEntity.type == "func_server" && contentCardEntity.server?.total != 0) || contentCardEntity.type == "func_libao")) - if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = contentCardEntity.server?.total.toString() - if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = contentCardEntity.libao?.total.toString() + if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = + contentCardEntity.server?.total.toString() + if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = + contentCardEntity.libao?.total.toString() root.setOnClickListener { contentCardClick.invoke(contentCardEntity) } - ExposureManager.log(ExposureEvent.createEvent(GameEntity(sequence = position), listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)))) + ExposureManager.log( + ExposureEvent.createEvent( + GameEntity(sequence = position), + listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)) + ) + ) }.root - private fun getSmallContentCardView(contentCardEntity: ContentCardEntity, isLastView: Boolean = false, position: Int) = LayoutGameDetailContentCardSmallBinding.inflate(layoutInflater).apply { - root.background = if (isLastView) R.drawable.bg_content_card_small_right.toDrawable(requireContext()) else R.drawable.bg_content_card_small.toDrawable(requireContext()) + private fun getSmallContentCardView( + contentCardEntity: ContentCardEntity, + isLastView: Boolean = false, + position: Int + ) = LayoutGameDetailContentCardSmallBinding.inflate(layoutInflater).apply { + root.background = + if (isLastView) R.drawable.bg_content_card_small_right.toDrawable(requireContext()) else R.drawable.bg_content_card_small.toDrawable( + requireContext() + ) titleTv.text = contentCardEntity.title ImageUtils.display(iconIv, contentCardEntity.icon) redDotTv.goneIf(!((contentCardEntity.type == "func_server" && contentCardEntity.server?.total != 0) || contentCardEntity.type == "func_libao")) - redDotTv.layoutParams = (redDotTv.layoutParams as ViewGroup.MarginLayoutParams).apply { setMargins(0, 8F.dip2px(), if (isLastView) 8F.dip2px() else 12F.dip2px(), 0) } - if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = contentCardEntity.server?.total.toString() - if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = contentCardEntity.libao?.total.toString() + redDotTv.layoutParams = (redDotTv.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins( + 0, + 8F.dip2px(), + if (isLastView) 8F.dip2px() else 12F.dip2px(), + 0 + ) + } + if ((contentCardEntity.type == "func_server") && (contentCardEntity.server?.calendar?.isNotEmpty() == true)) redDotTv.text = + contentCardEntity.server?.total.toString() + if ((contentCardEntity.type == "func_libao") && (contentCardEntity.libao != null)) redDotTv.text = + contentCardEntity.libao?.total.toString() root.setOnClickListener { contentCardClick.invoke(contentCardEntity) } - ExposureManager.log(ExposureEvent.createEvent(GameEntity(sequence = position), listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)))) + ExposureManager.log( + ExposureEvent.createEvent( + GameEntity(sequence = position), + listOf(ExposureSource("游戏详情", mGameEntity?.id ?: ""), ExposureSource("内容卡片", contentCardEntity.id)) + ) + ) }.root private fun scrollToNextContent(viewPager: ViewPager2? = null) { @@ -1171,10 +1282,16 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { previousValue = currentValue } animator.addListener(object : Animator.AnimatorListener { - override fun onAnimationStart(animation: Animator) { beginFakeDrag() } - override fun onAnimationEnd(animation: Animator) { endFakeDrag() } - override fun onAnimationCancel(animation: Animator) { } - override fun onAnimationRepeat(animation: Animator) { } + override fun onAnimationStart(animation: Animator) { + beginFakeDrag() + } + + override fun onAnimationEnd(animation: Animator) { + endFakeDrag() + } + + override fun onAnimationCancel(animation: Animator) {} + override fun onAnimationRepeat(animation: Animator) {} }) animator.interpolator = AccelerateDecelerateInterpolator() animator.duration = 1000 @@ -1241,7 +1358,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } mVideoBinding.player.fullscreenButton.setOnClickListener { - val horizontalVideoView = mVideoBinding.player.startWindowFullscreen(requireContext(), true, true) as? TopVideoView + val horizontalVideoView = + mVideoBinding.player.startWindowFullscreen(requireContext(), true, true) as? TopVideoView if (horizontalVideoView == null) { toastInInternalRelease("全屏失败,请向技术人员提供具体的操作步骤") return@setOnClickListener @@ -1262,13 +1380,23 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { private fun updateToolbarStyle(isToolbarWhite: Boolean) { mBodyBinding.titleTv.setTextColor( - ContextCompat.getColor(requireContext(), if (!mIsDarkModeOn && isToolbarWhite) R.color.black else R.color.white) + ContextCompat.getColor( + requireContext(), + if (!mIsDarkModeOn && isToolbarWhite) R.color.black else R.color.white + ) ) mBodyBinding.toolbar.setNavigationIcon(if (!mIsDarkModeOn && isToolbarWhite) R.drawable.ic_bar_back else R.drawable.ic_bar_back_light) mBodyBinding.toolbar.setBackgroundColor( - ContextCompat.getColor(requireContext(), if (!mIsDarkModeOn && isToolbarWhite) R.color.white else R.color.transparent) + ContextCompat.getColor( + requireContext(), + if (!mIsDarkModeOn && isToolbarWhite) R.color.white else R.color.transparent + ) + ) + DisplayUtils.setStatusBarColor( + requireActivity(), + if (!mIsDarkModeOn && isToolbarWhite) R.color.white else R.color.transparent, + true ) - DisplayUtils.setStatusBarColor(requireActivity(), if (!mIsDarkModeOn && isToolbarWhite) R.color.white else R.color.transparent, true) updateConcernMenuIcon(mNewGameDetailEntity?.me?.isGameConcerned ?: false) mMoreMenuItem?.setIcon(if (!mIsDarkModeOn && isToolbarWhite) R.drawable.ic_menu_gamedetail_more else R.drawable.ic_menu_gamedetail_more_light) mSearchMenuItem?.setIcon(if (!mIsDarkModeOn && isToolbarWhite) R.drawable.ic_column_search else R.drawable.ic_column_search_light) @@ -1565,7 +1693,13 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { NewLogUtils.logGameDetailTabClick(name ?: "", id, "详情") } INDEX_TRENDES -> { - NewLogUtils.logGameDetailTabClick("view_game_detail_special_area_tab", entrance, id, gameType, bbsId) + NewLogUtils.logGameDetailTabClick( + "view_game_detail_special_area_tab", + entrance, + id, + gameType, + bbsId + ) NewLogUtils.logGameDetailTabClick(name ?: "", id, "专区") } INDEX_RATING -> { @@ -1656,7 +1790,11 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { if (mGameEntity != null) { val status = GameUtils.getDownloadBtnText(requireContext(), mGameEntity, PluginLocation.only_game) val isLaunch = (status == getString(R.string.launch) || status == getString(R.string.open)) - if (SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_GAME_DETAIL_INSTALL_GUIDE, false) && !mGameEntity!!.isReservable) { + if (SPUtils.getBoolean( + Constants.SP_SHOULD_SHOW_GAME_DETAIL_INSTALL_GUIDE, + false + ) && !mGameEntity!!.isReservable + ) { if (mGameEntity!!.downloadOffText?.isEmpty() == true && !isLaunch) { showInstallHint() } else { @@ -1722,7 +1860,14 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { mRecommendBinding.recommendLinkTv.text = popupDetail.link?.title mRecommendBinding.recommendLinkTv.setOnClickListener { popupDetail.link?.let { - PageSwitchDataHelper.pushCurrentPageData(hashMapOf(Pair(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND, ""))) + PageSwitchDataHelper.pushCurrentPageData( + hashMapOf( + Pair( + PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND, + "" + ) + ) + ) DirectUtils.directToLinkPage(requireContext(), it, mEntrance, "游戏详情") LogUtils.uploadRecommendPopup( "recommend_pop_link_click", mRecommendPopupEntity?.id, mViewModel.game?.id @@ -1929,7 +2074,8 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } if (it is ImageView) { - if (mIsDarkModeOn) it.setColorFilter(R.color.text_title.toColor(requireContext())) else it.colorFilter = null + if (mIsDarkModeOn) it.setColorFilter(R.color.text_title.toColor(requireContext())) else it.colorFilter = + null it.background = (it.background as GradientDrawable).apply { setStroke(0.5F.dip2px(), Color.parseColor(if (mIsDarkModeOn) "#33FFFFFF" else "#CCCCCC")) } @@ -1978,8 +2124,9 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { private const val LAST_SELECTED_POSITION = "last_selected_position" } - class LooperHandle(fragment: GameDetailFragment): Handler( - Looper.getMainLooper()) { + class LooperHandle(fragment: GameDetailFragment) : Handler( + Looper.getMainLooper() + ) { private val mWeakReference: WeakReference = WeakReference(fragment) override fun handleMessage(msg: Message) { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt index b21906c0ed..fccb0a7805 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailViewModel.kt @@ -38,9 +38,11 @@ import retrofit2.HttpException import tv.danmaku.ijk.media.exo2.ExoSourceManager import java.util.* -class GameDetailViewModel(application: Application, - var gameId: String?, - var game: GameEntity?) : AndroidViewModel(application) { +class GameDetailViewModel( + application: Application, + var gameId: String?, + var game: GameEntity? +) : AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api private val mSensitiveApi = RetrofitManager.getInstance().api @@ -84,21 +86,21 @@ class GameDetailViewModel(application: Application, // 获取游戏摘要 private fun getGameDigest() { mSensitiveApi.getGameDigest(gameId) - .map(ApkActiveUtils.filterMapper) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: GameEntity?) { - game = response - gameLiveData.postValue(Resource.success(game)) - getGameDetailNew() - getRecommendPopup(game?.id ?: "") - } + .map(ApkActiveUtils.filterMapper) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: GameEntity?) { + game = response + gameLiveData.postValue(Resource.success(game)) + getGameDetailNew() + getRecommendPopup(game?.id ?: "") + } - override fun onFailure(e: HttpException?) { - gameLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + gameLiveData.postValue(Resource.error(e)) + } + }) } //过滤游戏标签 @@ -129,52 +131,53 @@ class GameDetailViewModel(application: Application, @SuppressLint("CheckResult") fun getGameDetailNew() { mSensitiveApi.getGameDetailNew(game?.id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: NewGameDetailEntity) { - filterGameTags(data) - replaceWithMirrorInfoIfNeeded(data) - // 4.4以下设备不显示顶部视频 - displayTopVideo = data.topVideo != null - && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: NewGameDetailEntity) { + filterGameTags(data) + replaceWithMirrorInfoIfNeeded(data) + // 4.4以下设备不显示顶部视频 + displayTopVideo = data.topVideo != null + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT - data.contentCard.forEach { - // 显示开服内容卡片时,游戏详情-详情tab不显示“最新开服” - if (data.contentCard.size > 1 && it.type == "func_server") { - removeLatestServerIfNeeded(data) - return@forEach - } + data.contentCard.forEach { + // 显示开服内容卡片时,游戏详情-详情tab不显示“最新开服” + if (data.contentCard.size > 1 && it.type == "func_server") { + removeLatestServerIfNeeded(data) + return@forEach } + } - gameDetailLiveData.postValue(Resource.success(data)) - if (CheckLoginUtils.isLogin()) { - getUserRelatedInfo(data) - } else { - // 初始化礼包按钮状态 - for (entity in data.detailEntity) { - if (entity.type == "libao") { - if (entity.libao != null) { - loadLiBaoStatus(data, entity.libao!!) - } - break + gameDetailLiveData.postValue(Resource.success(data)) + if (CheckLoginUtils.isLogin()) { + getUserRelatedInfo(data) + } else { + // 初始化礼包按钮状态 + for (entity in data.detailEntity) { + if (entity.type == "libao") { + if (entity.libao != null) { + loadLiBaoStatus(data, entity.libao!!) } + break } } } + } - override fun onFailure(exception: Exception) { - if (exception is HttpException) { - gameDetailLiveData.postValue(Resource.error(exception)) - } + override fun onFailure(exception: Exception) { + if (exception is HttpException) { + gameDetailLiveData.postValue(Resource.error(exception)) } - }) + } + }) } private fun replaceWithMirrorInfoIfNeeded(data: NewGameDetailEntity) { if (data.mirrorStatus == "on" - && (game?.useMirrorInfo == true - || RegionSettingHelper.shouldThisGameDisplayMirrorInfo(game?.id ?: ""))) { + && (game?.useMirrorInfo == true + || RegionSettingHelper.shouldThisGameDisplayMirrorInfo(game?.id ?: "")) + ) { val finalItemList: ArrayList = arrayListOf() val mirrorCustomColumnList = data.mirrorData?.customColumnList ?: arrayListOf() mirrorCustomColumnList.sortByDescending { it.order } @@ -184,8 +187,14 @@ class GameDetailViewModel(application: Application, val usedMirrorCustomColumnList = arrayListOf() for (mirrorCustomColumn in mirrorCustomColumnList) { if ((mirrorCustomColumn.order!! > 0 && item.customColumn?.order!! > 0) - || (mirrorCustomColumn.order == item.customColumn?.order)) { - finalItemList.add(DetailEntity(type = DetailEntity.Type.CUSTOM_COLUMN.value, customColumn = mirrorCustomColumn)) + || (mirrorCustomColumn.order == item.customColumn?.order) + ) { + finalItemList.add( + DetailEntity( + type = DetailEntity.Type.CUSTOM_COLUMN.value, + customColumn = mirrorCustomColumn + ) + ) usedMirrorCustomColumnList.add(mirrorCustomColumn) } } @@ -200,7 +209,8 @@ class GameDetailViewModel(application: Application, // 不显示 "玩家评论`", "相关游戏`" if (item.type == DetailEntity.Type.COMMENTS.value || - item.type == DetailEntity.Type.RELATED_VERSION.value) { + item.type == DetailEntity.Type.RELATED_VERSION.value + ) { continue } @@ -245,7 +255,13 @@ class GameDetailViewModel(application: Application, } for ((index, remainingMirrorCustomColumn) in mirrorCustomColumnList.withIndex()) { - finalItemList.add(gameInfoPosition + index, DetailEntity(type = DetailEntity.Type.CUSTOM_COLUMN.value, customColumn = remainingMirrorCustomColumn)) + finalItemList.add( + gameInfoPosition + index, + DetailEntity( + type = DetailEntity.Type.CUSTOM_COLUMN.value, + customColumn = remainingMirrorCustomColumn + ) + ) } } @@ -260,7 +276,8 @@ class GameDetailViewModel(application: Application, item.info?.version = data.mirrorData?.apk?.firstOrNull()?.version ?: "" } - data.tagStyle = data.mirrorData?.tagStyle?.apply { removeAll { it.name.toLowerCase(Locale.getDefault()) == "mod版" } } + data.tagStyle = + data.mirrorData?.tagStyle?.apply { removeAll { it.name.toLowerCase(Locale.getDefault()) == "mod版" } } ?: arrayListOf() data.detailDialogs = data.mirrorData?.detailDialogs ?: arrayListOf() data.detailEntity = finalItemList @@ -305,16 +322,19 @@ class GameDetailViewModel(application: Application, requestMap["community_column_content"] = answerIdList mApi.getUserRelatedInfoByPost(UserManager.getInstance().userId, requestMap.toRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: UnifiedUserTrendEntity) { - mergeUnifiedGameDetailWithUserRelatedInfo(newGameDetailEntity, data) - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: UnifiedUserTrendEntity) { + mergeUnifiedGameDetailWithUserRelatedInfo(newGameDetailEntity, data) + } + }) } - fun mergeUnifiedGameDetailWithUserRelatedInfo(newGameDetailEntity: NewGameDetailEntity, unifiedUserTrendEntity: UnifiedUserTrendEntity) { + fun mergeUnifiedGameDetailWithUserRelatedInfo( + newGameDetailEntity: NewGameDetailEntity, + unifiedUserTrendEntity: UnifiedUserTrendEntity + ) { var libaoList: List? = null unifiedUserTrendEntity.game?.let { if (unifiedUserTrendEntity.game.isNullOrEmpty()) return@let @@ -397,26 +417,26 @@ class GameDetailViewModel(application: Application, val ids = builder.toString() mApi.getLibaoStatus(UrlFilterUtils.getFilterQuery("libao_ids", ids)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(list: List?) { - LibaoUtils.initLiBaoEntity(list, libaoList) - if (libaoList.isNotEmpty()) { - newGameDetailEntity.detailEntity.forEach { - if (it.type == "libao") { - it.libao = libaoList as ArrayList - sortLibaoList(it.libao) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(list: List?) { + LibaoUtils.initLiBaoEntity(list, libaoList) + if (libaoList.isNotEmpty()) { + newGameDetailEntity.detailEntity.forEach { + if (it.type == "libao") { + it.libao = libaoList as ArrayList + sortLibaoList(it.libao) } - unifiedGameDetailWithUserRelatedInfoForChildLiveData.postValue(newGameDetailEntity) } - } - - override fun onFailure(e: HttpException?) { unifiedGameDetailWithUserRelatedInfoForChildLiveData.postValue(newGameDetailEntity) } - }) + } + + override fun onFailure(e: HttpException?) { + unifiedGameDetailWithUserRelatedInfoForChildLiveData.postValue(newGameDetailEntity) + } + }) } //[已领取/已淘号/再领/再淘]的礼包置底显示 @@ -427,7 +447,8 @@ class GameDetailViewModel(application: Application, while (iterator.hasNext()) { val entity = iterator.next() if (entity.status == "linged" || entity.status == "taoed" || - entity.status == "repeatLinged" || entity.status == "repeatTao") { + entity.status == "repeatLinged" || entity.status == "repeatTao" + ) { tempList.add(entity) iterator.remove() } @@ -477,38 +498,40 @@ class GameDetailViewModel(application: Application, //获取大事件 fun getBigEvent() { mSensitiveApi.getBigEvent(game?.id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - response?.let { - for (event in it) { - if (event.link?.type == "feedback") { - event.link?.name = game?.name - event.link?.text = game?.getGameCategory().toString() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + response?.let { + for (event in it) { + if (event.link?.type == "feedback") { + event.link?.name = game?.name + event.link?.text = game?.getGameCategory().toString() } - bigEventLiveData.postValue(it) } + bigEventLiveData.postValue(it) } - }) + } + }) } @SuppressLint("CheckResult") fun getRecommendPopup(gameId: String) { mApi.getRecommendPopup(gameId) - .compose(singleToMain()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: ArrayList) { - recommendPopupLiveData.postValue(data) - } - }) + .compose(singleToMain()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: ArrayList) { + recommendPopupLiveData.postValue(data) + } + }) } - class Factory(private val mApplication: Application, - private val gameId: String?, - private val game: GameEntity?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val gameId: String?, + private val game: GameEntity? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return GameDetailViewModel(mApplication, gameId, game) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt index c4e423398a..4ead9cde4e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt @@ -194,7 +194,11 @@ class DescAdapter( gamedetailItemNotice.enableSingleLineText() gamedetailItemNotice.setOnClickListener { val index = gamedetailItemNotice.displayedChild - DirectUtils.directToArticle(mContext, noticeList[index].id, StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:公告")) + DirectUtils.directToArticle( + mContext, + noticeList[index].id, + StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:公告") + ) MtaHelper.onEvent(MTA_KEY_GAME_NEW, "详情_公告", "${mGameName}+${gamedetailItemNotice.notices[index]}") } } @@ -229,13 +233,21 @@ class DescAdapter( } // 绑定大家都在玩 - private fun bindGamesRecommendedGalleryViewHolder(viewHolder: GamesRecommendedGalleryViewHolder, itemData: DetailEntity) { + private fun bindGamesRecommendedGalleryViewHolder( + viewHolder: GamesRecommendedGalleryViewHolder, + itemData: DetailEntity + ) { val subjectEntity = itemData.recommendedGames viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) galleryRv.isNestedScrollingEnabled = false @@ -332,7 +344,12 @@ class DescAdapter( viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) containerWrapper.setPadding(0, itemData.paddingTop, 0, itemData.paddingBottom) galleryRv.isNestedScrollingEnabled = false @@ -408,7 +425,12 @@ class DescAdapter( viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) containerWrapper.setPadding(0, itemData.paddingTop, 0, itemData.paddingBottom) galleryRv.isNestedScrollingEnabled = false @@ -453,7 +475,12 @@ class DescAdapter( viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) galleryRv.isNestedScrollingEnabled = false containerWrapper.setPadding(0, itemData.paddingTop, 0, itemData.paddingBottom) @@ -482,13 +509,19 @@ class DescAdapter( val updateContent = itemData.update!! holder.binding.run { - containerWrapper.setPadding(mDefaultHorizontalPadding, itemData.paddingTop, mDefaultHorizontalPadding, itemData.paddingBottom) + containerWrapper.setPadding( + mDefaultHorizontalPadding, + itemData.paddingTop, + mDefaultHorizontalPadding, + itemData.paddingBottom + ) containerWrapper.setBackgroundColor(R.color.background.toColor(mContext)) titleTv.setTextColor(R.color.text_title.toColor(mContext)) contentTv.text = updateContent.updateDes contentTv.setTextColor(R.color.text_subtitle.toColor(mContext)) - val maxDesLines = if (mExpandableTextExpandStatusSparseBooleanArray.get(holder.bindingAdapterPosition)) Int.MAX_VALUE else 4 + val maxDesLines = + if (mExpandableTextExpandStatusSparseBooleanArray.get(holder.bindingAdapterPosition)) Int.MAX_VALUE else 4 contentTv.setExpandMaxLines(maxDesLines) contentTv.setIsExpanded(Int.MAX_VALUE == maxDesLines) contentTv.setExpandCallback { @@ -522,10 +555,25 @@ class DescAdapter( titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) tipsTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) - tipsTv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.servers_calendar_hint.toDrawable(mContext), null, null, null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) + tipsTv.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.servers_calendar_hint.toDrawable(mContext), + null, + null, + null + ) serviceRv.isNestedScrollingEnabled = false - containerWrapper.setPadding(mDefaultHorizontalPadding, itemData.paddingTop, mDefaultHorizontalPadding, itemData.paddingBottom) + containerWrapper.setPadding( + mDefaultHorizontalPadding, + itemData.paddingTop, + mDefaultHorizontalPadding, + itemData.paddingBottom + ) containerWrapper.setBackgroundColor(R.color.background.toColor(mContext)) if (!server.calendar.isNullOrEmpty()) { serviceRv.visibility = View.VISIBLE @@ -576,7 +624,12 @@ class DescAdapter( viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) galleryRv.isNestedScrollingEnabled = false containerWrapper.setPadding(0, itemData.paddingTop, 0, itemData.paddingBottom) @@ -631,14 +684,20 @@ class DescAdapter( viewHolder.binding.run { titleTv.setTextColor(R.color.text_title.toColor(mContext)) moreTv.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) - moreTv.setCompoundDrawablesWithIntrinsicBounds(null, null, R.drawable.ic_right_arrow_darker.toDrawable(mContext), null) + moreTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + R.drawable.ic_right_arrow_darker.toDrawable(mContext), + null + ) containerWrapper.setPadding(0, itemData.paddingTop, 0, itemData.paddingBottom) galleryRv.isNestedScrollingEnabled = false galleryRv.apply { background = R.drawable.background_shape_white_radius_5.toDrawable(mContext) layoutManager = LinearLayoutManager(mContext) - adapter = adapter ?: GameLibaoAdapter(mContext, libao, mGameName, mViewModel.game?.id ?: "", mListListener) + adapter = + adapter ?: GameLibaoAdapter(mContext, libao, mGameName, mViewModel.game?.id ?: "", mListListener) val itemDecoration = HorizontalDividerItemDecoration.Builder(mContext) .size(0.5F.dip2px()) .margin(16F.dip2px()) @@ -663,7 +722,12 @@ class DescAdapter( tipsTv.setTextColor(R.color.text_subtitle.toColor(mContext)) val paddingBottom = if (itemData.shouldBoundWithNextItem) 0 else itemData.paddingBottom - containerWrapper.setPadding(mDefaultHorizontalPadding, itemData.paddingTop, mDefaultHorizontalPadding, paddingBottom) + containerWrapper.setPadding( + mDefaultHorizontalPadding, + itemData.paddingTop, + mDefaultHorizontalPadding, + paddingBottom + ) containerWrapper.setBackgroundColor(R.color.background.toColor(mContext)) if (!info.topTags.isNullOrEmpty()) { labelsLl.visibility = View.VISIBLE @@ -720,16 +784,20 @@ class DescAdapter( else -> mExpandableTextViewMaxLinesSparseIntArray.get(position, customColumn.showDesRowNum!!) } } - val layoutManager = if (customColumn.showInfoTagDesType == "expand" || mCustomColumnTagsExpandStatusSparseBooleanArray.get(position)) { - if (customColumn.showInfoTagDes == false) { - GridLayoutManager(mContext, 3) + val layoutManager = + if (customColumn.showInfoTagDesType == "expand" || mCustomColumnTagsExpandStatusSparseBooleanArray.get( + position + ) + ) { + if (customColumn.showInfoTagDes == false) { + GridLayoutManager(mContext, 3) + } else { + mCustomColumnTagsExpandStatusSparseBooleanArray.put(position, true) + LinearLayoutManager(mContext) + } } else { - mCustomColumnTagsExpandStatusSparseBooleanArray.put(position, true) - LinearLayoutManager(mContext) + GridLayoutManager(mContext, 3) } - } else { - GridLayoutManager(mContext, 3) - } binding.run { linkTextContainer.goneIf(!(customColumn.showName ?: true)) @@ -772,8 +840,14 @@ class DescAdapter( logCustomColumnLinkClicked(title = customColumn.name, linkEntity, "正文说明") } } else { - shrankSpanned = TextHelper.getHighlightedSpannableStringThatIsWrappedInsideWrapper(mContext, customColumn.desBrief ?: "") - expandedSpanned = TextHelper.getHighlightedSpannableStringThatIsWrappedInsideWrapper(mContext, customColumn.des ?: "") + shrankSpanned = TextHelper.getHighlightedSpannableStringThatIsWrappedInsideWrapper( + mContext, + customColumn.desBrief ?: "" + ) + expandedSpanned = TextHelper.getHighlightedSpannableStringThatIsWrappedInsideWrapper( + mContext, + customColumn.des ?: "" + ) setShrankTextAndExpandedText(shrankSpanned, expandedSpanned) } goneIf(TextUtils.isEmpty(customColumn.des)) @@ -823,7 +897,12 @@ class DescAdapter( ) { it.name = mGameName it.text = mViewModel.game?.getGameCategory().toString() - DirectUtils.directToLinkPage(mContext, it, StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:自定义栏目"), "") + DirectUtils.directToLinkPage( + mContext, + it, + StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:自定义栏目"), + "" + ) } else { PageSwitchDataHelper.pushCurrentPageData( hashMapOf( @@ -831,7 +910,12 @@ class DescAdapter( Pair(PageSwitchDataHelper.PAGE_BUSINESS_NAME, mGameName) ) ) - DirectUtils.directToLinkPage(mContext, it, StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:自定义栏目"), "") + DirectUtils.directToLinkPage( + mContext, + it, + StringUtils.buildString(mEntrance, "游戏详情[", mGameName, "]:自定义栏目"), + "" + ) } } @@ -929,7 +1013,12 @@ class DescAdapter( text = label if (hasDividingLine) { compoundDrawablePadding = 12F.dip2px() - setCompoundDrawablesWithIntrinsicBounds(R.drawable.game_detail_info_dividing_line.toDrawable(mContext), null, null, null) + setCompoundDrawablesWithIntrinsicBounds( + R.drawable.game_detail_info_dividing_line.toDrawable(mContext), + null, + null, + null + ) } } } @@ -953,8 +1042,12 @@ class DescAdapter( const val MTA_KEY_GAME_NEW = "游戏详情_新" // 保留已弃用的 MTA 事件是为了以后加自有日志的时候不用再痛苦地找代码,实际上 MTA 的相关代码会在编译期移除,所以不用担心 } - class GameDetailNoticeViewHolder(var binding: GamedetailItemDescNoticeBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - class GameDetailRecommendImageViewHolder(var binding: GamedetailItemImageBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) + class GameDetailNoticeViewHolder(var binding: GamedetailItemDescNoticeBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + class GameDetailRecommendImageViewHolder(var binding: GamedetailItemImageBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + inner class GameDetailCommentsViewHolder(var binding: GamedetailItemCommentsBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { override fun exposureLog() { @@ -962,36 +1055,55 @@ class DescAdapter( } } - inner class GameDetailCustomColumnViewHolder(var binding: GamedetailItemCustomColumnBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + inner class GameDetailCustomColumnViewHolder(var binding: GamedetailItemCustomColumnBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) { override fun exposureLog() { - NewFlatLogUtils.logGameDetailColumnOrderingView(binding.titleTv.text.toString(), mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") + NewFlatLogUtils.logGameDetailColumnOrderingView( + binding.titleTv.text.toString(), + mViewModel.game?.name ?: "", + mViewModel.game?.id ?: "" + ) } } - class GameDetailRelatedVersionViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - class GameVideoGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - class GameImageGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - inner class GameUpdateContentViewHolder(var binding: GameUpdateContentBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + class GameDetailRelatedVersionViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + class GameVideoGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + class GameImageGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + inner class GameUpdateContentViewHolder(var binding: GameUpdateContentBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) { override fun exposureLog() { NewLogUtils.logGameDetailUpdatedView(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") } } - inner class GameLatestServiceViewHolder(var binding: GameLatestServiceListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + inner class GameLatestServiceViewHolder(var binding: GameLatestServiceListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) { override fun exposureLog() { NewLogUtils.logGameDetailOpenListView(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") } } - class GameRaidersGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - inner class GameLibaoGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + class GameRaidersGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + inner class GameLibaoGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) { override fun exposureLog() { NewLogUtils.logGameDetailGiftView(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") } } - class GameDetailInfoViewHolder(var binding: GameDetailInfoBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) - inner class GamesRecommendedGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : ExposureViewHolder(binding.root, handler) { + class GameDetailInfoViewHolder(var binding: GameDetailInfoBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) + + inner class GamesRecommendedGalleryViewHolder(var binding: GameGalleryListBinding, handler: Handler) : + ExposureViewHolder(binding.root, handler) { override fun exposureLog() { NewLogUtils.logGameDetailPopularView(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "") } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescCommentsAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescCommentsAdapter.kt index 5e0aaae271..4bfda180ac 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescCommentsAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescCommentsAdapter.kt @@ -74,10 +74,14 @@ class DescCommentsAdapter( val p = Pattern.compile(RatingEditActivity.LABEL_REGEX) val m = p.matcher(commentData.content) if (m.find()) { - val contents = TextHelper.getCommentLabelSpannableStringBuilder(commentData.content, R.color.theme_font) + val contents = + TextHelper.getCommentLabelSpannableStringBuilder(commentData.content, R.color.theme_font) content.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) } else { - content.setTextWithHighlightedTextWrappedInsideWrapper(text = commentData.content, copyClickedText = true) + content.setTextWithHighlightedTextWrappedInsideWrapper( + text = commentData.content, + copyClickedText = true + ) } if (commentData.user.badge != null) { sdvUserBadge.visibility = View.VISIBLE @@ -124,16 +128,29 @@ class DescCommentsAdapter( sdvUserBadge.setOnClickListener { DialogUtils.showViewBadgeDialog(mContext, commentData.user.badge, object : ConfirmListener { override fun onConfirm() { - MtaHelper.onEvent("进入徽章墙_用户记录", "游戏详情-玩家评论", "${commentData.user.name}(${commentData.user.id})") + MtaHelper.onEvent( + "进入徽章墙_用户记录", + "游戏详情-玩家评论", + "${commentData.user.name}(${commentData.user.id})" + ) MtaHelper.onEvent("徽章中心", "进入徽章中心", "游戏详情-玩家评论") - DirectUtils.directToBadgeWall(mContext, commentData.user.id, commentData.user.name, commentData.user.icon) + DirectUtils.directToBadgeWall( + mContext, + commentData.user.id, + commentData.user.name, + commentData.user.icon + ) } }) } userIcon.setOnClickListener { DirectUtils.directToHomeActivity(mContext, commentData.user.id, mEntrance, "游戏详情-玩家评论") MtaHelper.onEvent("游戏详情_新", "玩家评论_点击用户头像", mViewModel.game?.name) - NewLogUtils.logGameDetailCommentClick(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "", "个人主页") + NewLogUtils.logGameDetailCommentClick( + mViewModel.game?.name ?: "", + mViewModel.game?.id ?: "", + "个人主页" + ) } userName.setOnClickListener { userIcon.performClick() @@ -147,10 +164,20 @@ class DescCommentsAdapter( isChildLongClick = false return@setOnClickListener } - val intent = RatingReplyActivity.getIntent(mContext, mViewModel.game?.id ?: "", commentData.id, mEntrance, path) + val intent = RatingReplyActivity.getIntent( + mContext, + mViewModel.game?.id ?: "", + commentData.id, + mEntrance, + path + ) SyncDataBetweenPageHelper.startActivityForResult(mContext, intent, RATING_REPLY_REQUEST, position) MtaHelper.onEvent("游戏详情_新", "玩家评论_点击评论", mViewModel.game?.name) - NewLogUtils.logGameDetailCommentClick(mViewModel.game?.name ?: "", mViewModel.game?.id ?: "", "评论内容") + NewLogUtils.logGameDetailCommentClick( + mViewModel.game?.name ?: "", + mViewModel.game?.id ?: "", + "评论内容" + ) } content.setExpandCallback { MtaHelper.onEvent("游戏详情_新", "玩家评论_点击全文", mViewModel.game?.name) @@ -165,13 +192,19 @@ class DescCommentsAdapter( showMorePopWindow(it, commentData.user.id == UserManager.getInstance().userId) { text -> when (text) { "复制" -> { - commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "").copyTextAndToast() + commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "") + .copyTextAndToast() MtaHelper.onEvent("游戏详情_新", "玩家评论_复制", mViewModel.game?.name) } "修改" -> { MtaHelper.onEvent("游戏详情_新", "玩家评论_修改", mViewModel.game?.name) val intent = RatingEditActivity.getPatchIntent(mContext, mViewModel.game!!, commentData) - SyncDataBetweenPageHelper.startActivityForResult(mContext, intent, RATING_PATCH_REQUEST, position) + SyncDataBetweenPageHelper.startActivityForResult( + mContext, + intent, + RATING_PATCH_REQUEST, + position + ) } "投诉" -> { MtaHelper.onEvent("游戏详情_新", "玩家评论_投诉", mViewModel.game?.name) @@ -215,8 +248,10 @@ class DescCommentsAdapter( if (commentData.isEditContent == null && commentData.ignore) { MtaHelper.onEvent("游戏详情_新", "玩家评论-评论说明", mViewModel.game?.name) DialogUtils.showStopServerExplanationDialog( - mContext, if (mViewModel.game?.commentDescription?.isNotEmpty() == true) - mViewModel.game?.commentDescription else mContext.getString(R.string.rating_protection), mViewModel.game?.name + mContext, + if (mViewModel.game?.commentDescription?.isNotEmpty() == true) + mViewModel.game?.commentDescription else mContext.getString(R.string.rating_protection), + mViewModel.game?.name ?: "" ) } else if (commentData.isEditContent == true) { @@ -272,7 +307,8 @@ class DescCommentsAdapter( class MoreViewHolder(var view: View) : RecyclerView.ViewHolder(view) - class GameDetailRatingCommentViewHolder(var binding: ItemGameDetailRatingCommentBinding) : RecyclerView.ViewHolder(binding.root) + class GameDetailRatingCommentViewHolder(var binding: ItemGameDetailRatingCommentBinding) : + RecyclerView.ViewHolder(binding.root) companion object { const val RATING_REPLY_REQUEST = 233 diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt index 5c884e53e7..2781c08148 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt @@ -115,7 +115,8 @@ class DescFragment : BaseFragment(), IScrollable { mScrollToLibao = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO, false) ?: false mScrollToServer = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_SERVER, false) ?: false - val gameDetailFactory = GameDetailViewModel.Factory(HaloApp.getInstance().application, mGameEntity?.id, mGameEntity) + val gameDetailFactory = + GameDetailViewModel.Factory(HaloApp.getInstance().application, mGameEntity?.id, mGameEntity) val gameDetailViewModel: GameDetailViewModel = viewModelProviderFromParent(gameDetailFactory) mNewDetailEntity = gameDetailViewModel.gameDetailLiveData.value?.data diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt index 0199780437..0f8ffa6b67 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt @@ -35,8 +35,10 @@ import okhttp3.ResponseBody import org.json.JSONObject import retrofit2.HttpException -class DescViewModel(application: Application, - var game: GameEntity?) : AndroidViewModel(application) { +class DescViewModel( + application: Application, + var game: GameEntity? +) : AndroidViewModel(application) { private var mDataList = arrayListOf() private var mRelatedGameList = arrayListOf() @@ -59,7 +61,8 @@ class DescViewModel(application: Application, val detailEntity = mDataList.find { it.relatedGames != null } // 看游戏详情有没有相关游戏,没有就拿 3个 热门卡牌 if (detailEntity?.relatedGames == null - || detailEntity.relatedGames!!.isEmpty()) { + || detailEntity.relatedGames!!.isEmpty() + ) { assembleListWithRecommendedGames() return } @@ -89,109 +92,109 @@ class DescViewModel(application: Application, sequences.add(RetrofitManager.getInstance().api.getGameDigest(id)) } Observable.mergeDelayError(sequences) - .map(ApkActiveUtils.filterMapper) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onComplete() { - mRelatedGameList = ArrayList(result) - assembleListWithRecommendedGames() - } + .map(ApkActiveUtils.filterMapper) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onComplete() { + mRelatedGameList = ArrayList(result) + assembleListWithRecommendedGames() + } - override fun onFailure(e: HttpException?) { - mRelatedGameList = ArrayList(result) - assembleListWithRecommendedGames() - } + override fun onFailure(e: HttpException?) { + mRelatedGameList = ArrayList(result) + assembleListWithRecommendedGames() + } - override fun onNext(game: GameEntity) { - if (game.getApk().size > 0) { - result.add(game) - } + override fun onNext(game: GameEntity) { + if (game.getApk().size > 0) { + result.add(game) } - }) + } + }) } fun voteComment(commentId: String, callback: () -> Unit) { RetrofitManager.getInstance() - .api - .voteGameComment(game!!.id, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "点赞成功") - callback.invoke() + .api + .voteGameComment(game!!.id, commentId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "点赞成功") + callback.invoke() - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - val errorEntity = string?.toObject() - if (errorEntity?.code == 403008) { - onResponse(null) - return - } - ErrorHelper.handleError(getApplication(), string) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + val errorEntity = string?.toObject() + if (errorEntity?.code == 403008) { + onResponse(null) + return } - }) + ErrorHelper.handleError(getApplication(), string) + } + }) } fun unvoteComment(commentId: String, callback: () -> Unit) { RetrofitManager.getInstance() - .api - .unvoteGameComment(game!!.id, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "取消点赞") - callback.invoke() - } + .api + .unvoteGameComment(game!!.id, commentId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "取消点赞") + callback.invoke() + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + ErrorHelper.handleError(getApplication(), string) + } + }) } @SuppressLint("CheckResult") private fun assembleListWithRecommendedGames() { RemenkapaiRepository.getRemenkapai(4) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - val recommendedGameList = arrayListOf() - recommendedGameList.addAll(mRelatedGameList) - recommendedGameList.addAll(it) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + val recommendedGameList = arrayListOf() + recommendedGameList.addAll(mRelatedGameList) + recommendedGameList.addAll(it) - val recommendedGames = if (recommendedGameList.size > 4) { - SubjectEntity(data = recommendedGameList.subList(0, 4)) - } else { - SubjectEntity(data = recommendedGameList) + val recommendedGames = if (recommendedGameList.size > 4) { + SubjectEntity(data = recommendedGameList.subList(0, 4)) + } else { + SubjectEntity(data = recommendedGameList) + } + + for ((index, data) in mDataList.withIndex()) { + if (data.info != null) { + mGameInfoPosition = index + mGameInfo = data.info!! } - for ((index, data) in mDataList.withIndex()) { - if (data.info != null) { - mGameInfoPosition = index - mGameInfo = data.info!! - } - - if (data.server != null) { - mServerPosition = index - } - - if (data.libao != null) { - mLibaoPosition = index - } - - if (data.relatedGames != null) { - data.recommendedGames = recommendedGames - } + if (data.server != null) { + mServerPosition = index } - list.postValue(mDataList) - }, { e -> e.printStackTrace() }) + + if (data.libao != null) { + mLibaoPosition = index + } + + if (data.relatedGames != null) { + data.recommendedGames = recommendedGames + } + } + list.postValue(mDataList) + }, { e -> e.printStackTrace() }) } fun sendSuggestion() { @@ -209,27 +212,28 @@ class DescViewModel(application: Application, params["suggestion_type"] = "游戏求更新" params["game_id"] = game?.id ?: "" - params["message"] = "求更新:${game?.name}(${game?.getApk()?.get(0)?.packageName}, ${game?.getApk()?.get(0)?.version})" + params["message"] = + "求更新:${game?.name}(${game?.getApk()?.get(0)?.packageName}, ${game?.getApk()?.get(0)?.version})" val requestBody = params.createRequestBody() RetrofitManager.getInstance().api.postSuggestion(requestBody) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - ToastUtils.showToast("感谢您的反馈信息,我们将尽快处理~") - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + ToastUtils.showToast("感谢您的反馈信息,我们将尽快处理~") + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - e?.response()?.errorBody()?.let { - val content = JSONObject(it.string()) - if (content.getInt("code") == 403208) { - ToastUtils.showToast("您已经提交过反馈信息,我们将尽快处理~") - } + override fun onFailure(e: HttpException?) { + super.onFailure(e) + e?.response()?.errorBody()?.let { + val content = JSONObject(it.string()) + if (content.getInt("code") == 403208) { + ToastUtils.showToast("您已经提交过反馈信息,我们将尽快处理~") } } - }) + } + }) } // TODO 装饰操作放到子线程去做 @@ -239,7 +243,8 @@ class DescViewModel(application: Application, val defaultPadding = DisplayUtils.dip2px(15F) var containsFirstTimeExpandCustomColumnTags = false - var hasShownCustomColumnTagsExpandHint = SPUtils.getBoolean(Constants.SP_HAS_SHOWN_EXPANDED_GAME_DETAIL_TAGS_HINT) + var hasShownCustomColumnTagsExpandHint = + SPUtils.getBoolean(Constants.SP_HAS_SHOWN_EXPANDED_GAME_DETAIL_TAGS_HINT) // A 确定每个 item 的上下内边距 for ((index, rawItem) in detailEntityList.withIndex()) { @@ -256,12 +261,13 @@ class DescViewModel(application: Application, if (rawItem.type == DetailEntity.Type.DES.value) { rawItem.type = DetailEntity.Type.CUSTOM_COLUMN.value rawItem.customColumn = CustomColumn( - name = "游戏简介", - order = 1, - nameIcon = UriUtil.getUriForResourceId(R.drawable.ic_game_desc).toString(), - des = rawItem.des, - isHtmlDes = false, - showDesRowNum = 3) + name = "游戏简介", + order = 1, + nameIcon = UriUtil.getUriForResourceId(R.drawable.ic_game_desc).toString(), + des = rawItem.des, + isHtmlDes = false, + showDesRowNum = 3 + ) break } } @@ -286,7 +292,8 @@ class DescViewModel(application: Application, if (rawItem.type == DetailEntity.Type.CUSTOM_COLUMN.value && rawItem.customColumn?.link?.style == "button" ) { - val nextItemIsButtonStyleCustomColumn = (nextRawItem.type == DetailEntity.Type.CUSTOM_COLUMN.value && nextRawItem.customColumn?.link?.style == "button") + val nextItemIsButtonStyleCustomColumn = + (nextRawItem.type == DetailEntity.Type.CUSTOM_COLUMN.value && nextRawItem.customColumn?.link?.style == "button") rawItem.paddingBottom = 0 rawItem.shouldBoundWithNextItem = nextItemIsButtonStyleCustomColumn @@ -326,22 +333,25 @@ class DescViewModel(application: Application, if (rawItem.type == DetailEntity.Type.CUSTOM_COLUMN.value) { // 判断自定义栏目的标签是否需要进入就自动展开 if (rawItem.customColumn?.showInfoTagDesType == "first_expand" - && !SPUtils.getBoolean(Constants.SP_HAS_EXPANDED_GAME_DETAIL_TAGS)) { + && !SPUtils.getBoolean(Constants.SP_HAS_EXPANDED_GAME_DETAIL_TAGS) + ) { containsFirstTimeExpandCustomColumnTags = true rawItem.customColumn?.showInfoTagDesType = "expand" } // 正文内容为空,但是后台配置了标签展开的默认展开 if (rawItem.customColumn?.showInfoTag == true - && TextUtils.isEmpty(rawItem.customColumn?.des)) { + && TextUtils.isEmpty(rawItem.customColumn?.des) + ) { rawItem.customColumn?.showInfoTagDesType = "expand" } // 判断是否显示标签展开提示 if (rawItem.customColumn?.showInfoTagDes == true - && rawItem.customColumn?.infoTag?.size != 0 - && rawItem.customColumn?.showInfoTagDesType != "expand" - && !hasShownCustomColumnTagsExpandHint) { + && rawItem.customColumn?.infoTag?.size != 0 + && rawItem.customColumn?.showInfoTagDesType != "expand" + && !hasShownCustomColumnTagsExpandHint + ) { rawItem.customColumn?.showExpandTagsHint = true // 内存置为 true 避免出现多个提示 hasShownCustomColumnTagsExpandHint = true @@ -359,7 +369,7 @@ class DescViewModel(application: Application, } rawItem.customColumn?.des = rawItem.customColumn?.desFull - ?: rawItem.customColumn?.des + ?: rawItem.customColumn?.des } } @@ -410,8 +420,10 @@ class DescViewModel(application: Application, } } - class Factory(private val mApplication: Application, - private val game: GameEntity?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val game: GameEntity? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return DescViewModel(mApplication, game) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameDetailCustomColumnAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameDetailCustomColumnAdapter.kt index 067b875070..1f837b9daf 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameDetailCustomColumnAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameDetailCustomColumnAdapter.kt @@ -21,8 +21,7 @@ import io.reactivex.Single import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class GameDetailCustomColumnAdapter(context: Context) - : BaseRecyclerAdapter(context) { +class GameDetailCustomColumnAdapter(context: Context) : BaseRecyclerAdapter(context) { private var mTags: ArrayList = arrayListOf() private var mShowTagDes: Boolean = false @@ -44,28 +43,30 @@ class GameDetailCustomColumnAdapter(context: Context) val content = if (mShowTagDes) "$marginBetweenIconAndName$name $des" else "$marginBetweenIconAndName$name" val spannable = SpanBuilder(content) - .color(marginBetweenIconAndName.length, - name?.length?.plus(marginBetweenIconAndName.length) ?: 1, - color ?: "#000000") - .build() + .color( + marginBetweenIconAndName.length, + name?.length?.plus(marginBetweenIconAndName.length) ?: 1, + color ?: "#000000" + ) + .build() tryWithDefaultCatch { Single.just(icon) - .map { - ImageUtils.picasso.load(Uri.parse(it)).priority(Picasso.Priority.HIGH).get() - }.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe ({ - val bitmapDrawable = BitmapDrawable(mContext.resources, it) - bitmapDrawable.setBounds(0, 0, 16F.dip2px(), 16F.dip2px()) - spannable.setSpan(CenterImageSpan(bitmapDrawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - viewHolder.binding.contentTv.run { - movementMethod = CustomLinkMovementMethod.getInstance() - text = spannable - } - },{ - it.printStackTrace() - }) + .map { + ImageUtils.picasso.load(Uri.parse(it)).priority(Picasso.Priority.HIGH).get() + }.subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + val bitmapDrawable = BitmapDrawable(mContext.resources, it) + bitmapDrawable.setBounds(0, 0, 16F.dip2px(), 16F.dip2px()) + spannable.setSpan(CenterImageSpan(bitmapDrawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + viewHolder.binding.contentTv.run { + movementMethod = CustomLinkMovementMethod.getInstance() + text = spannable + } + }, { + it.printStackTrace() + }) } } } @@ -78,5 +79,6 @@ class GameDetailCustomColumnAdapter(context: Context) return mTags.size } - class GameDetailCustomViewHolderViewHolder(val binding: GamedetailItemCustomColumnItemBinding) : BaseRecyclerViewHolder(binding.root) + class GameDetailCustomViewHolderViewHolder(val binding: GamedetailItemCustomColumnItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt index 0a459bdedf..47bbf48733 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt @@ -80,7 +80,12 @@ class GameLibaoAdapter( val size = libaoEntity.me?.userDataLibaoList?.size ?: 0 val code = libaoEntity.me?.userDataLibaoList?.get(size - 1)?.code ?: "" val text = "礼包码:$code" - holder.binding.libaoCodeTv.text = SpanBuilder(text).color(holder.binding.root.context, 4, text.length, R.color.theme_font).build() + holder.binding.libaoCodeTv.text = SpanBuilder(text).color( + holder.binding.root.context, + 4, + text.length, + R.color.theme_font + ).build() holder.binding.copyLibaoCodeIv.visibility = View.VISIBLE holder.binding.copyLibaoCodeIv.setOnClickListener { code.copyTextAndToast("$code 复制成功") @@ -115,7 +120,12 @@ class GameLibaoAdapter( val size = libaoEntity.me?.userDataLibaoList?.size ?: 0 val code = libaoEntity.me?.userDataLibaoList?.get(size - 1)?.code ?: "" val text = "礼包码:$code" - holder.binding.libaoCodeTv.text = SpanBuilder(text).color(holder.binding.root.context, 4, text.length, R.color.theme_font).build() + holder.binding.libaoCodeTv.text = SpanBuilder(text).color( + holder.binding.root.context, + 4, + text.length, + R.color.theme_font + ).build() holder.binding.copyLibaoCodeIv.visibility = View.VISIBLE holder.binding.copyLibaoCodeIv.setOnClickListener { code.copyTextAndToast("$code 复制成功") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRaidersAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRaidersAdapter.kt index 0f52d47789..c41b500e62 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRaidersAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameRaidersAdapter.kt @@ -17,8 +17,12 @@ import com.gh.gamecenter.databinding.ItemGameRaidersFixedTopBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.NewsEntity -class GameRaidersAdapter(val context: Context, val articles: ArrayList, val mEntrance: String, val game: GameEntity?) - : RecyclerView.Adapter() { +class GameRaidersAdapter( + val context: Context, + val articles: ArrayList, + val mEntrance: String, + val game: GameEntity? +) : RecyclerView.Adapter() { private val mDefaultHorizontalPadding by lazy { R.dimen.game_detail_item_horizontal_padding.toPx() } @@ -26,7 +30,13 @@ class GameRaidersAdapter(val context: Context, val articles: ArrayList, val gameName: String, val mEntrance: String) : RecyclerView.Adapter() { +class GameBigEventAdapter( + val context: Context, + val bigEvents: List, + val gameName: String, + val mEntrance: String +) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return GameBigEventViewHolder(parent.toBinding()) } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt index ebb64d8af8..152ca04c44 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt @@ -69,7 +69,13 @@ class GameBigEventDialog( companion object { private val mHandler = Handler(Looper.getMainLooper()) - fun showGameBigEventDialog(context: Context, gameName: String, gameId: String, bigEvents: List, mEntrance: String) { + fun showGameBigEventDialog( + context: Context, + gameName: String, + gameId: String, + bigEvents: List, + mEntrance: String + ) { val dialog = GameBigEventDialog(context, gameName, gameId, bigEvents, mEntrance, "游戏大事件", "弹窗", gameName) dialog.show() } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt index fbf98562af..fb8429bb37 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt @@ -190,15 +190,30 @@ class GameDetailMoreDialog : BaseDraggableDialogFragment() { } binding.copyLinkTv.run { setTextColor(R.color.text_subtitle.toColor(requireContext())) - setCompoundDrawablesWithIntrinsicBounds(null, R.drawable.icon_gamedetail_copy_link.toDrawable(requireContext()), null, null) + setCompoundDrawablesWithIntrinsicBounds( + null, + R.drawable.icon_gamedetail_copy_link.toDrawable(requireContext()), + null, + null + ) } binding.feedbackTv.run { setTextColor(R.color.text_subtitle.toColor(requireContext())) - setCompoundDrawablesWithIntrinsicBounds(null, R.drawable.icon_gamedetail_feedback.toDrawable(requireContext()), null, null) + setCompoundDrawablesWithIntrinsicBounds( + null, + R.drawable.icon_gamedetail_feedback.toDrawable(requireContext()), + null, + null + ) } binding.copyrightTv.run { setTextColor(R.color.text_subtitle.toColor(requireContext())) - setCompoundDrawablesWithIntrinsicBounds(null, R.drawable.icon_gamedetail_copyright.toDrawable(requireContext()), null, null) + setCompoundDrawablesWithIntrinsicBounds( + null, + R.drawable.icon_gamedetail_copyright.toDrawable(requireContext()), + null, + null + ) } binding.cancelTv.run { background = R.drawable.button_round_gray_light.toDrawable(requireContext()) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionAdapter.kt index a73a249ff0..41c60f7feb 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionAdapter.kt @@ -16,7 +16,8 @@ import com.gh.gamecenter.databinding.GamePermissionItemBinding import com.gh.gamecenter.gamedetail.entity.Permission import com.lightgame.adapter.BaseRecyclerAdapter -class GamePermissionAdapter(context: Context, val permissions: List) : BaseRecyclerAdapter(context) { +class GamePermissionAdapter(context: Context, val permissions: List) : + BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return GamePermissionViewHolder(parent.toBinding()) @@ -39,7 +40,10 @@ class GamePermissionAdapter(context: Context, val permissions: List) private fun createTitleView(title: String): View { return TextView(mContext).apply { - val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + val params = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) params.topMargin = 10F.dip2px() layoutParams = params textSize = 14F @@ -51,7 +55,10 @@ class GamePermissionAdapter(context: Context, val permissions: List) private fun createDescView(desc: String): View { return TextView(mContext).apply { - val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + val params = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) params.topMargin = 6F.dip2px() layoutParams = params textSize = 12F diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionDialogFragment.kt index 28ca4c5c49..ab62ee22fc 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GamePermissionDialogFragment.kt @@ -78,10 +78,12 @@ class GamePermissionDialogFragment : BaseDialogFragment() { const val KEY_GAME_INFO = "game_info" @JvmStatic - fun show(activity: AppCompatActivity, - game: GameEntity?, - gameInfo: GameInfo?, - callBack: ConfirmListener? = null) { + fun show( + activity: AppCompatActivity, + game: GameEntity?, + gameInfo: GameInfo?, + callBack: ConfirmListener? = null + ) { if (callBack == null || game?.permissionDialogStatus == "on") { GamePermissionDialogFragment().apply { arguments = Bundle().apply { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsAdapter.kt index 3ccd0a6985..29f3a42571 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsAdapter.kt @@ -9,9 +9,10 @@ import com.gh.gamecenter.R import com.gh.gamecenter.entity.TagStyleEntity import com.lightgame.adapter.BaseRecyclerAdapter -class GameTagsAdapter(context: Context, private val tags: ArrayList) : BaseRecyclerAdapter(context) { +class GameTagsAdapter(context: Context, private val tags: ArrayList) : + BaseRecyclerAdapter(context) { - var onClickListener: ((tagEntity:TagStyleEntity) -> Unit)? = null + var onClickListener: ((tagEntity: TagStyleEntity) -> Unit)? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val view = LayoutInflater.from(mContext).inflate(R.layout.item_game_detail_game_tag, parent, false) return object : RecyclerView.ViewHolder(view) {} diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsDialog.kt index d005541ef7..96bfcaa288 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameTagsDialog.kt @@ -35,7 +35,7 @@ class GameTagsDialog : BaseDialogFragment() { mGameId = requireArguments().getString(EntranceConsts.KEY_GAME_ID) ?: "" mGameName = requireArguments().getString(EntranceConsts.KEY_GAME_NAME) ?: "" mTagStyles = requireArguments().getParcelableArrayList(EntranceConsts.KEY_TAGTYPE) - ?: ArrayList() + ?: ArrayList() } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -64,15 +64,19 @@ class GameTagsDialog : BaseDialogFragment() { mBinding.gameTagsRv.apply { layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) val itemDecoration = HorizontalDividerItemDecoration.Builder(requireContext()) - .margin(DisplayUtils.dip2px(20f)) - .size(DisplayUtils.dip2px(1f)) - .color(ContextCompat.getColor(requireContext(), R.color.background)).build() + .margin(DisplayUtils.dip2px(20f)) + .size(DisplayUtils.dip2px(1f)) + .color(ContextCompat.getColor(requireContext(), R.color.background)).build() addItemDecoration(itemDecoration) val gameTagsAdapter = GameTagsAdapter(requireContext(), mTagStyles) adapter = gameTagsAdapter gameTagsAdapter.onClickListener = { - requireContext().startActivity(TagsActivity.getIntent(requireContext(), - it.name, it.name, "", "游戏介绍")) + requireContext().startActivity( + TagsActivity.getIntent( + requireContext(), + it.name, it.name, "", "游戏介绍" + ) + ) NewLogUtils.logGameDetailTagClick(mGameId, mGameName, it.id, it.name) MtaHelper.onEvent("游戏标签弹窗", "进入标签", "${mGameName}+${it.name}") } @@ -80,12 +84,17 @@ class GameTagsDialog : BaseDialogFragment() { } companion object { - fun showGameTagsDialog(context: FragmentActivity, tagStyles: ArrayList, gameId: String, gameName: String) { + fun showGameTagsDialog( + context: FragmentActivity, + tagStyles: ArrayList, + gameId: String, + gameName: String + ) { val dialog = GameTagsDialog().apply { arguments = bundleOf( EntranceConsts.KEY_GAME_ID to gameId, - EntranceConsts.KEY_GAME_NAME to gameName, - EntranceConsts.KEY_TAGTYPE to tagStyles + EntranceConsts.KEY_GAME_NAME to gameName, + EntranceConsts.KEY_TAGTYPE to tagStyles ) } dialog.show(context.supportFragmentManager, DownloadDialog::class.java.name) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/GameInfoItemData.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/GameInfoItemData.kt index cde2eed027..6c2cdfd1b0 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/GameInfoItemData.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/GameInfoItemData.kt @@ -4,8 +4,8 @@ import androidx.annotation.Keep @Keep data class GameInfoItemData( - var info: String = "", - var title: String = "", - var actionStr:String="", - var key:String="" + var info: String = "", + var title: String = "", + var actionStr: String = "", + var key: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt index 7a717ed786..47dcd98b64 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/NewGameDetailEntity.kt @@ -7,73 +7,73 @@ import com.google.gson.annotations.SerializedName @Keep data class NewGameDetailEntity( - @SerializedName("show_comment") - var showComment: Boolean = false,//游戏评论开关 - @SerializedName("direct_comment") - var directComment: Boolean = false,//安装游戏才能评论 - var star: Float = 0f, - @SerializedName("new_star") - var newStar: Float = 0f, - @SerializedName("comment_count") - var commentCount: Int = 0, - @SerializedName("share_code") - var shareCode: String = "",// 分享码 - var ranking: Ranking? = null,// 游戏榜单排名,无排名时,字段不存在 - @SerializedName("top_video") - var topVideo: GameDetailEntity.Video? = null, - @SerializedName("me") - var me: MeEntity = MeEntity(), - var event: BigEvent? = null,//游戏大事件 - @SerializedName("detail_dialogs") - var detailDialogs: ArrayList = arrayListOf(), - @SerializedName("tag_style") - var tagStyle: ArrayList = ArrayList(), - @SerializedName("detail_tab") - var detailEntity: ArrayList = ArrayList(), - @SerializedName("zone_tab") - var zone: ZoneEntity? = null, - @SerializedName("appointment_switch_status") - var appointmentSwitchStatus: Boolean = false, - @SerializedName("recommend_age") - var recommendAge: String = "",//适龄等级 - @SerializedName("_seq") - val shortId: String = "", + @SerializedName("show_comment") + var showComment: Boolean = false,//游戏评论开关 + @SerializedName("direct_comment") + var directComment: Boolean = false,//安装游戏才能评论 + var star: Float = 0f, + @SerializedName("new_star") + var newStar: Float = 0f, + @SerializedName("comment_count") + var commentCount: Int = 0, + @SerializedName("share_code") + var shareCode: String = "",// 分享码 + var ranking: Ranking? = null,// 游戏榜单排名,无排名时,字段不存在 + @SerializedName("top_video") + var topVideo: GameDetailEntity.Video? = null, + @SerializedName("me") + var me: MeEntity = MeEntity(), + var event: BigEvent? = null,//游戏大事件 + @SerializedName("detail_dialogs") + var detailDialogs: ArrayList = arrayListOf(), + @SerializedName("tag_style") + var tagStyle: ArrayList = ArrayList(), + @SerializedName("detail_tab") + var detailEntity: ArrayList = ArrayList(), + @SerializedName("zone_tab") + var zone: ZoneEntity? = null, + @SerializedName("appointment_switch_status") + var appointmentSwitchStatus: Boolean = false, + @SerializedName("recommend_age") + var recommendAge: String = "",//适龄等级 + @SerializedName("_seq") + val shortId: String = "", - @SerializedName("mirror_status") - var mirrorStatus: String? = "", - @SerializedName("mirror_data") - var mirrorData: DetailEntity? = null, - @SerializedName("bbs_tab") - var bbsTab: LinkEntity? = null, - @SerializedName("certification_tag") - var certificateTag: Screenshot? = null, - @SerializedName("content_card") - var contentCard: ArrayList = ArrayList(), + @SerializedName("mirror_status") + var mirrorStatus: String? = "", + @SerializedName("mirror_data") + var mirrorData: DetailEntity? = null, + @SerializedName("bbs_tab") + var bbsTab: LinkEntity? = null, + @SerializedName("certification_tag") + var certificateTag: Screenshot? = null, + @SerializedName("content_card") + var contentCard: ArrayList = ArrayList(), - @SerializedName("smooth_relation_game") - var smoothRelatedGame: SimpleGame? = null, + @SerializedName("smooth_relation_game") + var smoothRelatedGame: SimpleGame? = null, ) @Keep data class Ranking( - @SerializedName("collection_id") - var collectionId: String = "",//合集id - @SerializedName("collection_name") - var collectionName: String = "",//合集名称 - @SerializedName("column_id") - var columnId: String = "",//专题id - @SerializedName("column_name") - var columnName: String = "",// 专题标题 - var no: String = ""// 排名名次 + @SerializedName("collection_id") + var collectionId: String = "",//合集id + @SerializedName("collection_name") + var collectionName: String = "",//合集名称 + @SerializedName("column_id") + var columnId: String = "",//专题id + @SerializedName("column_name") + var columnName: String = "",// 专题标题 + var no: String = ""// 排名名次 ) @Keep class BigEvent( - var time: Long = 0, - var content: String = "", - @SerializedName("high_light") - var highLight: Boolean = false, - var link: LinkEntity? = null + var time: Long = 0, + var content: String = "", + @SerializedName("high_light") + var highLight: Boolean = false, + var link: LinkEntity? = null ) @Keep diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ZoneEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ZoneEntity.kt index 891592bf47..d01e194e37 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ZoneEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/ZoneEntity.kt @@ -27,7 +27,7 @@ data class ZoneContentEntity( var notice: ArrayList? = null, var article: ArrayList? = null, var toolkit: ArrayList? = null, - var community: CommunityEntity?=null, + var community: CommunityEntity? = null, @SerializedName("community_column_content") - var answer: ArrayList? = null + var answer: ArrayList? = null ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiAdapter.kt index 60341c02eb..826971863d 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiAdapter.kt @@ -104,7 +104,12 @@ class FuLiAdapter( holder.hint.setText(R.string.game_suggestion_hint) holder.initItemPadding() holder.itemView.setOnClickListener { - SuggestionActivity.startSuggestionActivity(mContext, SuggestType.gameQuestion, "game", mFuLiViewModel?.game?.name) + SuggestionActivity.startSuggestionActivity( + mContext, + SuggestType.gameQuestion, + "game", + mFuLiViewModel?.game?.name + ) MtaHelper.onEvent("游戏详情_新", "此游戏有问题_点击反馈", mFuLiViewModel?.game?.name) } } @@ -122,7 +127,8 @@ class FuLiAdapter( holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.transparent)) answerItemList.background = ContextCompat.getDrawable(mContext, R.drawable.background_shape_white_radius_5) answerItemList.layoutManager = LinearLayoutManager(mContext) - answerAdapter = GameDetailAnswerAdapter(mContext, mFuLiViewModel!!, itemList?.get(position)?.answer!!, mEntrance) + answerAdapter = + GameDetailAnswerAdapter(mContext, mFuLiViewModel!!, itemList?.get(position)?.answer!!, mEntrance) mFuLiViewModel.gameCommunity = itemList?.get(position)?.community answerItemList.adapter = answerAdapter answerItemList.isNestedScrollingEnabled = false @@ -131,7 +137,11 @@ class FuLiAdapter( mSharedPreferences.edit().putBoolean(mAnswerHintKey, false).apply() LogUtils.qaAccess("游戏详情-动态-进入问答", mFuLiViewModel.gameCommunity) - MtaHelper.onEvent("游戏详情_新", "进入问答", "${mFuLiViewModel.game?.name}+${mFuLiViewModel.gameCommunity?.name}") + MtaHelper.onEvent( + "游戏详情_新", + "进入问答", + "${mFuLiViewModel.game?.name}+${mFuLiViewModel.gameCommunity?.name}" + ) DirectUtils.directToCommunity(mContext, mFuLiViewModel.gameCommunity) } } @@ -153,7 +163,11 @@ class FuLiAdapter( StringUtils.buildString(mEntrance, "游戏详情[", mFuLiViewModel?.game?.name, "]:公告") ) - MtaHelper.onEvent("游戏详情_新", "专区_公告", mFuLiViewModel?.game?.name + "+" + binding.gamedetailItemNotice.notices[index]) + MtaHelper.onEvent( + "游戏详情_新", + "专区_公告", + mFuLiViewModel?.game?.name + "+" + binding.gamedetailItemNotice.notices[index] + ) } } else { binding.gamedetailItemNotice.visibility = View.GONE diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt index a0acf83087..84741e7678 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt @@ -61,7 +61,8 @@ class FuLiFragment : LazyFragment(), IScrollable { override fun onFragmentFirstVisible() { val gameEntity = arguments?.getParcelable(GameEntity.TAG) as? GameEntity - val gameDetailFactory = GameDetailViewModel.Factory(HaloApp.getInstance().application, gameEntity?.id, gameEntity) + val gameDetailFactory = + GameDetailViewModel.Factory(HaloApp.getInstance().application, gameEntity?.id, gameEntity) shouldScroolToLibao = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO) ?: false mGameDetailViewModel = viewModelProviderFromParent(gameDetailFactory) @@ -85,7 +86,12 @@ class FuLiFragment : LazyFragment(), IScrollable { mAdapter?.itemList = it.data mAdapter?.notifyDataSetChanged() } else { - mBinding?.containerRl?.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white)) + mBinding?.containerRl?.setBackgroundColor( + ContextCompat.getColor( + requireContext(), + R.color.background_white + ) + ) mBinding?.reuseNoneData?.root?.visibility = View.VISIBLE } }) @@ -117,7 +123,9 @@ class FuLiFragment : LazyFragment(), IScrollable { override fun initRealView() { super.initRealView() - mViewSkeletonScreen = Skeleton.bind(mBinding?.gameDetailSkeleton).shimmer(false).load(R.layout.fragment_gamedongtai_skeleton).show() + mViewSkeletonScreen = + Skeleton.bind(mBinding?.gameDetailSkeleton).shimmer(false).load(R.layout.fragment_gamedongtai_skeleton) + .show() mAdapter = FuLiAdapter(requireContext(), mFuLiViewModel, mEntrance) mBinding?.fmFuliRv?.adapter = mAdapter layoutManager = object : androidx.recyclerview.widget.LinearLayoutManager(context) { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiItemData.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiItemData.kt index 0f0a9de5b1..a028ca0d7e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiItemData.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiItemData.kt @@ -12,4 +12,5 @@ data class FuLiItemData( var libao: List? = null, var server: GameDetailServer? = null, var answer: List? = null, - var update: String? = "") + var update: String? = "" +) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/GameNewsAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/GameNewsAdapter.kt index 1be9650c03..d9b684c559 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/GameNewsAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/GameNewsAdapter.kt @@ -14,7 +14,12 @@ import com.gh.gamecenter.R import com.gh.gamecenter.databinding.ItemGameDetailNewsBinding import com.gh.gamecenter.entity.NewsEntity -class GameNewsAdapter(val context: Context, val article: ArrayList, val mFuLiViewModel: FuLiViewModel?, val mEntrance: String) : RecyclerView.Adapter() { +class GameNewsAdapter( + val context: Context, + val article: ArrayList, + val mFuLiViewModel: FuLiViewModel?, + val mEntrance: String +) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return NewsViewHolder(parent.toBinding()) } @@ -27,11 +32,15 @@ class GameNewsAdapter(val context: Context, val article: ArrayList, holder.binding.newsTypeTv.text = newsEntity.type holder.binding.newsTitleTv.text = newsEntity.title if (newsEntity.type == "公告") { - holder.binding.newsTypeTv.background = DrawableView.getCornerGradientDrawable(ContextCompat.getColor(context, R.color.text_FFB749), - ContextCompat.getColor(context, R.color.text_FF6D3C), 5f) + holder.binding.newsTypeTv.background = DrawableView.getCornerGradientDrawable( + ContextCompat.getColor(context, R.color.text_FFB749), + ContextCompat.getColor(context, R.color.text_FF6D3C), 5f + ) } else { - holder.binding.newsTypeTv.background = DrawableView.getCornerGradientDrawable(ContextCompat.getColor(context, R.color.text_3CB9FF), - ContextCompat.getColor(context, R.color.theme), 5f) + holder.binding.newsTypeTv.background = DrawableView.getCornerGradientDrawable( + ContextCompat.getColor(context, R.color.text_3CB9FF), + ContextCompat.getColor(context, R.color.theme), 5f + ) } holder.itemView.setOnClickListener { skipNewsDetail(article, position) @@ -46,8 +55,10 @@ class GameNewsAdapter(val context: Context, val article: ArrayList, // 统计阅读量 NewsUtils.statNewsViews(newsEntity.id) - NewsDetailActivity.startNewsDetailActivity(context, newsEntity, - mEntrance + "+(游戏详情[" + mFuLiViewModel?.game?.name + "]:新手攻略-列表[" + (position + 1) + "])") + NewsDetailActivity.startNewsDetailActivity( + context, newsEntity, + mEntrance + "+(游戏详情[" + mFuLiViewModel?.game?.name + "]:新手攻略-列表[" + (position + 1) + "])" + ) } class NewsViewHolder(var binding: ItemGameDetailNewsBinding) : RecyclerView.ViewHolder(binding.root) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt index 9e21731a86..de9620b180 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt @@ -22,11 +22,12 @@ import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity import com.halo.assistant.HaloApp import com.lightgame.adapter.BaseRecyclerAdapter -class GameDetailAnswerAdapter(context: Context, - var mViewModel: FuLiViewModel, - private val mAnswerList: List, - private val mEntrance: String) - : BaseRecyclerAdapter(context), ISyncAdapterHandler { +class GameDetailAnswerAdapter( + context: Context, + var mViewModel: FuLiViewModel, + private val mAnswerList: List, + private val mEntrance: String +) : BaseRecyclerAdapter(context), ISyncAdapterHandler { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CommunityAnswerItemViewHolder { val view = mLayoutInflater.inflate(R.layout.community_answer_item, parent, false) @@ -55,10 +56,25 @@ class GameDetailAnswerAdapter(context: Context, MtaHelper.onEvent("进入问答", "游戏详情", mViewModel.gameCommunity?.name + "+" + mViewModel.game?.name) if ("community_article" == entity.type) { MtaHelper.onEvent("游戏详情_新", "点击社区文章", mViewModel.game?.name + "+" + entity.questions.title) - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, CommunityEntity(entity.articleCommunityId, ""), entity.id!!, mEntrance, path)) + mContext.startActivity( + ArticleDetailActivity.getIntent( + mContext, + CommunityEntity(entity.articleCommunityId, ""), + entity.id!!, + mEntrance, + path + ) + ) } else { MtaHelper.onEvent("游戏详情_新", "点击问题", mViewModel.game?.name + "+" + entity.questions.title) - mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, entity.questions.id, mEntrance, path)) + mContext.startActivity( + NewQuestionDetailActivity.getIntent( + mContext, + entity.questions.id, + mEntrance, + path + ) + ) } } @@ -67,11 +83,27 @@ class GameDetailAnswerAdapter(context: Context, MtaHelper.onEvent("进入问答", "游戏详情", mViewModel.gameCommunity?.name + "+" + mViewModel.game?.name) if ("community_article" == entity.type) { MtaHelper.onEvent("游戏详情_新", "点击社区文章", mViewModel.game?.name + "+" + entity.questions.title) - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, CommunityEntity(entity.articleCommunityId, ""), entity.id!!, mEntrance, path)) + mContext.startActivity( + ArticleDetailActivity.getIntent( + mContext, + CommunityEntity(entity.articleCommunityId, ""), + entity.id!!, + mEntrance, + path + ) + ) } else { - MtaHelper.onEvent("游戏详情_新", "点击回答", mViewModel.game?.name + "+" + StringUtils.shrinkStringWithDot(entity.brief, 10)) - mContext.startActivity(SimpleAnswerDetailActivity.getIntent(mContext, entity.id - ?: "", mEntrance, path)) + MtaHelper.onEvent( + "游戏详情_新", + "点击回答", + mViewModel.game?.name + "+" + StringUtils.shrinkStringWithDot(entity.brief, 10) + ) + mContext.startActivity( + SimpleAnswerDetailActivity.getIntent( + mContext, entity.id + ?: "", mEntrance, path + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarActivity.kt index c181c3cebf..d3f5acd6ff 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarActivity.kt @@ -334,7 +334,10 @@ class ServersCalendarActivity : ToolBarActivity() { "" } SuggestionActivity.startSuggestionActivity( - this, SuggestType.normal, "service", StringUtils.buildString(mViewModel.game.name, ",", feedbackTime, "开服信息有误:") + this, + SuggestType.normal, + "service", + StringUtils.buildString(mViewModel.game.name, ",", feedbackTime, "开服信息有误:") ) } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarAdapter.kt index 2efdc06fe3..447d764e6f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarAdapter.kt @@ -22,9 +22,11 @@ import com.gh.gamecenter.servers.add.AddKaiFuActivity.Companion.getIntent import com.lightgame.adapter.BaseRecyclerAdapter import java.util.* -class ServersCalendarAdapter(context: Context, - val viewModel: ServersCalendarViewModel, - val calendarList: List) : BaseRecyclerAdapter(context) { +class ServersCalendarAdapter( + context: Context, + val viewModel: ServersCalendarViewModel, + val calendarList: List +) : BaseRecyclerAdapter(context) { private val mGameEntity = viewModel.game private val mWeekData = context.resources.getStringArray(R.array.weekdays) @@ -69,7 +71,12 @@ class ServersCalendarAdapter(context: Context, } else { holder.binding.calendarDay.text = day.toString() if (day < viewModel.curDay && viewModel.selectedMonth == MonthType.CUR_MONTH || viewModel.selectedMonth == MonthType.PREVIOUS_MONTH) { - holder.binding.calendarDay.setTextColor(ContextCompat.getColor(mContext, R.color.text_subtitleDesc)) + holder.binding.calendarDay.setTextColor( + ContextCompat.getColor( + mContext, + R.color.text_subtitleDesc + ) + ) } else { holder.binding.calendarDay.setTextColor(ContextCompat.getColor(mContext, R.color.text_title)) } @@ -84,11 +91,15 @@ class ServersCalendarAdapter(context: Context, break } } - holder.binding.calendarKaifu.text = if (TextUtils.isEmpty(remark)) if (calendarServer.size > 1) "新服×" + calendarServer.size else "新服" else remark + holder.binding.calendarKaifu.text = + if (TextUtils.isEmpty(remark)) if (calendarServer.size > 1) "新服×" + calendarServer.size else "新服" else remark if (day < viewModel.curDay && viewModel.selectedMonth == MonthType.CUR_MONTH || viewModel.selectedMonth == MonthType.PREVIOUS_MONTH) { holder.binding.calendarKaifu.background = DrawableView.getOvalDrawable(R.color.text_body, 6F) } else { - holder.binding.calendarKaifu.background = DrawableView.getOvalDrawable(if (TextUtils.isEmpty(remark)) R.color.tag_yellow else R.color.tag_orange, 6F) + holder.binding.calendarKaifu.background = DrawableView.getOvalDrawable( + if (TextUtils.isEmpty(remark)) R.color.tag_yellow else R.color.tag_orange, + 6F + ) } } else { holder.binding.calendarKaifu.visibility = View.INVISIBLE @@ -99,12 +110,15 @@ class ServersCalendarAdapter(context: Context, val meEntity = viewModel.meEntity if (meEntity?.isPartTime == true) { (mContext as Activity).startActivityForResult( - getIntent(mContext, - if (viewModel.serverCalendarLiveData.value.isNullOrEmpty()) ServerCalendarEntity() else viewModel.serverCalendarLiveData.value!!.last(), - viewModel.serverCalendarLiveData.value as ArrayList, - mGameEntity.id, - viewModel.getSelectTime(entity.day, entity.month, entity.year)), - ServersCalendarActivity.GAME_DETAIL_ADD_KAIFU_REQUEST) + getIntent( + mContext, + if (viewModel.serverCalendarLiveData.value.isNullOrEmpty()) ServerCalendarEntity() else viewModel.serverCalendarLiveData.value!!.last(), + viewModel.serverCalendarLiveData.value as ArrayList, + mGameEntity.id, + viewModel.getSelectTime(entity.day, entity.month, entity.year) + ), + ServersCalendarActivity.GAME_DETAIL_ADD_KAIFU_REQUEST + ) } } else { MtaHelper.onEvent("开服日历表", "详情", "${viewModel.game.name}+${holder.binding.calendarKaifu.text}") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarViewModel.kt index 443e0ab83a..fb3af3f7be 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersCalendarViewModel.kt @@ -19,10 +19,12 @@ import java.util.* import kotlin.collections.ArrayList -class ServersCalendarViewModel(application: Application, - val game: GameEntity, - val gameServer: GameDetailServer, - val meEntity: MeEntity?) : AndroidViewModel(application) { +class ServersCalendarViewModel( + application: Application, + val game: GameEntity, + val gameServer: GameDetailServer, + val meEntity: MeEntity? +) : AndroidViewModel(application) { val calendarLiveData: MutableLiveData> = MutableLiveData() val serversDetailLiveData: MutableLiveData = MutableLiveData() @@ -49,18 +51,18 @@ class ServersCalendarViewModel(application: Application, @SuppressLint("CheckResult") fun loadServerData(isMirror: Boolean = false) { RetrofitManager.getInstance().api - .getGameServerCalendar(game.id, if (isMirror) "mirror" else "") - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: MutableList) { - serverCalendarLiveData.postValue(data) - } + .getGameServerCalendar(game.id, if (isMirror) "mirror" else "") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: MutableList) { + serverCalendarLiveData.postValue(data) + } - override fun onFailure(exception: Exception) { - serverCalendarLiveData.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + serverCalendarLiveData.postValue(null) + } + }) } // private fun checkExistCurSerer() { @@ -190,10 +192,12 @@ class ServersCalendarViewModel(application: Application, return calendar.time.time } - class Factory(private val mApplication: Application, - private val mGame: GameEntity, - private val mGameServer: GameDetailServer, - private val mMeEntity: MeEntity?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mGame: GameEntity, + private val mGameServer: GameDetailServer, + private val mMeEntity: MeEntity? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return ServersCalendarViewModel(mApplication, mGame, mGameServer, mMeEntity) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailViewHolder.kt index 6c5a61651c..b291b3529d 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/kaifu/ServersDetailViewHolder.kt @@ -12,7 +12,8 @@ import com.gh.gamecenter.entity.ServerCalendarEntity import com.gh.gamecenter.servers.patch.PatchKaifuActivity import com.lightgame.utils.Utils -class ServersDetailViewHolder(val binding: DialogServersCalendearDetailItemBinding) : BaseRecyclerViewHolder(binding.root) { +class ServersDetailViewHolder(val binding: DialogServersCalendearDetailItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindItem(data: ServerCalendarEntity, meEntity: MeEntity?, gameEntity: GameEntity) { binding.name.text = data.getNote() @@ -31,11 +32,14 @@ class ServersDetailViewHolder(val binding: DialogServersCalendearDetailItemBindi if ("删档内测" == data.type || "不删档内测" == data.type || "公测" == data.type) { Utils.toast(context, "开测信息不可编辑"); } else { - (context as Activity).startActivityForResult(PatchKaifuActivity.getIntent( + (context as Activity).startActivityForResult( + PatchKaifuActivity.getIntent( context, data, - gameEntity.id), - ServersCalendarActivity.GAME_DETAIL_PATCH_KAIFU_REQUEST) + gameEntity.id + ), + ServersCalendarActivity.GAME_DETAIL_PATCH_KAIFU_REQUEST + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListActivity.kt index d750dc48bd..42e4b9ab24 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListActivity.kt @@ -17,7 +17,12 @@ class HistoryApkListActivity : ToolBarActivity() { bundle.putString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) bundle.putString(EntranceConsts.KEY_GAMEID, gameEntity.id) bundle.putParcelable(EntranceConsts.KEY_GAME, gameEntity) - return getTargetIntent(context, HistoryApkListActivity::class.java, HistoryApkListFragment::class.java, bundle) + return getTargetIntent( + context, + HistoryApkListActivity::class.java, + HistoryApkListFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListAdapter.kt index 17b63dfc06..2c136939f7 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListAdapter.kt @@ -66,7 +66,8 @@ class HistoryApkListAdapter( val apkEntity = gameEntity.getApk().first() val maxDesLines = if (mExpandSparseBooleanArray.get(holder.adapterPosition)) Int.MAX_VALUE else 3 - val exposureEvent = ExposureEvent.createEvent(gameEntity = gameEntity, source = listOf(mBasicExposureSource)) + val exposureEvent = + ExposureEvent.createEvent(gameEntity = gameEntity, source = listOf(mBasicExposureSource)) holder.binding.root.setRootBackgroundColor(R.color.background_white) holder.binding.updateDescTv.text = apkEntity.updateDesc @@ -119,7 +120,11 @@ class HistoryApkListAdapter( downloadText = if (XapkUnzipStatus.UNZIPPING.name == xapkStatus) { resources.getString(R.string.unzipping) } else if (downloadEntity.status == DownloadStatus.done) { - if (PackagesManager.isInstalledWithSpecificVersion(downloadEntity.packageName, downloadEntity.versionName)) { + if (PackagesManager.isInstalledWithSpecificVersion( + downloadEntity.packageName, + downloadEntity.versionName + ) + ) { resources.getString(R.string.launch) } else { resources.getString(R.string.install) @@ -165,7 +170,8 @@ class HistoryApkListAdapter( private fun updateDescMarginRight(descTv: TextView, isExpanded: Boolean, isDownloadBtnVisible: Boolean) { if (mDescExpandedMarginRight == -1) { mDescExpandedMarginRight = 0 - mDescShrankMarginRight = mContext.resources.getDimension(R.dimen.history_apk_desc_shrank_margin_right).toInt() + mDescShrankMarginRight = + mContext.resources.getDimension(R.dimen.history_apk_desc_shrank_margin_right).toInt() } val constraintSet = ConstraintSet() diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListViewModel.kt index 7903e7d658..cab1e74b8b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListViewModel.kt @@ -17,8 +17,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import retrofit2.HttpException -class HistoryApkListViewModel(application: Application, var gameId: String, var game: GameEntity?) - : ListViewModel(application) { +class HistoryApkListViewModel(application: Application, var gameId: String, var game: GameEntity?) : + ListViewModel(application) { val showDowngradeHint = MutableLiveData() @@ -36,19 +36,19 @@ class HistoryApkListViewModel(application: Application, var gameId: String, var fun getGameDigest() { RetrofitManager.getInstance().api - .getGameDigest(gameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: GameEntity?) { - game = response - load(LoadType.NORMAL) - } + .getGameDigest(gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: GameEntity?) { + game = response + load(LoadType.NORMAL) + } - override fun onFailure(e: HttpException?) { - load(LoadType.NORMAL) - } - }) + override fun onFailure(e: HttpException?) { + load(LoadType.NORMAL) + } + }) } override fun mergeResultLiveData() { @@ -65,16 +65,19 @@ class HistoryApkListViewModel(application: Application, var gameId: String, var } if (gameList.isNotEmpty() && gameList.first().getApk().isNotEmpty() - && gameList.first().getApk().first().downloadStatus != "off") { + && gameList.first().getApk().first().downloadStatus != "off" + ) { showDowngradeHint.postValue(true) } mResultLiveData.postValue(gameList) } } - class Factory(private val mApplication: Application, - private val gameId: String, - private val game: GameEntity?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val gameId: String, + private val game: GameEntity? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return HistoryApkListViewModel(mApplication, gameId, game) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt index c44d7f18db..149f52a52e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingAdapter.kt @@ -54,10 +54,10 @@ class MyRatingAdapter( holder.binding.gameName.text = rating.game.name holder.binding.scoreTv.text = if (rating.game.star > 0) rating.game.star.toString() else "评分过少" holder.binding.scoreTv.textSize = if (rating.game.star > 0) 18f else 8f - holder.binding.ratingBar.rating=rating.star.toFloat() - holder.binding.comment.text=if (rating.reply > 0) NumberUtils.transSimpleCount(rating.reply) else "" - holder.binding.vote.isChecked=rating.me.isVoted - holder.binding.vote.text=if (rating.vote > 0) NumberUtils.transSimpleCount(rating.vote) else "" + holder.binding.ratingBar.rating = rating.star.toFloat() + holder.binding.comment.text = if (rating.reply > 0) NumberUtils.transSimpleCount(rating.reply) else "" + holder.binding.vote.isChecked = rating.me.isVoted + holder.binding.vote.text = if (rating.vote > 0) NumberUtils.transSimpleCount(rating.vote) else "" val maxDesLines = if (mExpandSparseBooleanArray.get(holder.adapterPosition)) Int.MAX_VALUE else 3 holder.binding.tvComment.setExpandMaxLines(maxDesLines) holder.binding.tvComment.setIsExpanded(Int.MAX_VALUE == maxDesLines) @@ -67,9 +67,15 @@ class MyRatingAdapter( val m = Pattern.compile(RatingEditActivity.LABEL_REGEX).matcher(rating.content) if (m.find()) { val contents = TextHelper.getCommentLabelSpannableStringBuilder(rating.content, R.color.theme_font) - holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) + holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper( + text = contents, + copyClickedText = true + ) } else { - holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper(text = rating.content, copyClickedText = true) + holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper( + text = rating.content, + copyClickedText = true + ) } holder.binding.tvComment.setExpandCallback { mExpandSparseBooleanArray.put(holder.adapterPosition, true) @@ -110,7 +116,8 @@ class MyRatingAdapter( return@setOnClickListener } MtaHelper.onEvent("我的光环_新", "我的游戏评论", "评论详情") - val intent = RatingReplyActivity.getIntent(mContext, rating.game.id, rating.id, false, "我的游戏评论", "") + val intent = + RatingReplyActivity.getIntent(mContext, rating.game.id, rating.id, false, "我的游戏评论", "") /* if(!rating.active){ intent = RatingReplyActivity.getIntent(mContext, rating.transformGameEntity(), rating.transformCommentEntity(), "我的游戏评论", "") }else if(!rating.game.active){ diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingFragment.kt index d17a764707..934403f4cb 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingFragment.kt @@ -73,7 +73,8 @@ class MyRatingFragment : ListFragment() { } override fun getItemDecoration(): RecyclerView.ItemDecoration { - val itemDecoration = CustomDividerItemDecoration(requireContext(), + val itemDecoration = CustomDividerItemDecoration( + requireContext(), onlyDecorateTheFirstItem = false, notDecorateTheFirstItem = false, notDecorateTheLastItem = true, diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt index 528ab089ad..40cf487319 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt @@ -36,43 +36,43 @@ class MyRatingViewModel(application: Application) : ListViewModel Unit) { mApi.voteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "点赞成功") - callback.invoke() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "点赞成功") + callback.invoke() - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - val errorEntity = string?.toObject() - if (errorEntity?.code == 403008) { - onResponse(null) - return - } - ErrorHelper.handleError(getApplication(), string) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + val errorEntity = string?.toObject() + if (errorEntity?.code == 403008) { + onResponse(null) + return } - }) + ErrorHelper.handleError(getApplication(), string) + } + }) } fun unVoteComment(gameId: String, commentId: String, callback: () -> Unit) { mApi.unvoteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - Utils.toast(getApplication(), "取消点赞") - callback.invoke() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + Utils.toast(getApplication(), "取消点赞") + callback.invoke() + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + ErrorHelper.handleError(getApplication(), string) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt index 5e98dadc30..72765c5663 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingAdapter.kt @@ -69,7 +69,10 @@ class RatingAdapter( } } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { val view: View return when (viewType) { ItemViewType.ITEM_HEADER -> { @@ -115,7 +118,8 @@ class RatingAdapter( val params = holder.itemView.layoutParams as RecyclerView.LayoutParams params.height = 44F.dip2px() holder.itemView.layoutParams = params - holder.itemView.background = ContextCompat.getDrawable(mContext, R.drawable.background_shape_white_radius_5) + holder.itemView.background = + ContextCompat.getDrawable(mContext, R.drawable.background_shape_white_radius_5) holder.loading.visibility = View.GONE holder.hint.text = "查看折叠评价>" holder.hint.textSize = 12F @@ -141,7 +145,8 @@ class RatingAdapter( notEnoughCommentTips.goneIf(it.commentCount > 3) scoreProgressContainer.goneIf(it.commentCount <= 3) scoreTv.textSize = if (it.commentCount > 3) 18f else 8f - scoreTv.text = if (it.commentCount > 3) (if (it.star.average == 10.0f) "10" else it.star.average.toString()) else "评分过少" + scoreTv.text = + if (it.commentCount > 3) (if (it.star.average == 10.0f) "10" else it.star.average.toString()) else "评分过少" setRatingScore(ratingScoreFive, it.star) setRatingScore(ratingScoreFour, it.star) setRatingScore(ratingScoreThree, it.star) @@ -198,18 +203,30 @@ class RatingAdapter( } } stopServerIv.setOnClickListener { - DialogUtils.showStopServerExplanationDialog(mContext, ratingData?.commentDescription, mListViewModel.game.name) + DialogUtils.showStopServerExplanationDialog( + mContext, + ratingData?.commentDescription, + mListViewModel.game.name + ) } if (ratingData?.serviceComment != null) { includeServiceComment.commentItem.visibility = View.VISIBLE - initRatingComment(RatingCommentItemViewHolder(includeServiceComment), ratingData?.serviceComment!!, headServiceCommentPosition) + initRatingComment( + RatingCommentItemViewHolder(includeServiceComment), + ratingData?.serviceComment!!, + headServiceCommentPosition + ) } else { includeServiceComment.commentItem.visibility = View.GONE } if (ratingData?.myComment != null) { includeMyComment.commentItem.visibility = View.VISIBLE - initRatingComment(RatingCommentItemViewHolder(includeMyComment), ratingData?.myComment!!, headMyCommentPosition) + initRatingComment( + RatingCommentItemViewHolder(includeMyComment), + ratingData?.myComment!!, + headMyCommentPosition + ) } else { includeMyComment.commentItem.visibility = View.GONE } @@ -304,7 +321,8 @@ class RatingAdapter( }) replyContent.setOnLongClickListener(View.OnLongClickListener { isChildLongClick = true - commentData.replyData?.content?.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "")?.copyTextAndToast() + commentData.replyData?.content?.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "") + ?.copyTextAndToast() return@OnLongClickListener true }) replyMore.setOnClickListener { @@ -346,7 +364,11 @@ class RatingAdapter( vote.isChecked = false commentData.vote = count commentData.me.isVoted = false - if (path == "游戏详情:评分") MtaHelper.onEvent("游戏详情_新", "评论Tab_取消点赞", mListViewModel.game.name) + if (path == "游戏详情:评分") MtaHelper.onEvent( + "游戏详情_新", + "评论Tab_取消点赞", + mListViewModel.game.name + ) if (path == "折叠评论") MtaHelper.onEvent("折叠评论", "取消点赞", mListViewModel.game.name) }) } @@ -362,10 +384,20 @@ class RatingAdapter( } else { RatingReplyActivity.getIntent(mContext, mListViewModel.game.id, commentData.id, mEntrance, path) } - SyncDataBetweenPageHelper.startActivityForResult(mContext, intent, RatingFragment.RATING_REPLAY_REQUEST, dataPosition) + SyncDataBetweenPageHelper.startActivityForResult( + mContext, + intent, + RatingFragment.RATING_REPLAY_REQUEST, + dataPosition + ) } - private fun skipRatingEdit(starCount: Float, entrance: String, fromAmway: Boolean = false, isSkipSuccessPage: Boolean = false) { + private fun skipRatingEdit( + starCount: Float, + entrance: String, + fromAmway: Boolean = false, + isSkipSuccessPage: Boolean = false + ) { debugOnly { mDirectComment = true } @@ -374,7 +406,14 @@ class RatingAdapter( val installPackageName = mListViewModel.canUserCommentThisGame() if (mDirectComment || !installPackageName.isNullOrEmpty()) { val intent = - RatingEditActivity.getIntent(mContext, mListViewModel.game, starCount, installPackageName, fromAmway, isSkipSuccessPage) + RatingEditActivity.getIntent( + mContext, + mListViewModel.game, + starCount, + installPackageName, + fromAmway, + isSkipSuccessPage + ) (mContext as Activity).startActivityForResult(intent, RatingFragment.RATING_EDIT_REQUEST) } else { Utils.toast(mContext, "安装游戏后才能评论哦") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingCommentItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingCommentItemViewHolder.kt index 57b812d060..f764711ba7 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingCommentItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingCommentItemViewHolder.kt @@ -62,16 +62,26 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR val contents = TextHelper.getCommentLabelSpannableStringBuilder(commentData.content, R.color.theme_font) content.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) } else { - content.setTextWithHighlightedTextWrappedInsideWrapper(text = commentData.content, copyClickedText = true) + content.setTextWithHighlightedTextWrappedInsideWrapper( + text = commentData.content, + copyClickedText = true + ) } commentItem.setBackgroundColor(R.color.background_white.toColor(context)) - commentItem.setPadding(0, 0, 0, if (!commentData.active || commentData.replyData != null) 16f.dip2px() else 0) + commentItem.setPadding( + 0, + 0, + 0, + if (!commentData.active || commentData.replyData != null) 16f.dip2px() else 0 + ) userName.setTextColor(R.color.text_title.toColor(context)) userName.text = commentData.user.name ratingStart.rating = commentData.star.toFloat() device.text = commentData.getDevice() - device.visibility = if (commentData.active && commentData.getDevice().isNotEmpty()) View.VISIBLE else View.GONE - version.visibility = if (commentData.active && commentData.gameVersion.isNotEmpty()) View.VISIBLE else View.GONE + device.visibility = + if (commentData.active && commentData.getDevice().isNotEmpty()) View.VISIBLE else View.GONE + version.visibility = + if (commentData.active && commentData.gameVersion.isNotEmpty()) View.VISIBLE else View.GONE val commentDrawable = ContextCompat.getDrawable(context, R.drawable.community_comment_count) commentDrawable?.setBounds(0, 0, 20f.dip2px(), 20f.dip2px()) comment.setCompoundDrawables(commentDrawable, null, null, null) @@ -173,22 +183,25 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR // "评论详情" -> "游戏评论详情" // else -> "" // } - DialogUtils.showViewBadgeDialog(context, commentData.replyData!!.user.badge, object : ConfirmListener { - override fun onConfirm() { + DialogUtils.showViewBadgeDialog( + context, + commentData.replyData!!.user.badge, + object : ConfirmListener { + override fun onConfirm() { // MtaHelper.onEvent( // "进入徽章墙_用户记录", // key, // "${commentData.replyData?.user?.name}(${commentData.replyData?.user?.id})" // ) // MtaHelper.onEvent("徽章中心", "进入徽章中心", key) - DirectUtils.directToBadgeWall( - context, - commentData.replyData!!.user.id, - commentData.replyData!!.user.name, - commentData.replyData!!.user.icon - ) - } - }) + DirectUtils.directToBadgeWall( + context, + commentData.replyData!!.user.id, + commentData.replyData!!.user.name, + commentData.replyData!!.user.icon + ) + } + }) } }, @@ -290,7 +303,12 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR override fun onConfirm() { // MtaHelper.onEvent("进入徽章墙_用户记录", getKey(path), "${commentData.user.name}(${commentData.user.id})") // MtaHelper.onEvent("徽章中心", "进入徽章中心", getKey(path)) - DirectUtils.directToBadgeWall(context, commentData.user.id, commentData.user.name, commentData.user.icon) + DirectUtils.directToBadgeWall( + context, + commentData.user.id, + commentData.user.name, + commentData.user.icon + ) } }) } @@ -309,13 +327,19 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR game?.id ?: "", game?.gameType ?: "" ) - commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "").copyTextAndToast() + commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "") + .copyTextAndToast() } "修改" -> { // if (path == "游戏详情:评分") MtaHelper.onEvent("游戏详情_新", "评论Tab_修改", game?.name) // if (path == "折叠评论") MtaHelper.onEvent("折叠评论", "更多-修改", game?.name) val intent = RatingEditActivity.getPatchIntent(context, game!!, commentData) - SyncDataBetweenPageHelper.startActivityForResult(context, intent, RatingFragment.RATING_PATCH_REQUEST, dataPosition) + SyncDataBetweenPageHelper.startActivityForResult( + context, + intent, + RatingFragment.RATING_PATCH_REQUEST, + dataPosition + ) } "投诉" -> { // if (path == "游戏详情:评分") MtaHelper.onEvent("游戏详情_新", "评论Tab_投诉", game?.name) @@ -330,7 +354,11 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR context, Constants.REPORT_LIST.toList() as ArrayList ) { reason, desc -> - SimpleRequestHelper.reportGameComment(game?.id ?: "", commentData.id, if (reason != "其他原因") reason else desc) + SimpleRequestHelper.reportGameComment( + game?.id ?: "", + commentData.id, + if (reason != "其他原因") reason else desc + ) } } } @@ -394,7 +422,12 @@ class RatingCommentItemViewHolder(val binding: RatingCommentItemBinding) : BaseR override fun onClick(widget: View) { val intent = RatingEditActivity.getPatchIntent(context, game!!, commentData) - SyncDataBetweenPageHelper.startActivityForResult(context, intent, RatingFragment.RATING_PATCH_REQUEST, dataPosition) + SyncDataBetweenPageHelper.startActivityForResult( + context, + intent, + RatingFragment.RATING_PATCH_REQUEST, + dataPosition + ) } }, auditText.length - 3, auditText.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) audit.text = auditText diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingDetailCommentItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingDetailCommentItemViewHolder.kt index 25fc8acb4b..20d84af403 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingDetailCommentItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingDetailCommentItemViewHolder.kt @@ -36,7 +36,8 @@ import com.gh.gamecenter.gamedetail.rating.logs.CommentLogsActivity import com.gh.gamecenter.login.user.UserManager import java.util.regex.Pattern -class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBinding) : BaseRecyclerViewHolder(binding.root) { +class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBinding) : + BaseRecyclerViewHolder(binding.root) { @SuppressLint("CheckResult") fun setContent(commentData: RatingComment, game: GameEntity?, dataPosition: Int, entrance: String, path: String) { binding.run { @@ -73,7 +74,10 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin val contents = TextHelper.getCommentLabelSpannableStringBuilder(commentData.content, R.color.theme_font) contentTv.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) } else { - contentTv.setTextWithHighlightedTextWrappedInsideWrapper(text = commentData.content, copyClickedText = true) + contentTv.setTextWithHighlightedTextWrappedInsideWrapper( + text = commentData.content, + copyClickedText = true + ) } root.setBackgroundColor(R.color.background_white.toColor(context)) userNameTv.setTextColor(R.color.text_title.toColor(context)) @@ -81,8 +85,10 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin ratingStar.visibility = View.VISIBLE ratingStar.rating = commentData.star.toFloat() device.text = commentData.getDevice() - device.visibility = if (commentData.active && commentData.getDevice().isNotEmpty()) View.VISIBLE else View.GONE - version.visibility = if (commentData.active && commentData.gameVersion.isNotEmpty()) View.VISIBLE else View.GONE + device.visibility = + if (commentData.active && commentData.getDevice().isNotEmpty()) View.VISIBLE else View.GONE + version.visibility = + if (commentData.active && commentData.gameVersion.isNotEmpty()) View.VISIBLE else View.GONE if (commentData.me.isVoted) { likeCountTv.setTextColor(R.color.theme_font.toColor(likeCountTv.context)) likeCountTv.setCompoundDrawablesWithIntrinsicBounds( @@ -227,7 +233,12 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin override fun onConfirm() { // MtaHelper.onEvent("进入徽章墙_用户记录", getKey(path), "${commentData.user.name}(${commentData.user.id})") // MtaHelper.onEvent("徽章中心", "进入徽章中心", getKey(path)) - DirectUtils.directToBadgeWall(context, commentData.user.id, commentData.user.name, commentData.user.icon) + DirectUtils.directToBadgeWall( + context, + commentData.user.id, + commentData.user.name, + commentData.user.icon + ) } }) } @@ -246,13 +257,19 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin game?.id ?: "", game?.gameType ?: "" ) - commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "").copyTextAndToast() + commentData.content.replace(RatingEditActivity.LABEL_REPLACE_REGEX.toRegex(), "") + .copyTextAndToast() } "修改" -> { // if (path == "游戏详情:评分") MtaHelper.onEvent("游戏详情_新", "评论Tab_修改", game?.name) // if (path == "折叠评论") MtaHelper.onEvent("折叠评论", "更多-修改", game?.name) val intent = RatingEditActivity.getPatchIntent(context, game!!, commentData) - SyncDataBetweenPageHelper.startActivityForResult(context, intent, RatingFragment.RATING_PATCH_REQUEST, dataPosition) + SyncDataBetweenPageHelper.startActivityForResult( + context, + intent, + RatingFragment.RATING_PATCH_REQUEST, + dataPosition + ) } "投诉" -> { // if (path == "游戏详情:评分") MtaHelper.onEvent("游戏详情_新", "评论Tab_投诉", game?.name) @@ -267,7 +284,11 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin context, Constants.REPORT_LIST.toList() as ArrayList ) { reason, desc -> - SimpleRequestHelper.reportGameComment(game?.id ?: "", commentData.id, if (reason != "其他原因") reason else desc) + SimpleRequestHelper.reportGameComment( + game?.id ?: "", + commentData.id, + if (reason != "其他原因") reason else desc + ) } } } @@ -277,7 +298,11 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin R.string.delete_game_comment.toResString() ) { SimpleRequestHelper.deleteGameComment(game?.id ?: "", commentData.id) { - SyncDataBetweenPageHelper.setResultAndFinish(context, commentData, RatingFragment.RATING_DELETE_RESULT) + SyncDataBetweenPageHelper.setResultAndFinish( + context, + commentData, + RatingFragment.RATING_DELETE_RESULT + ) } } } @@ -331,7 +356,12 @@ class RatingDetailCommentItemViewHolder(val binding: ItemArticleDetailCommentBin override fun onClick(widget: View) { val intent = RatingEditActivity.getPatchIntent(context, game!!, commentData) - SyncDataBetweenPageHelper.startActivityForResult(context, intent, RatingFragment.RATING_PATCH_REQUEST, dataPosition) + SyncDataBetweenPageHelper.startActivityForResult( + context, + intent, + RatingFragment.RATING_PATCH_REQUEST, + dataPosition + ) } }, auditText.length - 3, auditText.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) audit.text = auditText diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt index c852bf6a83..47f97060da 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt @@ -13,6 +13,7 @@ class RatingFoldActivity : ToolBarActivity() { super.onCreate(savedInstanceState) setNavigationTitle("折叠评价") } + companion object { @JvmStatic fun getIntent(context: Context, game: GameEntity, entrance: String, path: String): Intent { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingItemViewHolder.kt index a6bd78bd9c..0322267b52 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingItemViewHolder.kt @@ -30,9 +30,9 @@ class RatingItemViewHolder(val binding: RatingItemBinding) : BaseRecyclerViewHol val inflater = LayoutInflater.from(view.context) val layout = inflater.inflate(R.layout.layout_popup_container, null) val popupWindow = BugFixedPopupWindow( - layout, - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val container = layout.findViewById(R.id.container) @@ -42,7 +42,12 @@ class RatingItemViewHolder(val binding: RatingItemBinding) : BaseRecyclerViewHol val hitText = item.findViewById(R.id.hint_text) hitText.text = text - hitText.setTextColor(ContextCompat.getColor(view.context, if (text == selectedValue) R.color.theme_font else R.color.text_subtitle)) + hitText.setTextColor( + ContextCompat.getColor( + view.context, + if (text == selectedValue) R.color.theme_font else R.color.text_subtitle + ) + ) item.setOnClickListener { popupWindow.dismiss() diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt index 0daba9e4e1..a5aeda98cf 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt @@ -109,8 +109,17 @@ class RatingReplyActivity : ListActivity 0) NumberUtils.transSimpleCount(replyEntity.vote) else "" - contentTv.setTextWithHighlightedTextWrappedInsideWrapper(text = replyEntity.content, copyClickedText = true) + contentTv.setTextWithHighlightedTextWrappedInsideWrapper( + text = replyEntity.content, + copyClickedText = true + ) userIconIv.display( replyEntity.user.border, replyEntity.user.icon, @@ -437,7 +442,7 @@ class RatingReplyAdapter( mEntityList[1].comment!!.id, replyEntity.id, ) { - val index = mEntityList.indexOfFirst { item -> + val index = mEntityList.indexOfFirst { item -> item.reply?.id == replyEntity.id } mEntityList.removeAt(index) @@ -498,7 +503,12 @@ class RatingReplyAdapter( orderSfv.run { setContainerBackground(R.drawable.button_round_f5f5f5.toDrawable(mContext)) setIndicatorBackground(R.drawable.bg_game_collection_sfv_indicator.toDrawable(mContext)) - setTextColor(ContextCompat.getColorStateList(mContext, R.color.game_collection_rg_button_selector)) + setTextColor( + ContextCompat.getColorStateList( + mContext, + R.color.game_collection_rg_button_selector + ) + ) } commentHintTv.text = "全部回复" diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyItem.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyItem.kt index a264b5f8ea..67090d4d84 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyItem.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyItem.kt @@ -4,7 +4,9 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.RatingComment import com.gh.gamecenter.entity.RatingReplyEntity -class RatingReplyItem(var game: GameEntity? = null, - var comment: RatingComment? = null, - var replyCount: Int? = null, - var reply: RatingReplyEntity? = null) \ No newline at end of file +class RatingReplyItem( + var game: GameEntity? = null, + var comment: RatingComment? = null, + var replyCount: Int? = null, + var reply: RatingReplyEntity? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyViewModel.kt index 806e900525..404ef0b2d0 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyViewModel.kt @@ -178,7 +178,12 @@ class RatingReplyViewModel( }) } - fun replyComment(replyId: String?, content: String, successCallback: () -> Unit, realNameConfirmListener: ConfirmListener) { + fun replyComment( + replyId: String?, + content: String, + successCallback: () -> Unit, + realNameConfirmListener: ConfirmListener + ) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true)) val json = json { @@ -226,7 +231,13 @@ class RatingReplyViewModel( false ) ) - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string(), false, realNameConfirmListener, "游戏评论及回复") + ErrorHelper.handleError( + getApplication(), + e?.response()?.errorBody()?.string(), + false, + realNameConfirmListener, + "游戏评论及回复" + ) } }) } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt index 1c59cf8cfd..4b100acf34 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingViewModel.kt @@ -28,7 +28,8 @@ import io.reactivex.schedulers.Schedulers import okhttp3.ResponseBody import retrofit2.HttpException -class RatingViewModel(application: Application, val game: GameEntity, val type: RatingType = RatingType.RATING) : ListViewModel(application) { +class RatingViewModel(application: Application, val game: GameEntity, val type: RatingType = RatingType.RATING) : + ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api @@ -50,12 +51,16 @@ class RatingViewModel(application: Application, val game: GameEntity, val type: override fun provideDataObservable(page: Int): Observable>? { return if (type == RatingType.RATING) { - mApi.getGameComments(game.id, page, - UrlFilterUtils.getFilterQuery(FILTER_DEVICE_KEY, - filterMap[FILTER_DEVICE_KEY], - FILTER_START_KEY, - filterMap[FILTER_START_KEY]), - filterMap[FILTER_SORT_KEY]) + mApi.getGameComments( + game.id, page, + UrlFilterUtils.getFilterQuery( + FILTER_DEVICE_KEY, + filterMap[FILTER_DEVICE_KEY], + FILTER_START_KEY, + filterMap[FILTER_START_KEY] + ), + filterMap[FILTER_SORT_KEY] + ) } else { mApi.getGameComments(game.id, page, UrlFilterUtils.getFilterQuery("fold", "true"), "") } @@ -77,9 +82,10 @@ class RatingViewModel(application: Application, val game: GameEntity, val type: for (apk in game.getApk()) { val packageName = apk.packageName if (!TextUtils.isEmpty(packageName) - // 过滤黑名单包名 - && !PackageHelper.commentPackageNameBlackList.contains(packageName) - && !PackageHelper.downloadPackageNameBlackList.contains(packageName)) { + // 过滤黑名单包名 + && !PackageHelper.commentPackageNameBlackList.contains(packageName) + && !PackageHelper.downloadPackageNameBlackList.contains(packageName) + ) { packageNameList.add(packageName!!) } } @@ -97,65 +103,65 @@ class RatingViewModel(application: Application, val game: GameEntity, val type: private fun getRatingData() { mApi.getGameRating(game.id, Build.MODEL) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: Rating?) { - ratingLiveData.value = response - load(LoadType.NORMAL) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: Rating?) { + ratingLiveData.value = response + load(LoadType.NORMAL) + } - override fun onFailure(e: HttpException?) { - if (e != null && e.code() == 404) { - loadStatusControl(0) - } else { - loadStatusControl(REQUEST_FAILURE_SIZE) - } + override fun onFailure(e: HttpException?) { + if (e != null && e.code() == 404) { + loadStatusControl(0) + } else { + loadStatusControl(REQUEST_FAILURE_SIZE) } - }) + } + }) } fun voteComment(commentId: String, callback: () -> Unit) { mApi.voteGameComment(game.id, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "点赞成功") - callback.invoke() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "点赞成功") + callback.invoke() - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - val errorEntity = string?.toObject() - if (errorEntity?.code == 403008) { - onResponse(null) - return - } - ErrorHelper.handleError(getApplication(), string) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + val errorEntity = string?.toObject() + if (errorEntity?.code == 403008) { + onResponse(null) + return } - }) + ErrorHelper.handleError(getApplication(), string) + } + }) } fun unVoteComment(commentId: String, callback: () -> Unit) { mApi.unvoteGameComment(game.id, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - Utils.toast(getApplication(), "取消点赞") - callback.invoke() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + Utils.toast(getApplication(), "取消点赞") + callback.invoke() + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + ErrorHelper.handleError(getApplication(), string) + } + }) } fun filterList(sort: String?, filter: String?) { @@ -189,9 +195,11 @@ class RatingViewModel(application: Application, val game: GameEntity, val type: return mCurLoadParams.loadOffset } - class Factory(private val mApplication: Application, - private val game: GameEntity, - val type: RatingType = RatingType.RATING) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val game: GameEntity, + val type: RatingType = RatingType.RATING + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return RatingViewModel(mApplication, game, type) as T } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt index b6e32ef04c..f7c083b7d1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt @@ -118,7 +118,13 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { } mPlaceholder = "您觉得《${mGame?.name}》怎么样?真实、客观、丰富、大于100字的评论内容,更容易获得点赞并推荐到安利墙哦~" mBinding.commentRules.setOnClickListener { - startActivity(WebActivity.getWebIntent(this, getString(R.string.comment_rules_title), getString(R.string.comment_rules_url))) + startActivity( + WebActivity.getWebIntent( + this, + getString(R.string.comment_rules_title), + getString(R.string.comment_rules_url) + ) + ) } val navigationTitle: String @@ -131,7 +137,8 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { ratingStartCount = mDraft!!.star.toFloat() } } - mBinding.ratingEditName.text = if (ratingStartCount.toInt() > 0) mRatingScoreTip[ratingStartCount.toInt() - 1] else "" + mBinding.ratingEditName.text = + if (ratingStartCount.toInt() > 0) mRatingScoreTip[ratingStartCount.toInt() - 1] else "" mBinding.ratingScore.rating = ratingStartCount } else { navigationTitle = "修改评论" @@ -141,7 +148,8 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { ratingStartCount = mDraft!!.star.toFloat() isChecked = mDraft!!.getDevice().isNotEmpty() } - mBinding.ratingEditName.text = if (ratingStartCount.toInt() > 0) mRatingScoreTip[ratingStartCount.toInt() - 1] else "" + mBinding.ratingEditName.text = + if (ratingStartCount.toInt() > 0) mRatingScoreTip[ratingStartCount.toInt() - 1] else "" mBinding.ratingScore.rating = ratingStartCount mBinding.deviceBox.isChecked = isChecked } @@ -205,7 +213,10 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { mBinding.mWebView.callHandler("setComment", arrayOf(insertContent), OnReturnValue {}) if (mViewModel.guideTags.value != null) { mBinding.mWebView.callHandler("setPlaceholder", arrayOf(mPlaceholder), OnReturnValue {}) - mBinding.mWebView.callHandler("setGuideTags", arrayOf(mViewModel.guideTags.value), OnReturnValue {}) + mBinding.mWebView.callHandler( + "setGuideTags", + arrayOf(mViewModel.guideTags.value), + OnReturnValue {}) } if (mLoadError) { mBinding.mWebView.visibility = View.GONE @@ -322,7 +333,11 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { "检测到您评论的内容中含有反映游戏问题相关内容,可选择点击下方联系客服按钮,将问题反馈给客服,以便更优解决!", "联系客服", "继续提交", { - DirectUtils.directToWebView(this@RatingEditActivity, Constants.TENCENT_QIDIAN_ADDRESS, mEntrance) + DirectUtils.directToWebView( + this@RatingEditActivity, + Constants.TENCENT_QIDIAN_ADDRESS, + mEntrance + ) MtaHelper.onEvent("游戏评论跳转", "联系客服弹窗", "点击联系客服") }, object : CancelListener { override fun onCancel() { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsActivity.kt index c5b40899ea..01b5cc4cb3 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsActivity.kt @@ -55,7 +55,8 @@ class CommentLogsActivity : ListActivity { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun onDarkModeChanged() { @@ -73,7 +74,10 @@ class CommentLogsActivity : ListActivity { return if (intent.getStringExtra(EntranceConsts.KEY_GAMEID) != null && intent.getStringExtra(EntranceConsts.KEY_COMMENTID) != null) { - Pair(intent.getStringExtra(EntranceConsts.KEY_GAMEID) ?: "", intent.getStringExtra(EntranceConsts.KEY_COMMENTID) ?: "") + Pair( + intent.getStringExtra(EntranceConsts.KEY_GAMEID) ?: "", + intent.getStringExtra(EntranceConsts.KEY_COMMENTID) ?: "" + ) } else { super.getBusinessId() } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsAdapter.kt index 02b294dbc4..96125f9f1b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/logs/CommentLogsAdapter.kt @@ -161,5 +161,6 @@ class CommentLogsAdapter( data class SpanType(val type: Int, val content: String) - inner class CommentLogItemViewHolder(val binding: GameCommentLogItemBinding) : BaseRecyclerViewHolder(binding.root) + inner class CommentLogItemViewHolder(val binding: GameCommentLogItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt index 757dd31b6c..a2fdde8c96 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/video/TopVideoView.kt @@ -38,7 +38,8 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge import io.reactivex.disposables.Disposable import java.util.* -class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private var mMuteCallback: MuteCallback private var mVolumeObserver: VolumeObserver? = null @@ -56,14 +57,15 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS init { post { - gestureDetector = GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { - override fun onSingleTapConfirmed(e: MotionEvent): Boolean { - if (!mChangePosition && !mChangeVolume && !mBrightness) { - onClickUiToggle(e) + gestureDetector = + GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + if (!mChangePosition && !mChangeVolume && !mBrightness) { + onClickUiToggle(e) + } + return super.onSingleTapConfirmed(e) } - return super.onSingleTapConfirmed(e) - } - }) + }) if (mIfCurrentIsFullscreen) { showBackBtn() @@ -200,7 +202,11 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS viewModel?.videoIsMuted = false findViewById(R.id.volume)?.setImageResource(R.drawable.ic_game_detail_volume_on) CustomManager.getCustomManager(getKey()).isNeedMute = false - mAudioManager.requestAudioFocus(onAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) + mAudioManager.requestAudioFocus( + onAudioFocusChangeListener, + AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT + ) if (isManual) { uploadVideoStreamingPlaying("取消静音") MtaHelper.onEvent("游戏详情_顶部视频", "${getMtaKeyPrefix()}-解除静音", combinedTitleAndId) @@ -286,7 +292,9 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS } override fun isShowNetConfirm(): Boolean { - return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected(context) + return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected( + context + ) && mNeedShowWifiTip) } @@ -313,7 +321,11 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS gsyVideoManager.playTag = mPlayTag gsyVideoManager.playPosition = mPlayPosition if (viewModel?.videoIsMuted == false) { - mAudioManager.requestAudioFocus(onAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) + mAudioManager.requestAudioFocus( + onAudioFocusChangeListener, + AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT + ) } try { if (mContext is Activity) { @@ -323,7 +335,15 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS e.printStackTrace() } mBackUpPlayingBufferState = -1 - gsyVideoManager.prepare(mUrl, if (mMapHeadData == null) HashMap() else mMapHeadData, mLooping, mSpeed, mCache, mCachePath, mOverrideExtension) + gsyVideoManager.prepare( + mUrl, + if (mMapHeadData == null) HashMap() else mMapHeadData, + mLooping, + mSpeed, + mCache, + mCachePath, + mOverrideExtension + ) setStateAndUi(CURRENT_STATE_PREPAREING) } @@ -343,7 +363,11 @@ class TopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeS updateThumb(video!!.poster) } else if (state == CURRENT_STATE_PLAYING) { if (!CustomManager.getCustomManager(getKey()).isNeedMute) { - mAudioManager.requestAudioFocus(onAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) + mAudioManager.requestAudioFocus( + onAudioFocusChangeListener, + AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT + ) } } else { findViewById(R.id.replayContainer)?.visibility = View.GONE diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpCategoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/help/HelpCategoryAdapter.kt index 45d85824eb..0d2e19ba37 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpCategoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpCategoryAdapter.kt @@ -11,11 +11,13 @@ import com.gh.gamecenter.databinding.HelpCategoryItemBinding import com.gh.gamecenter.entity.HelpCategoryEntity import com.lightgame.adapter.BaseRecyclerAdapter -class HelpCategoryAdapter(context: Context, - private val mCategoryList: List, - private val mNavigationTitle: String, - private val clickCallback: (HelpCategoryEntity?) -> Unit, - private val mViewModel: HelpContainerViewModel) : BaseRecyclerAdapter(context) { +class HelpCategoryAdapter( + context: Context, + private val mCategoryList: List, + private val mNavigationTitle: String, + private val clickCallback: (HelpCategoryEntity?) -> Unit, + private val mViewModel: HelpContainerViewModel +) : BaseRecyclerAdapter(context) { private val mSelectMap = mutableMapOf() @@ -39,8 +41,9 @@ class HelpCategoryAdapter(context: Context, val entity = mCategoryList[position] holder.binding.content.text = entity.name holder.binding.content.setTextColor( - if (mSelectMap[position] == true) R.color.theme_font.toColor(mContext) - else R.color.text_title.toColor(mContext)) + if (mSelectMap[position] == true) R.color.theme_font.toColor(mContext) + else R.color.text_title.toColor(mContext) + ) holder.binding.icon.goneIf(entity.icon.isEmpty()) ImageUtils.display(holder.binding.icon, entity.icon) diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/help/HelpContainerFragment.kt index 6798312b2c..7e3c93d679 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpContainerFragment.kt @@ -72,7 +72,8 @@ class HelpContainerFragment : ToolbarFragment() { mBinding.includeNoneData.root.visibility = View.VISIBLE mBinding.includeNoConnection.root.visibility = View.GONE mBinding.content.visibility = View.GONE - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv).setText(R.string.content_delete_hint) + mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) + .setText(R.string.content_delete_hint) toast(R.string.comment_failed_unable) } }) @@ -196,7 +197,8 @@ class HelpContainerFragment : ToolbarFragment() { @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(busNetworkState: EBNetworkState) { if (busNetworkState.isNetworkConnected - && (mViewModel.categoryLiveData.value?.status == Status.ERROR || mViewModel.configLiveData.value == null)) { + && (mViewModel.categoryLiveData.value?.status == Status.ERROR || mViewModel.configLiveData.value == null) + ) { mViewModel.initData() } } diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpContainerViewModel.kt b/app/src/main/java/com/gh/gamecenter/help/HelpContainerViewModel.kt index f4249c31d5..e874ce4e51 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpContainerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpContainerViewModel.kt @@ -16,9 +16,11 @@ import okhttp3.ResponseBody import org.json.JSONObject import retrofit2.HttpException -class HelpContainerViewModel(application: Application, - val qaId: String?, - val qaCollectionId: String?) : AndroidViewModel(application) { +class HelpContainerViewModel( + application: Application, + val qaId: String?, + val qaCollectionId: String? +) : AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api /** @@ -44,65 +46,67 @@ class HelpContainerViewModel(application: Application, @SuppressLint("CheckResult") fun getHelpCategory() { mApi.helpCategory - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categoryLiveData.postValue(Resource.success(data)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + val httpException = if (exception is HttpException) { + exception + } else null + categoryLiveData.postValue(Resource.error(httpException)) + } + }) } @SuppressLint("CheckResult") fun getQaConfig() { mApi.getQaConfig(qaId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val jsonObject = JSONObject(data.string()) - val active = jsonObject.getBoolean("active") - val search = jsonObject.getBoolean("search") - configLiveData.postValue(Pair(active, search)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val jsonObject = JSONObject(data.string()) + val active = jsonObject.getBoolean("active") + val search = jsonObject.getBoolean("search") + configLiveData.postValue(Pair(active, search)) + } - override fun onFailure(exception: Exception) { - configLiveData.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + configLiveData.postValue(null) + } + }) } @SuppressLint("CheckResult") fun getQaCollection() { mApi.getQaCollection(qaCollectionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categoryLiveData.postValue(Resource.success(data)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + val httpException = if (exception is HttpException) { + exception + } else null + categoryLiveData.postValue(Resource.error(httpException)) + } + }) } - class Factory(private val mApplication: Application, - private val mQaId: String?, - private val mQaCollectionId: String?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mQaId: String?, + private val mQaCollectionId: String? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return HelpContainerViewModel(mApplication, mQaId, mQaCollectionId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpContentAdapter.kt b/app/src/main/java/com/gh/gamecenter/help/HelpContentAdapter.kt index ab97efec76..be57c19db1 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpContentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpContentAdapter.kt @@ -135,11 +135,26 @@ class HelpContentAdapter( "${searchKey}+${HtmlUtils.stripHtml(entity.title)}" ) } - NewLogUtils.logClickQaSearchItem(searchKey, entity.id, HtmlUtils.filterHtmlLabel(entity.title), entity.helpId) - NewLogUtils.logEnterQaContent("搜索结果", entity.id, HtmlUtils.filterHtmlLabel(entity.title), entity.helpId) + NewLogUtils.logClickQaSearchItem( + searchKey, + entity.id, + HtmlUtils.filterHtmlLabel(entity.title), + entity.helpId + ) + NewLogUtils.logEnterQaContent( + "搜索结果", + entity.id, + HtmlUtils.filterHtmlLabel(entity.title), + entity.helpId + ) } else if (!mQaId.isNullOrEmpty()) { MtaHelper.onEvent("QA", "QA内容", navigationTitle + "+" + entity.title) - NewLogUtils.logEnterQaContent("QA", entity.id, HtmlUtils.filterHtmlLabel(entity.title), entity.helpId) + NewLogUtils.logEnterQaContent( + "QA", + entity.id, + HtmlUtils.filterHtmlLabel(entity.title), + entity.helpId + ) } else if (!mQaCollectionId.isNullOrEmpty()) { if (category != null) { MtaHelper.onEvent( diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpContentFragment.kt b/app/src/main/java/com/gh/gamecenter/help/HelpContentFragment.kt index 9f8c2f50b8..34574f0ac1 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpContentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpContentFragment.kt @@ -40,7 +40,8 @@ class HelpContentFragment : ListFragment { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun autoLoadMore() { diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpQaAdapter.kt b/app/src/main/java/com/gh/gamecenter/help/HelpQaAdapter.kt index 3ac28767db..6cc6b53318 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpQaAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpQaAdapter.kt @@ -57,7 +57,12 @@ class HelpQaAdapter(val context: Context, val helpCategoryEntity: HelpCategoryEn } else { MtaHelper.onEvent("意见反馈", "使用帮助点击", "点击首页+${HtmlUtils.stripHtml(helpEntity.title)}") } - NewLogUtils.logEnterQaContent("QA首页", helpEntity.id, HtmlUtils.filterHtmlLabel(helpEntity.title), helpCategoryEntity.id) + NewLogUtils.logEnterQaContent( + "QA首页", + helpEntity.id, + HtmlUtils.filterHtmlLabel(helpEntity.title), + helpCategoryEntity.id + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryAdapter.kt index 1dc3b8d2ff..a607337bec 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryAdapter.kt @@ -14,7 +14,8 @@ import com.gh.gamecenter.R import com.gh.gamecenter.databinding.HelpQaCategoryItemBinding import com.gh.gamecenter.entity.HelpCategoryEntity -class HelpQaCategoryAdapter(val context: Context, private val mQaCollectionId: String?) : RecyclerView.Adapter() { +class HelpQaCategoryAdapter(val context: Context, private val mQaCollectionId: String?) : + RecyclerView.Adapter() { val mEntityList = arrayListOf() diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryFragment.kt b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryFragment.kt index b5a79ac2e4..9f0897ba51 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryFragment.kt @@ -43,7 +43,8 @@ class HelpQaCategoryFragment : ToolbarFragment() { mBinding.includeLoading.root.visibility = View.GONE if (it.status == Status.SUCCESS) { if (it.data.isNullOrEmpty()) { - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv).setText(R.string.game_empty) + mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) + .setText(R.string.game_empty) mBinding.includeNoneData.root.visibility = View.VISIBLE } else { mBinding.includeNoneData.root.visibility = View.GONE @@ -55,7 +56,8 @@ class HelpQaCategoryFragment : ToolbarFragment() { if (errorEntity?.code == 403083) { // 隐藏 mBinding.includeNoneData.root.visibility = View.VISIBLE mBinding.includeNoConnection.root.visibility = View.GONE - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv).setText(R.string.content_delete_hint) + mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) + .setText(R.string.content_delete_hint) toast(R.string.comment_failed_unable) } else { mBinding.includeNoneData.root.visibility = View.GONE @@ -82,17 +84,17 @@ class HelpQaCategoryFragment : ToolbarFragment() { } } - fun getItemDecoration(): RecyclerView.ItemDecoration { - return CustomDividerItemDecoration( - requireContext(), - onlyDecorateTheFirstItem = false, - notDecorateTheFirstItem = false, - notDecorateTheLastItem = true, - notDecorateTheFirstTwoItems = false - ).apply { - setDrawable(R.drawable.divider_item_line_space_16.toDrawable(requireContext())!!) - } - } + fun getItemDecoration(): RecyclerView.ItemDecoration { + return CustomDividerItemDecoration( + requireContext(), + onlyDecorateTheFirstItem = false, + notDecorateTheFirstItem = false, + notDecorateTheLastItem = true, + notDecorateTheFirstTwoItems = false + ).apply { + setDrawable(R.drawable.divider_item_line_space_16.toDrawable(requireContext())!!) + } + } override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryViewModel.kt b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryViewModel.kt index ed54597efa..b5f3e8e4e5 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpQaCategoryViewModel.kt @@ -15,7 +15,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import retrofit2.HttpException -class HelpQaCategoryViewModel(application: Application, val qaCollectionId: String? = "") : AndroidViewModel(application) { +class HelpQaCategoryViewModel(application: Application, val qaCollectionId: String? = "") : + AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api val categoryLiveData = MutableLiveData>>() @@ -23,10 +24,11 @@ class HelpQaCategoryViewModel(application: Application, val qaCollectionId: Stri init { initData() } - fun initData(){ + + fun initData() { if (!qaCollectionId.isNullOrEmpty()) { getQaCollection() - } else { + } else { getHelpCategory() } } @@ -34,41 +36,41 @@ class HelpQaCategoryViewModel(application: Application, val qaCollectionId: Stri @SuppressLint("CheckResult") fun getQaCollection() { mApi.getQaCollection(qaCollectionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categoryLiveData.postValue(Resource.success(data)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + val httpException = if (exception is HttpException) { + exception + } else null + categoryLiveData.postValue(Resource.error(httpException)) + } + }) } @SuppressLint("CheckResult") fun getHelpCategory() { mApi.helpCategory - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categoryLiveData.postValue(Resource.success(data)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + val httpException = if (exception is HttpException) { + exception + } else null + categoryLiveData.postValue(Resource.error(httpException)) + } + }) } diff --git a/app/src/main/java/com/gh/gamecenter/help/QaFeedbackViewModel.kt b/app/src/main/java/com/gh/gamecenter/help/QaFeedbackViewModel.kt index 02c96870f0..d1789a37a4 100644 --- a/app/src/main/java/com/gh/gamecenter/help/QaFeedbackViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/help/QaFeedbackViewModel.kt @@ -38,18 +38,18 @@ class QaFeedbackViewModel(application: Application, private val contentId: Strin val requestBody = map.toRequestBody() RetrofitManager.getInstance().api - .qaSuggestions(contentId, requestBody) - .compose(singleToMain()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - feedbackSuccess.postValue(true) - } + .qaSuggestions(contentId, requestBody) + .compose(singleToMain()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + feedbackSuccess.postValue(true) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - feedbackSuccess.postValue(false) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + feedbackSuccess.postValue(false) + } + }) } class Factory(private val contentId: String) : ViewModelProvider.NewInstanceFactory() { diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryActivity.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryActivity.kt index 513ebde2a7..c4d78f2adb 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryActivity.kt @@ -8,7 +8,7 @@ import com.gh.gamecenter.R import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.updateStatusBarColor -class HistoryActivity: ToolBarActivity() { +class HistoryActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt index 5495d23ddb..087bb2f957 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListAdapter.kt @@ -41,7 +41,10 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa return ItemViewType.GAME_NORMAL } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { return when (viewType) { ItemViewType.GAME_NORMAL -> { GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) @@ -163,8 +166,14 @@ class HistoryGameListAdapter(context: Context, private val mViewModel: HistoryGa mPopupBinding?.run { selectNumTv.text = if (selectItems.isEmpty()) "" else "(${selectItems.size})" itemDelete.background = - if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - itemDelete.setTextColor(if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor(mContext)) + if (selectItems.isEmpty()) R.drawable.bg_shape_f5_radius_999.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + itemDelete.setTextColor( + if (selectItems.isEmpty()) R.color.text_body.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) itemDelete.isEnabled = selectItems.isNotEmpty() checkAllCb.isChecked = selectItems.size == mEntityList.size } diff --git a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt index 0a4b91e3fb..1fac258467 100644 --- a/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/history/HistoryGameListFragment.kt @@ -35,7 +35,8 @@ open class HistoryGameListFragment : ListFragment? = null, - var recommends: List? = null, - var amway: List? = null, - var gameCollection: List? = null, - var attachGame: HomeContent? = null, - var recentVGame: ArrayList? = null, - var lineDivider: Float? = null, - var unknownData: Any? = null) : LegacyHomeItemData() \ No newline at end of file +data class HomeItemData( + var slides: List? = null, + var recommends: List? = null, + var amway: List? = null, + var gameCollection: List? = null, + var attachGame: HomeContent? = null, + var recentVGame: ArrayList? = null, + var lineDivider: Float? = null, + var unknownData: Any? = null +) : LegacyHomeItemData() \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeRecommendItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/HomeRecommendItemViewHolder.kt index f9b808cd4f..fee948e6c2 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeRecommendItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeRecommendItemViewHolder.kt @@ -25,7 +25,14 @@ class HomeRecommendItemViewHolder(val binding: HomeRecommendItemBinding) : BaseR MtaHelper.onEvent("首页_新", "推荐入口_点击", (position + 1).toString()) val recommend = recommends[position] - LogUtils.logRecommendClick("首页", recommend.name, recommend.linkType, recommend.linkText,recommend.linkId, position) + LogUtils.logRecommendClick( + "首页", + recommend.name, + recommend.linkType, + recommend.linkText, + recommend.linkId, + position + ) if (recommend.linkType == "top_game_comment") { MtaHelper.onEvent("安利墙", "进入", "首页推荐入口") diff --git a/app/src/main/java/com/gh/gamecenter/home/amway/HomeAmwayListViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/amway/HomeAmwayListViewHolder.kt index 84c416cec2..5913bc727f 100644 --- a/app/src/main/java/com/gh/gamecenter/home/amway/HomeAmwayListViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/amway/HomeAmwayListViewHolder.kt @@ -10,7 +10,10 @@ import com.gh.gamecenter.entity.AmwayCommentEntity class HomeAmwayListViewHolder(val binding: HomeAmwayListBinding) : BaseRecyclerViewHolder(binding.root) { - fun bindAmwayList(amwayList: List, itemClick: (View, position: Int, AmwayCommentEntity) -> Unit) { + fun bindAmwayList( + amwayList: List, + itemClick: (View, position: Int, AmwayCommentEntity) -> Unit + ) { val context = binding.recyclerView.context var adapter = binding.recyclerView.adapter if (adapter is HomeAmwayAdapter) { diff --git a/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionAdapter.kt index 0c2c8b2a73..570049df43 100644 --- a/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionAdapter.kt @@ -30,7 +30,8 @@ class HomeGameCollectionAdapter(context: Context, private val entrance: String) notifyDataSetChanged() } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = HomeGameCollectionCardViewHolder(HomeGameCollectionItemCell(mContext).apply { inflate() }) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + HomeGameCollectionCardViewHolder(HomeGameCollectionItemCell(mContext).apply { inflate() }) override fun onBindViewHolder(holder: HomeGameCollectionCardViewHolder, position: Int) { if (mGameCollectionItemDataList.isNotEmpty()) { @@ -58,7 +59,11 @@ class HomeGameCollectionAdapter(context: Context, private val entrance: String) } class HomeGameCollectionCardViewHolder(val cell: HomeGameCollectionItemCell) : BaseRecyclerViewHolder(cell) { - fun bindGameCollectionCard(binding: HomeGameCollectionCardItemBinding, itemData: GameCollectionListItemData, entrance: String) { + fun bindGameCollectionCard( + binding: HomeGameCollectionCardItemBinding, + itemData: GameCollectionListItemData, + entrance: String + ) { binding.run { val context = root.context val gamesCollectionEntity = itemData.gameCollectionItem @@ -91,37 +96,52 @@ class HomeGameCollectionAdapter(context: Context, private val entrance: String) iconIvOne.setOnClickListener { val game = gamesCollectionEntity.games?.get(0) NewLogUtils.logClickGameCollectionGameIcon( - gamesCollectionEntity.title, - gamesCollectionEntity.id, - game?.name ?: "", - game?.id ?: "" + gamesCollectionEntity.title, + gamesCollectionEntity.id, + game?.name ?: "", + game?.id ?: "" ) game?.id?.let { id -> - GameDetailActivity.startGameDetailActivity(context, id, BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), itemData.exposureEventList?.safelyGetInRelease(0)) + GameDetailActivity.startGameDetailActivity( + context, + id, + BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), + itemData.exposureEventList?.safelyGetInRelease(0) + ) } } iconIvTwo.setOnClickListener { val game = gamesCollectionEntity.games?.get(1) NewLogUtils.logClickGameCollectionGameIcon( - gamesCollectionEntity.title, - gamesCollectionEntity.id, - game?.name ?: "", - game?.id ?: "" + gamesCollectionEntity.title, + gamesCollectionEntity.id, + game?.name ?: "", + game?.id ?: "" ) game?.id?.let { id -> - GameDetailActivity.startGameDetailActivity(context, id, BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), itemData.exposureEventList?.safelyGetInRelease(1)) + GameDetailActivity.startGameDetailActivity( + context, + id, + BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), + itemData.exposureEventList?.safelyGetInRelease(1) + ) } } iconIvThree.setOnClickListener { val game = gamesCollectionEntity.games?.get(2) NewLogUtils.logClickGameCollectionGameIcon( - gamesCollectionEntity.title, - gamesCollectionEntity.id, - game?.name ?: "", - game?.id ?: "" + gamesCollectionEntity.title, + gamesCollectionEntity.id, + game?.name ?: "", + game?.id ?: "" ) game?.id?.let { id -> - GameDetailActivity.startGameDetailActivity(context, id, BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), itemData.exposureEventList?.safelyGetInRelease(2)) + GameDetailActivity.startGameDetailActivity( + context, + id, + BaseActivity.mergeEntranceAndPath(entrance, "游戏单"), + itemData.exposureEventList?.safelyGetInRelease(2) + ) } } userContainer.setOnClickListener { diff --git a/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionViewHolder.kt index cb58f2aacf..9d860e3f62 100644 --- a/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/gamecollection/HomeGameCollectionViewHolder.kt @@ -81,8 +81,9 @@ class HomeGameCollectionViewHolder(val binding: HomeGameCollectionItemBinding) : const val HOME_GAME_COLLECTION_LOOP_TIME = 5000L } - class LooperHandle(viewHolder: HomeGameCollectionViewHolder): Handler( - Looper.getMainLooper()) { + class LooperHandle(viewHolder: HomeGameCollectionViewHolder) : Handler( + Looper.getMainLooper() + ) { private val mWeakReference: WeakReference = WeakReference(viewHolder) override fun handleMessage(msg: Message) { diff --git a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipActivity.kt b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipActivity.kt index 23eec99d03..49f22903d7 100644 --- a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipActivity.kt @@ -15,9 +15,11 @@ class PackageSkipActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val containerFragment = supportFragmentManager.findFragmentByTag(PackageSkipFragment::class.java.name) - ?: PackageSkipFragment().with(intent.extras) + ?: PackageSkipFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, PackageSkipFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, PackageSkipFragment::class.java.name) + .commitAllowingStateLoss() DisplayUtils.setStatusBarColor(this, R.color.transparent, !mIsDarkModeOn) } diff --git a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipAdapter.kt index 5e357c747a..f40639a8ac 100644 --- a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipAdapter.kt @@ -18,7 +18,11 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.adapter.BaseRecyclerAdapter -class PackageSkipAdapter(val context: Context, val games: ArrayList, private val itemClickCallback: () -> Unit) : BaseRecyclerAdapter(context) { +class PackageSkipAdapter( + val context: Context, + val games: ArrayList, + private val itemClickCallback: () -> Unit +) : BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { @@ -48,42 +52,54 @@ class PackageSkipAdapter(val context: Context, val games: ArrayList, holder.initServerType(gameEntity) if (games.size == 1) { - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8) } else if (games.size == 2) { if (position == 0) { holder.itemView.setPadding(16f.dip2px(), 16f.dip2px(), 16f.dip2px(), 8f.dip2px()) - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_top_only) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_top_only) } else { holder.itemView.setPadding(16f.dip2px(), 8f.dip2px(), 16f.dip2px(), 16f.dip2px()) - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_bottom_only) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_bottom_only) } } else { when (position) { 0 -> { holder.itemView.setPadding(16f.dip2px(), 16f.dip2px(), 16f.dip2px(), 8f.dip2px()) - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_top_only) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_top_only) } itemCount - 2 -> { holder.itemView.setPadding(16f.dip2px(), 8f.dip2px(), 16f.dip2px(), 16f.dip2px()) - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_bottom_only) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white_radius_8_bottom_only) } else -> { holder.itemView.setPadding(16f.dip2px(), 8f.dip2px(), 16f.dip2px(), 8f.dip2px()) - holder.itemView.background = ContextCompat.getDrawable(context, R.drawable.background_shape_white) + holder.itemView.background = + ContextCompat.getDrawable(context, R.drawable.background_shape_white) } } } DownloadItemUtils.setOnClickListener(mContext, holder.binding.downloadBtn, gameEntity, position, - this, - StringUtils.buildString("应用跳转:", subjectData?.name, "-列表[", (position + 1).toString(), "])"), - StringUtils.buildString("应用跳转-", subjectData?.name, ":", gameEntity.name), null, - object : EmptyCallback { - override fun onCallback() { - LogUtils.uploadPackageSkip("external_show", "下载游戏", gameEntity.id, gameEntity.name) - } - }) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), !gameEntity.isPluggable, subjectData?.briefStyle) + this, + StringUtils.buildString("应用跳转:", subjectData?.name, "-列表[", (position + 1).toString(), "])"), + StringUtils.buildString("应用跳转-", subjectData?.name, ":", gameEntity.name), null, + object : EmptyCallback { + override fun onCallback() { + LogUtils.uploadPackageSkip("external_show", "下载游戏", gameEntity.id, gameEntity.name) + } + }) + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(holder.binding), + !gameEntity.isPluggable, + subjectData?.briefStyle + ) holder.itemView.setOnClickListener { LogUtils.uploadPackageSkip("external_show", "点击游戏", gameEntity.id, gameEntity.name) GameDetailActivity.startGameDetailActivity(context, gameEntity, "应用跳转") diff --git a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipFragment.kt b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipFragment.kt index 6bf3a44353..0ee8e8c3e3 100644 --- a/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/skip/PackageSkipFragment.kt @@ -50,7 +50,7 @@ class PackageSkipFragment : BaseFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) games = arguments?.getParcelableArrayList(GameEntity::class.java.name) - ?: arrayListOf() + ?: arrayListOf() positionAndPackageMap.clear() games.forEachIndexed { index, gameEntity -> addGamePositionAndPackage(gameEntity, index) diff --git a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt index 890623c94e..b48374cb46 100644 --- a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt @@ -102,7 +102,14 @@ class HomeSlideListAdapter( ) ) - DataLogUtils.uploadLunbotuLog(mContext, homeSlide.linkType, homeSlide.linkText, homeSlide.title, actualPositionString, "新首页") + DataLogUtils.uploadLunbotuLog( + mContext, + homeSlide.linkType, + homeSlide.linkText, + homeSlide.title, + actualPositionString, + "新首页" + ) DirectUtils.directToLinkPage(mContext, homeSlide.transformLinkEntity(), "", @@ -116,7 +123,14 @@ class HomeSlideListAdapter( holder.binding.includeGame.root.setOnClickListener { val actualPositionString = (actualPosition + 1).toString() val linkGame = homeSlide.linkGame - DataLogUtils.uploadLunbotuLog(mContext, homeSlide.linkType, homeSlide.linkText, homeSlide.title, actualPositionString, "新首页") + DataLogUtils.uploadLunbotuLog( + mContext, + homeSlide.linkType, + homeSlide.linkText, + homeSlide.title, + actualPositionString, + "新首页" + ) if (linkGame != null) { GameDetailActivity.startGameDetailActivity( mContext, diff --git a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt index c8ef381111..06b6833b33 100644 --- a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListItemViewHolder.kt @@ -70,16 +70,25 @@ class HomeSlideListItemViewHolder(val binding: HomeSlideListItemBinding) : BaseR } ConstraintSet().apply { clone(binding.includeGame.root) - connect(R.id.game_name, ConstraintSet.END, if (it.serverLabel != null && !it.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (it.serverLabel != null && !it.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(binding.includeGame.root) } binding.bottomGradient.visibility = View.GONE - ImageUtils.addLimitWidthAndLoad(binding.slideBackground, homeSlide.image, mImageWith, object : ImageUtils.OnImageloadListener { - override fun onLoadFinal(imageInfo: ImageInfo?) { - binding.bottomGradient.visibility = View.VISIBLE - } - }) + ImageUtils.addLimitWidthAndLoad( + binding.slideBackground, + homeSlide.image, + mImageWith, + object : ImageUtils.OnImageloadListener { + override fun onLoadFinal(imageInfo: ImageInfo?) { + binding.bottomGradient.visibility = View.VISIBLE + } + }) val hierarchy = binding.slideBackground.hierarchy try { diff --git a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListViewHolder.kt index 97faae6876..c0e3431a99 100644 --- a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListViewHolder.kt @@ -55,7 +55,10 @@ class HomeSlideListViewHolder( if (view != null) { curPosition = adapter.getActualPosition(layoutManager.getPosition(view)) } - updateImmersiveColor(slideList.safelyGetInRelease(curPosition)?.placeholderColor?.hexStringToIntColor() ?: R.color.background_white.toColor(binding.root.context)) + updateImmersiveColor( + slideList.safelyGetInRelease(curPosition)?.placeholderColor?.hexStringToIntColor() + ?: R.color.background_white.toColor(binding.root.context) + ) } // 刷新页面时有可能动画会出现混乱 @@ -148,7 +151,10 @@ class HomeSlideListViewHolder( } lastStatePosition = curPosition lastScrollState = scrollState - updateImmersiveColor(slideList.safelyGetInRelease(curPosition)?.placeholderColor?.hexStringToIntColor() ?: R.color.background_white.toColor(binding.root.context)) + updateImmersiveColor( + slideList.safelyGetInRelease(curPosition)?.placeholderColor?.hexStringToIntColor() + ?: R.color.background_white.toColor(binding.root.context) + ) } else if (scrollState == RecyclerView.SCROLL_STATE_DRAGGING) { lastScrollState = scrollState } @@ -163,8 +169,10 @@ class HomeSlideListViewHolder( val nextPosition = adapter.getActualPosition(position + 1) val currentColor = - slideList.safelyGetInRelease(currentPosition)?.placeholderColor?.hexStringToIntColor() ?: R.color.background_white.toColor(binding.root.context) - val nextColor = slideList.safelyGetInRelease(nextPosition)?.placeholderColor?.hexStringToIntColor() ?: currentColor + slideList.safelyGetInRelease(currentPosition)?.placeholderColor?.hexStringToIntColor() + ?: R.color.background_white.toColor(binding.root.context) + val nextColor = slideList.safelyGetInRelease(nextPosition)?.placeholderColor?.hexStringToIntColor() + ?: currentColor val colorInBetween = ColorUtils.blendARGB(currentColor, nextColor, positionOffset) diff --git a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java index 88ddbe684c..89a185c380 100644 --- a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java @@ -450,7 +450,8 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo protected void onDarkModeChanged() { super.onDarkModeChanged(); mAdapter.notifyItemRangeChanged(0, mAdapter.getItemCount()); - if (mConcernRecommendAdapter != null) mConcernRecommendAdapter.notifyItemRangeChanged(0, mConcernRecommendAdapter.getItemCount()); + if (mConcernRecommendAdapter != null) + mConcernRecommendAdapter.notifyItemRangeChanged(0, mConcernRecommendAdapter.getItemCount()); mBinding.news1RvList.removeItemDecoration(mItemDecoration); mBinding.news1RvList.addItemDecoration(getItemDecoration()); mBinding.getRoot().setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white)); diff --git a/app/src/main/java/com/gh/gamecenter/info/InfoFragment.java b/app/src/main/java/com/gh/gamecenter/info/InfoFragment.java index 84e9078ab0..ce2e9e85ce 100644 --- a/app/src/main/java/com/gh/gamecenter/info/InfoFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/InfoFragment.java @@ -2,6 +2,7 @@ package com.gh.gamecenter.info; import android.graphics.drawable.Drawable; import android.os.Bundle; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; diff --git a/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java b/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java index 48d35c8d29..4c95e5f649 100644 --- a/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.info; import android.app.Application; + import androidx.lifecycle.LiveData; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java b/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java index 220f892ca7..2ca7f2d219 100644 --- a/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.info; import android.app.Application; + import androidx.lifecycle.LiveData; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/gh/gamecenter/info/StrategyAdapter.java b/app/src/main/java/com/gh/gamecenter/info/StrategyAdapter.java index b0673de621..f60cbe28c2 100644 --- a/app/src/main/java/com/gh/gamecenter/info/StrategyAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/info/StrategyAdapter.java @@ -5,6 +5,7 @@ import android.content.Context; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView.ViewHolder; + import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/gh/gamecenter/info/StrategyDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/info/StrategyDialogAdapter.java index 786d1a4dc8..47871a907a 100644 --- a/app/src/main/java/com/gh/gamecenter/info/StrategyDialogAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/info/StrategyDialogAdapter.java @@ -3,8 +3,11 @@ package com.gh.gamecenter.info; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; + import com.gh.gamecenter.core.utils.DisplayUtils; + import androidx.core.content.ContextCompat; + import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.StrategyDialogViewHolder; import com.gh.gamecenter.databinding.DialogStrategyItemBinding; diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java index ed73f634e0..3385ebb80c 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao1Fragment.java @@ -184,11 +184,11 @@ public class Libao1Fragment extends BaseFragment implements SwipeRefreshLayout.O @Override protected void onDarkModeChanged() { super.onDarkModeChanged(); - ExtensionsKt.setRootBackgroundColor(mBinding.getRoot(),R.color.background_white); - ExtensionsKt.setRootBackgroundColor(mBinding.searchBar.getRoot(),R.color.background_white); - mBinding.searchBar.searchBackground.setBackground(ContextCompat.getDrawable(requireContext(),R.drawable.actionbar_search_bg)); - mBinding.searchBar.etSearch.setHintTextColor(ContextCompat.getColor(requireContext(),R.color.text_body)); - mBinding.searchBar.etSearch.setTextColor(ContextCompat.getColor(requireContext(),R.color.text_title)); + ExtensionsKt.setRootBackgroundColor(mBinding.getRoot(), R.color.background_white); + ExtensionsKt.setRootBackgroundColor(mBinding.searchBar.getRoot(), R.color.background_white); + mBinding.searchBar.searchBackground.setBackground(ContextCompat.getDrawable(requireContext(), R.drawable.actionbar_search_bg)); + mBinding.searchBar.etSearch.setHintTextColor(ContextCompat.getColor(requireContext(), R.color.text_body)); + mBinding.searchBar.etSearch.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_title)); mBinding.searchBar.searchIv.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.toolbar_search_icon)); mBinding.searchBar.tvBack.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.ic_search_bar_clear)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java index 25fcd38316..a57b0ca59f 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao2FragmentAdapter.java @@ -203,7 +203,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter { private void initLibaoViewHolder(final LibaoNormalViewHolder holder, final int position) { LibaoEntity libaoEntity = mLibaoList.get(position); holder.setClickData(libaoEntity); - ExtensionsKt.setRootBackgroundColor(holder.binding.getRoot(),R.color.background_white); + ExtensionsKt.setRootBackgroundColor(holder.binding.getRoot(), R.color.background_white); holder.binding.libaoName.setText(libaoEntity.getName()); holder.binding.libaoGameIcon.displayGameIcon(libaoEntity.getIcon(), libaoEntity.getIconSubscript()); if (TextUtils.isEmpty(libaoEntity.getPlatform())) { diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao3Fragment.java b/app/src/main/java/com/gh/gamecenter/libao/Libao3Fragment.java index bb8cd52d29..6bd63c606a 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao3Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao3Fragment.java @@ -180,11 +180,11 @@ public class Libao3Fragment extends BaseFragment implements SwipeRefreshLayout.O protected void onDarkModeChanged() { super.onDarkModeChanged(); ExtensionsKt.setRootBackgroundColor(mBinding.getRoot(), R.color.background_white); - mBinding.radiogroup.setBackgroundColor(ContextCompat.getColor(requireContext(),R.color.background_white)); - mBinding.receivedRb.setBackground(ContextCompat.getDrawable(requireContext(),R.drawable.bg_button_round_selector)); - mBinding.receivedRb.setTextColor(ContextCompat.getColorStateList(requireContext(),R.color.libao_rg_button_selector)); - mBinding.expiredRb.setBackground(ContextCompat.getDrawable(requireContext(),R.drawable.bg_button_round_selector)); - mBinding.expiredRb.setTextColor(ContextCompat.getColorStateList(requireContext(),R.color.libao_rg_button_selector)); + mBinding.radiogroup.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white)); + mBinding.receivedRb.setBackground(ContextCompat.getDrawable(requireContext(), R.drawable.bg_button_round_selector)); + mBinding.receivedRb.setTextColor(ContextCompat.getColorStateList(requireContext(), R.color.libao_rg_button_selector)); + mBinding.expiredRb.setBackground(ContextCompat.getDrawable(requireContext(), R.drawable.bg_button_round_selector)); + mBinding.expiredRb.setTextColor(ContextCompat.getColorStateList(requireContext(), R.color.libao_rg_button_selector)); mBinding.libao3RvList.getRecycledViewPool().clear(); adapter.notifyItemRangeChanged(0, adapter.getItemCount()); if (mBinding.libao3RvList.getItemDecorationCount() > 0) { diff --git a/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java index e9f6d71980..1adedc93c2 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/libao/Libao3FragmentAdapter.java @@ -12,6 +12,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; + import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.utils.DialogHelper; import com.gh.common.util.LibaoUtils; diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt index ba36d8453a..3c13521c8f 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoNewAdapter.kt @@ -143,7 +143,10 @@ class LibaoNewAdapter( } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { val view: View when (viewType) { ItemViewType.LOADING -> { diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt index 3454b39115..4cce3b65c1 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchAdapter.kt @@ -63,7 +63,8 @@ class LibaoSearchAdapter( if (isLoading || TextUtils.isEmpty(searchKey)) return if (mPage == 1) mLibaoList.clear() isLoading = true - RetrofitManager.getInstance().getApi().getLibaoBySearch(UrlFilterUtils.getFilterQuery("keyword", searchKey), mPage).map { list -> + RetrofitManager.getInstance().getApi() + .getLibaoBySearch(UrlFilterUtils.getFilterQuery("keyword", searchKey), mPage).map { list -> // 去掉重复数据 LibaoUtils.removeDuplicateData(mLibaoList, list) } @@ -150,7 +151,10 @@ class LibaoSearchAdapter( } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { val view: View return when (viewType) { ItemViewType.LOADING -> { diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java index b4bd5f4617..4c72386fba 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java @@ -67,6 +67,7 @@ import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; // 吐了,这个祖传的类,代码写得不是一般的糟糕,还不敢随便改 : ( + /** * Created by LGT on 2016/12/8. * 助手更新 工具类 diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt b/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt index b0645b9a5b..7af8480545 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt @@ -43,32 +43,32 @@ class KeFuViewModel(application: Application) : ListViewModel() { - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + }) } fun deleteMessage(messageId: String) { RetrofitManager.getInstance().api - .deleteKaiFuMessage(UserManager.getInstance().userId, messageId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - val listData = mListLiveData.value - listData?.let { - val iterator = it.iterator() - while (iterator.hasNext()) { - val data = iterator.next() - if (data.id == messageId) { - it.remove(data) - mListLiveData.postValue(listData) - break - } + .deleteKaiFuMessage(UserManager.getInstance().userId, messageId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val listData = mListLiveData.value + listData?.let { + val iterator = it.iterator() + while (iterator.hasNext()) { + val data = iterator.next() + if (data.id == messageId) { + it.remove(data) + mListLiveData.postValue(listData) + break } } } - }) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java b/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java index 8ac3218c8d..96d4a2968c 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java @@ -70,16 +70,17 @@ public class MessageNormalAdapter extends ListAdapter { mtaKey = "赞同列表-删除"; } DialogHelper.showDialog( - mContext, - "删除消息", - "消息删除将不可恢复,确定删除吗?", - "确定", - "取消", - () -> mViewModel.deleteMessage(entity.getId()), - () -> {}, - true, - "消息中心", - mtaKey); + mContext, + "删除消息", + "消息删除将不可恢复,确定删除吗?", + "确定", + "取消", + () -> mViewModel.deleteMessage(entity.getId()), + () -> { + }, + true, + "消息中心", + mtaKey); return false; }); break; diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageNormalViewModel.kt b/app/src/main/java/com/gh/gamecenter/message/MessageNormalViewModel.kt index 4c09977207..0c57d3e992 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageNormalViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageNormalViewModel.kt @@ -17,11 +17,18 @@ import okhttp3.RequestBody import okhttp3.ResponseBody import org.json.JSONObject -class MessageNormalViewModel(application: Application, - val messageType: String) : ListViewModel(application) { +class MessageNormalViewModel( + application: Application, + val messageType: String +) : ListViewModel(application) { override fun provideDataObservable(page: Int): Observable>? { - return RetrofitManager.getInstance().api.getMessage(UserManager.getInstance().userId, messageType, Utils.getTime(getApplication()), page) + return RetrofitManager.getInstance().api.getMessage( + UserManager.getInstance().userId, + messageType, + Utils.getTime(getApplication()), + page + ) } override fun mergeResultLiveData() { @@ -31,26 +38,26 @@ class MessageNormalViewModel(application: Application, fun deleteMessage(messageId: String) { RetrofitManager.getInstance().api - .deleteMessage(UserManager.getInstance().userId, messageId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - val listData = mListLiveData.value + .deleteMessage(UserManager.getInstance().userId, messageId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val listData = mListLiveData.value - listData?.let { - val iterator = it.iterator() - while (iterator.hasNext()) { - val data = iterator.next() - if (data.id == messageId) { - it.remove(data) - mListLiveData.postValue(listData) - break - } + listData?.let { + val iterator = it.iterator() + while (iterator.hasNext()) { + val data = iterator.next() + if (data.id == messageId) { + it.remove(data) + mListLiveData.postValue(listData) + break } } } - }) + } + }) } fun postMessageRead(messageId: String, type: String) { @@ -78,8 +85,10 @@ class MessageNormalViewModel(application: Application, }) } - class Factory(private val mApplication: Application, - private val mMessageType: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mMessageType: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return MessageNormalViewModel(mApplication, mMessageType) as T } diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt index 86b20cd6d2..974f291a4f 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt @@ -42,38 +42,40 @@ object MessageUnreadRepository { isLoading = true mApi.getMessageUnread(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: MessageUnreadEntity?) { - isLoading = false - unreadLiveData.postValue(response) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: MessageUnreadEntity?) { + isLoading = false + unreadLiveData.postValue(response) + } - override fun onFailure(e: HttpException?) { - isLoading = false - } - }) + override fun onFailure(e: HttpException?) { + isLoading = false + } + }) } @SuppressLint("CheckResult") fun loadMessageUnreadTotal(isRecordData: Boolean = false) { Observable.zip(getMessageUnread(), getDiscoveryData(), getNewAddonsData(), getAddonsUnreadCount(), - Function4 { t1, t2, t3, t4 -> - zixunConcern.postValue(t2 > 0) - if (isRecordData) { - addUnreadRecord(t1, t2, t3, t4) - SPUtils.setString( - Constants.SP_PRIVACY_MINE_MD5, SPUtils.getString( - Constants.SP_PRIVACY_CURRENT_MD5)) - } - val isSameAsLast = checkDataIsSameAsLast(t1, t2, t3, t4) - val privacyIsSame = checkPrivacyIsSame() - unreadMessageTotal.postValue(!isSameAsLast || !privacyIsSame) - t1 > 0 || t2 > 0 || t3 > 0 || t4 > 0 - }).subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe {} + Function4 { t1, t2, t3, t4 -> + zixunConcern.postValue(t2 > 0) + if (isRecordData) { + addUnreadRecord(t1, t2, t3, t4) + SPUtils.setString( + Constants.SP_PRIVACY_MINE_MD5, SPUtils.getString( + Constants.SP_PRIVACY_CURRENT_MD5 + ) + ) + } + val isSameAsLast = checkDataIsSameAsLast(t1, t2, t3, t4) + val privacyIsSame = checkPrivacyIsSame() + unreadMessageTotal.postValue(!isSameAsLast || !privacyIsSame) + t1 > 0 || t2 > 0 || t3 > 0 || t4 > 0 + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe {} } @@ -81,19 +83,19 @@ object MessageUnreadRepository { return Observable.create { if (CheckLoginUtils.isLogin()) { mApi.getMessageUnread(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: MessageUnreadEntity?) { - it.onNext(response?.total ?: 0) - it.onComplete() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: MessageUnreadEntity?) { + it.onNext(response?.total ?: 0) + it.onComplete() + } - override fun onFailure(e: HttpException?) { - it.onNext(0) - it.onComplete() - } - }) + override fun onFailure(e: HttpException?) { + it.onNext(0) + it.onComplete() + } + }) } else { it.onNext(0) it.onComplete() @@ -105,35 +107,42 @@ object MessageUnreadRepository { return Observable.create { if (CheckLoginUtils.isLogin()) { mApi.getZiXunConcern(UserManager.getInstance().userId, 1) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - if (response != null && response.isNotEmpty()) { - val entity = response[0] - val internetPostTime = entity.time - val trendsInfo = mGameTrendsDao.findGameTrendsInfo(UserManager.getInstance().userId) - val localInternetPostTime = trendsInfo?.internetPostTime ?: 0 - // 当上一个条产生小红点的条目不存在或者有新的条目时更新数据库 - if (localInternetPostTime == 0L || localInternetPostTime < internetPostTime) { - mGameTrendsDao.add(GameTrendsInfo(UserManager.getInstance().userId, internetPostTime, 0, entity.gameIcon)) - it.onNext(1) - } else { - if (trendsInfo != null) { - if (trendsInfo.readPostTime > 0) { - it.onNext(0) - } else { - it.onNext(1) - } + .subscribeOn(Schedulers.io()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + if (response != null && response.isNotEmpty()) { + val entity = response[0] + val internetPostTime = entity.time + val trendsInfo = mGameTrendsDao.findGameTrendsInfo(UserManager.getInstance().userId) + val localInternetPostTime = trendsInfo?.internetPostTime ?: 0 + // 当上一个条产生小红点的条目不存在或者有新的条目时更新数据库 + if (localInternetPostTime == 0L || localInternetPostTime < internetPostTime) { + mGameTrendsDao.add( + GameTrendsInfo( + UserManager.getInstance().userId, + internetPostTime, + 0, + entity.gameIcon + ) + ) + it.onNext(1) + } else { + if (trendsInfo != null) { + if (trendsInfo.readPostTime > 0) { + it.onNext(0) + } else { + it.onNext(1) } } - it.onComplete() - } else { - it.onNext(0) - it.onComplete() } + it.onComplete() + } else { + it.onNext(0) + it.onComplete() } - }) + } + }) } else { it.onNext(0) it.onComplete() @@ -151,8 +160,10 @@ object MessageUnreadRepository { .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : BiResponse>() { override fun onSuccess(data: ArrayList) { - val funcHaveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet - val recommendHaveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet + val funcHaveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet + val recommendHaveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet data.forEach { group -> if (group.groupType == "more_features") { group.addons.forEach { addonLinkEntity -> @@ -180,15 +191,15 @@ object MessageUnreadRepository { return Observable.create { if (CheckLoginUtils.isLogin()) { mApi.addonsUnread - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: AddonsUnreadEntity) { - it.onNext(data.favorite) - it.onComplete() - addonsUnread.postValue(data) - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: AddonsUnreadEntity) { + it.onNext(data.favorite) + it.onComplete() + addonsUnread.postValue(data) + } + }) } else { it.onNext(0) it.onComplete() @@ -207,7 +218,7 @@ object MessageUnreadRepository { val lastRecordList = if (!lastRecord.isNullOrEmpty()) { val type = object : TypeToken>() {}.type GsonUtils.gson.fromJson>(lastRecord, type) - ?: arrayListOf(0, 0, 0, 0) + ?: arrayListOf(0, 0, 0, 0) } else { arrayListOf(0, 0, 0, 0) } @@ -228,13 +239,13 @@ object MessageUnreadRepository { val requestMap = HashMap() requestMap["type"] = type.value mApi.refreshUnreadCount(requestMap.createRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - loadMessageUnreadTotal(true) - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + loadMessageUnreadTotal(true) + } + }) } enum class UnreadMessageType(val value: String) { diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java index a6fa27d76e..7bbb08e8ab 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java @@ -37,12 +37,15 @@ public class MessageUnreadViewModel extends AndroidViewModel { public MutableLiveData getAddonsUnreadLiveData() { return MessageUnreadRepository.INSTANCE.getAddonsUnread(); } + public MutableLiveData getUnreadMessageTotalLiveData() { return MessageUnreadRepository.INSTANCE.getUnreadMessageTotal(); } + public MutableLiveData getZixunConcernLiveData() { return MessageUnreadRepository.INSTANCE.getZixunConcern(); } + public MediatorLiveData getLiveData() { return mUnreadLiveData; } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt index 98dd0d1345..56de5e4a7b 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt @@ -27,7 +27,8 @@ import com.gh.gamecenter.databinding.ItemFollowedGameBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.gamedetail.GameDetailFragment -class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameViewModel) : ListAdapter(context), IExposable { +class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameViewModel) : + ListAdapter(context), IExposable { private val mEntrance = "(我的关注)" private val mExposureEventSparseArray: SparseArray = SparseArray() @@ -35,7 +36,15 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { ItemViewType.GAME_NORMAL -> { - MyFollowedGameViewHolder(ItemFollowedGameBinding.bind(mLayoutInflater.inflate(R.layout.item_followed_game, parent, false))) + MyFollowedGameViewHolder( + ItemFollowedGameBinding.bind( + mLayoutInflater.inflate( + R.layout.item_followed_game, + parent, + false + ) + ) + ) } else -> { FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) @@ -77,12 +86,21 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes recommendStar.rating = gameEntity.recommendStar.toFloat() gameSubtitleTv.visibility = View.GONE @@ -96,7 +114,10 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) @@ -118,7 +139,12 @@ class MyFollowedGameAdapter(context: Context, var mViewModel: MyFollowedGameView } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } root.background = R.drawable.reuse_listview_item_style.toDrawable(root.context) @@ -261,7 +287,12 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV ) } - GameDetailActivity.startGameDetailActivity(binding.root.context, gameEntity, entrance, isSkipGameComment = true) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + gameEntity, + entrance, + isSkipGameComment = true + ) } } else { binding.commentsContainer.visibility = View.GONE @@ -286,7 +317,12 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV ) } - GameDetailActivity.startGameDetailActivity(binding.root.context, gameEntity, entrance, defaultTab = GameDetailFragment.INDEX_TRENDES) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + gameEntity, + entrance, + defaultTab = GameDetailFragment.INDEX_TRENDES + ) } } else { binding.trendsContainer.visibility = View.GONE @@ -307,7 +343,12 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV gameEntity.name ?: "" ) } - GameDetailActivity.startGameDetailActivity(binding.root.context, gameEntity, entrance, defaultTab = GameDetailFragment.INDEX_BBS) + GameDetailActivity.startGameDetailActivity( + binding.root.context, + gameEntity, + entrance, + defaultTab = GameDetailFragment.INDEX_BBS + ) } } else { binding.forumContainer.visibility = View.GONE diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt index 6a9e8dd860..1470588ce3 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameFragment.kt @@ -37,10 +37,20 @@ class MyFollowedGameFragment : ListFragment super.onStart() if (!UserManager.getInstance().isLoggedIn) { mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.text = getString(R.string.login_hint) - mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)) + mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.theme_font + ) + ) } else { mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.text = getString(R.string.game_empty) - mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_title)) + mBinding.fragmentListBase.reuseNoneData.reuseNoneDataTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_title + ) + ) } } @@ -76,7 +86,8 @@ class MyFollowedGameFragment : ListFragment onLoadDone() } else { if (mRecommendAdapter!!.recommendGameList.size < 4) { - mBinding.concernRvRecommend.layoutManager = GridLayoutManager(context, mRecommendAdapter!!.recommendGameList.size) + mBinding.concernRvRecommend.layoutManager = + GridLayoutManager(context, mRecommendAdapter!!.recommendGameList.size) } } } @@ -91,7 +102,8 @@ class MyFollowedGameFragment : ListFragment mBinding.concernRlTitle.goneIf(mViewModel.getListData().size > 3) mBinding.concernRvRecommend.goneIf(mViewModel.getListData().size > 3) val size = mRecommendAdapter!!.recommendGameList.size - mBinding.concernRvRecommend.layoutManager = GridLayoutManager(context, if (size > 4) 4 else size) + mBinding.concernRvRecommend.layoutManager = + GridLayoutManager(context, if (size > 4) 4 else size) mBinding.concernRvRecommend.adapter?.notifyDataSetChanged() if (mAdapter != null && mAdapter!!.itemCount > 0) { mBinding.concernLl.hideRecyclerViewNoAnimation() @@ -165,7 +177,8 @@ class MyFollowedGameFragment : ListFragment } override fun getItemDecoration(): RecyclerView.ItemDecoration { - mItemDecoration = CustomDividerItemDecoration(requireContext(), + mItemDecoration = CustomDividerItemDecoration( + requireContext(), onlyDecorateTheFirstItem = false, notDecorateTheFirstItem = false, notDecorateTheLastItem = true, diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameViewModel.kt index 9d8d6a8336..097d4073e3 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameViewModel.kt @@ -15,14 +15,13 @@ import com.halo.assistant.HaloApp import com.lightgame.utils.Utils import io.reactivex.Observable -class MyFollowedGameViewModel(application: Application) - : ListViewModel(application) { +class MyFollowedGameViewModel(application: Application) : ListViewModel(application) { override fun provideDataObservable(page: Int): Observable>? { return RetrofitManager.getInstance().api - .getConcern(UserManager.getInstance().userId) - .map(RegionSettingHelper.filterGame) - .map(ApkActiveUtils.filterMapperList) + .getConcern(UserManager.getInstance().userId) + .map(RegionSettingHelper.filterGame) + .map(ApkActiveUtils.filterMapperList) } override fun mergeResultLiveData() { @@ -38,21 +37,23 @@ class MyFollowedGameViewModel(application: Application) fun unfollowGame(gameEntity: GameEntity) { ConcernUtils.deleteConcernData(getApplication(), - gameEntity.id, - object : ConcernUtils.onConcernListener { - override fun onSuccess() { - DataCollectionUtils.uploadConcern(getApplication(), - gameEntity.name, - gameEntity.id, - HaloApp.getInstance().application.getString(R.string.cancel_concern)) + gameEntity.id, + object : ConcernUtils.onConcernListener { + override fun onSuccess() { + DataCollectionUtils.uploadConcern( + getApplication(), + gameEntity.name, + gameEntity.id, + HaloApp.getInstance().application.getString(R.string.cancel_concern) + ) - removeFollowLocally(gameEntity.id) - } + removeFollowLocally(gameEntity.id) + } - override fun onError() { - Utils.toast(getApplication(), R.string.concern_cancel_failure) - } - }) + override fun onError() { + Utils.toast(getApplication(), R.string.concern_cancel_failure) + } + }) } fun removeFollowLocally(gameId: String) { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt index 4af08c331a..3586fa84ad 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyGameActivity.kt @@ -74,7 +74,11 @@ class MyGameActivity : BaseActivity_TabLayout() { tryCatchInRelease { if (!SPUtils.getBoolean(Constants.SP_MY_GAME_GUIDE)) { val binding = PopupMyGameGuideBinding.inflate(layoutInflater, null, false) - val popupWindow = BugFixedPopupWindow(binding.root, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT) + val popupWindow = BugFixedPopupWindow( + binding.root, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT + ) binding.root.setOnClickListener { SPUtils.setBoolean(Constants.SP_MY_GAME_GUIDE, true) popupWindow.dismiss() diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt index 837030ae54..4922fc4d91 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyPlayedGameFragment.kt @@ -55,10 +55,18 @@ class MyPlayedGameFragment : PlayedGameFragment() { override fun onChanged(ts: MutableList?) { super.onChanged(ts) - val installedList = PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) + val installedList = + PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) val simulatorDownloadEntityList = DownloadManager.getInstance().allSimulatorDownloadEntity simulatorDownloadEntityList.forEach { entity -> - installedList.add(GameInstall(entity.gameId, packageName = entity.packageName, name = entity.name, icon = entity.icon)) + installedList.add( + GameInstall( + entity.gameId, + packageName = entity.packageName, + name = entity.name, + icon = entity.icon + ) + ) } // val count = SPUtils.getInt(Constants.SP_MARK_INSTALLED_GAME, 0) val isCancel = SPUtils.getBoolean(Constants.SP_MARK_INSTALLED_GAME_MY_GAME, false) @@ -73,7 +81,8 @@ class MyPlayedGameFragment : PlayedGameFragment() { } override fun getItemDecoration(): RecyclerView.ItemDecoration { - val notDecorateTheFirstItem = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) !UsageStatsHelper.checkForPermission() else false + val notDecorateTheFirstItem = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) !UsageStatsHelper.checkForPermission() else false return getItemDecoration(notDecorateTheFirstItem) } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt index 7dbdeee9de..2201b3bccd 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt @@ -27,8 +27,8 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.GameAndPosition -class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewModel) - : ListAdapter(context), IExposable { +class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewModel) : ListAdapter(context), + IExposable { private val mEntrance = "(我的预约)" private val mExposureEventSparseArray: SparseArray = SparseArray() @@ -36,7 +36,15 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { ItemViewType.GAME_NORMAL -> { - MyFollowedGameViewHolder(ItemFollowedGameBinding.bind(mLayoutInflater.inflate(R.layout.item_followed_game, parent, false))) + MyFollowedGameViewHolder( + ItemFollowedGameBinding.bind( + mLayoutInflater.inflate( + R.layout.item_followed_game, + parent, + false + ) + ) + ) } else -> { FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) @@ -80,12 +88,20 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable(mContext) else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable( + mContext + ) else null, null, null, null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes recommendStar.rating = gameEntity.recommendStar.toFloat() gameSubtitleTv.visibility = View.GONE @@ -99,7 +115,10 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) @@ -121,7 +140,12 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } } @@ -130,11 +154,15 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo holder.initShortcut(gameEntity, mEntrance, path, newPath) val exposureEvent = ExposureEvent.createEvent( - gameEntity, - listOf(ExposureSource("我的游戏", "预约"))) + gameEntity, + listOf(ExposureSource("我的游戏", "预约")) + ) mExposureEventSparseArray.append(position, exposureEvent) - DownloadItemUtils.updateItemWithReserveStatus(GameViewHolder(holder.binding.gameItemIncluded), gameEntity) + DownloadItemUtils.updateItemWithReserveStatus( + GameViewHolder(holder.binding.gameItemIncluded), + gameEntity + ) holder.itemView.setOnClickListener { MtaHelper.onEvent("我的光环", path, "点击其他位置") @@ -153,13 +181,15 @@ class MyReservationAdapter(context: Context, var mViewModel: MyReservationViewMo showCancelReservationDialog(gameEntity) } } else { - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.gameItemIncluded.downloadBtn, - gameEntity, - position, - this, - mEntrance, - StringUtils.buildString(mEntrance, ":", gameEntity.name), exposureEvent) + DownloadItemUtils.setOnClickListener( + mContext, + holder.binding.gameItemIncluded.downloadBtn, + gameEntity, + position, + this, + mEntrance, + StringUtils.buildString(mEntrance, ":", gameEntity.name), exposureEvent + ) } initDownloadButtonOffset(holder.binding) holder.binding.root.setOnLongClickListener { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt index 0b4c695894..8c94642481 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationFragment.kt @@ -53,7 +53,7 @@ class MyReservationFragment : ListFragment() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - + mBinding.reuseNoneData.reuseNoneDataTv.setOnClickListener(this) mListRv.addOnScrollListener(mExposureListener!!) mListRv.setBackgroundColor(R.color.background_white.toColor(requireContext())) @@ -63,10 +63,20 @@ class MyReservationFragment : ListFragment() super.onStart() if (TextUtils.isEmpty(UserManager.getInstance().userId)) { mBinding.reuseNoneData.reuseNoneDataTv.text = getString(R.string.login_hint) - mBinding.reuseNoneData.reuseNoneDataTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)) + mBinding.reuseNoneData.reuseNoneDataTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.theme_font + ) + ) } else { mBinding.reuseNoneData.reuseNoneDataTv.text = getString(R.string.game_empty) - mBinding.reuseNoneData.reuseNoneDataTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_title)) + mBinding.reuseNoneData.reuseNoneDataTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_title + ) + ) } } @@ -105,7 +115,8 @@ class MyReservationFragment : ListFragment() } override fun getItemDecoration(): RecyclerView.ItemDecoration { - mItemDecoration = CustomDividerItemDecoration(requireContext(), + mItemDecoration = CustomDividerItemDecoration( + requireContext(), onlyDecorateTheFirstItem = false, notDecorateTheFirstItem = false, notDecorateTheLastItem = true, diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt index c8720fcb2d..0b3d697e70 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt @@ -29,7 +29,7 @@ class MyReservationViewModel(application: Application) : ListViewModel> { return RetrofitManager.getInstance().api - .getGameReservations(UserManager.getInstance().userId, page, Utils.getTime(getApplication())) + .getGameReservations(UserManager.getInstance().userId, page, Utils.getTime(getApplication())) } override fun mergeResultLiveData() { @@ -69,13 +69,13 @@ class MyReservationViewModel(application: Application) : ListViewModel() { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameActivity.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameActivity.kt index c86630674e..bc371242db 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameActivity.kt @@ -7,7 +7,7 @@ import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.constant.EntranceConsts -class PlayedGameActivity: ToolBarActivity() { +class PlayedGameActivity : ToolBarActivity() { companion object { fun getIntent(context: Context, userId: String, entrance: String, path: String): Intent { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt index bb3da6e535..8bb3860e91 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt @@ -135,7 +135,11 @@ open class PlayedGameAdapter( gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes recommendStar.rating = gameEntity.recommendStar.toFloat() gameSubtitleTv.visibility = View.GONE @@ -149,7 +153,10 @@ open class PlayedGameAdapter( cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) @@ -171,7 +178,12 @@ open class PlayedGameAdapter( } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } @@ -219,7 +231,7 @@ open class PlayedGameAdapter( position, this, "(${mEntrance})", - StringUtils.buildString(mEntrance, ":", gameEntity.name), exposureEvent, object: EmptyCallback{ + StringUtils.buildString(mEntrance, ":", gameEntity.name), exposureEvent, object : EmptyCallback { override fun onCallback() { NewFlatLogUtils.logMyGamePlayedTabGameCardClick( "按钮", @@ -230,7 +242,13 @@ open class PlayedGameAdapter( } ) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding.gameItemIncluded), true, true) + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(holder.binding.gameItemIncluded), + true, + true + ) holder.binding.optionsContainer.goneIf(!mIsMyPlayedGame) @@ -249,14 +267,24 @@ open class PlayedGameAdapter( if (adapterPosition != RecyclerView.NO_POSITION) { val game = mEntityList[adapterPosition] NewFlatLogUtils.logMyGamePlayedTabClearGameClick(game.id, game.name ?: "") - DialogHelper.showDialog(mContext, "清除记录", "清除后将不再展示游戏记录和游玩时长,确定清除记录吗?", "确定清除", "暂不清除", confirmClickCallback = { - NewFlatLogUtils.logMyGamePlayedTabClearGameDialogClick("确定清除", game.id, game.name ?: "") - mViewModel.deletePlayedGame(game) - }, cancelClickCallback = { - NewFlatLogUtils.logMyGamePlayedTabClearGameDialogClick("暂不清除", game.id, game.name ?: "") - }, uiModificationCallback = { - it.confirmTv.setTextColor(R.color.theme_red.toColor(mContext)) - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true))?.setOnCancelListener { + DialogHelper.showDialog( + mContext, + "清除记录", + "清除后将不再展示游戏记录和游玩时长,确定清除记录吗?", + "确定清除", + "暂不清除", + confirmClickCallback = { + NewFlatLogUtils.logMyGamePlayedTabClearGameDialogClick("确定清除", game.id, game.name ?: "") + mViewModel.deletePlayedGame(game) + }, + cancelClickCallback = { + NewFlatLogUtils.logMyGamePlayedTabClearGameDialogClick("暂不清除", game.id, game.name ?: "") + }, + uiModificationCallback = { + it.confirmTv.setTextColor(R.color.theme_red.toColor(mContext)) + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + )?.setOnCancelListener { NewFlatLogUtils.logMyGamePlayedTabClearGameDialogClick("暂不清除", game.id, game.name ?: "") } } @@ -268,7 +296,8 @@ open class PlayedGameAdapter( AppExecutor.uiExecutor.execute { tryWithDefaultCatch { val downloadBtnText = holder.binding.gameItemIncluded.downloadBtn.text - val isDownloadable = downloadBtnText.contains(mDownloadText) || downloadBtnText.contains(mTryText) + val isDownloadable = + downloadBtnText.contains(mDownloadText) || downloadBtnText.contains(mTryText) holder.binding.uninstalledTv.visibleIf(isDownloadable) } } @@ -346,7 +375,8 @@ open class PlayedGameAdapter( serverLabel != null && !gameEntity.advanceDownload -> { binding.gameItemIncluded.gameKaifuType.visibility = View.VISIBLE binding.gameItemIncluded.gameKaifuType.text = serverLabel.value - binding.gameItemIncluded.gameKaifuType.background = DrawableView.getServerDrawable(serverLabel.color) + binding.gameItemIncluded.gameKaifuType.background = + DrawableView.getServerDrawable(serverLabel.color) } else -> binding.gameItemIncluded.gameKaifuType.visibility = View.GONE } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt index 1bbd08e018..870dea52a1 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameFragment.kt @@ -51,7 +51,7 @@ open class PlayedGameFragment : ListFragment() override fun provideListViewModel(): PlayedGameViewModel { val userId = arguments?.getString(EntranceConsts.KEY_USER_ID) - ?: UserManager.getInstance().userId + ?: UserManager.getInstance().userId mViewModel = viewModelProvider(PlayedGameViewModel.Factory(userId)) return mViewModel } diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameViewModel.kt index d1c18163a2..8a8898a6de 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameViewModel.kt @@ -65,7 +65,8 @@ open class PlayedGameViewModel(application: Application, var userId: String, val }) } - class Factory(private val mUserId: String, val isKeepTagStyle: Boolean = false) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val mUserId: String, val isKeepTagStyle: Boolean = false) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return PlayedGameViewModel(HaloApp.getInstance().application, mUserId, isKeepTagStyle) as T } diff --git a/app/src/main/java/com/gh/gamecenter/mypost/MyPostAdapter.kt b/app/src/main/java/com/gh/gamecenter/mypost/MyPostAdapter.kt index da88ac0083..dfb3b06952 100644 --- a/app/src/main/java/com/gh/gamecenter/mypost/MyPostAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mypost/MyPostAdapter.kt @@ -113,7 +113,10 @@ class MyPostAdapter( ) title.goneIf(historyEntity.type.contains("answer")) title.text = - if ((historyEntity.type.contains("question") || historyEntity.type.contains("article") || historyEntity.type.contains("video"))) historyEntity.title else historyEntity.question.title + if ((historyEntity.type.contains("question") || historyEntity.type.contains("article") || historyEntity.type.contains( + "video" + )) + ) historyEntity.title else historyEntity.question.title questionTitle.goneIf(!historyEntity.type.contains("answer")) questionTitle.text = historyEntity.question.title content.goneIf(historyEntity.brief.isEmpty() && historyEntity.des.isEmpty() && historyEntity.description.isEmpty()) @@ -124,7 +127,7 @@ class MyPostAdapter( } forumNameTv.text = historyEntity.community.name - when(historyEntity.type) { + when (historyEntity.type) { "question" -> { val titleStr = " ${historyEntity.title}" val drawable = R.drawable.ic_ask_label.toDrawable() @@ -146,7 +149,8 @@ class MyPostAdapter( "community_article" -> { if (historyEntity.getPassVideos().isNotEmpty() && historyEntity.images.isNotEmpty()) { val titleStr = title.text - val videoSpan = SpanBuilder(" ").image(1, " ".length, R.drawable.ic_article_video_label).build() + val videoSpan = + SpanBuilder(" ").image(1, " ".length, R.drawable.ic_article_video_label).build() title.text = SpannableStringBuilder() .append(titleStr) .append(videoSpan) diff --git a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt index de46ceddf3..b542d93ae3 100644 --- a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt @@ -92,13 +92,19 @@ object PackageRepository { /** * 初始化光环后台收录的安装包 */ - private fun initFilterPackage(list: MutableList, callbackClosure: ((list: ArrayList) -> Unit)? = null) { + private fun initFilterPackage( + list: MutableList, + callbackClosure: ((list: ArrayList) -> Unit)? = null + ) { PackageFilterManager.updateFilterPackages(list, false) { callbackClosure?.invoke(it) } } - private fun updateFilterPackage(list: MutableList, callbackClosure: ((list: ArrayList) -> Unit)? = null) { + private fun updateFilterPackage( + list: MutableList, + callbackClosure: ((list: ArrayList) -> Unit)? = null + ) { PackageFilterManager.updateFilterPackages(list, true) { callbackClosure?.invoke(it) } @@ -273,9 +279,12 @@ object PackageRepository { private fun addCurrentlyInstalledVersionIfValid(game: GameEntity) { for (apk in game.getApk()) { if (apk.version == PackageUtils.getVersionNameByPackageName(apk.packageName) - && (TextUtils.isEmpty(apk.signature) - || apk.signature == PackageUtils.getApkSignatureByPackageName(mApplication, apk.packageName).firstOrNull() - || apk.signature == PackageUtils.getApkSignatureByPackageName(mApplication, apk.packageName).secondOrNull())) { + && (TextUtils.isEmpty(apk.signature) + || apk.signature == PackageUtils.getApkSignatureByPackageName(mApplication, apk.packageName) + .firstOrNull() + || apk.signature == PackageUtils.getApkSignatureByPackageName(mApplication, apk.packageName) + .secondOrNull()) + ) { currentVersionList.add(GameUpdateEntity().apply { id = game.id name = game.name diff --git a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageViewModel.kt b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageViewModel.kt index fa72d37602..d1e644aba7 100644 --- a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageViewModel.kt @@ -8,8 +8,10 @@ import com.gh.gamecenter.entity.GameUpdateEntity import com.halo.assistant.HaloApp import kotlin.collections.set -class PackageViewModel(application: Application, - private val mRepository: PackageRepository) : AndroidViewModel(application) { +class PackageViewModel( + application: Application, + private val mRepository: PackageRepository +) : AndroidViewModel(application) { /** * 过滤同包名,只显示7天下载最高的一个 @@ -82,7 +84,8 @@ class PackageViewModel(application: Application, */ fun checkData() { if (mRepository.gameInstalled.size == 0 - || PackageFilterManager.hasPendingPackage()) { + || PackageFilterManager.hasPendingPackage() + ) { mRepository.initData() } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoFragment.kt index 5e73e60329..00e6189bb5 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoFragment.kt @@ -8,7 +8,7 @@ import com.gh.gamecenter.databinding.FragmentDeliveryInfoBinding import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.utils.toColor -class DeliveryInfoFragment: ToolbarFragment() { +class DeliveryInfoFragment : ToolbarFragment() { private val mBinding by lazy { FragmentDeliveryInfoBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt index 4e3b3d2676..f3358fd1f4 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt @@ -108,7 +108,13 @@ class HaloPersonalBannerAdapter(context: Context) : BaseRecyclerAdapter { - mContext.startActivity(ShellActivity.getIntent(mContext, ShellActivity.Type.REAL_NAME_INFO, null)) + mContext.startActivity( + ShellActivity.getIntent( + mContext, + ShellActivity.Type.REAL_NAME_INFO, + null + ) + ) } "微信提醒" -> { if (UserManager.getInstance().isLoggedIn) { @@ -155,7 +161,8 @@ class HaloPersonalBannerAdapter(context: Context) : BaseRecyclerAdapter { if (UserManager.getInstance().isLoggedIn) { - PermissionHelper.checkStoragePermissionBeforeAction(mContext + PermissionHelper.checkStoragePermissionBeforeAction( + mContext ) { mContext.startActivity(GameSubmissionActivity.getIntent(mContext, "(我的光环)", "")) } } else { CheckLoginUtils.checkLogin(mContext, "我的光环-游戏投稿") { } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt index cbc13237ce..bf6517d071 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -61,7 +61,7 @@ import java.lang.ref.WeakReference import java.util.concurrent.TimeUnit import kotlin.math.abs -class HaloPersonalFragment: BaseLazyFragment() { +class HaloPersonalFragment : BaseLazyFragment() { private var mUserInfoEntity: UserInfoEntity? = null private lateinit var mDatabase: AppDatabase @@ -338,7 +338,8 @@ class HaloPersonalFragment: BaseLazyFragment() { } } - mUserHomeViewModel.badges.observe(this + mUserHomeViewModel.badges.observe( + this ) { badgeEntities: List -> mStubBinding.personalBadgeIcon.setImageURI("") if (badgeEntities.isEmpty()) { @@ -353,7 +354,12 @@ class HaloPersonalFragment: BaseLazyFragment() { ) mStubBinding.personalBadgeIcon.setOnClickListener { DialogUtils.showViewBadgeDialog(requireContext(), Badge(name, icon, actions)) { - DirectUtils.directToBadgeWall(requireContext(), mUserInfoEntity?.userId, mUserInfoEntity?.name, mUserInfoEntity?.icon) + DirectUtils.directToBadgeWall( + requireContext(), + mUserInfoEntity?.userId, + mUserInfoEntity?.name, + mUserInfoEntity?.icon + ) } } break @@ -540,7 +546,8 @@ class HaloPersonalFragment: BaseLazyFragment() { mStubBinding.historyTv.setOnClickListener(this) mStubBinding.myCollectionTv.setOnClickListener(this) - val statusBarHeight = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) 0 else DisplayUtils.getStatusBarHeight(resources) + val statusBarHeight = + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) 0 else DisplayUtils.getStatusBarHeight(resources) mStubBinding.motionLayout.minimumHeight = statusBarHeight + 48F.dip2px() mStubBinding.appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _: AppBarLayout?, verticalOffset: Int -> @@ -622,7 +629,10 @@ class HaloPersonalFragment: BaseLazyFragment() { mStubBinding.privacyPolicyItem.redDot.visibility = if (checkPrivacyIsSame()) View.GONE else View.VISIBLE root.setOnClickListener { NewFlatLogUtils.logHaloSelfClick("其他功能", getString(R.string.setting_privacy_policy)) - SPUtils.setString(com.gh.gamecenter.common.constant.Constants.SP_PRIVACY_MD5, SPUtils.getString(com.gh.gamecenter.common.constant.Constants.SP_PRIVACY_CURRENT_MD5)) + SPUtils.setString( + com.gh.gamecenter.common.constant.Constants.SP_PRIVACY_MD5, + SPUtils.getString(com.gh.gamecenter.common.constant.Constants.SP_PRIVACY_CURRENT_MD5) + ) redDot.visibility = if (checkPrivacyIsSame()) View.GONE else View.VISIBLE startActivity( WebActivity.getWebIntent( @@ -726,7 +736,10 @@ class HaloPersonalFragment: BaseLazyFragment() { setOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { super.onPageScrolled(position, positionOffset, positionOffsetPixels) - mStubBinding.bannerIndicator.onPageScrolled(mPersonalBannerAdapter.getActualPosition(position), positionOffset) + mStubBinding.bannerIndicator.onPageScrolled( + mPersonalBannerAdapter.getActualPosition(position), + positionOffset + ) } }) }) @@ -736,7 +749,11 @@ class HaloPersonalFragment: BaseLazyFragment() { private fun scrollToNextPage() { val snapView = mSnapHelper.findSnapView(mBannerLayoutManager) if (snapView != null) { - mBannerLayoutManager.smoothScrollToPosition(mStubBinding.bannerRv, null, mBannerLayoutManager.getPosition(snapView) + 1) + mBannerLayoutManager.smoothScrollToPosition( + mStubBinding.bannerRv, + null, + mBannerLayoutManager.getPosition(snapView) + 1 + ) } } @@ -755,7 +772,14 @@ class HaloPersonalFragment: BaseLazyFragment() { mStubBinding.funcRv.layoutManager = GridLayoutManager(requireContext(), 4) mStubBinding.funcRv.adapter = mPersonalFunctionAdapter mStubBinding.funcRv.isNestedScrollingEnabled = false - mStubBinding.funcRv.addItemDecoration(GridSpacingItemColorDecoration(requireContext(), 0, 18, R.color.transparent)) + mStubBinding.funcRv.addItemDecoration( + GridSpacingItemColorDecoration( + requireContext(), + 0, + 18, + R.color.transparent + ) + ) } private fun checkPrivacyIsSame(): Boolean { @@ -820,7 +844,10 @@ class HaloPersonalFragment: BaseLazyFragment() { super.onDarkModeChanged() if (isSupportVisible) DisplayUtils.setLightStatusBar(requireActivity(), !mIsDarkModeOn) if (isAdded) { - if (::mPersonalFunctionAdapter.isInitialized) mPersonalFunctionAdapter.notifyItemRangeChanged(0, mPersonalFunctionAdapter.itemCount) + if (::mPersonalFunctionAdapter.isInitialized) mPersonalFunctionAdapter.notifyItemRangeChanged( + 0, + mPersonalFunctionAdapter.itemCount + ) if (::mStubBinding.isInitialized) { mStubBinding.run { settingItem.iconIv.setImageResource(R.drawable.ic_personal_setting) @@ -842,11 +869,36 @@ class HaloPersonalFragment: BaseLazyFragment() { myCollectionTv.setTextColor(R.color.text_title.toColor(requireContext())) historyTv.setTextColor(R.color.text_title.toColor(requireContext())) myPostTv.setTextColor(R.color.text_title.toColor(requireContext())) - myGameTv.setCompoundDrawablesWithIntrinsicBounds(null, VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_game, null), null, null) - myGameCollectionTv.setCompoundDrawablesWithIntrinsicBounds(null, VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_game_collection, null), null, null) - myCollectionTv.setCompoundDrawablesWithIntrinsicBounds(null, VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_collection, null), null, null) - historyTv.setCompoundDrawablesWithIntrinsicBounds(null, VectorDrawableCompat.create(resources, R.drawable.ic_personal_history, null), null, null) - myPostTv.setCompoundDrawablesWithIntrinsicBounds(null, VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_post, null), null, null) + myGameTv.setCompoundDrawablesWithIntrinsicBounds( + null, + VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_game, null), + null, + null + ) + myGameCollectionTv.setCompoundDrawablesWithIntrinsicBounds( + null, + VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_game_collection, null), + null, + null + ) + myCollectionTv.setCompoundDrawablesWithIntrinsicBounds( + null, + VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_collection, null), + null, + null + ) + historyTv.setCompoundDrawablesWithIntrinsicBounds( + null, + VectorDrawableCompat.create(resources, R.drawable.ic_personal_history, null), + null, + null + ) + myPostTv.setCompoundDrawablesWithIntrinsicBounds( + null, + VectorDrawableCompat.create(resources, R.drawable.ic_personal_my_post, null), + null, + null + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt index 56401c7ece..5996ba36ea 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt @@ -33,7 +33,8 @@ class HaloPersonalFunctionAdapter(context: Context) : BaseRecyclerAdapter) { - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet + val haveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet functionList.forEach { entity -> if (entity.remind && haveReadRecord.contains(entity.id)) { entity.remind = false @@ -44,7 +45,8 @@ class HaloPersonalFunctionAdapter(context: Context) : BaseRecyclerAdapter = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet + val haveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet val newReadRecord = hashSetOf()//这里必须重新创建HashSet对象,否则重启app数据不能保存 newReadRecord.addAll(haveReadRecord) newReadRecord.add(linkEntity.id) @@ -160,7 +163,8 @@ class HaloPersonalFunctionAdapter(context: Context) : BaseRecyclerAdapter { if (UserManager.getInstance().isLoggedIn) { - PermissionHelper.checkStoragePermissionBeforeAction(mContext + PermissionHelper.checkStoragePermissionBeforeAction( + mContext ) { mContext.startActivity(GameSubmissionActivity.getIntent(mContext, "(我的光环)", "")) } } else { CheckLoginUtils.checkLogin(mContext, "我的光环-游戏投稿") { } @@ -186,5 +190,6 @@ class HaloPersonalFunctionAdapter(context: Context) : BaseRecyclerAdapter) { - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet + val haveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet recommendList.forEach { entity -> if (entity.remind && haveReadRecord.contains(entity.id)) { entity.remind = false @@ -45,7 +46,8 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter 2) { holder.binding.bottomDivider.visibility = View.VISIBLE - holder.binding.bottomDivider.layoutParams = (holder.binding.bottomDivider.layoutParams as ConstraintLayout.LayoutParams).apply { - setMargins(12F.dip2px(), 0, 0, 0) - } + holder.binding.bottomDivider.layoutParams = + (holder.binding.bottomDivider.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins(12F.dip2px(), 0, 0, 0) + } } } 1 -> { @@ -75,9 +78,10 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter 2) { holder.binding.bottomDivider.visibility = View.VISIBLE - holder.binding.bottomDivider.layoutParams = (holder.binding.bottomDivider.layoutParams as ConstraintLayout.LayoutParams).apply { - setMargins(0, 0, 12F.dip2px(), 0) - } + holder.binding.bottomDivider.layoutParams = + (holder.binding.bottomDivider.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins(0, 0, 12F.dip2px(), 0) + } } } 2 -> { @@ -85,18 +89,20 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter { holder.binding.rightDivider.visibility = View.GONE holder.binding.leftDivider.visibility = View.VISIBLE holder.binding.topDivider.visibility = View.VISIBLE holder.binding.bottomDivider.visibility = View.GONE - holder.binding.topDivider.layoutParams = (holder.binding.topDivider.layoutParams as ConstraintLayout.LayoutParams).apply { - setMargins(0, 0, 12F.dip2px(), 0) - } + holder.binding.topDivider.layoutParams = + (holder.binding.topDivider.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins(0, 0, 12F.dip2px(), 0) + } } } holder.binding.nameTv.text = addonLinkEntity.name @@ -107,7 +113,8 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter = SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet + val haveReadRecord: HashSet = + SPUtils.getStringSet(Constants.SP_ADDONS_RECOMMEND_HAVE_READ) as HashSet val newReadRecord = hashSetOf()//这里必须重新创建HashSet对象,否则重启app数据不能保存 newReadRecord.addAll(haveReadRecord) newReadRecord.add(addonLinkEntity.id) @@ -150,7 +157,13 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter { - mContext.startActivity(ShellActivity.getIntent(mContext, ShellActivity.Type.REAL_NAME_INFO, null)) + mContext.startActivity( + ShellActivity.getIntent( + mContext, + ShellActivity.Type.REAL_NAME_INFO, + null + ) + ) } "微信提醒" -> { if (UserManager.getInstance().isLoggedIn) { @@ -197,7 +210,8 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter { if (UserManager.getInstance().isLoggedIn) { - PermissionHelper.checkStoragePermissionBeforeAction(mContext + PermissionHelper.checkStoragePermissionBeforeAction( + mContext ) { mContext.startActivity(GameSubmissionActivity.getIntent(mContext, "(我的光环)", "")) } } else { CheckLoginUtils.checkLogin(mContext, "我的光环-游戏投稿") { } @@ -224,6 +238,7 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/FollowersOrFansFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/FollowersOrFansFragment.kt index 611e367d5c..48360ea8a6 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/FollowersOrFansFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/FollowersOrFansFragment.kt @@ -32,9 +32,10 @@ class FollowersOrFansFragment : ListFragment(application) { +class FollowersOrFansViewModel( + application: Application, + var mPageSource: String, + val userId: String +) : ListViewModel(application) { val followingLiveData: MutableLiveData = MutableLiveData() @@ -45,33 +47,35 @@ class FollowersOrFansViewModel(application: Application, RetrofitManager.getInstance().api.deleteFollowing(targetUserId) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - if (isFollow) { - // 关注成功 - Utils.toast(getApplication(), R.string.concern_success) - } - - val list = mResultLiveData.value - if (list != null && list.size > position) { - list[position].me.isFollower = isFollow - } - - followingLiveData.postValue(position) - EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + if (isFollow) { + // 关注成功 + Utils.toast(getApplication(), R.string.concern_success) } - override fun onFailure(e: HttpException?) { - Utils.toast(getApplication(), R.string.post_failure_hint) + val list = mResultLiveData.value + if (list != null && list.size > position) { + list[position].me.isFollower = isFollow } - }) + + followingLiveData.postValue(position) + EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + } + + override fun onFailure(e: HttpException?) { + Utils.toast(getApplication(), R.string.post_failure_hint) + } + }) } - class Factory(private val mApplication: Application, - private val mPageSource: String, - private val mUserId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mPageSource: String, + private val mUserId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return FollowersOrFansViewModel(mApplication, mPageSource, mUserId) as T diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameAdapter.kt index 7e3ee9b506..1e0e7eba57 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameAdapter.kt @@ -10,7 +10,8 @@ import com.gh.gamecenter.R import com.gh.gamecenter.entity.GameInstall import com.lightgame.adapter.BaseRecyclerAdapter -class InstalledGameAdapter(mContext: Context, val games: ArrayList) : BaseRecyclerAdapter(mContext) { +class InstalledGameAdapter(mContext: Context, val games: ArrayList) : + BaseRecyclerAdapter(mContext) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val view = View.inflate(mContext, R.layout.dialog_select_game_item, null) diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameDialog.kt b/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameDialog.kt index 8775a03194..bae02c83d2 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/InstalledGameDialog.kt @@ -26,7 +26,12 @@ import okhttp3.ResponseBody import org.json.JSONArray import org.json.JSONObject -class InstalledGameDialog(val mContext: Context, val games: ArrayList, private val mEvent: String, private val mKey: String) : +class InstalledGameDialog( + val mContext: Context, + val games: ArrayList, + private val mEvent: String, + private val mKey: String +) : TrackableDialog(mContext, R.style.DialogWindowTransparent, mEvent, mKey) { var onConfirmClickListener: (() -> Unit)? = null diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/PersonalItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/personalhome/PersonalItemViewHolder.kt index 907aefb833..03bed12d67 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/PersonalItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/PersonalItemViewHolder.kt @@ -6,7 +6,8 @@ import com.gh.gamecenter.entity.PersonalHistoryEntity import com.gh.gamecenter.forum.detail.ForumDetailActivity import com.gh.gamecenter.qa.answer.BaseAnswerOrArticleItemViewHolder -class PersonalItemViewHolder(val binding: CommunityAnswerItemBinding) : BaseAnswerOrArticleItemViewHolder(binding.root) { +class PersonalItemViewHolder(val binding: CommunityAnswerItemBinding) : + BaseAnswerOrArticleItemViewHolder(binding.root) { fun bindPersonalItem(entity: PersonalHistoryEntity, entrance: String) { commentCount.isClickable = true @@ -20,7 +21,13 @@ class PersonalItemViewHolder(val binding: CommunityAnswerItemBinding) : BaseAnsw forumNameContainer?.setOnClickListener { MtaHelper.onEvent(getEventId(entrance), getKey(entrance), entity.community.name) - itemView.context.startActivity(ForumDetailActivity.getIntent(itemView.context, entity.community.id, entrance)) + itemView.context.startActivity( + ForumDetailActivity.getIntent( + itemView.context, + entity.community.id, + entrance + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt index 501d2014ed..422d5389b7 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt @@ -433,7 +433,8 @@ class UserHomeFragment : ToolbarFragment() { ipRegionTv.goneIf(!(personalData.source != null && personalData.source.region.isNotEmpty())) ipRegionTv.text = "IP属地:${personalData.source?.region}" userIntroduce.text = if (personalData.introduce.isNullOrBlank()) "这是一个很神秘的崽" else personalData.introduce - todayVisitCount.text = if (personalData.count.todayVisit == null) "0" else personalData.count.todayVisit.toString() + todayVisitCount.text = + if (personalData.count.todayVisit == null) "0" else personalData.count.todayVisit.toString() userFollowerCount.text = personalData.count.follower.toSimpleCount() userFansCount.text = personalData.count.fans.toSimpleCount() userVoteCount.text = personalData.count.vote?.toSimpleCount() diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt index eb52e2dd87..8224102854 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeViewModel.kt @@ -36,18 +36,18 @@ class UserHomeViewModel(application: Application, var userId: String) : AndroidV fun getUserInfo() { RetrofitManager.getInstance() - .api.getPersonalData(userId, HaloApp.getInstance().channel, Utils.getTime(getApplication())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { - override fun onResponse(response: PersonalEntity?) { - userInfo.value = response - } + .api.getPersonalData(userId, HaloApp.getInstance().channel, Utils.getTime(getApplication())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { + override fun onResponse(response: PersonalEntity?) { + userInfo.value = response + } - override fun onFailure(e: HttpException?) { - networkError.value = true - } - }) + override fun onFailure(e: HttpException?) { + networkError.value = true + } + }) } fun follow() { @@ -62,15 +62,15 @@ class UserHomeViewModel(application: Application, var userId: String) : AndroidV @SuppressLint("CheckResult") fun getUserPlayedGameCount() { RetrofitManager.getInstance() - .api.getPlayedGamesCount(userId, Utils.getTime(getApplication())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: retrofit2.Response) { - var countContent = data.headers().get("Total") - playGamesCount.postValue(if (TextUtils.isEmpty(countContent)) 0 else countContent?.toInt() ?: 0) - } - }) + .api.getPlayedGamesCount(userId, Utils.getTime(getApplication())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: retrofit2.Response) { + var countContent = data.headers().get("Total") + playGamesCount.postValue(if (TextUtils.isEmpty(countContent)) 0 else countContent?.toInt() ?: 0) + } + }) } private fun followingCommand(isFollow: Boolean) { @@ -80,69 +80,69 @@ class UserHomeViewModel(application: Application, var userId: String) : AndroidV RetrofitManager.getInstance().api.deleteFollowing(userId) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - if (isFollow) { - Utils.toast(getApplication(), R.string.concern_success) // 关注成功 - } - - userInfo.value?.let { - it.me.isFollower = isFollow - it.count.fans = if (isFollow) it.count.fans + 1 else it.count.fans - 1 - userInfo.postValue(it) - } - - EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + if (isFollow) { + Utils.toast(getApplication(), R.string.concern_success) // 关注成功 } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - Utils.toast(getApplication(), R.string.loading_failed_hint) + userInfo.value?.let { + it.me.isFollower = isFollow + it.count.fans = if (isFollow) it.count.fans + 1 else it.count.fans - 1 + userInfo.postValue(it) } - }) + + EventBus.getDefault().post(EBUserFollow(userId, isFollow)) + } + + override fun onFailure(e: HttpException?) { + super.onFailure(e) + Utils.toast(getApplication(), R.string.loading_failed_hint) + } + }) } fun getBadgeList() { RetrofitManager.getInstance() - .api.getBadges(userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - badges.postValue(response) - } - }) + .api.getBadges(userId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + badges.postValue(response) + } + }) } fun availableBadges() { RetrofitManager.getInstance() - .api.availableBadges(userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response>() { - override fun onResponse(response: List?) { - super.onResponse(response) - availableBadge.postValue(if (response.isNullOrEmpty()) null else response[0]) - availableBadgeCount.postValue(response?.count() ?: 0) - } - }) + .api.availableBadges(userId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response>() { + override fun onResponse(response: List?) { + super.onResponse(response) + availableBadge.postValue(if (response.isNullOrEmpty()) null else response[0]) + availableBadgeCount.postValue(response?.count() ?: 0) + } + }) } @SuppressLint("CheckResult") fun getUserLevel() { RetrofitManager.getInstance() - .api.getUserLevels(userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: JsonObject) { - level.postValue(data["level"].asInt) - } - }) + .api.getUserLevels(userId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: JsonObject) { + level.postValue(data["level"].asInt) + } + }) } @SuppressLint("CheckResult") @@ -153,25 +153,30 @@ class UserHomeViewModel(application: Application, var userId: String) : AndroidV requestMap["description"] = desc } RetrofitManager.getInstance() - .api.reportUser(userId, requestMap.createRequestBody()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - ToastUtils.showToast("举报成功") - } + .api.reportUser(userId, requestMap.createRequestBody()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + ToastUtils.showToast("举报成功") + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - if (exception is HttpException) { - ErrorHelper.handleError(HaloApp.getInstance().application, exception.response().errorBody()?.string()) - } + override fun onFailure(exception: Exception) { + super.onFailure(exception) + if (exception is HttpException) { + ErrorHelper.handleError( + HaloApp.getInstance().application, + exception.response().errorBody()?.string() + ) } - }) + } + }) } - class Factory(private val mApplication: Application, - private val mUserId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mUserId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return UserHomeViewModel(mApplication, mUserId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundClipActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundClipActivity.kt index 1b1a03b60b..5ea6f4ec9b 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundClipActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundClipActivity.kt @@ -57,8 +57,10 @@ class BackgroundClipActivity : BaseActivity() { super.onWindowFocusChanged(hasFocus) if (hasFocus && (reference == null || reference?.get() == null)) { val imageView: ImageView = mBinding.cropImageIv.cropImageZoomView - val bitmap = BitmapUtils.getBitmapByFile(intent.getStringExtra(EntranceConsts.KEY_PATH), - imageView.width, imageView.height) + val bitmap = BitmapUtils.getBitmapByFile( + intent.getStringExtra(EntranceConsts.KEY_PATH), + imageView.width, imageView.height + ) if (bitmap != null) { reference = SoftReference(bitmap) imageView.setImageBitmap(reference?.get()) diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewActivity.kt index 671fdf7728..9c867b6235 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewActivity.kt @@ -21,9 +21,11 @@ class BackgroundPreviewActivity : BaseActivity() { ViewCompat.getWindowInsetsController(window.decorView)?.isAppearanceLightStatusBars = true val containerFragment = supportFragmentManager.findFragmentByTag(BackgroundPreviewFragment::class.java.name) - ?: BackgroundPreviewFragment().with(intent.extras) + ?: BackgroundPreviewFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, BackgroundPreviewFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, BackgroundPreviewFragment::class.java.name) + .commitAllowingStateLoss() } override fun isAutoResetViewBackgroundEnabled(): Boolean = true diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundActivity.kt index c0cb3b7b9f..ff631c8356 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundActivity.kt @@ -24,7 +24,11 @@ class PersonalityBackgroundActivity : ToolBarActivity() { companion object { fun getIntent(context: Context): Intent { - return getTargetIntent(context, PersonalityBackgroundActivity::class.java, PersonalityBackgroundFragment::class.java) + return getTargetIntent( + context, + PersonalityBackgroundActivity::class.java, + PersonalityBackgroundFragment::class.java + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundAdapter.kt index f23b0e999b..2fba771991 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundAdapter.kt @@ -13,7 +13,8 @@ import com.gh.gamecenter.login.user.UserManager import com.lightgame.adapter.BaseRecyclerAdapter import java.util.ArrayList -class PersonalityBackgroundAdapter(context: Context,val mViewModel: PersonalityBackgroundViewModel) : BaseRecyclerAdapter(context) { +class PersonalityBackgroundAdapter(context: Context, val mViewModel: PersonalityBackgroundViewModel) : + BaseRecyclerAdapter(context) { var mEntityList: ArrayList = arrayListOf() @@ -23,7 +24,15 @@ class PersonalityBackgroundAdapter(context: Context,val mViewModel: PersonalityB } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return PendantBackgroundViewHolder(AvatarBackgroundItemBinding.bind(mLayoutInflater.inflate(R.layout.avatar_background_item, parent, false))) + return PendantBackgroundViewHolder( + AvatarBackgroundItemBinding.bind( + mLayoutInflater.inflate( + R.layout.avatar_background_item, + parent, + false + ) + ) + ) } override fun getItemCount(): Int = mEntityList.size @@ -36,10 +45,11 @@ class PersonalityBackgroundAdapter(context: Context,val mViewModel: PersonalityB holder.binding.checkBorderView.visibleIf(UserManager.getInstance().userInfoEntity?.background?.id == entity.id) holder.binding.checkIv.visibleIf(UserManager.getInstance().userInfoEntity?.background?.id == entity.id) holder.itemView.setOnClickListener { - mViewModel.downLoadImage(mContext,entity) + mViewModel.downLoadImage(mContext, entity) } } } - class PendantBackgroundViewHolder(val binding: AvatarBackgroundItemBinding) : BaseRecyclerViewHolder(binding.root) + class PendantBackgroundViewHolder(val binding: AvatarBackgroundItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundViewModel.kt index 67f9c55806..c76b4be98a 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/PersonalityBackgroundViewModel.kt @@ -29,45 +29,48 @@ class PersonalityBackgroundViewModel(application: Application) : AndroidViewMode fun getBackgroundImages() { RetrofitManager.getInstance().api - .backgroundImages - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: ArrayList?) { - super.onResponse(response) - if (!response.isNullOrEmpty()) { - backgroundImagesLiveData.postValue(response) - } + .backgroundImages + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: ArrayList?) { + super.onResponse(response) + if (!response.isNullOrEmpty()) { + backgroundImagesLiveData.postValue(response) } - }) + } + }) } @SuppressLint("CheckResult") fun downLoadImage(context: Context, entity: BackgroundImageEntity) { loadingLiveData.postValue(true) Single.just(entity.url) - .flatMap { - getBitmapFormCache(it) + .flatMap { + getBitmapFormCache(it) + } + .map { + val fileName = entity.url.substring(entity.url.lastIndexOf("/") + 1) + val filePath = "${context.cacheDir.absolutePath}${File.separator}$fileName" + val file = File(filePath) + if (!file.exists()) { + BitmapUtils.saveBitmap(it, filePath) } - .map { - val fileName = entity.url.substring(entity.url.lastIndexOf("/") + 1) - val filePath = "${context.cacheDir.absolutePath}${File.separator}$fileName" - val file = File(filePath) - if (!file.exists()) { - BitmapUtils.saveBitmap(it, filePath) - } - filePath - } - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - loadingLiveData.postValue(false) - val intent = BackgroundPreviewActivity.getIntent(context, it, entity) - (context as AppCompatActivity).startActivityForResult(intent, PersonalityBackgroundFragment.CHANGE_BACKGROUND_SUCCESS) - }, { - it.printStackTrace() - loadingLiveData.postValue(false) - }) + filePath + } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + loadingLiveData.postValue(false) + val intent = BackgroundPreviewActivity.getIntent(context, it, entity) + (context as AppCompatActivity).startActivityForResult( + intent, + PersonalityBackgroundFragment.CHANGE_BACKGROUND_SUCCESS + ) + }, { + it.printStackTrace() + loadingLiveData.postValue(false) + }) } private fun getBitmapFormCache(url: String): Single { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt index 41ef496d2b..98e1f800f0 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt @@ -22,7 +22,8 @@ class AvatarBorderActivity : BaseActivity() { val containerFragment = supportFragmentManager.findFragmentByTag(AvatarBorderFragment::class.java.name) ?: AvatarBorderFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, AvatarBorderFragment::class.java.name) + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, AvatarBorderFragment::class.java.name) .commitAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt index ee34aacfcc..d448e6b65f 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt @@ -54,9 +54,9 @@ class AvatarBorderFragment : ToolbarFragment() { override fun getLayoutId() = 0 override fun getInflatedLayout() = FragmentAvatarBorderBinding - .inflate(layoutInflater) - .apply { mBinding = this } - .root + .inflate(layoutInflater) + .apply { mBinding = this } + .root override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -122,15 +122,22 @@ class AvatarBorderFragment : ToolbarFragment() { DisplayUtils.setStatusBarColor(requireActivity(), R.color.white, true) } else { titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) - toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white) + toolbar.navigationIcon = + ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white) toolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent)) DisplayUtils.setStatusBarColor(requireActivity(), R.color.transparent, false) } } userAvatar.setOnClickListener { - startActivity(ImageViewerActivity.getIntent(requireContext(), arrayListOf(UserManager.getInstance().userInfoEntity?.icon - ?: ""), 0, arrayListOf(userAvatar.avatarView as View), "$mEntrance+(头像挂件)", true)) + startActivity( + ImageViewerActivity.getIntent( + requireContext(), arrayListOf( + UserManager.getInstance().userInfoEntity?.icon + ?: "" + ), 0, arrayListOf(userAvatar.avatarView as View), "$mEntrance+(头像挂件)", true + ) + ) } changeAvatarTv.setOnClickListener { @@ -146,10 +153,10 @@ class AvatarBorderFragment : ToolbarFragment() { val jsonObject = JSONObject() if (commitTv.text == "停用挂件") { IntegralLogHelper.logPendent( - "click_stop", - LOCATION, - selectAvatarBorderEntity!!.id, - mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: "" + "click_stop", + LOCATION, + selectAvatarBorderEntity!!.id, + mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: "" ) jsonObject.put("_id", "") @@ -157,10 +164,10 @@ class AvatarBorderFragment : ToolbarFragment() { mUserViewModel?.changeUserInfo(jsonObject.toString(), UserViewModel.TYPE_ICON_BORDER) } else { IntegralLogHelper.logPendent( - "click_use", - LOCATION, - selectAvatarBorderEntity!!.id, - mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: "" + "click_use", + LOCATION, + selectAvatarBorderEntity!!.id, + mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: "" ) jsonObject.put("_id", selectAvatarBorderEntity?.id) @@ -184,7 +191,8 @@ class AvatarBorderFragment : ToolbarFragment() { commitTv.text = "使用" } commitTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) - commitTv.background = ContextCompat.getDrawable(requireContext(), R.drawable.bg_notification_open_btn_style_2) + commitTv.background = + ContextCompat.getDrawable(requireContext(), R.drawable.bg_notification_open_btn_style_2) } else { selectAvatarBorderEntity = null userAvatar.displayBorder(UserManager.getInstance().userInfoEntity?.iconBorder?.url) @@ -207,24 +215,28 @@ class AvatarBorderFragment : ToolbarFragment() { } mTitleList.add(entity.name) val chooseAvatarBorderFragment = childFragmentManager.findFragmentByTag("$tag$index") - ?: ChooseAvatarBorderFragment().with(bundleOf( - EntranceConsts.KEY_CATEGORY_ID to entity.id, - EntranceConsts.KEY_IS_FREE to entity.isFree)) + ?: ChooseAvatarBorderFragment().with( + bundleOf( + EntranceConsts.KEY_CATEGORY_ID to entity.id, + EntranceConsts.KEY_IS_FREE to entity.isFree + ) + ) mFragments.add(chooseAvatarBorderFragment) } viewpager.offscreenPageLimit = mFragments.size - viewpager.adapter = object : FragmentStatePagerAdapter(childFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { - override fun getItem(position: Int) = mFragments[position] + viewpager.adapter = + object : FragmentStatePagerAdapter(childFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { + override fun getItem(position: Int) = mFragments[position] - override fun getCount() = mFragments.size + override fun getCount() = mFragments.size - override fun getPageTitle(position: Int): CharSequence? { - return if (mTitleList.size > position) { - mTitleList[position] - } else super.getPageTitle(position) + override fun getPageTitle(position: Int): CharSequence? { + return if (mTitleList.size > position) { + mTitleList[position] + } else super.getPageTitle(position) + } } - } tabLayout.setupWithViewPager(viewpager) for (i in 0 until tabLayout.tabCount) { @@ -253,9 +265,9 @@ class AvatarBorderFragment : ToolbarFragment() { tab?.run { mAvatarBorderCategories?.get(position)?.run { IntegralLogHelper.logPendent( - "click_tab_pendant_catalog", - LOCATION, - id + "click_tab_pendant_catalog", + LOCATION, + id ) } } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderViewModel.kt index 800f814027..524df617d4 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderViewModel.kt @@ -21,18 +21,18 @@ class AvatarBorderViewModel(application: Application) : AndroidViewModel(applica @SuppressLint("CheckResult") fun getPendantCategories() { RetrofitManager.getInstance().api - .pendantCategories - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: ArrayList) { - pendantCategories.postValue(data) - } + .pendantCategories + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: ArrayList) { + pendantCategories.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - pendantCategories.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + pendantCategories.postValue(null) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt index 48fd35c465..b1ad90218c 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt @@ -17,12 +17,13 @@ import com.gh.gamecenter.login.entity.AvatarBorderEntity import com.gh.gamecenter.login.user.UserManager import com.lightgame.adapter.BaseRecyclerAdapter -class ChooseAvatarBorderAdapter(context: Context, - private val mFragment: ChooseAvatarBorderFragment, - private val mIsFree: Boolean, - private val mCategoryId: String, - private val mClickCallback: (entity: AvatarBorderEntity, isSelected: Boolean) -> Unit) - : BaseRecyclerAdapter(context) { +class ChooseAvatarBorderAdapter( + context: Context, + private val mFragment: ChooseAvatarBorderFragment, + private val mIsFree: Boolean, + private val mCategoryId: String, + private val mClickCallback: (entity: AvatarBorderEntity, isSelected: Boolean) -> Unit +) : BaseRecyclerAdapter(context) { var entityList: ArrayList = arrayListOf() private var mIsFirstIn = true @@ -45,7 +46,7 @@ class ChooseAvatarBorderAdapter(context: Context, ImageUtils.display(holder.binding.imageSdv, borderEntity.url) // 是否可使用 var isEnable = false - when { + when { // 普通挂件 mIsFree -> { isEnable = true @@ -100,10 +101,10 @@ class ChooseAvatarBorderAdapter(context: Context, holder.itemView.setOnClickListener { IntegralLogHelper.logPendent( - "click_pendant", - "头像挂件页", - borderEntity.id, - mCategoryId + "click_pendant", + "头像挂件页", + borderEntity.id, + mCategoryId ) // 根据是否可使用来决定是否显示底部的使用/停用按钮 mFragment.setParentBottomVisible(isEnable) diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt index b71a6c596b..41c68c1160 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt @@ -30,7 +30,8 @@ class ChooseAvatarBorderFragment : ToolbarFragment() { mBinding = FragmentAvatarListBinding.bind(mCachedView) mCategoryId = arguments?.getString(EntranceConsts.KEY_CATEGORY_ID) ?: "" mIsFree = arguments?.getBoolean(EntranceConsts.KEY_IS_FREE) ?: true - mViewModel = viewModelProvider(ChooseAvatarBorderViewModel.Factory(HaloApp.getInstance().application, mCategoryId)) + mViewModel = + viewModelProvider(ChooseAvatarBorderViewModel.Factory(HaloApp.getInstance().application, mCategoryId)) mViewModel?.pendantsLiveData?.observe(this, Observer { mBinding.reuseLoading.root.visibility = View.GONE if (it != null) { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderViewModel.kt index 2edb1f74f3..7c6ab3b4d3 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderViewModel.kt @@ -19,19 +19,19 @@ class ChooseAvatarBorderViewModel(application: Application, val categoryId: Stri @SuppressLint("CheckResult") fun getPendants() { RetrofitManager.getInstance().api - .getPendants(getFilter()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: ArrayList) { - pendantsLiveData.postValue(data) - } + .getPendants(getFilter()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: ArrayList) { + pendantsLiveData.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - pendantsLiveData.postValue(null) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + pendantsLiveData.postValue(null) + } + }) } private fun getFilter(): String { @@ -39,8 +39,10 @@ class ChooseAvatarBorderViewModel(application: Application, val categoryId: Stri } - class Factory(private val mApplication: Application, - private val mCategoryId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mCategoryId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return ChooseAvatarBorderViewModel(mApplication, mCategoryId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/followers/FollowersActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/followers/FollowersActivity.kt index b5c7933f39..d52e9574dc 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/followers/FollowersActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/followers/FollowersActivity.kt @@ -23,6 +23,7 @@ class FollowersActivity : ToolBarActivity() { super.onDarkModeChanged() updateStatusBarColor(R.color.background_white, R.color.background_white) } + companion object { fun getIntent(context: Context, userId: String, entrance: String, path: String): Intent { val bundle = Bundle() diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryAdapter.kt index 182ae01760..4318ab7cc8 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryAdapter.kt @@ -103,7 +103,10 @@ class UserHistoryAdapter( ImageUtils.display(userBadgeIcon, historyEntity.user?.badge?.icon) userBadgeIcon.goneIf(historyEntity.user?.badge == null) userBadgeName.text = historyEntity.user?.badge?.name - time.text = (if (historyEntity.me.isFollower || historyEntity.status == "pending" || historyEntity.status == "fail") " · " else "") + NewsUtils.getFormattedTime(historyEntity.time!!) + time.text = + (if (historyEntity.me.isFollower || historyEntity.status == "pending" || historyEntity.status == "fail") " · " else "") + NewsUtils.getFormattedTime( + historyEntity.time!! + ) statusTv.goneIf(!(historyEntity.status == "pending" || historyEntity.status == "fail") && !historyEntity.me.isFollower) statusTv.setText( when { @@ -128,7 +131,10 @@ class UserHistoryAdapter( ) title.goneIf(historyEntity.type.contains("answer")) title.text = - if ((historyEntity.type.contains("question") || historyEntity.type.contains("article") || historyEntity.type.contains("video"))) historyEntity.title else historyEntity.question.title + if ((historyEntity.type.contains("question") || historyEntity.type.contains("article") || historyEntity.type.contains( + "video" + )) + ) historyEntity.title else historyEntity.question.title questionTitle.goneIf(!historyEntity.type.contains("answer")) questionTitle.text = historyEntity.question.title content.goneIf(historyEntity.brief.isEmpty() && historyEntity.des.isEmpty() && historyEntity.description.isEmpty()) @@ -139,15 +145,15 @@ class UserHistoryAdapter( } forumNameTv.text = historyEntity.community.name - when(historyEntity.type) { - "question" -> { - val titleStr = " ${historyEntity.title}" - val drawable = R.drawable.ic_ask_label.toDrawable() - drawable?.run { - setBounds(0, 0, 16F.dip2px(), 16F.dip2px()) - title.text = SpanBuilder(titleStr).image(0, 1, this).build() - } - } + when (historyEntity.type) { + "question" -> { + val titleStr = " ${historyEntity.title}" + val drawable = R.drawable.ic_ask_label.toDrawable() + drawable?.run { + setBounds(0, 0, 16F.dip2px(), 16F.dip2px()) + title.text = SpanBuilder(titleStr).image(0, 1, this).build() + } + } "answer" -> { val briefStr = " ${historyEntity.brief}" @@ -161,7 +167,8 @@ class UserHistoryAdapter( "community_article" -> { if (historyEntity.getPassVideos().isNotEmpty() && historyEntity.images.isNotEmpty()) { val titleStr = title.text - val videoSpan = SpanBuilder(" ").image(1, " ".length, R.drawable.ic_article_video_label).build() + val videoSpan = + SpanBuilder(" ").image(1, " ".length, R.drawable.ic_article_video_label).build() title.text = SpannableStringBuilder() .append(titleStr) .append(videoSpan) @@ -259,22 +266,35 @@ class UserHistoryAdapter( private fun bindRatingItem(holder: PersonalHomeRatingViewHolder, position: Int) { val historyEntity = mEntityList[holder.adapterPosition] - holder.binding.comment.text = if (historyEntity.count.reply > 0) NumberUtils.transSimpleCount(historyEntity.count.reply) else "" + holder.binding.comment.text = + if (historyEntity.count.reply > 0) NumberUtils.transSimpleCount(historyEntity.count.reply) else "" holder.binding.vote.isChecked = historyEntity.me.isVoted - holder.binding.vote.text = if (historyEntity.count.vote > 0) NumberUtils.transSimpleCount(historyEntity.count.vote) else "" + holder.binding.vote.text = + if (historyEntity.count.vote > 0) NumberUtils.transSimpleCount(historyEntity.count.vote) else "" holder.binding.ratingStart.rating = historyEntity.comment.star.toFloat() - holder.binding.userIcon.display(historyEntity.user?.border, historyEntity.user?.icon, historyEntity.user?.auth?.icon) + holder.binding.userIcon.display( + historyEntity.user?.border, + historyEntity.user?.icon, + historyEntity.user?.auth?.icon + ) val maxDesLines = if (mExpandSparseBooleanArray.get(holder.adapterPosition)) Int.MAX_VALUE else 3 holder.binding.content.setExpandMaxLines(maxDesLines) holder.binding.content.setIsExpanded(Int.MAX_VALUE == maxDesLines) val m = Pattern.compile(RatingEditActivity.LABEL_REGEX).matcher(historyEntity.comment.content) if (m.find()) { - val contents = TextHelper.getCommentLabelSpannableStringBuilder(historyEntity.comment.content, R.color.theme_font) - holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) + val contents = + TextHelper.getCommentLabelSpannableStringBuilder(historyEntity.comment.content, R.color.theme_font) + holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper( + text = contents, + copyClickedText = true + ) } else { - holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper(text = historyEntity.comment.content, copyClickedText = true) + holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper( + text = historyEntity.comment.content, + copyClickedText = true + ) } holder.binding.content.setExpandCallback { mExpandSparseBooleanArray.put(holder.adapterPosition, true) diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt index 9376003cdf..6735373323 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt @@ -26,11 +26,12 @@ import io.reactivex.schedulers.Schedulers import okhttp3.ResponseBody import retrofit2.HttpException -class UserHistoryViewModel(application: Application, - var userId: String, - private var mScene: SCENE, - var type: TYPE) - : ListViewModel(application) { +class UserHistoryViewModel( + application: Application, + var userId: String, + private var mScene: SCENE, + var type: TYPE +) : ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api var videoList = arrayListOf() @@ -38,8 +39,10 @@ class UserHistoryViewModel(application: Application, override fun provideDataObservable(page: Int): Observable> { getCount() - return mApi.getPersonalHistory(userId, page, - HaloApp.getInstance().channel, getFilter()) + return mApi.getPersonalHistory( + userId, page, + HaloApp.getInstance().channel, getFilter() + ) } override fun mergeResultLiveData() { @@ -65,44 +68,44 @@ class UserHistoryViewModel(application: Application, fun voteComment(gameId: String, commentId: String, callback: () -> Unit) { mApi.voteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "点赞成功") - callback.invoke() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "点赞成功") + callback.invoke() - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - val errorEntity = string?.toObject() - if (errorEntity?.code == 403008) { - onResponse(null) - return - } - ErrorHelper.handleError(getApplication(), string) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + val errorEntity = string?.toObject() + if (errorEntity?.code == 403008) { + onResponse(null) + return } - }) + ErrorHelper.handleError(getApplication(), string) + } + }) } fun unVoteComment(gameId: String, commentId: String, callback: () -> Unit) { mApi.unvoteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - Utils.toast(getApplication(), "取消点赞") - callback.invoke() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : com.gh.gamecenter.common.retrofit.Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + Utils.toast(getApplication(), "取消点赞") + callback.invoke() + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + ErrorHelper.handleError(getApplication(), string) + } + }) } @@ -120,8 +123,9 @@ class UserHistoryViewModel(application: Application, private fun getFilter(): String { return if (mScene != SCENE.COMMENT) { return UrlFilterUtils.getFilterQuery( - "scene", mScene.value, - "type", type.value) + "scene", mScene.value, + "type", type.value + ) } else { UrlFilterUtils.getFilterQuery("scene", mScene.value) } @@ -145,10 +149,11 @@ class UserHistoryViewModel(application: Application, } } - class Factory(private val mApplication: Application, - private val mUserId: String, - private val mScene: SCENE, - private val mType: TYPE + class Factory( + private val mApplication: Application, + private val mUserId: String, + private val mScene: SCENE, + private val mType: TYPE ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return UserHistoryViewModel(mApplication, mUserId, mScene, mType) as T diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryAdapter.kt index d99470b51f..d797466948 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryAdapter.kt @@ -15,8 +15,8 @@ import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.video.VideoItemViewHolder import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel -class UserVideoHistoryAdapter(context: Context, val mViewModel: UserVideoHistoryViewModel) - : ListAdapter(context) { +class UserVideoHistoryAdapter(context: Context, val mViewModel: UserVideoHistoryViewModel) : + ListAdapter(context) { override fun areItemsTheSame(oldItem: MyVideoEntity?, newItem: MyVideoEntity?): Boolean { return oldItem == newItem @@ -57,7 +57,13 @@ class UserVideoHistoryAdapter(context: Context, val mViewModel: UserVideoHistory holder.binding.userInfo.visibility = View.GONE holder.itemView.setOnClickListener { - DirectUtils.directToVideoDetail(mContext, entity.id, VideoDetailContainerViewModel.Location.USER_VIDEO.value, false, path = "个人主页-视频") + DirectUtils.directToVideoDetail( + mContext, + entity.id, + VideoDetailContainerViewModel.Location.USER_VIDEO.value, + false, + path = "个人主页-视频" + ) } } else if (holder is FooterViewHolder) { holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryViewModel.kt index f7272495d3..ebe782fd00 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserVideoHistoryViewModel.kt @@ -9,7 +9,8 @@ import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.Observable -class UserVideoHistoryViewModel(application: Application, var userId: String) : ListViewModel(application) { +class UserVideoHistoryViewModel(application: Application, var userId: String) : + ListViewModel(application) { override fun provideDataObservable(page: Int): Observable> { return RetrofitManager.getInstance().api.getUserVideo(userId, page, Config.VIDEO_PAGE_SIZE) @@ -19,8 +20,10 @@ class UserVideoHistoryViewModel(application: Application, var userId: String) : mResultLiveData.addSource(mListLiveData) { mResultLiveData.postValue(it) } } - class Factory(private val mApplication: Application, - private val mUserId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mUserId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return UserVideoHistoryViewModel(mApplication, mUserId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt index 5ef7cc23d3..9318eb9625 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt @@ -57,9 +57,10 @@ class UserCommentHistoryAdapter( when (holder) { is UserCommentHistoryItemViewHolder -> { val marginTop = if (position == 0) 8F.dip2px() else 16F.dip2px() - holder.binding.gameInfo.layoutParams = (holder.binding.gameInfo.layoutParams as ViewGroup.MarginLayoutParams).apply { - setMargins(0, marginTop, 0, 0) - } + holder.binding.gameInfo.layoutParams = + (holder.binding.gameInfo.layoutParams as ViewGroup.MarginLayoutParams).apply { + setMargins(0, marginTop, 0, 0) + } var isChildLongClick = false val rating = mEntityList[position] @@ -83,9 +84,15 @@ class UserCommentHistoryAdapter( val m = Pattern.compile(RatingEditActivity.LABEL_REGEX).matcher(rating.content) if (m.find()) { val contents = TextHelper.getCommentLabelSpannableStringBuilder(rating.content, R.color.theme_font) - holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper(text = contents, copyClickedText = true) + holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper( + text = contents, + copyClickedText = true + ) } else { - holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper(text = rating.content, copyClickedText = true) + holder.binding.tvComment.setTextWithHighlightedTextWrappedInsideWrapper( + text = rating.content, + copyClickedText = true + ) } holder.binding.tvComment.setExpandCallback { mExpandSparseBooleanArray.put(holder.adapterPosition, true) @@ -133,7 +140,8 @@ class UserCommentHistoryAdapter( return@setOnClickListener } MtaHelper.onEvent("我的光环_新", "我的游戏评论", "评论详情") - val intent = RatingReplyActivity.getIntent(mContext, rating.game.id, rating.id, false, "我的游戏评论", "") + val intent = + RatingReplyActivity.getIntent(mContext, rating.game.id, rating.id, false, "我的游戏评论", "") SyncDataBetweenPageHelper.startActivityForResult(mFragment, intent, 100, position) } @@ -152,5 +160,6 @@ class UserCommentHistoryAdapter( } } - inner class UserCommentHistoryItemViewHolder(val binding: ItemUserCommentHistoryBinding) : BaseRecyclerViewHolder(binding.root) + inner class UserCommentHistoryItemViewHolder(val binding: ItemUserCommentHistoryBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryFragment.kt index 54e291e706..d76c0b01d6 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryFragment.kt @@ -106,10 +106,12 @@ class UserCommentHistoryFragment : ListFragment(application) { +class UserCommentHistoryViewModel(application: Application, var userId: String) : + ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api @@ -43,44 +43,44 @@ class UserCommentHistoryViewModel(application: Application, var userId: String) fun voteComment(gameId: String, commentId: String, callback: () -> Unit) { mApi.voteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "点赞成功") - callback.invoke() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "点赞成功") + callback.invoke() - EnergyBridge.postEnergyTask("vote_game_comment", commentId) - } + EnergyBridge.postEnergyTask("vote_game_comment", commentId) + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - val errorEntity = string?.toObject() - if (errorEntity?.code == 403008) { - onResponse(null) - return - } - ErrorHelper.handleError(getApplication(), string) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + val errorEntity = string?.toObject() + if (errorEntity?.code == 403008) { + onResponse(null) + return } - }) + ErrorHelper.handleError(getApplication(), string) + } + }) } fun unVoteComment(gameId: String, commentId: String, callback: () -> Unit) { mApi.unvoteGameComment(gameId, commentId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - Utils.toast(getApplication(), "取消点赞") - callback.invoke() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + Utils.toast(getApplication(), "取消点赞") + callback.invoke() + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() + ErrorHelper.handleError(getApplication(), string) + } + }) } @@ -93,8 +93,9 @@ class UserCommentHistoryViewModel(application: Application, var userId: String) private fun getFilter(): String { return UrlFilterUtils.getFilterQuery( - "view", "halo", - "type", type.value) + "view", "halo", + "type", type.value + ) } @@ -104,8 +105,10 @@ class UserCommentHistoryViewModel(application: Application, var userId: String) ANLIWALL("anliwall"); } - class Factory(private val mApplication: Application, - private val mUserId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mUserId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return UserCommentHistoryViewModel(mApplication, mUserId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameFragment.kt index 1cd3b4fd36..e92d77ce19 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameFragment.kt @@ -121,15 +121,21 @@ class UserGameFragment : ToolbarFragment() { mGamesCollectionFragment?.arguments = bundleOf(KEY_USER_ID to mUserId, KEY_TYPE to GamesCollectionFragment.TYPE_USER) childFragmentManager.beginTransaction() - .replace(R.id.contentContainer, mGamesCollectionFragment!!, GamesCollectionFragment::class.java.name) + .replace( + R.id.contentContainer, + mGamesCollectionFragment!!, + GamesCollectionFragment::class.java.name + ) .commitAllowingStateLoss() } TYPE_PLAYED_GAME -> { - mPlayedGameFragment = childFragmentManager.findFragmentByTag(UserPlayedGameFragment::class.java.name) as? UserPlayedGameFragment - ?: UserPlayedGameFragment() + mPlayedGameFragment = + childFragmentManager.findFragmentByTag(UserPlayedGameFragment::class.java.name) as? UserPlayedGameFragment + ?: UserPlayedGameFragment() mPlayedGameFragment?.arguments = bundleOf(KEY_USER_ID to mUserId) childFragmentManager.beginTransaction() - .replace(R.id.contentContainer, mPlayedGameFragment!!, UserPlayedGameFragment::class.java.name).commitAllowingStateLoss() + .replace(R.id.contentContainer, mPlayedGameFragment!!, UserPlayedGameFragment::class.java.name) + .commitAllowingStateLoss() } else -> { mCommentFragment = @@ -137,7 +143,8 @@ class UserGameFragment : ToolbarFragment() { ?: UserCommentHistoryFragment() mCommentFragment?.arguments = bundleOf(KEY_USER_ID to mUserId) childFragmentManager.beginTransaction() - .replace(R.id.contentContainer, mCommentFragment!!, UserCommentHistoryFragment::class.java.name).commitAllowingStateLoss() + .replace(R.id.contentContainer, mCommentFragment!!, UserCommentHistoryFragment::class.java.name) + .commitAllowingStateLoss() } } } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameViewModel.kt index 66cb420070..294cc03556 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserGameViewModel.kt @@ -16,8 +16,7 @@ import io.reactivex.schedulers.Schedulers import okhttp3.ResponseBody import retrofit2.Response -class UserGameViewModel(application: Application, private val mUserId: String) - : AndroidViewModel(application) { +class UserGameViewModel(application: Application, private val mUserId: String) : AndroidViewModel(application) { var playedGameCount = MutableLiveData() @@ -28,15 +27,15 @@ class UserGameViewModel(application: Application, private val mUserId: String) @SuppressLint("CheckResult") fun getUserPlayedGameCount() { RetrofitManager.getInstance() - .api.getPlayedGamesCount(mUserId, Utils.getTime(getApplication())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: retrofit2.Response) { - val countContent = data.headers().get("Total") - playedGameCount.postValue(if (TextUtils.isEmpty(countContent)) 0 else countContent?.toInt() ?: 0) - } - }) + .api.getPlayedGamesCount(mUserId, Utils.getTime(getApplication())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: retrofit2.Response) { + val countContent = data.headers().get("Total") + playedGameCount.postValue(if (TextUtils.isEmpty(countContent)) 0 else countContent?.toInt() ?: 0) + } + }) } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameAdapter.kt index b942c29c45..dc5d44b760 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameAdapter.kt @@ -25,8 +25,10 @@ import com.gh.gamecenter.game.GameItemViewHolder import com.gh.gamecenter.mygame.PlayedGameViewModel import com.lightgame.download.DownloadEntity -class UserPlayedGameAdapter(context: Context, - private val mViewModel: PlayedGameViewModel): ListAdapter(context) { +class UserPlayedGameAdapter( + context: Context, + private val mViewModel: PlayedGameViewModel +) : ListAdapter(context) { private val mEntrance = "个人主页-游戏-玩过" @@ -60,9 +62,9 @@ class UserPlayedGameAdapter(context: Context, override fun getItemViewType(position: Int): Int { return if (position == itemCount - 1) { - ItemViewType.ITEM_FOOTER + ItemViewType.ITEM_FOOTER } else { - ItemViewType.GAME_NORMAL + ItemViewType.GAME_NORMAL } } @@ -116,13 +118,15 @@ class UserPlayedGameAdapter(context: Context, labelList.addView(runTimeView) } - DownloadItemUtils.setOnClickListener(mContext, - downloadBtn, - gameEntity, - position, - this@UserPlayedGameAdapter, - "(${mEntrance})", - StringUtils.buildString(mEntrance, ":", gameEntity.name)) + DownloadItemUtils.setOnClickListener( + mContext, + downloadBtn, + gameEntity, + position, + this@UserPlayedGameAdapter, + "(${mEntrance})", + StringUtils.buildString(mEntrance, ":", gameEntity.name) + ) DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true, true) holder.itemView.setOnClickListener { @@ -134,13 +138,15 @@ class UserPlayedGameAdapter(context: Context, is FooterViewHolder -> holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) } } + fun notifyItemByDownload(download: DownloadEntity) { for (key in positionAndPackageMap.keys) { // sentry上报download.packageName可能为空 if (download.packageName != null - && download.gameId != null - && key.contains(download.packageName) - && key.contains(download.gameId)) { + && download.gameId != null + && key.contains(download.packageName) + && key.contains(download.gameId) + ) { val position = positionAndPackageMap[key] if (position != null && mEntityList != null && position < mEntityList.size) { mEntityList[position].getEntryMap()[download.platform] = download diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameFragment.kt index 03e9b4fac8..ee03f071ac 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserPlayedGameFragment.kt @@ -26,7 +26,7 @@ import com.lightgame.download.DownloadEntity import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -open class UserPlayedGameFragment: ListFragment() { +open class UserPlayedGameFragment : ListFragment() { private var mUserId = "" private var mAdapter: UserPlayedGameAdapter? = null @@ -43,7 +43,8 @@ open class UserPlayedGameFragment: ListFragment override fun provideListViewModel() = viewModelProvider(PlayedGameViewModel.Factory(mUserId)) - override fun provideListAdapter() = mAdapter ?: UserPlayedGameAdapter(requireContext(), mListViewModel).apply { mAdapter = this } + override fun provideListAdapter() = + mAdapter ?: UserPlayedGameAdapter(requireContext(), mListViewModel).apply { mAdapter = this } override fun getItemDecoration() = null @@ -64,17 +65,26 @@ open class UserPlayedGameFragment: ListFragment override fun onLoadEmpty() { super.onLoadEmpty() - val installedList = PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) + val installedList = + PackagesManager.filterSameApk(PackagesManager.filterDownloadBlackPackage(PackagesManager.getInstalledList())) val simulatorDownloadEntityList = DownloadManager.getInstance().allSimulatorDownloadEntity simulatorDownloadEntityList.forEach { entity -> - installedList.add(GameInstall(entity.gameId, packageName = entity.packageName, name = entity.name, icon = entity.icon)) + installedList.add( + GameInstall( + entity.gameId, + packageName = entity.packageName, + name = entity.name, + icon = entity.icon + ) + ) } //val count = SPUtils.getInt(Constants.SP_MARK_INSTALLED_GAME, 0) val isCancel = SPUtils.getBoolean(Constants.SP_MARK_INSTALLED_GAME_USER_HOME, false) if (mUserId == UserManager.getInstance().userId - && !isCancel + && !isCancel // && it.isNullOrEmpty() - && installedList.isNotEmpty()) { + && installedList.isNotEmpty() + ) { mDialog = InstalledGameDialog(requireContext(), installedList, "个人主页详情", "标记玩过弹窗") mDialog?.show() mDialog?.onConfirmClickListener = { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/rating/MyRating.kt b/app/src/main/java/com/gh/gamecenter/personalhome/rating/MyRating.kt index e6a44dff00..1933e5bb9f 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/rating/MyRating.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/rating/MyRating.kt @@ -10,34 +10,38 @@ import java.util.* * 该实体与View同级,因为其他页面也用不着 */ @Keep -data class MyRating(@SerializedName("_id") - val id: String = "", - var star: Int = 0, - var content: String = "", - val time: Long = 0, - var vote: Int = -1, - var reply: Int = -1, - var user: PersonalEntity? = null, - var me: MeEntity = MeEntity(), - val active: Boolean = true, - var audit: Boolean = false, - @SerializedName("is_jingxuan") - val excellent: Boolean = false, - @SerializedName("anliwall") - val amway: Boolean = false, - val game: PersonalHistoryEntity.Game = PersonalHistoryEntity.Game()) { +data class MyRating( + @SerializedName("_id") + val id: String = "", + var star: Int = 0, + var content: String = "", + val time: Long = 0, + var vote: Int = -1, + var reply: Int = -1, + var user: PersonalEntity? = null, + var me: MeEntity = MeEntity(), + val active: Boolean = true, + var audit: Boolean = false, + @SerializedName("is_jingxuan") + val excellent: Boolean = false, + @SerializedName("anliwall") + val amway: Boolean = false, + val game: PersonalHistoryEntity.Game = PersonalHistoryEntity.Game() +) { fun transformHistoryEntity(): PersonalHistoryEntity { return PersonalHistoryEntity( + id = id, + time = time, + comment = PersonalHistoryEntity.Comment( id = id, - time = time, - comment = PersonalHistoryEntity.Comment( - id = id, - star = star, - content = content, - game = game), - count = PersonalHistoryEntity.Count(vote = vote, reply = reply), - user = user) + star = star, + content = content, + game = game + ), + count = PersonalHistoryEntity.Count(vote = vote, reply = reply), + user = user + ) } fun getFormatTime(pattern: String): String? { @@ -47,13 +51,21 @@ data class MyRating(@SerializedName("_id") } fun transformGameEntity(): GameEntity { - return GameEntity(id = game.id, mName = game.name, nameSuffix = game.nameSuffix, mIcon = game.icon, mTagStyle = game.tag, star = game.star) + return GameEntity( + id = game.id, + mName = game.name, + nameSuffix = game.nameSuffix, + mIcon = game.icon, + mTagStyle = game.tag, + star = game.star + ) } fun transformCommentEntity(): RatingComment { - return RatingComment(id = id, content = content, star = star, vote = vote, reply = reply, time = time, - me = me, active = active, audit = audit, - user = UserEntity(id = user?.id, name = user?.name, icon = user?.icon) + return RatingComment( + id = id, content = content, star = star, vote = vote, reply = reply, time = time, + me = me, active = active, audit = audit, + user = UserEntity(id = user?.id, name = user?.name, icon = user?.icon) ) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingActivity.kt index 023cd85ed6..a8e7ea67ce 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingActivity.kt @@ -37,12 +37,13 @@ class RatingActivity : ListActivity>() { } override fun provideDataSingle(page: Int): Single> { - return RetrofitManager.getInstance().api.getMyRating(mUserId, page,"view:default") + return RetrofitManager.getInstance().api.getMyRating(mUserId, page, "view:default") } override fun provideListViewModel(): NormalListViewModel { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun isAutoResetViewBackgroundEnabled(): Boolean = true diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingAdapter.kt index 1ddf42756b..d76cd4b412 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/rating/RatingAdapter.kt @@ -54,9 +54,11 @@ class RatingAdapter( is PersonalHomeRatingViewHolder -> { val entity = mEntityList[holder.adapterPosition] val historyEntity = entity.transformHistoryEntity() - holder.binding.comment.text = if (historyEntity.count.reply > 0) NumberUtils.transSimpleCount(historyEntity.count.reply) else "" + holder.binding.comment.text = + if (historyEntity.count.reply > 0) NumberUtils.transSimpleCount(historyEntity.count.reply) else "" holder.binding.vote.isChecked = historyEntity.me.isVoted - holder.binding.vote.text = if (historyEntity.count.vote > 0) NumberUtils.transSimpleCount(historyEntity.count.vote) else "" + holder.binding.vote.text = + if (historyEntity.count.vote > 0) NumberUtils.transSimpleCount(historyEntity.count.vote) else "" holder.binding.ratingStart.rating = historyEntity.comment.star.toFloat() holder.binding.userCommand.text = (mContext.getString( @@ -64,9 +66,17 @@ class RatingAdapter( NewsUtils.getFormattedTime(entity.time), entity.game.name )).fromHtml() - holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper(text = entity.content, copyClickedText = true) + holder.binding.content.setTextWithHighlightedTextWrappedInsideWrapper( + text = entity.content, + copyClickedText = true + ) holder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, entity.game.id, mEntrance, isSkipGameComment = true) + GameDetailActivity.startGameDetailActivity( + mContext, + entity.game.id, + mEntrance, + isSkipGameComment = true + ) } } is FooterViewHolder -> { diff --git a/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt b/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt index 341c725e43..95845fabb6 100644 --- a/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt +++ b/app/src/main/java/com/gh/gamecenter/provider/GhContentProvider.kt @@ -27,7 +27,7 @@ class GhContentProvider : ContentProvider() { mUriMatcher.addURI(AUTHORITY, SYNC_CERTIFICATION_TABLE_NAME, 2) } - private fun initProviderSqliteHelper(context: Context?){ + private fun initProviderSqliteHelper(context: Context?) { val helper: SQLiteOpenHelper = object : SQLiteOpenHelper(context, CERTIFICATION_DATABASE_NAME, null, 1) { @@ -54,6 +54,7 @@ class GhContentProvider : ContentProvider() { } mSqLiteDatabase = helper.writableDatabase } + override fun onCreate(): Boolean { initProviderSqliteHelper(context); @@ -67,8 +68,8 @@ class GhContentProvider : ContentProvider() { selectionArgs: Array?, sortOrder: String? ): Cursor? { - when(mUriMatcher.match(uri)){ - 1 -> return mSqLiteDatabase?.query( + when (mUriMatcher.match(uri)) { + 1 -> return mSqLiteDatabase?.query( CERTIFICATION_TABLE_NAME, null, null, @@ -94,7 +95,6 @@ class GhContentProvider : ContentProvider() { override fun getType(uri: Uri): String? = null - // fun localInsert(context: Context,values: ContentValues?){ // initProviderSqliteHelper(context) // try { @@ -129,11 +129,14 @@ class GhContentProvider : ContentProvider() { if (rowId != null && rowId > 0) { val nameUri = ContentUris.withAppendedId(uri, rowId) context.contentResolver.notifyChange(nameUri, null) - Utils.log("CertificationContentProvider", "insert success:" + uri.authority + ", status => " + values?.toString()) + Utils.log( + "CertificationContentProvider", + "insert success:" + uri.authority + ", status => " + values?.toString() + ) return nameUri } } catch (e: SQLiteFullException) { - Utils.toast(context,"数据库内存已满,无法同步") + Utils.toast(context, "数据库内存已满,无法同步") } } else if (mUriMatcher.match(uri) == 2) { @@ -171,8 +174,8 @@ class GhContentProvider : ContentProvider() { override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int { // delete from outside is forbidden - if (mUriMatcher.match(uri) == 2){ - return mSqLiteDatabase?.delete(SYNC_CERTIFICATION_TABLE_NAME,selection,selectionArgs) ?: 0 + if (mUriMatcher.match(uri) == 2) { + return mSqLiteDatabase?.delete(SYNC_CERTIFICATION_TABLE_NAME, selection, selectionArgs) ?: 0 } return 0 } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt index 7bed226c07..e14c092dc8 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt @@ -151,8 +151,18 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH NewLogUtils.logRecommendFeedForumClick(contentType, entity.id, entity.bbs.id, bbsType) } - MtaHelper.onEvent(getEventId(entrance), getKey(entrance), if (entity.bbs.name.isEmpty()) entity.community.name else entity.bbs.name) - itemView.context.startActivity(ForumDetailActivity.getIntent(itemView.context, entity.community.id, entrance)) + MtaHelper.onEvent( + getEventId(entrance), + getKey(entrance), + if (entity.bbs.name.isEmpty()) entity.community.name else entity.bbs.name + ) + itemView.context.startActivity( + ForumDetailActivity.getIntent( + itemView.context, + entity.community.id, + entrance + ) + ) LogUtils.uploadAccessToBbs(entity.community.id, "文章外所属论坛") } @@ -207,11 +217,24 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH itemView.context.startActivity(intent) } "answer" -> { - val intent = NewQuestionDetailActivity.getCommentIntent(it.context, entity.questions.id, entity.id, entrance, "") + val intent = NewQuestionDetailActivity.getCommentIntent( + it.context, + entity.questions.id, + entity.id, + entrance, + "" + ) itemView.context.startActivity(intent) } "video" -> { - itemView.context.startActivity(ForumVideoDetailActivity.getIntent(itemView.context, entity.id, entity.community.id, true)) + itemView.context.startActivity( + ForumVideoDetailActivity.getIntent( + itemView.context, + entity.id, + entity.community.id, + true + ) + ) } else -> { val communityId = entity.community.id @@ -299,7 +322,8 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH commentCount.setCompoundDrawables(commentIcon, null, null, null) commentCount.setTextColor(R.color.text_subtitleDesc.toColor(commentCount.context)) } else { - val commentCloseIcon = itemView.context.resources.getDrawable(R.drawable.community_comment_count_unavailable) + val commentCloseIcon = + itemView.context.resources.getDrawable(R.drawable.community_comment_count_unavailable) commentCloseIcon.setBounds(0, 0, commentCloseIcon.minimumWidth, commentCloseIcon.minimumHeight) commentCount.setCompoundDrawables(commentCloseIcon, null, null, null) commentCount.setTextColor(R.color.text_body.toColor(commentCount.context)) @@ -354,7 +378,11 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH } override fun onFailure(e: HttpException?) { - ErrorHelper.handleErrorWithCustomizedHandler(itemView.context, e?.response()?.errorBody()?.string(), false) { + ErrorHelper.handleErrorWithCustomizedHandler( + itemView.context, + e?.response()?.errorBody()?.string(), + false + ) { if (403008 == it) { Utils.toast(itemView.context, R.string.ask_vote_hint) true @@ -430,7 +458,11 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH } override fun onFailure(e: HttpException?) { - ErrorHelper.handleErrorWithCustomizedHandler(itemView.context, e?.response()?.errorBody()?.string(), false) { + ErrorHelper.handleErrorWithCustomizedHandler( + itemView.context, + e?.response()?.errorBody()?.string(), + false + ) { if (403008 == it) { Utils.toast(itemView.context, R.string.ask_vote_hint) true @@ -476,7 +508,11 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH } override fun onFailure(e: HttpException?) { - ErrorHelper.handleErrorWithCustomizedHandler(itemView.context, e?.response()?.errorBody()?.string(), false) { + ErrorHelper.handleErrorWithCustomizedHandler( + itemView.context, + e?.response()?.errorBody()?.string(), + false + ) { if (403008 == it) { Utils.toast(itemView.context, R.string.ask_vote_hint) true @@ -517,7 +553,11 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH } override fun onFailure(e: HttpException?) { - ErrorHelper.handleErrorWithCustomizedHandler(itemView.context, e?.response()?.errorBody()?.string(), false) { + ErrorHelper.handleErrorWithCustomizedHandler( + itemView.context, + e?.response()?.errorBody()?.string(), + false + ) { if (403008 == it) { Utils.toast(itemView.context, R.string.ask_vote_hint) true diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/CommunityAnswerItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/CommunityAnswerItemViewHolder.kt index e5afeec090..1222e769ff 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/CommunityAnswerItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/CommunityAnswerItemViewHolder.kt @@ -28,7 +28,8 @@ import com.gh.gamecenter.qa.entity.ArticleEntity * * 注意:相当一部分页面时回答和文章混合的请注意区分 */ -class CommunityAnswerItemViewHolder(val binding: CommunityAnswerItemBinding) : BaseAnswerOrArticleItemViewHolder(binding.root) { +class CommunityAnswerItemViewHolder(val binding: CommunityAnswerItemBinding) : + BaseAnswerOrArticleItemViewHolder(binding.root) { fun bindAnswerItem(entity: AnswerEntity, entrance: String, path: String) { bindAnswerItem(entity, false, entrance, path) @@ -82,7 +83,10 @@ class CommunityAnswerItemViewHolder(val binding: CommunityAnswerItemBinding) : B ImageUtils.display(popularAnswerUserIcon, entity.popularAnswer?.user?.icon) userBadgeIcon.goneIf(entity.user.badge == null) concernBtn.goneIf(entity.me.isFollower || entity.user.id == UserManager.getInstance().userId) - time.text = (if (entity.me.isFollower || entity.status == "pending" || entity.status == "fail") " · " else "") + NewsUtils.getFormattedTime(entity.time!!) + time.text = + (if (entity.me.isFollower || entity.status == "pending" || entity.status == "fail") " · " else "") + NewsUtils.getFormattedTime( + entity.time!! + ) statusTv.goneIf(!(entity.status == "pending" || entity.status == "fail") && !entity.me.isFollower) statusTv.setText( when { @@ -163,7 +167,14 @@ class CommunityAnswerItemViewHolder(val binding: CommunityAnswerItemBinding) : B }) } - val userClick = View.OnClickListener { DirectUtils.directToHomeActivity(binding.root.context, entity.user.id, entrance, path) } + val userClick = View.OnClickListener { + DirectUtils.directToHomeActivity( + binding.root.context, + entity.user.id, + entrance, + path + ) + } binding.userIcon.setOnClickListener(userClick) binding.userName.setOnClickListener(userClick) diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt index 658452957b..016850bbf9 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailContainerFragment.kt @@ -55,8 +55,14 @@ class AnswerDetailContainerFragment : ToolbarFragment() { if (fragment == null) { fragment = AnswerDetailFragment().apply { if (mHasPassedOneTimeArgumentToChild) { - this@AnswerDetailContainerFragment.arguments?.putBoolean(EntranceConsts.KEY_SHOW_ANSWER_COMMENT, false) - this@AnswerDetailContainerFragment.arguments?.putBoolean(EntranceConsts.KEY_RECOMMENDS_CONTENTS, false) + this@AnswerDetailContainerFragment.arguments?.putBoolean( + EntranceConsts.KEY_SHOW_ANSWER_COMMENT, + false + ) + this@AnswerDetailContainerFragment.arguments?.putBoolean( + EntranceConsts.KEY_RECOMMENDS_CONTENTS, + false + ) } // 将外部的 argument 传给里面的 fragment diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt index 06ac2ce6c3..f668567eac 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt @@ -123,8 +123,12 @@ open class AnswerDetailFragment : ToolbarFragment() { @SuppressLint("AddJavascriptInterface") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { mBinding.richEditor.addJavascriptInterface(JsInterface(), "imagelistener") - mBinding.richEditor.addJavascriptInterface(OnLinkClickListener(requireContext(), "", "", mEntrance, "回答详情"), "OnLinkClickListener") - mSkeletonScreen = Skeleton.bind(mBinding.skeletonMask).load(R.layout.fragment_answer_detail_skeleton).shimmer(false).show() + mBinding.richEditor.addJavascriptInterface( + OnLinkClickListener(requireContext(), "", "", mEntrance, "回答详情"), + "OnLinkClickListener" + ) + mSkeletonScreen = + Skeleton.bind(mBinding.skeletonMask).load(R.layout.fragment_answer_detail_skeleton).shimmer(false).show() mImageViewList = arrayListOf( view.findViewById(R.id.questionsdetail_item_pic1), view.findViewById(R.id.questionsdetail_item_pic2), @@ -208,7 +212,8 @@ open class AnswerDetailFragment : ToolbarFragment() { } } } else if (requestCode == QUESTION_DETAIL && resultCode == Activity.RESULT_OK) { - val resultData = data.getParcelableExtra(QuestionsDetailEntity::class.java.simpleName) + val resultData = + data.getParcelableExtra(QuestionsDetailEntity::class.java.simpleName) mViewModel.answerDetail?.question?.title = resultData?.title ?: "" mViewModel.answerDetail?.question?.description = resultData?.description ?: "" bindView(mViewModel.answerDetail) @@ -490,11 +495,21 @@ open class AnswerDetailFragment : ToolbarFragment() { private fun toggleComment(enable: Boolean, commentCount: Int) { if (enable) { mBinding.bottomController.bottomCommentIv.setImageResource(R.drawable.ic_article_detail_comment_bottom_bar) - mBinding.bottomController.bottomCommentTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_subtitle)) + mBinding.bottomController.bottomCommentTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_subtitle + ) + ) mBinding.bottomController.bottomCommentTv.text = if (commentCount > 0) commentCount.toString() else "评论" } else { mBinding.bottomController.bottomCommentIv.setImageResource(R.drawable.community_content_detail_comment_close) - mBinding.bottomController.bottomCommentTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_b3b3b3)) + mBinding.bottomController.bottomCommentTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_b3b3b3 + ) + ) mBinding.bottomController.bottomCommentTv.text = "评论已关闭" } } @@ -585,7 +600,10 @@ open class AnswerDetailFragment : ToolbarFragment() { MtaHelper.onEvent( "进入问答", "回答详情", - community?.name + "+" + StringUtils.combineTwoString(mViewModel.answerDetail?.content, mViewModel.answerDetail?.id) + community?.name + "+" + StringUtils.combineTwoString( + mViewModel.answerDetail?.content, + mViewModel.answerDetail?.id + ) ) LogUtils.qaAccess("回答详情-进入问答", community) DirectUtils.directToCommunity(requireContext(), community) @@ -627,7 +645,8 @@ open class AnswerDetailFragment : ToolbarFragment() { if (answer.user.id == UserManager.getInstance().userId) { entities.add( MenuItemEntity( - if (answer.commentable) "关闭评论" else "恢复评论", if (answer.commentable) R.drawable.icon_more_panel_close_comment_enable + if (answer.commentable) "关闭评论" else "恢复评论", + if (answer.commentable) R.drawable.icon_more_panel_close_comment_enable else R.drawable.icon_more_panel_close_comment_unenable ) ) @@ -657,7 +676,12 @@ open class AnswerDetailFragment : ToolbarFragment() { } else { getString(R.string.share_ghzs_logo) }, - shareTitle = getString(R.string.ask_share_answers_title, answer.user.name, answer.question.title, answer.vote), + shareTitle = getString( + R.string.ask_share_answers_title, + answer.user.name, + answer.question.title, + answer.vote + ), shareSummary = if (TextUtils.isEmpty(mBinding.richEditor.text)) { getString(R.string.ask_share_default_summary) } else { @@ -671,7 +695,12 @@ open class AnswerDetailFragment : ToolbarFragment() { return { when (it?.text) { "投诉" -> { - SuggestionActivity.startSuggestionActivity(context, SuggestType.normal, "report", "回答投诉($mAnswerId):") + SuggestionActivity.startSuggestionActivity( + context, + SuggestType.normal, + "report", + "回答投诉($mAnswerId):" + ) } "加精" -> { addEssenceForum(answer) @@ -741,7 +770,12 @@ open class AnswerDetailFragment : ToolbarFragment() { val view = LayoutInflater.from(requireContext()).inflate(R.layout.item_detail_more_menu, null, false) val iconIv = view.findViewById(R.id.iconIv) val actionNameTv = view.findViewById(R.id.actionNameTv) - iconIv.setImageDrawable(ContextCompat.getDrawable(requireContext(), if (item.disableIcon > 0) item.disableIcon else item.normalIcon)) + iconIv.setImageDrawable( + ContextCompat.getDrawable( + requireContext(), + if (item.disableIcon > 0) item.disableIcon else item.normalIcon + ) + ) actionNameTv.setTextColor( ContextCompat.getColor( requireContext(), @@ -751,7 +785,10 @@ open class AnswerDetailFragment : ToolbarFragment() { view.isEnabled = item.disableIcon == 0 actionNameTv.text = item.text if (index > 0) { - val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + val params = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT + ) params.topMargin = 1f.dip2px() view.layoutParams = params } @@ -779,7 +816,14 @@ open class AnswerDetailFragment : ToolbarFragment() { } mBinding.answerCountContainer.setOnClickListener { if (mViewModel.answerDetail != null) { - startActivity(NewQuestionDetailActivity.getIntent(requireContext(), mViewModel.answerDetail!!.question.id, mEntrance, "回答详情")) + startActivity( + NewQuestionDetailActivity.getIntent( + requireContext(), + mViewModel.answerDetail!!.question.id, + mEntrance, + "回答详情" + ) + ) } } mBinding.bottomController.bottomLikeIv.setOnClickListener { @@ -927,11 +971,21 @@ open class AnswerDetailFragment : ToolbarFragment() { if (isCollected) { mBinding.bottomController.bottomStarIv.setImageResource(R.drawable.ic_article_detail_stared_bottom_bar) mBinding.bottomController.bottomStarTv.text = "已收藏" - mBinding.bottomController.bottomStarTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)) + mBinding.bottomController.bottomStarTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.theme_font + ) + ) } else { mBinding.bottomController.bottomStarIv.setImageResource(R.drawable.ic_article_detail_star_bottom_bar) mBinding.bottomController.bottomStarTv.text = "收藏" - mBinding.bottomController.bottomStarTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_subtitle)) + mBinding.bottomController.bottomStarTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_subtitle + ) + ) } } @@ -939,7 +993,8 @@ open class AnswerDetailFragment : ToolbarFragment() { val images = ArrayList(mViewModel.answerDetail?.question?.images) if (position <= images.size) { - val intent = ImageViewerActivity.getIntent(requireContext(), images, position, mImageViewList, "$mEntrance+(回答详情)") + val intent = + ImageViewerActivity.getIntent(requireContext(), images, position, mImageViewList, "$mEntrance+(回答详情)") startActivity(intent) } } @@ -1155,11 +1210,21 @@ open class AnswerDetailFragment : ToolbarFragment() { if (alreadyVoted) { mBinding.bottomController.bottomLikeIv.setImageResource(R.drawable.ic_article_detail_liked_bottom_bar) mBinding.bottomController.bottomLikeTv.text = NumberUtils.transSimpleCount(voteCount) - mBinding.bottomController.bottomLikeTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)) + mBinding.bottomController.bottomLikeTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.theme_font + ) + ) } else { mBinding.bottomController.bottomLikeIv.setImageResource(R.drawable.ic_article_detail_like_bottom_bar) mBinding.bottomController.bottomLikeTv.text = "赞同" - mBinding.bottomController.bottomLikeTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_subtitle)) + mBinding.bottomController.bottomLikeTv.setTextColor( + ContextCompat.getColor( + requireContext(), + R.color.text_subtitle + ) + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt index 629a3a3705..98fbdb0995 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragmentStatePagerAdapter.kt @@ -2,9 +2,10 @@ package com.gh.gamecenter.qa.answer.detail import androidx.fragment.app.FragmentManager -class AnswerDetailFragmentStatePagerAdapter(fm: FragmentManager, - private val mCreateNewAnswerDetailFragment: (answerId: String, position: Int) -> AnswerDetailFragment) - : androidx.fragment.app.FragmentStatePagerAdapter(fm) { +class AnswerDetailFragmentStatePagerAdapter( + fm: FragmentManager, + private val mCreateNewAnswerDetailFragment: (answerId: String, position: Int) -> AnswerDetailFragment +) : androidx.fragment.app.FragmentStatePagerAdapter(fm) { var answerIdList = arrayListOf() diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailRefreshFooter.java b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailRefreshFooter.java index e7fc037dbf..c9e459eb71 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailRefreshFooter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailRefreshFooter.java @@ -2,8 +2,10 @@ package com.gh.gamecenter.qa.answer.detail; import android.content.Context; import android.content.res.TypedArray; + import androidx.annotation.ColorInt; import androidx.annotation.NonNull; + import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; @@ -119,8 +121,9 @@ public class AnswerDetailRefreshFooter extends InternalClassics() { - override fun onResponse(response: AnswerDetailEntity?) { - val apiResponse = ApiResponse() - answerDetail = response - apiResponse.data = response - mAnswerLiveData.postValue(apiResponse) - } + .getAnswerDetail(answerId, Utils.getTime(getApplication())) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: AnswerDetailEntity?) { + val apiResponse = ApiResponse() + answerDetail = response + apiResponse.data = response + mAnswerLiveData.postValue(apiResponse) + } - override fun onFailure(e: HttpException?) { - val apiResponse = ApiResponse() - apiResponse.httpException = e - mAnswerLiveData.postValue(apiResponse) - } - }) + override fun onFailure(e: HttpException?) { + val apiResponse = ApiResponse() + apiResponse.httpException = e + mAnswerLiveData.postValue(apiResponse) + } + }) } fun like(answerId: String) { RetrofitManager.getInstance().api - .postAnswerVote(answerId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: VoteEntity?) { - // 赞同加一 - answerDetail?.me?.isAnswerVoted = true - answerDetail!!.vote++ + .postAnswerVote(answerId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: VoteEntity?) { + // 赞同加一 + answerDetail?.me?.isAnswerVoted = true + answerDetail!!.vote++ - answerDetail?.me?.isAnswerOpposed = false + answerDetail?.me?.isAnswerOpposed = false - val apiResponse = ApiResponse() - apiResponse.data = response - mVoteLiveData.postValue(apiResponse) + val apiResponse = ApiResponse() + apiResponse.data = response + mVoteLiveData.postValue(apiResponse) - syncVoteData(answerId) + syncVoteData(answerId) - EnergyBridge.postEnergyTask("vote_answer", answerId) - } + EnergyBridge.postEnergyTask("vote_answer", answerId) + } - override fun onFailure(e: HttpException?) { - val apiResponse = ApiResponse() - apiResponse.httpException = e - mVoteLiveData.postValue(apiResponse) - } - }) + override fun onFailure(e: HttpException?) { + val apiResponse = ApiResponse() + apiResponse.httpException = e + mVoteLiveData.postValue(apiResponse) + } + }) } fun cancelLike(answerId: String) { RetrofitManager.getInstance().api - .postAnswerUnvote(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: VoteEntity?) { - // 赞同减一 - answerDetail?.me?.isAnswerVoted = false - answerDetail!!.vote-- + .postAnswerUnvote(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: VoteEntity?) { + // 赞同减一 + answerDetail?.me?.isAnswerVoted = false + answerDetail!!.vote-- - val apiResponse = ApiResponse() - apiResponse.data = response - mVoteLiveData.postValue(apiResponse) + val apiResponse = ApiResponse() + apiResponse.data = response + mVoteLiveData.postValue(apiResponse) - syncVoteData(answerId) - } + syncVoteData(answerId) + } - override fun onFailure(e: HttpException?) { - val apiResponse = ApiResponse() - apiResponse.httpException = e - mVoteLiveData.postValue(apiResponse) - } - }) + override fun onFailure(e: HttpException?) { + val apiResponse = ApiResponse() + apiResponse.httpException = e + mVoteLiveData.postValue(apiResponse) + } + }) } fun dislike(answerId: String) { RetrofitManager.getInstance().api - .postAnswerOppose(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - if (answerDetail?.me?.isAnswerVoted == true) { - answerDetail!!.vote-- - } - answerDetail?.me?.isAnswerOpposed = true - answerDetail?.me?.isAnswerVoted = false - - dislike.postValue(true) - - syncVoteData(answerId) + .postAnswerOppose(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + if (answerDetail?.me?.isAnswerVoted == true) { + answerDetail!!.vote-- } + answerDetail?.me?.isAnswerOpposed = true + answerDetail?.me?.isAnswerVoted = false - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + dislike.postValue(true) + + syncVoteData(answerId) + } + + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } fun cancelDislike(answerId: String) { RetrofitManager.getInstance().api - .postAnswerUnoppose(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - answerDetail?.me?.isAnswerOpposed = false - dislike.postValue(false) + .postAnswerUnoppose(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + answerDetail?.me?.isAnswerOpposed = false + dislike.postValue(false) - syncVoteData(answerId) - } + syncVoteData(answerId) + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } private fun syncVoteData(answerId: String) { - SyncPageRepository.postSyncData(SyncDataEntity(answerId, + SyncPageRepository.postSyncData( + SyncDataEntity( + answerId, SyncFieldConstants.ANSWER_VOTE_COUNT, - answerDetail!!.vote)) - SyncPageRepository.postSyncData(SyncDataEntity(answerId, + answerDetail!!.vote + ) + ) + SyncPageRepository.postSyncData( + SyncDataEntity( + answerId, SyncFieldConstants.ANSWER_VOTE, answerDetail?.me?.isAnswerVoted, - checkFieldEntity = true)) + checkFieldEntity = true + ) + ) } fun collectAnswer(answerId: String) { - CollectionUtils.postCollection(getApplication(), answerId, CollectionUtils.CollectionType.answer, object : CollectionUtils.OnCollectionListener { - override fun onSuccess() { - collect.postValue(true) - answerDetail?.me?.isAnswerFavorite = true - } + CollectionUtils.postCollection( + getApplication(), + answerId, + CollectionUtils.CollectionType.answer, + object : CollectionUtils.OnCollectionListener { + override fun onSuccess() { + collect.postValue(true) + answerDetail?.me?.isAnswerFavorite = true + } - override fun onError() { - Utils.toast(getApplication(), R.string.collection_failure) - } - }) + override fun onError() { + Utils.toast(getApplication(), R.string.collection_failure) + } + }) } fun cancelCollectAnswer(answerId: String) { - CollectionUtils.deleteCollection(getApplication(), answerId, CollectionUtils.CollectionType.answer, object : CollectionUtils.OnCollectionListener { - override fun onSuccess() { - collect.postValue(false) - answerDetail?.me?.isAnswerFavorite = false - } + CollectionUtils.deleteCollection( + getApplication(), + answerId, + CollectionUtils.CollectionType.answer, + object : CollectionUtils.OnCollectionListener { + override fun onSuccess() { + collect.postValue(false) + answerDetail?.me?.isAnswerFavorite = false + } - override fun onError() { - Utils.toast(getApplication(), R.string.collection_cancel_failure) - } - }) + override fun onError() { + Utils.toast(getApplication(), R.string.collection_cancel_failure) + } + }) } fun follow(userId: String) { @@ -223,120 +239,126 @@ class AnswerDetailViewModel(application: Application) : AndroidViewModel(applica RetrofitManager.getInstance().api.deleteFollowing(targetUserId) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - if (isFollow) { - // 关注成功 - mFollowLiveData.postValue(true) - } else { - // 取消关注成功 - mFollowLiveData.postValue(false) - } - EventBus.getDefault().post(EBUserFollow(targetUserId, isFollow)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + if (isFollow) { + // 关注成功 + mFollowLiveData.postValue(true) + } else { + // 取消关注成功 + mFollowLiveData.postValue(false) } + EventBus.getDefault().post(EBUserFollow(targetUserId, isFollow)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - Utils.toast(getApplication(), R.string.loading_failed_hint) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + Utils.toast(getApplication(), R.string.loading_failed_hint) + } + }) } fun toggleComment(answerId: String, isCommentable: Boolean) { val params = HashMap() params["commentable"] = isCommentable - val body = RequestBody.create(MediaType.parse("application/json"), - JSONObject(params as Map<*, *>).toString()) + val body = RequestBody.create( + MediaType.parse("application/json"), + JSONObject(params as Map<*, *>).toString() + ) RetrofitManager.getInstance() - .api - .postAnswerCommentable(answerId, body) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - answerDetail?.commentable = isCommentable - commentable.postValue(isCommentable) - } + .api + .postAnswerCommentable(answerId, body) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + answerDetail?.commentable = isCommentable + commentable.postValue(isCommentable) + } - override fun onFailure(e: HttpException?) { - Utils.toast(getApplication(), e?.localizedMessage) - } - }) + override fun onFailure(e: HttpException?) { + Utils.toast(getApplication(), e?.localizedMessage) + } + }) } fun doHighlightThisAnswer(answerId: String) { RetrofitManager.getInstance().api - .highlightAnswer(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - highlight.postValue(true) - } + .highlightAnswer(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + highlight.postValue(true) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } fun doFoldThisAnswer(answerId: String) { RetrofitManager.getInstance().api - .foldAnswer(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - fold.postValue(true) - } + .foldAnswer(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + fold.postValue(true) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } fun doHideThisAnswer(answerId: String) { RetrofitManager.getInstance().api - .hideAnswer(answerId) - .subscribeOn(Schedulers.io()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - hide.postValue(true) - } + .hideAnswer(answerId) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + hide.postValue(true) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } - fun trackReadEvent(answerId: String, - answerDetailEntity: AnswerDetailEntity, - elapsedTime: Int, - entrance: String, - path: String, - specialColumn: SpecialColumn?) { + fun trackReadEvent( + answerId: String, + answerDetailEntity: AnswerDetailEntity, + elapsedTime: Int, + entrance: String, + path: String, + specialColumn: SpecialColumn? + ) { val combinedContentAndId = StringUtils.combineTwoString(answerDetailEntity.content, answerId) MtaHelper.onEventWithTime("答案阅读量_按社区", elapsedTime, answerDetailEntity.community.name, combinedContentAndId) MtaHelper.onEventWithTime("答案阅读量_按位置", elapsedTime, path, combinedContentAndId) MtaHelper.onEventWithTime("答案阅读量_社区加位置", elapsedTime, answerDetailEntity.community.name, path) - LogUtils.uploadAnswerReadTime(entrance, - elapsedTime, - answerId, - answerDetailEntity.question, - answerDetailEntity.community.id, - answerDetailEntity.community.name, - specialColumn) + LogUtils.uploadAnswerReadTime( + entrance, + elapsedTime, + answerId, + answerDetailEntity.question, + answerDetailEntity.community.id, + answerDetailEntity.community.name, + specialColumn + ) HistoryHelper.insertAnswerEntity(answerDetailEntity) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt index c3ac15ecb7..00481508ea 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/SimpleAnswerDetailActivity.kt @@ -24,7 +24,7 @@ class SimpleAnswerDetailActivity : ToolBarActivity() { ) } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() @@ -38,7 +38,12 @@ class SimpleAnswerDetailActivity : ToolBarActivity() { bundle.putString(EntranceConsts.KEY_ANSWER_ID, answerId) bundle.putString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) bundle.putString(EntranceConsts.KEY_PATH, path) - return getTargetIntent(context, SimpleAnswerDetailActivity::class.java, SimpleAnswerDetailFragment::class.java, bundle) + return getTargetIntent( + context, + SimpleAnswerDetailActivity::class.java, + SimpleAnswerDetailFragment::class.java, + bundle + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/draft/AnswerDraftFragment.java b/app/src/main/java/com/gh/gamecenter/qa/answer/draft/AnswerDraftFragment.java index 8239b94ef6..5c8645e78e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/draft/AnswerDraftFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/draft/AnswerDraftFragment.java @@ -26,6 +26,7 @@ import java.util.List; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; + import io.reactivex.Observable; /** diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditActivity.kt index 55578c2d1a..09422270a4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditActivity.kt @@ -90,9 +90,10 @@ class AnswerEditActivity : BaseRichEditorActivity(), Keyboa mRichEditor.setOnTextChangeListener { t -> mBinding.appBar.setExpanded(false, true) - mBinding.answerPlaceholder.visibility = if (t.contains("(), Keyboa checkPostButtonEnable() - mImageViewList = arrayListOf(findViewById(R.id.question_images_1), findViewById(R.id.question_images_2), findViewById(R.id.question_images_3)) + mImageViewList = arrayListOf( + findViewById(R.id.question_images_1), + findViewById(R.id.question_images_2), + findViewById(R.id.question_images_3) + ) } override fun provideViewModel(): AnswerEditViewModel { @@ -216,7 +221,8 @@ class AnswerEditActivity : BaseRichEditorActivity(), Keyboa mProcessingDialog = WaitingDialogFragment.newInstance(it.msg, false) mProcessingDialog?.show(supportFragmentManager, null) { if (mViewModel.uploadImageSubscription != null && !mViewModel.uploadImageSubscription!!.isDisposed) { - mUploadImageCancelDialog = DialogUtils.showAlertDialog(this, "提示", "图片正在上传中,确定取消吗?", + mUploadImageCancelDialog = DialogUtils.showAlertDialog( + this, "提示", "图片正在上传中,确定取消吗?", "确定", "取消", object : ConfirmListener { override fun onConfirm() { mViewModel.uploadImageSubscription?.dispose() @@ -356,7 +362,10 @@ class AnswerEditActivity : BaseRichEditorActivity(), Keyboa private fun checkData(answerContent: String, isShowToast: Boolean = true): Boolean { val answerLength = HtmlUtils.stripHtml(answerContent).length if (answerLength < MIN_ANSWER_TEXT_LENGTH) { - if (isShowToast) ToastUtils.showToast(getString(R.string.answer_beneath_length_limit), if (mIsKeyBoardShow) Gravity.CENTER else -1) + if (isShowToast) ToastUtils.showToast( + getString(R.string.answer_beneath_length_limit), + if (mIsKeyBoardShow) Gravity.CENTER else -1 + ) return false } else if (answerLength > MAX_ANSWER_TEXT_LENGTH) { if (isShowToast) ToastUtils.showToast("回答最多输入10000个字", if (mIsKeyBoardShow) Gravity.CENTER else -1) @@ -519,7 +528,13 @@ class AnswerEditActivity : BaseRichEditorActivity(), Keyboa /** * 撰写回答(存在回答草稿) */ - fun getIntent(context: Context, question: Questions?, draftId: String?, showInNewPage: Boolean?, communityName: String?): Intent { + fun getIntent( + context: Context, + question: Questions?, + draftId: String?, + showInNewPage: Boolean?, + communityName: String? + ): Intent { val intent = Intent(context, AnswerEditActivity::class.java) intent.putExtra(EntranceConsts.KEY_ANSWER_OPEN_IN_NEW_PAGE, showInNewPage) intent.putExtra(EntranceConsts.KEY_DRAFT_ID, draftId) diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt index 5f3366715d..efd8ace5c1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt @@ -33,11 +33,13 @@ import org.json.JSONObject import retrofit2.HttpException @Deprecated("V5.0废弃") -class AnswerEditViewModel(application: Application, - var answerId: String?, // 以mAnswerId为标识,如果mAnswerId不为空则是-修改答案(不需要保存草稿) 为空则是-编写答案 - var answerContent: String?, - var draftId: String?, - var question: Questions) : BaseRichEditorViewModel(application) { +class AnswerEditViewModel( + application: Application, + var answerId: String?, // 以mAnswerId为标识,如果mAnswerId不为空则是-修改答案(不需要保存草稿) 为空则是-编写答案 + var answerContent: String?, + var draftId: String?, + var question: Questions +) : BaseRichEditorViewModel(application) { private var mPostDraftsCount: Int = 0 var cacheAnswerContent: String? = null val postLiveData = MediatorLiveData>() @@ -67,37 +69,41 @@ class AnswerEditViewModel(application: Application, mApi.postQuestionAnswer(body, question.id) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) - val data = response?.string() - postLiveData.postValue(Resource.success(data)) - EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + val data = response?.string() + postLiveData.postValue(Resource.success(data)) + EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) - if (TextUtils.isEmpty(answerId)) { - syncAnswerCount() + if (TextUtils.isEmpty(answerId)) { + syncAnswerCount() - tryWithDefaultCatch { - EnergyBridge.postEnergyTask("post_answer", JSONObject(data).optString("_id")) - } + tryWithDefaultCatch { + EnergyBridge.postEnergyTask("post_answer", JSONObject(data).optString("_id")) } } + } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) - postLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + postLiveData.postValue(Resource.error(e)) + } + }) } private fun syncAnswerCount() { - SyncPageRepository.postSyncData(SyncDataEntity(question.id, + SyncPageRepository.postSyncData( + SyncDataEntity( + question.id, SyncFieldConstants.ANSWER_COUNT, ++question.answerCount, checkInherited = true, - checkFieldEntity = true)) + checkFieldEntity = true + ) + ) } fun deleteAnswerDraft() { @@ -108,45 +114,47 @@ class AnswerEditViewModel(application: Application, processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", true)) mApi - .deleteAnswerDrafts(UserManager.getInstance().userId, draftId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", false)) - deleteDraftLiveDate.postValue(true) - EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) - } + .deleteAnswerDrafts(UserManager.getInstance().userId, draftId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", false)) + deleteDraftLiveDate.postValue(true) + EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) + } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", false)) - deleteDraftLiveDate.postValue(false) - Utils.toast(getApplication(), R.string.loading_network_error) - } - }) + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", false)) + deleteDraftLiveDate.postValue(false) + Utils.toast(getApplication(), R.string.loading_network_error) + } + }) } fun getUserAnswerDrafts() { mApi - .getUserAnswerDrafts(question.id, - UrlFilterUtils.getFilterQuery("answer_id", answerId), - Utils.getTime(getApplication())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(draft: AnswerDraftEntity?) { - if (draft?.content != null) { - draftsLiveData.postValue(draft.content) - cacheAnswerContent = draft.content - } - - draftId = draft?.id - - if (!TextUtils.isEmpty(draft?.answerId)) { // answerId不为空 表示已经提交过答案了 - answerId = draft?.answerId - } + .getUserAnswerDrafts( + question.id, + UrlFilterUtils.getFilterQuery("answer_id", answerId), + Utils.getTime(getApplication()) + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(draft: AnswerDraftEntity?) { + if (draft?.content != null) { + draftsLiveData.postValue(draft.content) + cacheAnswerContent = draft.content } - }) + + draftId = draft?.id + + if (!TextUtils.isEmpty(draft?.answerId)) { // answerId不为空 表示已经提交过答案了 + answerId = draft?.answerId + } + } + }) } fun saveAnswerDrafts(editContent: String, forcedExit: Boolean) { @@ -163,43 +171,45 @@ class AnswerEditViewModel(application: Application, val body = RequestBody.create(MediaType.parse("application/json"), content.toString()) mApi - .postAnswerDrafts(body, UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - if (forcedExit) { - saveDraftsLiveData.postValue(true) - if (checkIsAllUploadedAndToast()) { - Utils.toast(getApplication(), "回答已保存到草稿箱") - } - EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) - } else { - if (mPostDraftsCount >= AnswerEditActivity.SAVE_DRAFTS_TOAST_COUNT) { - mPostDraftsCount = 0 - Utils.toast(getApplication(), "回答已保存到草稿箱") - } else { - mPostDraftsCount++ - } - cacheAnswerContent = editContent + .postAnswerDrafts(body, UserManager.getInstance().userId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + if (forcedExit) { + saveDraftsLiveData.postValue(true) + if (checkIsAllUploadedAndToast()) { + Utils.toast(getApplication(), "回答已保存到草稿箱") } + EventBus.getDefault().post(EBReuse(AnswerEditActivity.ANSWER_DRAFT_CHANGE_TAG)) + } else { + if (mPostDraftsCount >= AnswerEditActivity.SAVE_DRAFTS_TOAST_COUNT) { + mPostDraftsCount = 0 + Utils.toast(getApplication(), "回答已保存到草稿箱") + } else { + mPostDraftsCount++ + } + cacheAnswerContent = editContent } + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - if (forcedExit) saveDraftsLiveData.postValue(false) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + if (forcedExit) saveDraftsLiveData.postValue(false) + } + }) } override fun getRichType(): RichType = RichType.ANSWER - class Factory(private val mApplication: Application, - private val answerId: String?, - private val answerContent: String?, - private val draftId: String?, - private val question: Questions) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val answerId: String?, + private val answerContent: String?, + private val draftId: String?, + private val question: Questions + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return AnswerEditViewModel(mApplication, answerId, answerContent, draftId, question) as T } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleAdapter.kt index cddebfb23f..2e3091c17c 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleAdapter.kt @@ -16,9 +16,11 @@ import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity import com.gh.gamecenter.qa.entity.ArticleEntity import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity -class MyArticleAdapter(context: Context, - private val mEntrance: String, - private val mPath: String) : ListAdapter(context), ISyncAdapterHandler { +class MyArticleAdapter( + context: Context, + private val mEntrance: String, + private val mPath: String +) : ListAdapter(context), ISyncAdapterHandler { override fun getItemViewType(position: Int): Int { if (position == itemCount - 1) { @@ -65,7 +67,15 @@ class MyArticleAdapter(context: Context, if (entity.type == "question") { mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, entity.id, mEntrance, mPath)) } else { - mContext.startActivity(ArticleDetailActivity.getIntent(mContext, entity.bbs, entity.id, mEntrance, mPath)) + mContext.startActivity( + ArticleDetailActivity.getIntent( + mContext, + entity.bbs, + entity.id, + mEntrance, + mPath + ) + ) } } } else if (holder is FooterViewHolder) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt index 7619b814db..2b35e42b95 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/MyArticleFragment.kt @@ -61,7 +61,8 @@ class MyArticleFragment : ListFragment { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun onCreate(savedInstanceState: Bundle?) { @@ -87,7 +88,10 @@ class MyArticleFragment : ListFragment { val isWebViewInstalled = PackageUtils.checkWebViewIsAvailable(mContext) if (isWebViewInstalled) { - val binding: ItemArticleDetailContentBinding = ItemArticleDetailContentBinding.inflate(mLayoutInflater, parent, false) + val binding: ItemArticleDetailContentBinding = + ItemArticleDetailContentBinding.inflate(mLayoutInflater, parent, false) ArticleDetailContentViewHolder(binding, mViewModel).apply { articleDetailVH = this } } else { - val binding: FragmentWebWarningBinding = FragmentWebWarningBinding.inflate(mLayoutInflater, parent, false) + val binding: FragmentWebWarningBinding = + FragmentWebWarningBinding.inflate(mLayoutInflater, parent, false) UnAvaliableWebviewViewHolder(binding) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt index b5ab6e6ae9..8bc6b6731e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailContentViewHolder.kt @@ -75,12 +75,14 @@ class ArticleDetailContentViewHolder( "pending" -> { approvalStatusTv.text = "内容审核中" approvalStatusTv.setTextColor(R.color.theme_green.toColor(approvalStatusTv.context)) - approvalStatusTv.background = R.drawable.bg_approval_status_pending.toDrawable(approvalStatusTv.context) + approvalStatusTv.background = + R.drawable.bg_approval_status_pending.toDrawable(approvalStatusTv.context) } "fail" -> { approvalStatusTv.text = "审核不通过" approvalStatusTv.setTextColor(R.color.theme_red.toColor(approvalStatusTv.context)) - approvalStatusTv.background = R.drawable.bg_approval_status_fail.toDrawable(approvalStatusTv.context) + approvalStatusTv.background = + R.drawable.bg_approval_status_fail.toDrawable(approvalStatusTv.context) } } if (article.status != "pass") { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/CommentItemData.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/CommentItemData.kt index 1a7d1405fb..af73598666 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/CommentItemData.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/CommentItemData.kt @@ -6,14 +6,15 @@ import com.gh.gamecenter.qa.entity.ArticleDetailEntity import com.gh.gamecenter.qa.entity.QuestionsDetailEntity data class CommentItemData( - val game: GameEntity? = null, - var gameEmpty: Boolean? = null, - var divider: Boolean? = null, - val articleDetail: ArticleDetailEntity? = null, - val questionDetail: QuestionsDetailEntity? = null, - var commentTop: CommentEntity? = null, - var commentNormal: CommentEntity? = null, - var filter: Boolean? = null, - var errorConnection: Boolean? = null, - var errorEmpty: Boolean? = null, - var footer: Boolean? = null) \ No newline at end of file + val game: GameEntity? = null, + var gameEmpty: Boolean? = null, + var divider: Boolean? = null, + val articleDetail: ArticleDetailEntity? = null, + val questionDetail: QuestionsDetailEntity? = null, + var commentTop: CommentEntity? = null, + var commentNormal: CommentEntity? = null, + var filter: Boolean? = null, + var errorConnection: Boolean? = null, + var errorEmpty: Boolean? = null, + var footer: Boolean? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftActivity.kt index 458fce0e44..628b4d05b2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftActivity.kt @@ -15,7 +15,7 @@ class ArticleDraftActivity : ToolBarActivity() { updateStatusBarColor(R.color.background_white, R.color.background_white) } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt index 8d82600e68..8c413113ee 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftAdapter.kt @@ -14,9 +14,11 @@ import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.databinding.CommunityArticleDraftItemBinding import com.gh.gamecenter.qa.entity.ArticleDraftEntity -class ArticleDraftAdapter(context: Context, - private val deleteCallback: (ArticleDraftEntity) -> Unit, - private val selectCallback: (ArticleDraftEntity) -> Unit) : ListAdapter(context) { +class ArticleDraftAdapter( + context: Context, + private val deleteCallback: (ArticleDraftEntity) -> Unit, + private val selectCallback: (ArticleDraftEntity) -> Unit +) : ListAdapter(context) { override fun areItemsTheSame(oldItem: ArticleDraftEntity, newItem: ArticleDraftEntity): Boolean { return !TextUtils.isEmpty(oldItem.id) && oldItem.id == newItem.id @@ -32,7 +34,10 @@ class ArticleDraftAdapter(context: Context, } else ItemViewType.ITEM_BODY } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { val view: View return when (viewType) { ItemViewType.ITEM_FOOTER -> { @@ -49,13 +54,18 @@ class ArticleDraftAdapter(context: Context, override fun onBindViewHolder(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: Int) { if (holder is ArticleDraftViewHolder) { val entity = mEntityList[position] - holder.binding.articleDraftTitle.text= entity.title.ifEmpty { "(缺少标题)" } + holder.binding.articleDraftTitle.text = entity.title.ifEmpty { "(缺少标题)" } if (entity.community.id.isNotEmpty() && entity.community.name.isNotEmpty()) { holder.binding.articleDraftCommunityName.apply { text = entity.community.name textSize = 11f setPadding(10f.dip2px(), 6f.dip2px(), 10f.dip2px(), 6f.dip2px()) - setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(context, R.drawable.ic_forum_label), null, null, null) + setCompoundDrawablesWithIntrinsicBounds( + ContextCompat.getDrawable( + context, + R.drawable.ic_forum_label + ), null, null, null + ) background = ContextCompat.getDrawable(context, R.drawable.bg_shape_f5_radius_999) } } else { @@ -69,9 +79,10 @@ class ArticleDraftAdapter(context: Context, } holder.binding.articleDraftDelete.setOnClickListener { DialogHelper.showDialog(mContext, "警告", "确定要删除帖子草稿吗?删除之后不可恢复", - "确定", "取消", { - deleteCallback.invoke(entity) - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + "确定", "取消", { + deleteCallback.invoke(entity) + }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } holder.itemView.setOnClickListener { selectCallback.invoke(entity) diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftFragment.kt index 792e1397bf..e9c5dd28e9 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/draft/ArticleDraftFragment.kt @@ -79,7 +79,8 @@ class ArticleDraftFragment : ListFragment { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditActivity.kt index 5cdbfc49fb..4b62d6577e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditActivity.kt @@ -226,13 +226,14 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb mProcessingDialog?.show(supportFragmentManager, null) { if (mViewModel.uploadImageSubscription != null && !mViewModel?.uploadImageSubscription!!.isDisposed) { mUploadImageCancelDialog = DialogUtils.showAlertDialog(this, "提示", "图片正在上传中,确定取消吗?", - "确定", "取消", object :ConfirmListener{ + "确定", "取消", object : ConfirmListener { override fun onConfirm() { mViewModel.uploadImageSubscription!!.dispose() mUploadImageCancelDialog?.dismiss() mProcessingDialog?.dismiss() } - }, null) + }, null + ) } } } @@ -285,7 +286,8 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb private fun initListener() { mBinding.backBtn.setOnClickListener { - val bbsType = if (mViewModel.type.isNotEmpty()) if (mViewModel.type == "game_bbs") "游戏论坛" else "综合论坛" else "" + val bbsType = + if (mViewModel.type.isNotEmpty()) if (mViewModel.type == "game_bbs") "游戏论坛" else "综合论坛" else "" NewLogUtils.logArticleEditClick( "click_article_cancel", mViewModel.mSelectCommunityData?.id ?: "", @@ -324,7 +326,11 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb return { mViewModel.selectActivityLabelEntity = it mBinding.activityTitle.text = it?.name - mBinding.activityTitle.setTextColor(if (it != null) R.color.text_FA8500.toColor(this) else R.color.text_title.toColor(this)) + mBinding.activityTitle.setTextColor( + if (it != null) R.color.text_FA8500.toColor(this) else R.color.text_title.toColor( + this + ) + ) } } @@ -482,7 +488,10 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb private fun showSelectGameDialog() { if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { - startActivityForResult(GameActivity.getIntent(this, GameActivity.SELECT_GAME_TITLE), VideoPublishFragment.REQUEST_GAME_CODE) + startActivityForResult( + GameActivity.getIntent(this, GameActivity.SELECT_GAME_TITLE), + VideoPublishFragment.REQUEST_GAME_CODE + ) } else { val delayTime = if (mIsKeyBoardShow) { Util_System_Keyboard.hideSoftKeyboard(this) @@ -499,7 +508,10 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb if (mViewModel.mSelectCommunityData != null) { if (mViewModel.type == BbsType.GAME_BBS.value) { mBinding.articleGameName.text = mViewModel.mSelectCommunityData?.name - mBinding.forumIconView.displayGameIcon(mViewModel.mSelectCommunityData?.icon, mViewModel.mSelectCommunityData?.iconSubscript) + mBinding.forumIconView.displayGameIcon( + mViewModel.mSelectCommunityData?.icon, + mViewModel.mSelectCommunityData?.iconSubscript + ) setForumUI() } else if (mViewModel.type == BbsType.OFFICIAL_BBS.value) { if (mViewModel.gameEntity == null) { @@ -507,7 +519,10 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb mBinding.forumIconView.visibility = View.GONE } else { mBinding.articleGameName.text = mViewModel.gameEntity?.name - mBinding.forumIconView.displayGameIcon(mViewModel.gameEntity?.icon, mViewModel.gameEntity?.iconSubscript) + mBinding.forumIconView.displayGameIcon( + mViewModel.gameEntity?.icon, + mViewModel.gameEntity?.iconSubscript + ) setForumUI() } } @@ -564,7 +579,8 @@ class ArticleEditActivity : BaseRichEditorActivity(), Keyb if (mViewModel.checkDataAndLoadTitleTag(mIsKeyBoardShow)) { mArticleTagsSelectFragment?.publishArticle(mOriginalCb.isChecked) } - val bbsType = if (mViewModel.type.isNotEmpty()) if (mViewModel.type == "game_bbs") "游戏论坛" else "综合论坛" else "" + val bbsType = + if (mViewModel.type.isNotEmpty()) if (mViewModel.type == "game_bbs") "游戏论坛" else "综合论坛" else "" NewLogUtils.logArticleEditClick( "click_article_post_button", mViewModel.mSelectCommunityData?.id ?: "", bbsType, mViewModel.selectActivityLabelEntity?.name ?: "", diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt index fed64431d3..b8c22c7cd0 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt @@ -57,14 +57,14 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a */ fun getDefaultTag() { mApi - .getCommunitiesTags(mSelectCommunityData?.id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - defaultTags.postValue(response) - } - }) + .getCommunitiesTags(mSelectCommunityData?.id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + defaultTags.postValue(response) + } + }) } /** @@ -149,45 +149,45 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a mApi.patchCommunityArticle(mSelectCommunityData?.id, detailEntity?.id, body) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - if (detailEntity != null) { - detailEntity?.content = content!! - detailEntity?.title = title!! - detailEntity?.tags = selectedTags - detailEntity?.time?.edit = Utils.getTime(getApplication()) - } - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + if (detailEntity != null) { + detailEntity?.content = content!! + detailEntity?.title = title!! + detailEntity?.tags = selectedTags + detailEntity?.time?.edit = Utils.getTime(getApplication()) + } + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) // MtaHelper.onEvent("发表文章", "发布成功", CommunityManager.getInstance().community.name) - val data = response?.string() - postArticle.postValue(data) + val data = response?.string() + postArticle.postValue(data) - EventBus.getDefault().post(EBReuse(ArticleEditActivity.ARTICLE_POSTED_TAG)) - if (draftEntity?.id != null) { - EventBus.getDefault().post(EBReuse(ArticleEditActivity.ARTICLE_DRAFT_CHANGE_TAG)) - } - - if (detailEntity == null) { - tryWithDefaultCatch { - EnergyBridge.postEnergyTask("publish_community_article", JSONObject(data).optString("_id")) - } - } + EventBus.getDefault().post(EBReuse(ArticleEditActivity.ARTICLE_POSTED_TAG)) + if (draftEntity?.id != null) { + EventBus.getDefault().post(EBReuse(ArticleEditActivity.ARTICLE_DRAFT_CHANGE_TAG)) } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) - var errorString: String? = null - try { - errorString = e?.response()?.errorBody()?.string() - } catch (e1: Exception) { - e1.printStackTrace() + if (detailEntity == null) { + tryWithDefaultCatch { + EnergyBridge.postEnergyTask("publish_community_article", JSONObject(data).optString("_id")) } - error.postValue(errorString) + } + } + + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) + var errorString: String? = null + try { + errorString = e?.response()?.errorBody()?.string() + } catch (e1: Exception) { + e1.printStackTrace() + } + error.postValue(errorString) // MtaHelper.onEvent("发表文章", "发布失败", CommunityManager.getInstance().community.name) - } - }) + } + }) } fun postArticleDrafts(saveType: ArticleEditActivity.SaveDraftType) { @@ -202,23 +202,23 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a mApi.postCommunityArticleDrafts(UserManager.getInstance().userId, body) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - val string = response?.string() - if (!string.isNullOrEmpty() && draftEntity?.id == null) { - if (draftEntity == null) draftEntity = ArticleDraftEntity() - draftEntity?.id = JSONObject(string).getString("_id") - } - - postArticleDrafts.postValue(Pair(saveType, true)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val string = response?.string() + if (!string.isNullOrEmpty() && draftEntity?.id == null) { + if (draftEntity == null) draftEntity = ArticleDraftEntity() + draftEntity?.id = JSONObject(string).getString("_id") } - override fun onFailure(e: HttpException?) { - postArticleDrafts.postValue(Pair(saveType, false)) - } - }) + postArticleDrafts.postValue(Pair(saveType, true)) + } + + override fun onFailure(e: HttpException?) { + postArticleDrafts.postValue(Pair(saveType, false)) + } + }) } private fun getArticleBody(): JSONObject { @@ -245,24 +245,24 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a fun getArticleDraftsContent(draftId: String) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", true)) mApi.getArticleDraftsContent(UserManager.getInstance().userId, draftId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - val string = response?.string() - if (string != null) { - val jsonObject = JSONObject(string) - val content = jsonObject.getString("content") - articleDraftsContent.postValue(content) - } - - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val string = response?.string() + if (string != null) { + val jsonObject = JSONObject(string) + val content = jsonObject.getString("content") + articleDraftsContent.postValue(content) } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) - } - }) + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) + } + + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) + } + }) } override fun getRichType(): RichType = RichType.ARTICLE diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleTagsSelectFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleTagsSelectFragment.kt index 6b4b7ce1ca..fcb8d8f937 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleTagsSelectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleTagsSelectFragment.kt @@ -48,7 +48,8 @@ class ArticleTagsSelectFragment : BaseFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mBinding = QuestionsEditTagBinding.bind(mCachedView) - if (activity != null) mViewModel = ViewModelProviders.of(requireActivity()).get(ArticleEditViewModel::class.java) + if (activity != null) mViewModel = + ViewModelProviders.of(requireActivity()).get(ArticleEditViewModel::class.java) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt index b2c87f3ffb..125a62c1c3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentActivity.kt @@ -139,7 +139,8 @@ class CommentActivity : BaseActivity() { } supportFragmentManager.beginTransaction() - .replace(R.id.answerCommentPlaceholderView, commentFragment!!, NewCommentFragment::class.java.name).commitNowAllowingStateLoss() + .replace(R.id.answerCommentPlaceholderView, commentFragment!!, NewCommentFragment::class.java.name) + .commitNowAllowingStateLoss() mBinding.maskView.alpha = 0f if (!isStairsComment) { @@ -187,7 +188,12 @@ class CommentActivity : BaseActivity() { const val REQUEST_CODE = 8123 @JvmStatic - fun getAnswerCommentIntent(context: Context, answerId: String, commentCount: Int? = 0, showKeyboard: Boolean): Intent { + fun getAnswerCommentIntent( + context: Context, + answerId: String, + commentCount: Int? = 0, + showKeyboard: Boolean + ): Intent { return getAnswerCommentIntent(context, answerId, commentCount, showKeyboard, false) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentPictureAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentPictureAdapter.kt index 85fa27e773..8824e5b089 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/CommentPictureAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/CommentPictureAdapter.kt @@ -34,7 +34,7 @@ class CommentPictureAdapter(val context: Context, var pictureList: ArrayList() mImageViewArray.forEach { _, value -> diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentConversationFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentConversationFragment.kt index 3b44d3a94d..ca82660f5b 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentConversationFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentConversationFragment.kt @@ -72,7 +72,14 @@ class NewCommentConversationFragment : NewCommentFragment() { mLinkEntity?.let { mBinding.linkTv.visibility = View.VISIBLE mBinding.linkTv.text = (if ("answer" == it.type) "回答:" else "帖子:") + it.title - mBinding.linkTv.setOnClickListener { _ -> DirectUtils.directToLinkPage(requireContext(), it, mEntrance, "查看对话") } + mBinding.linkTv.setOnClickListener { _ -> + DirectUtils.directToLinkPage( + requireContext(), + it, + mEntrance, + "查看对话" + ) + } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt index 4e9243014a..954cb1b8da 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt @@ -219,7 +219,8 @@ open class NewCommentFragment : ListFragment else -> "" } ErrorHelper.handleError(requireContext(), errorString, false, - { commentSendBtn.performClick() }, entrance) + { commentSendBtn.performClick() }, entrance + ) } else -> { mSendingDialog?.dismiss() @@ -284,7 +285,8 @@ open class NewCommentFragment : ListFragment commentEt.setSelection(commentEt.text.length) if (mShowSoftKeyboardOnStartUp) { commentEt.postDelayed({ - val keyboard = HaloApp.getInstance().application.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + val keyboard = + HaloApp.getInstance().application.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager keyboard.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0) }, 200) } else { @@ -561,7 +563,7 @@ open class NewCommentFragment : ListFragment } override fun onKeyboardHeightChanged(height: Int, orientation: Int) { - if (commentInputContainer!=null && commentInputContainer?.visibility != View.GONE) { + if (commentInputContainer != null && commentInputContainer?.visibility != View.GONE) { popInputLayout(height > 0, height) } } @@ -581,7 +583,8 @@ open class NewCommentFragment : ListFragment if (!mShowInputOnly) { mAnswerContent.orientation = if (isPopup) LinearLayout.VERTICAL else LinearLayout.HORIZONTAL if (isPopup) { - mAnswerContent.background = ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_white_radius_10_top_only) + mAnswerContent.background = + ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_white_radius_10_top_only) } else { mAnswerContent.setBackgroundColor(ContextCompat.getColor(requireActivity(), R.color.white)) } @@ -591,7 +594,8 @@ open class NewCommentFragment : ListFragment mLayoutParams.bottomMargin = if (isPopup) height + mOffset - 12F.dip2px() else 0 } else { mAnswerContent.orientation = LinearLayout.VERTICAL - mAnswerContent.background = ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_white_radius_10_top_only) + mAnswerContent.background = + ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_white_radius_10_top_only) mPlaceholderView?.visibility = View.VISIBLE mImageBtn?.goneIf(mCommentEntity != null || mGameCollectionId.isNotEmpty()) mScrollViewParams.width = LinearLayout.LayoutParams.MATCH_PARENT diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt index c20f0beeaf..f44b751fa4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt @@ -66,7 +66,12 @@ open class NewCommentViewModel( CommentType.ANSWER -> api.getAnswerCommentList(answerId, page) CommentType.ANSWER_CONVERSATION -> api.getAnswerCommentConversationList(answerId, commentId, page) - CommentType.COMMUNITY_ARTICLE -> api.getCommunityArticleCommentList(articleId, "time.create:1", page, mapOf()) + CommentType.COMMUNITY_ARTICLE -> api.getCommunityArticleCommentList( + articleId, + "time.create:1", + page, + mapOf() + ) CommentType.COMMUNITY_ARTICLE_CONVERSATION -> api.getCommunityArticleCommentConversation(commentId, page) CommentType.VIDEO -> api.getVideoCommentList(videoId, page, mapOf()) @@ -204,13 +209,19 @@ open class NewCommentViewModel( if (commentType == CommentType.COMMUNITY_ARTICLE && commentEntity == null) { tryWithDefaultCatch { - EnergyBridge.postEnergyTask("comment_community_article", JSONObject(response?.string()).optString("_id")) + EnergyBridge.postEnergyTask( + "comment_community_article", + JSONObject(response?.string()).optString("_id") + ) } } if (commentType == CommentType.VIDEO && commentEntity == null) { tryWithDefaultCatch { - EnergyBridge.postEnergyTask("comment_video", JSONObject(response?.string()).optString("_id")) + EnergyBridge.postEnergyTask( + "comment_video", + JSONObject(response?.string()).optString("_id") + ) } } } @@ -332,7 +343,12 @@ open class NewCommentViewModel( }) } - fun getCommentReply(videoId: String, commentId: String, page: Int, resultCallback: (result: ArrayList) -> Unit) { + fun getCommentReply( + videoId: String, + commentId: String, + page: Int, + resultCallback: (result: ArrayList) -> Unit + ) { RetrofitManager.getInstance().api .getVideoCommentReply(videoId, commentId, page) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentAdapter.kt index 558c711d66..194e137761 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentAdapter.kt @@ -12,12 +12,14 @@ import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.databinding.StairsCommentItemBinding import com.gh.gamecenter.entity.CommentEntity -class StairsCommentAdapter(context: Context, - var mViewModel: NewCommentViewModel, - var mIsShowingConversation: Boolean, - var mCommentCallBackListener: OnCommentCallBackListener, - var mCommentOptionClickListener: OnCommentOptionClickListener? = null, - var mEntrance: String) : ListAdapter(context) { +class StairsCommentAdapter( + context: Context, + var mViewModel: NewCommentViewModel, + var mIsShowingConversation: Boolean, + var mCommentCallBackListener: OnCommentCallBackListener, + var mCommentOptionClickListener: OnCommentOptionClickListener? = null, + var mEntrance: String +) : ListAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return if (viewType == ItemViewType.LOADING) { @@ -32,7 +34,15 @@ class StairsCommentAdapter(context: Context, override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is StairsCommentViewHolder) { val commentEntity = mEntityList[position] - holder.initCommentViewHolder(holder, mViewModel, commentEntity, mEntrance, mIsShowingConversation, mCommentOptionClickListener, mCommentCallBackListener) + holder.initCommentViewHolder( + holder, + mViewModel, + commentEntity, + mEntrance, + mIsShowingConversation, + mCommentOptionClickListener, + mCommentCallBackListener + ) } else if (holder is FooterViewHolder) { initFooterViewHolder(holder) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentFragment.kt index 9589514ea5..08d07407c7 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentFragment.kt @@ -55,7 +55,8 @@ class StairsCommentFragment : NewCommentFragment() { } mAnswerContent.orientation = if (isPopup) LinearLayout.VERTICAL else LinearLayout.HORIZONTAL if (isPopup) { - mAnswerContent.background = ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_dark_radius_10_top_only) + mAnswerContent.background = + ContextCompat.getDrawable(requireActivity(), R.drawable.bg_shape_dark_radius_10_top_only) } else { mAnswerContent.setBackgroundColor(ContextCompat.getColor(requireActivity(), R.color.bg_1F1F23)) mOffset = abs(height) diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentReplyAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentReplyAdapter.kt index 04a4964aa4..50864c95bc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentReplyAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentReplyAdapter.kt @@ -13,16 +13,22 @@ import com.gh.gamecenter.databinding.StairsCommentItemBinding import com.gh.gamecenter.entity.CommentEntity import com.lightgame.adapter.BaseRecyclerAdapter -class StairsCommentReplyAdapter(context: Context, val mViewModel: NewCommentViewModel, val commentEntity: CommentEntity, - val mEntrance: String, val mIsShowingConversation: Boolean, val mCommentOptionClickListener: OnCommentOptionClickListener?, - val mCommentCallBackListener: OnCommentCallBackListener) : BaseRecyclerAdapter(context) { +class StairsCommentReplyAdapter( + context: Context, + val mViewModel: NewCommentViewModel, + val commentEntity: CommentEntity, + val mEntrance: String, + val mIsShowingConversation: Boolean, + val mCommentOptionClickListener: OnCommentOptionClickListener?, + val mCommentCallBackListener: OnCommentCallBackListener +) : BaseRecyclerAdapter(context) { val replyComments = ArrayList() var page = 0 fun getCommentReply(resultCount: (count: Int) -> Unit) { mViewModel.getCommentReply(mViewModel.videoId, commentEntity.id - ?: "", page, resultCallback = { + ?: "", page, resultCallback = { val lastPosition = replyComments.size replyComments.addAll(it) notifyItemInserted(lastPosition) @@ -40,7 +46,15 @@ class StairsCommentReplyAdapter(context: Context, val mViewModel: NewCommentView override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val replyCommentEntity = replyComments[position] if (holder is StairsCommentViewHolder) { - holder.initCommentViewHolder(holder, mViewModel, replyCommentEntity, mEntrance, mIsShowingConversation, mCommentOptionClickListener, mCommentCallBackListener) + holder.initCommentViewHolder( + holder, + mViewModel, + replyCommentEntity, + mEntrance, + mIsShowingConversation, + mCommentOptionClickListener, + mCommentCallBackListener + ) val commentContainerParams = holder.binding.commentContainer.layoutParams as LinearLayout.LayoutParams commentContainerParams.topMargin = 16f.dip2px() diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt index 73cd910079..6330d427fe 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt @@ -228,7 +228,12 @@ abstract class BaseCommentAdapter( inner class CommentFooterViewHolder(var binding: ItemArticleDetailCommentFooterBinding) : RecyclerView.ViewHolder(binding.root) { - fun bindView(isLoading: Boolean, isNetworkError: Boolean, isOver: Boolean, @StringRes loadOverHint: Int = R.string.load_over_hint) { + fun bindView( + isLoading: Boolean, + isNetworkError: Boolean, + isOver: Boolean, + @StringRes loadOverHint: Int = R.string.load_over_hint + ) { when { isNetworkError -> { binding.progressBar.visibility = View.GONE @@ -250,7 +255,9 @@ abstract class BaseCommentAdapter( } } - inner class CommentErrorViewHolder(val binding: ItemArticleDetailCommentEmptyBinding) : RecyclerView.ViewHolder(binding.root) + inner class CommentErrorViewHolder(val binding: ItemArticleDetailCommentEmptyBinding) : + RecyclerView.ViewHolder(binding.root) + inner class CommentFilterViewHolder(var binding: PieceArticleDetailCommentFilterBinding) : RecyclerView.ViewHolder(binding.root) { fun bindView( @@ -696,7 +703,8 @@ abstract class BaseCommentAdapter( ) } - binding.likeCountTv.text = viewModel.getLikeText(comment.vote, if (viewModel is CommentConversationViewModel) "" else "赞同") + binding.likeCountTv.text = + viewModel.getLikeText(comment.vote, if (viewModel is CommentConversationViewModel) "" else "赞同") if (comment.me?.isCommentVoted == true) { binding.likeCountTv.setTextColor(R.color.theme_font.toColor(binding.likeCountTv.context)) @@ -902,7 +910,11 @@ abstract class BaseCommentAdapter( "确认", "取消", confirmClickCallback = { - viewModel.updateCommentTop(comment.id ?: "", top = false, isAgain = false) { isSuccess, _ -> + viewModel.updateCommentTop( + comment.id ?: "", + top = false, + isAgain = false + ) { isSuccess, _ -> if (isSuccess) { viewModel.onUpdateCommentTopSuccess() } @@ -1004,7 +1016,11 @@ abstract class BaseCommentAdapter( "确认", "取消", confirmClickCallback = { - viewModel.updateCommentTop(comment.id ?: "", top = false, isAgain = false) { isSuccess, _ -> + viewModel.updateCommentTop( + comment.id ?: "", + top = false, + isAgain = false + ) { isSuccess, _ -> if (isSuccess) { viewModel.onUpdateCommentTopSuccess() } @@ -1071,7 +1087,11 @@ abstract class BaseCommentAdapter( "确认", "取消", confirmClickCallback = { - viewModel.updateCommentTop(comment.id ?: "", top = false, isAgain = false) { isSuccess, _ -> + viewModel.updateCommentTop( + comment.id ?: "", + top = false, + isAgain = false + ) { isSuccess, _ -> if (isSuccess) { viewModel.onUpdateCommentTopSuccess() } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentFragment.kt index ee5f53ea41..915cd660df 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentFragment.kt @@ -100,10 +100,18 @@ abstract class BaseCommentFragment : ListFragment< val drawable = ContextCompat.getDrawable(requireContext(), R.drawable.divider_article_detail_comment) val itemDecoration = when { this !is CommentConversationFragment || mListViewModel.topCommentId.isNotBlank() -> { - CustomDividerItemDecoration(requireContext(), notDecorateTheFirstTwoItems = true, notDecorateTheLastItem = true) + CustomDividerItemDecoration( + requireContext(), + notDecorateTheFirstTwoItems = true, + notDecorateTheLastItem = true + ) } else -> { - CustomDividerItemDecoration(requireContext(), notDecorateTheFirstItem = true, notDecorateTheLastItem = true) + CustomDividerItemDecoration( + requireContext(), + notDecorateTheFirstItem = true, + notDecorateTheLastItem = true + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentViewModel.kt index 3272984a78..cf6867223a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentViewModel.kt @@ -433,7 +433,8 @@ abstract class BaseCommentViewModel( it.forEachIndexed { index, commentItemData -> commentItemData?.run { when { - commentNormal?.id == cloneComment.id -> it[index] = CommentItemData(commentNormal = cloneComment) + commentNormal?.id == cloneComment.id -> it[index] = + CommentItemData(commentNormal = cloneComment) commentTop?.id == cloneComment.id -> it[index] = CommentItemData(commentTop = cloneComment) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationAdapter.kt index 2f433a20a3..1963235351 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationAdapter.kt @@ -50,7 +50,8 @@ class CommentConversationAdapter( } } - inner class TopCommentItemViewHolder(var binding: ItemArticleDetailCommentBinding) : RecyclerView.ViewHolder(binding.root) { + inner class TopCommentItemViewHolder(var binding: ItemArticleDetailCommentBinding) : + RecyclerView.ViewHolder(binding.root) { fun bindView(comment: CommentEntity) { ConstraintSet().apply { diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationViewModel.kt index a273a670f6..cdae7d8f05 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/conversation/CommentConversationViewModel.kt @@ -111,7 +111,8 @@ class CommentConversationViewModel( it.forEachIndexed { index, commentItemData -> commentItemData?.run { when { - commentNormal?.id == cloneComment.id -> it[index] = CommentItemData(commentNormal = cloneComment) + commentNormal?.id == cloneComment.id -> it[index] = + CommentItemData(commentNormal = cloneComment) commentTop?.id == cloneComment.id -> { commentDetail = cloneComment it[index] = CommentItemData(commentTop = cloneComment) diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseActivityDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseActivityDialogFragment.kt index 5f3f26859b..d541988015 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseActivityDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseActivityDialogFragment.kt @@ -32,8 +32,9 @@ class ChooseActivityDialogFragment : BaseDialogFragment() { super.onViewCreated(view, savedInstanceState) mLastSelectActivityId = requireArguments().getString(TAG_ACTIVITY_ID) ?: "" val beginTransaction = childFragmentManager.beginTransaction() - val fragment = childFragmentManager.findFragmentByTag(VideoLabelFragment::class.java.name) as? VideoLabelFragment - ?: VideoLabelFragment() + val fragment = + childFragmentManager.findFragmentByTag(VideoLabelFragment::class.java.name) as? VideoLabelFragment + ?: VideoLabelFragment() fragment.arguments = arguments beginTransaction.replace(binding.container.id, fragment, VideoLabelFragment::class.java.name) beginTransaction.commitAllowingStateLoss() @@ -94,7 +95,13 @@ class ChooseActivityDialogFragment : BaseDialogFragment() { const val TAG_ACTIVITY_ID = "tagActivityId" const val REQUEST_CODE = 1102 - fun show(activity: AppCompatActivity, location: ActivityLabelLocation, bbsId: String, tagActivityId: String? = "", parentTag: String) { + fun show( + activity: AppCompatActivity, + location: ActivityLabelLocation, + bbsId: String, + tagActivityId: String? = "", + parentTag: String + ) { ChooseActivityDialogFragment().apply { arguments = bundleOf( TAG_ACTIVITY_ID to tagActivityId, diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt index 6e536d5569..dbb94e3b46 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerAdapter.kt @@ -65,7 +65,11 @@ class ChooseForumContainerAdapter( holder.binding.followTv.background = if (forumEntity.isFollow) R.drawable.button_round_gray_light.toDrawable() else R.drawable.bg_forum_follow.toDrawable() holder.binding.followTv.text = if (forumEntity.isFollow) "已关注" else "关注" - holder.binding.followTv.setTextColor(if (forumEntity.isFollow) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor(mContext)) + holder.binding.followTv.setTextColor( + if (forumEntity.isFollow) R.color.text_subtitleDesc.toColor(mContext) else R.color.theme_font.toColor( + mContext + ) + ) val icon = forumEntity.icon.ifEmpty { forumEntity.game.getIcon() } holder.binding.forumIcon.displayGameIcon(icon, forumEntity.game.iconSubscript) diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerViewModel.kt index b2e27e568c..64b72915f6 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/ChooseForumContainerViewModel.kt @@ -12,7 +12,8 @@ import com.gh.gamecenter.retrofit.service.ApiService import com.halo.assistant.HaloApp import io.reactivex.Observable -class ChooseForumContainerViewModel(application: Application, val type: String, var searchKey: String) : ListViewModel(application) { +class ChooseForumContainerViewModel(application: Application, val type: String, var searchKey: String) : + ListViewModel(application) { private val mApi: ApiService = RetrofitManager.getInstance().api init { diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/InputUrlDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/dialog/InputUrlDialogFragment.kt index 62fd4366f4..34bd69d405 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/InputUrlDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/dialog/InputUrlDialogFragment.kt @@ -43,7 +43,7 @@ class InputUrlDialogFragment : BaseDialogFragment() { mBinding.reprintUrlEt.setSelection(url.length) mBinding.confirmTv.setOnClickListener { val reprintUrl = mBinding.reprintUrlEt.text.toString() - if (!reprintUrl.startsWith("http")){ + if (!reprintUrl.startsWith("http")) { ToastUtils.showToast("请输入正确的链接") return@setOnClickListener } diff --git a/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt index 59e4e90cd8..1265dd13b9 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/draft/CommunityDraftWrapperActivity.kt @@ -31,7 +31,7 @@ class CommunityDraftWrapperActivity : BaseActivity_TabLayout() { tabTitleList.add("视频草稿") } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt index fed54417a7..0e3217b823 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerAdapter.kt @@ -29,7 +29,10 @@ class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdap return if (position == itemCount - 1) ItemViewType.ITEM_FOOTER else ItemViewType.ITEM_BODY } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { val view: View return when (viewType) { ItemViewType.ITEM_FOOTER -> { @@ -49,7 +52,12 @@ class AnswerAdapter(context: Context, private val mEntrance: String?) : ListAdap ItemViewType.ITEM_BODY -> { val answerViewHolder = holder as AnswerViewHolder val entity = mEntityList[position] - answerViewHolder.initCollectionAnswerViewHolder(mContext, entity, mEntrance, AnswerFragment.COLLECTION_ANSWER) + answerViewHolder.initCollectionAnswerViewHolder( + mContext, + entity, + mEntrance, + AnswerFragment.COLLECTION_ANSWER + ) answerViewHolder.binding.askAnswerItemUsericon.setOnClickListener { selectAndBack(entity) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt index f0d439a72c..3b93ba4ec1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerFragment.kt @@ -15,7 +15,8 @@ class AnswerFragment : ListFragment() { private var mAnswerType: InsertAnswerWrapperActivity.AnswerType = InsertAnswerWrapperActivity.AnswerType.MINE_ANSWER override fun onCreate(savedInstanceState: Bundle?) { - mAnswerType = arguments?.getSerializable(InsertAnswerWrapperActivity.KEY_ANSWER_TYPE) as InsertAnswerWrapperActivity.AnswerType + mAnswerType = + arguments?.getSerializable(InsertAnswerWrapperActivity.KEY_ANSWER_TYPE) as InsertAnswerWrapperActivity.AnswerType super.onCreate(savedInstanceState) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt index b5e1fddbc8..aa818e250e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/AnswerViewModel.kt @@ -14,14 +14,17 @@ import com.lightgame.utils.Utils import io.reactivex.Observable @Keep -class AnswerViewModel(application: Application, private val answerType: InsertAnswerWrapperActivity.AnswerType) : ListViewModel(application) { +class AnswerViewModel(application: Application, private val answerType: InsertAnswerWrapperActivity.AnswerType) : + ListViewModel(application) { override fun provideDataObservable(page: Int): Observable> { return if (answerType == InsertAnswerWrapperActivity.AnswerType.MINE_ANSWER) { - RetrofitManager.getInstance().api.getMyAnswers(UserManager.getInstance().userId, page, - HaloApp.getInstance().channel, Utils.getTime(getApplication())) + RetrofitManager.getInstance().api.getMyAnswers( + UserManager.getInstance().userId, page, + HaloApp.getInstance().channel, Utils.getTime(getApplication()) + ) } else { RetrofitManager.getInstance().api.getCollectionAnswer(UserManager.getInstance().userId, page) } @@ -44,14 +47,17 @@ class AnswerViewModel(application: Application, private val answerType: InsertAn if (answerType == InsertAnswerWrapperActivity.AnswerType.MINE_ANSWER) { list.forEach { val userInfoEntity = UserManager.getInstance().userInfoEntity - it.user = UserEntity(userInfoEntity?.icon, userInfoEntity?.name, userInfoEntity?.userId, - auth = userInfoEntity?.auth, badge = userInfoEntity?.badge) + it.user = UserEntity( + userInfoEntity?.icon, userInfoEntity?.name, userInfoEntity?.userId, + auth = userInfoEntity?.auth, badge = userInfoEntity?.badge + ) } } return list } - class Factory(private val answerType: InsertAnswerWrapperActivity.AnswerType) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val answerType: InsertAnswerWrapperActivity.AnswerType) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return AnswerViewModel(HaloApp.getInstance().application, answerType) as T diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleAdapter.kt index d48ffbf5cd..a5d6d951fc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleAdapter.kt @@ -52,7 +52,9 @@ class ArticleAdapter(context: Context, private val mEntrance: String?) : ListAda ImageUtils.display(articleHolder.binding.userBadge, entity.user.auth?.icon) articleHolder.binding.userName.text = entity.user.name articleHolder.binding.content.text = entity.brief - articleHolder.binding.image.goneIf(entity.images.isNullOrEmpty() && entity.getPassVideos().isNullOrEmpty()) + articleHolder.binding.image.goneIf( + entity.images.isNullOrEmpty() && entity.getPassVideos().isNullOrEmpty() + ) articleHolder.binding.videoPlay.goneIf(entity.getPassVideos().isNullOrEmpty()) articleHolder.binding.voteCount.text = "${entity.count.comment} 评论 · ${entity.count.vote} 点赞 · ${NewsUtils.getFormattedTime(entity.time?.create ?: 0)}" @@ -60,7 +62,10 @@ class ArticleAdapter(context: Context, private val mEntrance: String?) : ListAda if (entity.images.isNotEmpty()) { ImageUtils.display(articleHolder.binding.image, entity.images.safelyGetInRelease(0)) } else if (entity.getPassVideos().isNotEmpty()) { - ImageUtils.display(articleHolder.binding.image, entity.getPassVideos().safelyGetInRelease(0)?.poster) + ImageUtils.display( + articleHolder.binding.image, + entity.getPassVideos().safelyGetInRelease(0)?.poster + ) } if (entity.user.badge != null) { @@ -75,7 +80,11 @@ class ArticleAdapter(context: Context, private val mEntrance: String?) : ListAda articleHolder.binding.sdvUserBadge.setOnClickListener { v -> DialogUtils.showViewBadgeDialog(mContext, entity.user.badge, object : ConfirmListener { override fun onConfirm() { - MtaHelper.onEvent("进入徽章墙_用户记录", "插入文章-收藏文章列表", entity.user.name + "(" + entity.user.id + ")") + MtaHelper.onEvent( + "进入徽章墙_用户记录", + "插入文章-收藏文章列表", + entity.user.name + "(" + entity.user.id + ")" + ) MtaHelper.onEvent("徽章中心", "进入徽章中心", "插入文章-收藏文章列表") DirectUtils.directToBadgeWall(mContext, entity.user.id, entity.user.name, entity.user.icon) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt index fade58828b..f950b49e53 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleFragment.kt @@ -12,10 +12,12 @@ import com.gh.gamecenter.qa.entity.ArticleEntity class ArticleFragment : ListFragment() { private var mAdapter: ArticleAdapter? = null - private var mArticleType: InsertArticleWrapperActivity.ArticleType = InsertArticleWrapperActivity.ArticleType.MINE_ARTICLE + private var mArticleType: InsertArticleWrapperActivity.ArticleType = + InsertArticleWrapperActivity.ArticleType.MINE_ARTICLE override fun onCreate(savedInstanceState: Bundle?) { - mArticleType = arguments?.getSerializable(InsertArticleWrapperActivity.KEY_ARTICLE_TYPE) as InsertArticleWrapperActivity.ArticleType + mArticleType = + arguments?.getSerializable(InsertArticleWrapperActivity.KEY_ARTICLE_TYPE) as InsertArticleWrapperActivity.ArticleType super.onCreate(savedInstanceState) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt index 90ab050c0c..c7c6f13730 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/ArticleViewModel.kt @@ -13,7 +13,8 @@ import com.halo.assistant.HaloApp import io.reactivex.Observable @Keep -class ArticleViewModel(application: Application, private val articleType: InsertArticleWrapperActivity.ArticleType) : ListViewModel(application) { +class ArticleViewModel(application: Application, private val articleType: InsertArticleWrapperActivity.ArticleType) : + ListViewModel(application) { override fun provideDataObservable(page: Int): Observable> { return if (articleType == InsertArticleWrapperActivity.ArticleType.MINE_ARTICLE) { @@ -41,14 +42,17 @@ class ArticleViewModel(application: Application, private val articleType: Insert if (articleType == InsertArticleWrapperActivity.ArticleType.MINE_ARTICLE) { val userInfoEntity = UserManager.getInstance().userInfoEntity list.forEach { - it.user = UserEntity(userInfoEntity?.icon, userInfoEntity?.name, userInfoEntity?.userId, - auth = userInfoEntity?.auth, badge = userInfoEntity?.badge) + it.user = UserEntity( + userInfoEntity?.icon, userInfoEntity?.name, userInfoEntity?.userId, + auth = userInfoEntity?.auth, badge = userInfoEntity?.badge + ) } } return list } - class Factory(private val articleType: InsertArticleWrapperActivity.ArticleType) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val articleType: InsertArticleWrapperActivity.ArticleType) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return ArticleViewModel(HaloApp.getInstance().application, articleType) as T diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt index d927a23b63..a400e1c395 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt @@ -40,15 +40,15 @@ class FullScreenVideoActivity : BaseActivity() { private fun setUpTopVideo(title: String, url: String, poster: String) { GSYVideoOptionBuilder() - .setIsTouchWigetFull(false) - .setIsTouchWiget(false) - .setRotateViewAuto(false) - .setShowFullAnimation(false) - .setSeekRatio(1f) - .setUrl(url) - .setVideoTitle(title) - .setCacheWithPlay(true) - .build(mBinding.videoView) + .setIsTouchWigetFull(false) + .setIsTouchWiget(false) + .setRotateViewAuto(false) + .setShowFullAnimation(false) + .setSeekRatio(1f) + .setUrl(url) + .setVideoTitle(title) + .setCacheWithPlay(true) + .build(mBinding.videoView) mBinding.videoView.updateThumb(poster) diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoView.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoView.kt index 083fe92e58..2a2db0ac5c 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoView.kt @@ -35,7 +35,8 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge import io.reactivex.disposables.Disposable import java.util.* -class FullScreenVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class FullScreenVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private var mMuteCallback: MuteCallback private var mVolumeObserver: VolumeObserver private var mMuteDisposable: Disposable? = null @@ -47,14 +48,15 @@ class FullScreenVideoView @JvmOverloads constructor(context: Context, attrs: Att init { post { - gestureDetector = GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { - override fun onSingleTapConfirmed(e: MotionEvent): Boolean { - if (!mChangePosition && !mChangeVolume && !mBrightness) { - onClickUiToggle(e) + gestureDetector = + GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + if (!mChangePosition && !mChangeVolume && !mBrightness) { + onClickUiToggle(e) + } + return super.onSingleTapConfirmed(e) } - return super.onSingleTapConfirmed(e) - } - }) + }) showBackBtn() @@ -262,7 +264,9 @@ class FullScreenVideoView @JvmOverloads constructor(context: Context, attrs: Att } override fun isShowNetConfirm(): Boolean { - return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected(context) + return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected( + context + ) && mNeedShowWifiTip) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt index 556e533633..d878f6e42e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/GameAdapter.kt @@ -17,7 +17,10 @@ open class GameAdapter(context: Context) : ListAdapter(context) { super.setListData(updateData) } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { return GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/GameDefaultAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/GameDefaultAdapter.kt index f663ae300b..d6ba78363e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/GameDefaultAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/GameDefaultAdapter.kt @@ -38,7 +38,10 @@ class GameDefaultAdapter( holder.itemView.setOnClickListener { if (mContext is Activity) { val intent = Intent() - intent.putExtra(GameEntity::class.java.simpleName, GameEntity(id = entity.gameId, mIcon = entity.gameIcon, mName = entity.gameName)) + intent.putExtra( + GameEntity::class.java.simpleName, + GameEntity(id = entity.gameId, mIcon = entity.gameIcon, mName = entity.gameName) + ) (mContext as Activity).setResult(Activity.RESULT_OK, intent) (mContext as Activity).finish() } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/GameFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/GameFragment.kt index 6bd81d41c9..8fc630e0be 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/GameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/GameFragment.kt @@ -172,7 +172,8 @@ open class GameFragment : ListFragment { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } private fun initDefaultData() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/InsertArticleWrapperActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/InsertArticleWrapperActivity.kt index dfe4c29b73..16e6ee1c45 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/InsertArticleWrapperActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/InsertArticleWrapperActivity.kt @@ -15,6 +15,7 @@ class InsertArticleWrapperActivity : BaseActivity_TabLayout() { super.onCreate(savedInstanceState) updateStatusBarColor(R.color.background_white, R.color.background_white) } + override fun getLayoutId(): Int = R.layout.activity_tablayout_no_title_viewpager override fun initFragmentList(fragments: MutableList?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/LocalMediaActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/LocalMediaActivity.kt index c3ba8981c4..af60367ce0 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/LocalMediaActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/LocalMediaActivity.kt @@ -39,7 +39,9 @@ class LocalMediaActivity : ToolBarActivity(), AlbumCollection.AlbumCallbacks { setNavigationTitle("本地图片") } mLocalMediaFragment = LocalMediaFragment().apply { arguments = intent.extras } - supportFragmentManager.beginTransaction().replace(R.id.container, mLocalMediaFragment!!, LocalMediaFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.container, mLocalMediaFragment!!, LocalMediaFragment::class.java.name) + .commitAllowingStateLoss() initAlbumsSpinner() mTitleTv.setOnClickListener { mAlbumsSpinner.show(findViewById(R.id.container).height) @@ -110,12 +112,15 @@ class LocalMediaActivity : ToolBarActivity(), AlbumCollection.AlbumCallbacks { private fun setPhotoNavigationTitle(up: Boolean) { - val drawable = ContextCompat.getDrawable(HaloApp.getInstance().application, if (up) R.drawable.ic_video_arrow_up else R.drawable.ic_video_arrow_down) + val drawable = ContextCompat.getDrawable( + HaloApp.getInstance().application, + if (up) R.drawable.ic_video_arrow_up else R.drawable.ic_video_arrow_down + ) val arrowIv = findViewById(R.id.arrowIv) arrowIv?.setImageDrawable(drawable) } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/OnlineVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/OnlineVideoViewModel.kt index 9d9476b3da..aba1d43324 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/OnlineVideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/OnlineVideoViewModel.kt @@ -9,9 +9,13 @@ import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.Observable @Deprecated("v5.0.0废弃") -class OnlineVideoViewModel(application: Application) : ListViewModel(application) { +class OnlineVideoViewModel(application: Application) : ListViewModel(application) { override fun provideDataObservable(page: Int): Observable> { - return RetrofitManager.getInstance().api.getCommunityInsertVideo(UserManager.getInstance().userId, page, Config.VIDEO_PAGE_SIZE) + return RetrofitManager.getInstance().api.getCommunityInsertVideo( + UserManager.getInstance().userId, + page, + Config.VIDEO_PAGE_SIZE + ) } override fun mergeResultLiveData() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoActivity.kt index d776c7e3f2..b54f0eee29 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoActivity.kt @@ -19,15 +19,17 @@ class PreviewVideoActivity : BaseActivity() { DisplayUtils.transparentStatusBar(this) val containerFragment = supportFragmentManager.findFragmentByTag(PreviewVideoFragment::class.java.name) - ?: PreviewVideoFragment().with(intent.extras) + ?: PreviewVideoFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, PreviewVideoFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, PreviewVideoFragment::class.java.name) + .commitAllowingStateLoss() } companion object { - fun getIntent(context: Context,videos:ArrayList): Intent { + fun getIntent(context: Context, videos: ArrayList): Intent { val intent = Intent(context, PreviewVideoActivity::class.java) - intent.putExtra(EntranceConsts.KEY_VIDEO_LIST,videos) + intent.putExtra(EntranceConsts.KEY_VIDEO_LIST, videos) return intent } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoFragment.kt index 6fe766bf34..255b10b894 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoFragment.kt @@ -47,19 +47,19 @@ class PreviewVideoFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) mVideoItems = arguments?.getParcelableArrayList(EntranceConsts.KEY_VIDEO_LIST) - ?: arrayListOf() + ?: arrayListOf() if (mVideoItems.isNotEmpty()) { mVideoItems.forEach { val path = PathUtils.getPath(requireContext(), it.contentUri) val id = MD5Utils.getUrlMD5(path) + System.currentTimeMillis() val format = getFileFormat(it.mimeType) val localVideoEntity = LocalVideoEntity( - id = id, - filePath = path, - contentUri = it.contentUri, - duration = it.duration, - format = format, - size = it.size + id = id, + filePath = path, + contentUri = it.contentUri, + duration = it.duration, + format = format, + size = it.size ) mLocalVideoList.add(localVideoEntity) } @@ -72,7 +72,8 @@ class PreviewVideoFragment : BaseFragment() { initVideo(entity) } mBinding.videoSelectorRv.adapter = mVideoSelectorAdapter - mBinding.videoSelectorRv.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + mBinding.videoSelectorRv.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) mBinding.videoSelectorRv.addItemDecoration( GridSpacingItemColorDecoration( requireContext(), @@ -90,7 +91,8 @@ class PreviewVideoFragment : BaseFragment() { mBinding.changeCoverTv.setOnClickListener { val item = mVideoItems[mVideoSelectorAdapter.selectPosition] - val intent = PosterEditActivity.getIntentByPath(requireContext(), PathUtils.getPath(requireContext(), item.uri)) + val intent = + PosterEditActivity.getIntentByPath(requireContext(), PathUtils.getPath(requireContext(), item.uri)) startActivityForResult(intent, UploadVideoActivity.REQUEST_CODE_IMAGE_CROP) } mBinding.backBtn.setOnClickListener { requireActivity().finish() } @@ -125,33 +127,36 @@ class PreviewVideoFragment : BaseFragment() { private fun uploadImage(imagePath: String) { mProcessingDialog = WaitingDialogFragment.newInstance("图片上传中...", false) mProcessingDialog?.show(requireActivity().supportFragmentManager, WaitingDialogFragment::class.java.name) - UploadImageUtils.uploadImage(UploadImageUtils.UploadType.poster, imagePath, object : UploadImageUtils.OnUploadImageListener { - override fun onSuccess(imageUrl: String) { - mProcessingDialog?.dismiss() - mLocalVideoList[mVideoSelectorAdapter.selectPosition].poster = imageUrl - mBinding.videoView.updateThumb(imageUrl) - } + UploadImageUtils.uploadImage( + UploadImageUtils.UploadType.poster, + imagePath, + object : UploadImageUtils.OnUploadImageListener { + override fun onSuccess(imageUrl: String) { + mProcessingDialog?.dismiss() + mLocalVideoList[mVideoSelectorAdapter.selectPosition].poster = imageUrl + mBinding.videoView.updateThumb(imageUrl) + } - override fun onError(e: Throwable?) { - mProcessingDialog?.dismiss() - ToastUtils.showToast("上传失败") - } + override fun onError(e: Throwable?) { + mProcessingDialog?.dismiss() + ToastUtils.showToast("上传失败") + } - override fun onProgress(total: Long, progress: Long) {} - }) + override fun onProgress(total: Long, progress: Long) {} + }) } private fun initVideo(entity: LocalVideoEntity) { GSYVideoOptionBuilder() - .setIsTouchWiget(false) - .setUrl(entity.filePath) - .setRotateViewAuto(false) - .setCacheWithPlay(false) - .setRotateWithSystem(false) - .setReleaseWhenLossAudio(true) - .setLooping(false) - .setShowFullAnimation(false) - .build(mBinding.videoView) + .setIsTouchWiget(false) + .setUrl(entity.filePath) + .setRotateViewAuto(false) + .setCacheWithPlay(false) + .setRotateWithSystem(false) + .setReleaseWhenLossAudio(true) + .setLooping(false) + .setShowFullAnimation(false) + .build(mBinding.videoView) if (entity.poster.isNotEmpty()) { mBinding.videoView.updateThumb(entity.poster) } else { @@ -159,10 +164,20 @@ class PreviewVideoFragment : BaseFragment() { } } - class VideoSelectorAdapter(context: Context, val localVideoList: ArrayList, val callback: (LocalVideoEntity, Int) -> Unit) : BaseRecyclerAdapter(context) { + class VideoSelectorAdapter( + context: Context, + val localVideoList: ArrayList, + val callback: (LocalVideoEntity, Int) -> Unit + ) : BaseRecyclerAdapter(context) { var selectPosition: Int = 0 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return VideoSelectorViewHolder(ItemVideoSelectorBinding.inflate(LayoutInflater.from(mContext), parent, false)) + return VideoSelectorViewHolder( + ItemVideoSelectorBinding.inflate( + LayoutInflater.from(mContext), + parent, + false + ) + ) } override fun getItemCount(): Int = localVideoList.size @@ -183,11 +198,14 @@ class PreviewVideoFragment : BaseFragment() { private fun setPreviewBorder(view: SimpleDraweeView, isSelected: Boolean) { val params = RoundingParams() - params.setBorder(if (isSelected) R.color.black.toColor() else R.color.transparent.toColor(), if (isSelected) 1f.dip2px().toFloat() else 0f) + params.setBorder( + if (isSelected) R.color.black.toColor() else R.color.transparent.toColor(), + if (isSelected) 1f.dip2px().toFloat() else 0f + ) params.setCornersRadius(4f.dip2px().toFloat()) val build = GenericDraweeHierarchyBuilder.newInstance(mContext.resources) - .setRoundingParams(params) - .build() + .setRoundingParams(params) + .build() view.hierarchy = build } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoView.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoView.kt index 40711a9c06..229f9f21fe 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/PreviewVideoView.kt @@ -12,7 +12,8 @@ import com.gh.gamecenter.R import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer import com.shuyu.gsyvideoplayer.video.base.GSYVideoView -class PreviewVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class PreviewVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { var thumbImage: SimpleDraweeView = findViewById(R.id.thumbImage) diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/VideoAdapter.kt index be4169d298..cde3b2ea4b 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/VideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/VideoAdapter.kt @@ -22,8 +22,10 @@ import java.text.SimpleDateFormat import java.util.* @Deprecated("v5.0.0废弃") -class VideoAdapter(context: Context, - val mViewModel: OnlineVideoViewModel) : ListAdapter(context) { +class VideoAdapter( + context: Context, + val mViewModel: OnlineVideoViewModel +) : ListAdapter(context) { override fun getItemViewType(position: Int): Int { if (position == itemCount - 1) return ItemViewType.ITEM_FOOTER @@ -61,8 +63,8 @@ class VideoAdapter(context: Context, val today = format.format(Date()) if (entity.status == "pending" && today != lastHintTime) { DialogHelper.showDialog(mContext, "提示", - "当前视频正在审核中,审核通过才会显示", - "知道了", "", { setResultAndFinish(entity) }) + "当前视频正在审核中,审核通过才会显示", + "知道了", "", { setResultAndFinish(entity) }) SPUtils.setString("pending_hint_time", today) } else { setResultAndFinish(entity) diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDetailEntity.kt index f5f853f91c..1554e3a15f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDetailEntity.kt @@ -12,28 +12,29 @@ import kotlinx.parcelize.Parcelize */ @Parcelize data class AnswerDetailEntity( - @SerializedName("_id") - var id: String = "", - var content: String = "", - var time: Long = 0, - @SerializedName("publish_time") - var publishTime: Long = 0, - @SerializedName("update_time") - var updateTime: Long = 0, - var question: Questions = Questions(), - var me: MeEntity = MeEntity(), - var user: UserEntity = UserEntity(), - var vote: Int = 0, - var community: CommunityEntity = CommunityEntity(), - @SerializedName("comment_count") - var commentCount: Int = 0, - var commentable: Boolean = true, - @SerializedName("next_id") - var nextId: String = "", - var fold: Boolean? = false, - @SerializedName("is_jx") - var isHighlighted: Boolean = false, - var images: List = ArrayList(), - @SerializedName("images_info") - var imagesInfo: List = ArrayList(), - var videos: List = ArrayList()) : Parcelable \ No newline at end of file + @SerializedName("_id") + var id: String = "", + var content: String = "", + var time: Long = 0, + @SerializedName("publish_time") + var publishTime: Long = 0, + @SerializedName("update_time") + var updateTime: Long = 0, + var question: Questions = Questions(), + var me: MeEntity = MeEntity(), + var user: UserEntity = UserEntity(), + var vote: Int = 0, + var community: CommunityEntity = CommunityEntity(), + @SerializedName("comment_count") + var commentCount: Int = 0, + var commentable: Boolean = true, + @SerializedName("next_id") + var nextId: String = "", + var fold: Boolean? = false, + @SerializedName("is_jx") + var isHighlighted: Boolean = false, + var images: List = ArrayList(), + @SerializedName("images_info") + var imagesInfo: List = ArrayList(), + var videos: List = ArrayList() +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDraftEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDraftEntity.kt index 6fe1046491..542f8f3b47 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDraftEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerDraftEntity.kt @@ -2,8 +2,10 @@ package com.gh.gamecenter.qa.entity import com.google.gson.annotations.SerializedName -data class AnswerDraftEntity(@SerializedName("_id") - var id: String = "", - val content: String = "", - @SerializedName("answer_id") - val answerId: String = "" ) \ No newline at end of file +data class AnswerDraftEntity( + @SerializedName("_id") + var id: String = "", + val content: String = "", + @SerializedName("answer_id") + val answerId: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerEntity.kt index 1db891048c..140240721a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/AnswerEntity.kt @@ -72,7 +72,7 @@ class AnswerEntity() : Parcelable { @SerializedName("community_name") var communityName: String? = null -// @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COMMENT_COUNT, SyncFieldConstants.ARTICLE_COMMENT_COUNT]) + // @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COMMENT_COUNT, SyncFieldConstants.ARTICLE_COMMENT_COUNT]) @SerializedName("comment_count") var commentCount: Int = 0 @@ -246,7 +246,13 @@ class AnswerEntity() : Parcelable { articleEntity.read = read articleEntity.me = me articleEntity.commentable = commentable - articleEntity.community = CommunityEntity(bbs.id, bbs.name, icon = bbs.game?.getIcon(), iconSubscript = bbs.game?.iconSubscript, game = bbs.game) + articleEntity.community = CommunityEntity( + bbs.id, + bbs.name, + icon = bbs.game?.getIcon(), + iconSubscript = bbs.game?.iconSubscript, + game = bbs.game + ) articleEntity.bbs = articleEntity.community articleEntity.imagesInfo = imagesInfo articleEntity.des = des diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleDraftEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleDraftEntity.kt index 0f9ec31d88..ff992af338 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleDraftEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/ArticleDraftEntity.kt @@ -7,23 +7,26 @@ import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize @Parcelize -data class ArticleDraftEntity(@SerializedName("_id") - var id: String = "", - val title: String = "", - var content: String = "", - val count: Count = Count(), - val time: Time = Time(), - @SerializedName("article_id") - val articleId: String = "", - val community: CommunityEntity = CommunityEntity(), - @SerializedName("tag_activity_id") - var tagActivityId: String? = "", - @SerializedName("tag_activity_name") - var tagActivityName: String? = "", - var type: String? = "", - var gameEntity: GameEntity? = null +data class ArticleDraftEntity( + @SerializedName("_id") + var id: String = "", + val title: String = "", + var content: String = "", + val count: Count = Count(), + val time: Time = Time(), + @SerializedName("article_id") + val articleId: String = "", + val community: CommunityEntity = CommunityEntity(), + @SerializedName("tag_activity_id") + var tagActivityId: String? = "", + @SerializedName("tag_activity_name") + var tagActivityName: String? = "", + var type: String? = "", + var gameEntity: GameEntity? = null ) : Parcelable @Parcelize -data class Time(val create: Long = 0, - val update: Long = 0) : Parcelable \ No newline at end of file +data class Time( + val create: Long = 0, + val update: Long = 0 +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/AskSubjectEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/AskSubjectEntity.kt index 344a3daa2f..616ca0e2cd 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/AskSubjectEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/AskSubjectEntity.kt @@ -6,15 +6,17 @@ import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize @Parcelize -data class AskSubjectEntity(@SerializedName("link") - var id: String? = null, - var thumb: String? = null, - var type: String? = null, - var icon: String? = null, - var title: String? = null, - var auth: Auth? = null, - var description: String? = null, - var tags: List? = null) : Parcelable { +data class AskSubjectEntity( + @SerializedName("link") + var id: String? = null, + var thumb: String? = null, + var type: String? = null, + var icon: String? = null, + var title: String? = null, + var auth: Auth? = null, + var description: String? = null, + var tags: List? = null +) : Parcelable { companion object { @JvmField val TAG = "AskSubjectEntity" diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/CommunitiesGameEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/CommunitiesGameEntity.kt index b779252285..c50f975821 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/CommunitiesGameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/CommunitiesGameEntity.kt @@ -22,7 +22,7 @@ class CommunitiesGameEntity { @SerializedName("icon_subscript") var iconSubscript: String? = null - fun getRawIconIfExisted() : String { + fun getRawIconIfExisted(): String { return rawIcon ?: icon ?: "" } diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/CommunityVideoEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/CommunityVideoEntity.kt index dff1f6f7be..4ede36383f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/CommunityVideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/CommunityVideoEntity.kt @@ -5,14 +5,15 @@ import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize @Parcelize -data class CommunityVideoEntity(val id: String = "", - val url: String = "", - val duration: String = "", - var status: String = "", // 有三种状态 pass通过,fail未通过,pending审核中 - val poster: String = "", - var width: Int = 0, - var height: Int = 0, - //本地数据 - @IgnoredOnParcel - var videoIsMuted: Boolean = false //是否静音标记 +data class CommunityVideoEntity( + val id: String = "", + val url: String = "", + val duration: String = "", + var status: String = "", // 有三种状态 pass通过,fail未通过,pending审核中 + val poster: String = "", + var width: Int = 0, + var height: Int = 0, + //本地数据 + @IgnoredOnParcel + var videoIsMuted: Boolean = false //是否静音标记 ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertDefaultEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertDefaultEntity.kt index b2a47bdb29..4446c2d016 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertDefaultEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertDefaultEntity.kt @@ -2,10 +2,12 @@ package com.gh.gamecenter.qa.entity import com.google.gson.annotations.SerializedName -data class EditorInsertDefaultEntity(@SerializedName("game_id") - val gameId: String = "", - @SerializedName("game_name") - val gameName: String = "", - @SerializedName("game_icon") - val gameIcon: String = "", - val type: String = "") \ No newline at end of file +data class EditorInsertDefaultEntity( + @SerializedName("game_id") + val gameId: String = "", + @SerializedName("game_name") + val gameName: String = "", + @SerializedName("game_icon") + val gameIcon: String = "", + val type: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertEntity.kt index 455dc8d14d..3a1bc9d851 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/EditorInsertEntity.kt @@ -65,7 +65,7 @@ data class EditorInsertEntity( } @JvmStatic - fun transform(video: MyVideoEntity):EditorInsertEntity{ + fun transform(video: MyVideoEntity): EditorInsertEntity { val entity = EditorInsertEntity() entity.id = video.id entity.type = "video" diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/InviteEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/InviteEntity.kt index 6cf4538944..ba4b84192e 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/InviteEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/InviteEntity.kt @@ -8,19 +8,23 @@ import com.google.gson.annotations.SerializedName /** * Created by khy on 17/12/17. */ -data class InviteEntity(@SerializedName("_id") - var id: String? = null, - var icon: String? = null, - var name: String? = null, - var count: Count? = null, - var me: MeEntity? = null, - var description: String? = null, - var auth: Auth? = null, - var isHeaderItem: Boolean? = false, - var headerName: String? = "", - @SerializedName("is_followers") - var isFollowers: Boolean? = false, - val badge: Badge? = null) { - data class Count(var answer: Int? = 0, - var vote: Int? = 0) +data class InviteEntity( + @SerializedName("_id") + var id: String? = null, + var icon: String? = null, + var name: String? = null, + var count: Count? = null, + var me: MeEntity? = null, + var description: String? = null, + var auth: Auth? = null, + var isHeaderItem: Boolean? = false, + var headerName: String? = "", + @SerializedName("is_followers") + var isFollowers: Boolean? = false, + val badge: Badge? = null +) { + data class Count( + var answer: Int? = 0, + var vote: Int? = 0 + ) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionDraftEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionDraftEntity.kt index a290a604a9..b6e2a9dac6 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionDraftEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionDraftEntity.kt @@ -8,24 +8,24 @@ import kotlinx.parcelize.Parcelize @Parcelize data class QuestionDraftEntity( - @SerializedName("_id") - var id: String = "", - @SerializedName("community_id") - var communityId: String = "", - var bbs: CommunityEntity? = null, - var title: String = "", - var description: String = "", - var images: ArrayList = arrayListOf(), - var videos: ArrayList = arrayListOf(), - var tags: List = arrayListOf(), - @SerializedName("question_id") - var questionId: String = "", - @SerializedName("game_id") - var gameId: String = "", - @SerializedName("tag_activity_id") - var tagActivityId: String = "", - @SerializedName("tag_activity_name") - var tagActivityName: String = "", - var type: String = "", - var gameEntity: GameEntity? = null + @SerializedName("_id") + var id: String = "", + @SerializedName("community_id") + var communityId: String = "", + var bbs: CommunityEntity? = null, + var title: String = "", + var description: String = "", + var images: ArrayList = arrayListOf(), + var videos: ArrayList = arrayListOf(), + var tags: List = arrayListOf(), + @SerializedName("question_id") + var questionId: String = "", + @SerializedName("game_id") + var gameId: String = "", + @SerializedName("tag_activity_id") + var tagActivityId: String = "", + @SerializedName("tag_activity_name") + var tagActivityName: String = "", + var type: String = "", + var gameEntity: GameEntity? = null ) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/Questions.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/Questions.kt index de4b39c69e..d8bc9701c2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/Questions.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/Questions.kt @@ -11,20 +11,22 @@ import kotlinx.parcelize.Parcelize * Created by khy on 11/12/17. */ @Parcelize -data class Questions(@SerializedName("_id") - var id: String = "", - var title: String? = "", - @SerializedName("community_name") - var communityName: String? = "", // 只在问题列表有效 - @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COUNT]) - @SerializedName("answer_count") - var answerCount: Int = 0, - var description: String? = "", - var videos: List = arrayListOf(), - var images: ArrayList = ArrayList(), - @SerializedName("images_info") - var imagesInfo: ArrayList = ArrayList(), - val time: Long = 0, - var me: MeEntity = MeEntity(), - val count: Count = Count()) : Parcelable { +data class Questions( + @SerializedName("_id") + var id: String = "", + var title: String? = "", + @SerializedName("community_name") + var communityName: String? = "", // 只在问题列表有效 + @SyncPage(syncNames = [SyncFieldConstants.ANSWER_COUNT]) + @SerializedName("answer_count") + var answerCount: Int = 0, + var description: String? = "", + var videos: List = arrayListOf(), + var images: ArrayList = ArrayList(), + @SerializedName("images_info") + var imagesInfo: ArrayList = ArrayList(), + val time: Long = 0, + var me: MeEntity = MeEntity(), + val count: Count = Count() +) : Parcelable { } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt index 4483b43598..1ec6a32fac 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/entity/QuestionsDetailEntity.kt @@ -14,47 +14,47 @@ import kotlinx.parcelize.Parcelize @Parcelize data class QuestionsDetailEntity( - @SerializedName("_id") - var id: String? = null, - var tags: List = ArrayList(), - var title: String? = null, - @SerializedName("description", alternate = ["content"]) - var description: String? = null, - @SerializedName("related_question") - var relatedQuestion: RelatedQuestion? = null, - var images: List = ArrayList(), - @Deprecated("废弃") - @SerializedName("answer_count") - var answersCount: Int = 0, - @SerializedName("answer_fold") - var isAnswerFold: Boolean = false, - @SerializedName("bbs") - var community: CommunityEntity = CommunityEntity(), - var isExistDrafts: Boolean = false, - var videos: List = ArrayList(), - var me: MeEntity = MeEntity(), - @SerializedName("follow_count") - private var followCount: Int = 0, - var user: UserEntity = UserEntity(), - @SerializedName("game_id") - var gameId: String = "", - @SerializedName("tag_activity_id") - var tagActivityId: String = "", - @SerializedName("tag_activity_name") - var tagActivityName: String = "", - var type: String = "", - @SerializedName("game") - var gameEntity: GameEntity? = null, - var time: TimeEntity = TimeEntity(), - var count: Count = Count(), - var status: String = "pass",//pass通过,fail未通过,pending审核中 - var finish: Boolean = false, - //提交问题用 - @SerializedName("draft_id") - var draftId: String = "", - @SerializedName("images_info") - var imagesInfo: List = ArrayList(), - val source: SourceEntity? = null + @SerializedName("_id") + var id: String? = null, + var tags: List = ArrayList(), + var title: String? = null, + @SerializedName("description", alternate = ["content"]) + var description: String? = null, + @SerializedName("related_question") + var relatedQuestion: RelatedQuestion? = null, + var images: List = ArrayList(), + @Deprecated("废弃") + @SerializedName("answer_count") + var answersCount: Int = 0, + @SerializedName("answer_fold") + var isAnswerFold: Boolean = false, + @SerializedName("bbs") + var community: CommunityEntity = CommunityEntity(), + var isExistDrafts: Boolean = false, + var videos: List = ArrayList(), + var me: MeEntity = MeEntity(), + @SerializedName("follow_count") + private var followCount: Int = 0, + var user: UserEntity = UserEntity(), + @SerializedName("game_id") + var gameId: String = "", + @SerializedName("tag_activity_id") + var tagActivityId: String = "", + @SerializedName("tag_activity_name") + var tagActivityName: String = "", + var type: String = "", + @SerializedName("game") + var gameEntity: GameEntity? = null, + var time: TimeEntity = TimeEntity(), + var count: Count = Count(), + var status: String = "pass",//pass通过,fail未通过,pending审核中 + var finish: Boolean = false, + //提交问题用 + @SerializedName("draft_id") + var draftId: String = "", + @SerializedName("images_info") + var imagesInfo: List = ArrayList(), + val source: SourceEntity? = null ) : Parcelable { fun getFollowCount(): Int { @@ -69,10 +69,11 @@ data class QuestionsDetailEntity( @Parcelize data class RelatedQuestion( - @SerializedName("_id") - var id: String? = "", - var title: String? = "", - @SerializedName("answer_count") - var answerCount: Int? = 0) : Parcelable + @SerializedName("_id") + var id: String? = "", + var title: String? = "", + @SerializedName("answer_count") + var answerCount: Int? = 0 + ) : Parcelable } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/AnswerDraftViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/myqa/AnswerDraftViewHolder.kt index 7570277168..1844602215 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/AnswerDraftViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/AnswerDraftViewHolder.kt @@ -3,4 +3,4 @@ package com.gh.gamecenter.qa.myqa import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.databinding.AnswerDraftItemBinding -class AnswerDraftViewHolder(val binding: AnswerDraftItemBinding): BaseRecyclerViewHolder(binding.root) +class AnswerDraftViewHolder(val binding: AnswerDraftItemBinding) : BaseRecyclerViewHolder(binding.root) diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerFragment.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerFragment.java index 1e3bd2febe..e7307a7624 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAnswerFragment.java @@ -3,9 +3,11 @@ package com.gh.gamecenter.qa.myqa; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; + import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; + import com.gh.gamecenter.R; import com.gh.gamecenter.common.baselist.ListAdapter; import com.gh.gamecenter.common.baselist.ListFragment; diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskActivity.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskActivity.java index 9f43666f09..3446d3dce1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskActivity.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyAskActivity.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.qa.myqa; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.common.constant.EntranceConsts; diff --git a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java index 4776e783aa..a4a4dfb609 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/myqa/MyQuestionsAdapter.java @@ -61,7 +61,7 @@ public class MyQuestionsAdapter extends ListAdapter implements ISyncA switch (getItemViewType(position)) { case ItemViewType.ITEM_BODY: Questions questions = mEntityList.get(position); - ((CommunityQuestionViewHolder) holder).bindMyQuestionViewHolder(questions,mEntrance,"我的光环-我的问答-我的问题"); + ((CommunityQuestionViewHolder) holder).bindMyQuestionViewHolder(questions, mEntrance, "我的光环-我的问答-我的问题"); holder.itemView.setOnClickListener(v -> mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, questions.getId(), mEntrance, "我的光环-我的问答-我的问题"))); break; case ItemViewType.ITEM_FOOTER: diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/CommunityQuestionViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/CommunityQuestionViewHolder.kt index f3727a2ad3..1f1aaca648 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/CommunityQuestionViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/CommunityQuestionViewHolder.kt @@ -14,7 +14,8 @@ import com.gh.gamecenter.databinding.CommunityQuestionItemBinding import com.gh.gamecenter.qa.answer.edit.AnswerEditActivity import com.gh.gamecenter.qa.entity.Questions -class CommunityQuestionViewHolder(val binding: CommunityQuestionItemBinding) : BaseRecyclerViewHolder(binding.root) { +class CommunityQuestionViewHolder(val binding: CommunityQuestionItemBinding) : + BaseRecyclerViewHolder(binding.root) { fun bindQuestionViewHolder(questions: Questions, entrance: String, path: String) { bindViewHolder(questions, entrance, path) @@ -33,20 +34,24 @@ class CommunityQuestionViewHolder(val binding: CommunityQuestionItemBinding) : B } companion object { - fun bindAnswerCount(questions: Questions, - answerCountContainer: View, - answerCountTv: TextView, - entrance: String) { + fun bindAnswerCount( + questions: Questions, + answerCountContainer: View, + answerCountTv: TextView, + entrance: String + ) { if (questions.answerCount > 0) { DrawableView.setTextDrawable( - answerCountTv, - R.drawable.community_question_answer_count, - NumberUtils.transSimpleCount(questions.answerCount)) + answerCountTv, + R.drawable.community_question_answer_count, + NumberUtils.transSimpleCount(questions.answerCount) + ) } else { DrawableView.setTextDrawable( - answerCountTv, - R.drawable.community_answer_count, - "回答") + answerCountTv, + R.drawable.community_answer_count, + "回答" + ) } // 虽然很丑陋,但是没有想到其它好的办法实现:https://gitlab.ghzs.com/pm/halo-app-issues/issues/812 (7) diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftActivity.kt index e05715aff0..8316a8a4cc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftActivity.kt @@ -24,7 +24,12 @@ class QuestionDraftActivity : ToolBarActivity() { companion object { fun getIntent(context: Context): Intent { val bundle = Bundle() - return getTargetIntent(context, QuestionDraftActivity::class.java, QuestionDraftFragment::class.java, bundle) + return getTargetIntent( + context, + QuestionDraftActivity::class.java, + QuestionDraftFragment::class.java, + bundle + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftAdapter.kt index 85caa3ea06..b8f22fb0ac 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftAdapter.kt @@ -16,7 +16,11 @@ import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.databinding.CommunityQuestionDraftItemBinding import com.gh.gamecenter.qa.entity.QuestionDraftEntity -class QuestionDraftAdapter(val context: Context, val mViewModel: QuestionDraftViewModel?, private val selectCallback: (QuestionDraftEntity) -> Unit) : ListAdapter(context) { +class QuestionDraftAdapter( + val context: Context, + val mViewModel: QuestionDraftViewModel?, + private val selectCallback: (QuestionDraftEntity) -> Unit +) : ListAdapter(context) { override fun areItemsTheSame(oldItem: QuestionDraftEntity, newItem: QuestionDraftEntity): Boolean { return !TextUtils.isEmpty(oldItem.id) && oldItem.id == newItem.id @@ -53,13 +57,18 @@ class QuestionDraftAdapter(val context: Context, val mViewModel: QuestionDraftVi override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is QuestionDraftViewHolder) { val entity = mEntityList[position] - holder.binding.articleDraftTitle.text= entity.title.ifEmpty { "(缺少标题)" } + holder.binding.articleDraftTitle.text = entity.title.ifEmpty { "(缺少标题)" } if (entity.bbs != null) { holder.binding.articleDraftCommunityName.apply { text = entity.bbs?.name textSize = 11f setPadding(10f.dip2px(), 6f.dip2px(), 10f.dip2px(), 6f.dip2px()) - setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(context, R.drawable.ic_forum_label), null, null, null) + setCompoundDrawablesWithIntrinsicBounds( + ContextCompat.getDrawable( + context, + R.drawable.ic_forum_label + ), null, null, null + ) background = ContextCompat.getDrawable(context, R.drawable.bg_shape_f5_radius_999) } } else { @@ -74,9 +83,10 @@ class QuestionDraftAdapter(val context: Context, val mViewModel: QuestionDraftVi holder.binding.articleDraftDelete.setOnClickListener { DialogHelper.showDialog(mContext, "警告", "确定要删除问题草稿吗?删除之后不可恢复", - "确定", "取消", { - mViewModel?.deleteDraft(entity.id) - }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + "确定", "取消", { + mViewModel?.deleteDraft(entity.id) + }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } holder.itemView.setOnClickListener { selectCallback.invoke(entity) @@ -87,5 +97,6 @@ class QuestionDraftAdapter(val context: Context, val mViewModel: QuestionDraftVi } } - class QuestionDraftViewHolder(val binding: CommunityQuestionDraftItemBinding) : BaseRecyclerViewHolder(binding.root) + class QuestionDraftViewHolder(val binding: CommunityQuestionDraftItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftViewModel.kt index bf0c3d3865..8a6369c779 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/draft/QuestionDraftViewModel.kt @@ -13,7 +13,8 @@ import io.reactivex.Observable import okhttp3.ResponseBody import retrofit2.HttpException -class QuestionDraftViewModel(application: Application) : ListViewModel(application) { +class QuestionDraftViewModel(application: Application) : + ListViewModel(application) { val deleteDraftSuccess = MutableLiveData>() private val api = RetrofitManager.getInstance().api @@ -28,18 +29,18 @@ class QuestionDraftViewModel(application: Application) : ListViewModel(){ - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - deleteDraftSuccess.postValue(Pair(draftId, true)) - } + .compose(observableToMain()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + deleteDraftSuccess.postValue(Pair(draftId, true)) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - deleteDraftSuccess.postValue(Pair(draftId, false)) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + deleteDraftSuccess.postValue(Pair(draftId, false)) + } + }) } } \ No newline at end of file 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 45b12c5897..71b5e127fa 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 @@ -293,7 +293,11 @@ class QuestionEditActivity : BaseRichEditorActivity(), return { mViewModel.selectActivityLabelEntity = it mBinding.activityTitle.text = it?.name - mBinding.activityTitle.setTextColor(if (it != null) R.color.text_FA8500.toColor(this) else R.color.text_title.toColor(this)) + mBinding.activityTitle.setTextColor( + if (it != null) R.color.text_FA8500.toColor(this) else R.color.text_title.toColor( + this + ) + ) } } @@ -472,7 +476,7 @@ class QuestionEditActivity : BaseRichEditorActivity(), "图片正在上传中,确定取消吗?", "确定", "取消", - object :ConfirmListener{ + object : ConfirmListener { override fun onConfirm() { mViewModel.uploadImageSubscription!!.dispose() mUploadImageCancelDialog?.dismiss() 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 49bd0446f6..f14fd369fa 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 @@ -80,18 +80,18 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( */ fun getDefaultTag(isLoadOver: (() -> Unit)?) { mApi.getCommunitiesTags(communityEntity?.id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - defaultTags = response as MutableList - isLoadOver?.invoke() - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + defaultTags = response as MutableList + isLoadOver?.invoke() + } - override fun onFailure(e: HttpException?) { - isLoadOver?.invoke() - } - }) + override fun onFailure(e: HttpException?) { + isLoadOver?.invoke() + } + }) } /** @@ -214,32 +214,32 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true)) observable.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) - MtaHelper.onEvent("发表问题", "提交成功", communityEntity?.name) - val data = response?.string() ?: "" - postLiveData.postValue(Resource.success(data)) - EventBus.getDefault().post(EBReuse(QuestionEditActivity.QUESTION_POSTED_TAG)) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + MtaHelper.onEvent("发表问题", "提交成功", communityEntity?.name) + val data = response?.string() ?: "" + postLiveData.postValue(Resource.success(data)) + EventBus.getDefault().post(EBReuse(QuestionEditActivity.QUESTION_POSTED_TAG)) - if (!questionDraftEntity?.id.isNullOrEmpty()) { - EventBus.getDefault().post(EBReuse(QuestionEditActivity.QUESTION_DRAFT_CHANGE_TAG)) - } - - if (questionEntity == null) { - tryWithDefaultCatch { - EnergyBridge.postEnergyTask("post_question", JSONObject(data).optString("_id")) - } - } + if (!questionDraftEntity?.id.isNullOrEmpty()) { + EventBus.getDefault().post(EBReuse(QuestionEditActivity.QUESTION_DRAFT_CHANGE_TAG)) } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) - postLiveData.postValue(Resource.error(e)) - MtaHelper.onEvent("发表问题", "提交失败", communityEntity?.name) + if (questionEntity == null) { + tryWithDefaultCatch { + EnergyBridge.postEnergyTask("post_question", JSONObject(data).optString("_id")) + } } - }) + } + + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + postLiveData.postValue(Resource.error(e)) + MtaHelper.onEvent("发表问题", "提交失败", communityEntity?.name) + } + }) } private fun moderatorsPatchQuestion(isPatchTags: Boolean) { @@ -254,23 +254,23 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true)) val body = RequestBody.create(MediaType.parse("application/json"), bodyJson) mApi.moderatorsPatchQuestion(body, UserManager.getInstance().userId, questionEntity?.id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - if (questionEntity!!.me.moderatorPermissions.updateQuestion > Permissions.REPORTER && !isPatchTags) { - questionEntity?.title = title - questionEntity?.description = content - } - moderatorPostLiveData.postValue(Resource.success("")) - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + if (questionEntity!!.me.moderatorPermissions.updateQuestion > Permissions.REPORTER && !isPatchTags) { + questionEntity?.title = title + questionEntity?.description = content } + moderatorPostLiveData.postValue(Resource.success("")) + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + } - override fun onFailure(e: HttpException?) { - moderatorPostLiveData.postValue(Resource.error(e)) - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) - } - }) + override fun onFailure(e: HttpException?) { + moderatorPostLiveData.postValue(Resource.error(e)) + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", false)) + } + }) } @SuppressLint("CheckResult") @@ -286,34 +286,34 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( mApi.addQuestionDraft(UserManager.getInstance().userId, body) } observable - .compose(singleToMain()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val string = data.string() - if (!string.isNullOrEmpty() && questionDraftEntity?.id.isNullOrEmpty()) { - if (questionDraftEntity == null) questionDraftEntity = QuestionDraftEntity() - questionDraftEntity?.id = JSONObject(string).getString("_id") - } - postQuestionDrafts.postValue(Pair(saveType, true)) + .compose(singleToMain()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val string = data.string() + if (!string.isNullOrEmpty() && questionDraftEntity?.id.isNullOrEmpty()) { + if (questionDraftEntity == null) questionDraftEntity = QuestionDraftEntity() + questionDraftEntity?.id = JSONObject(string).getString("_id") } + postQuestionDrafts.postValue(Pair(saveType, true)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - postQuestionDrafts.postValue(Pair(saveType, false)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + postQuestionDrafts.postValue(Pair(saveType, false)) + } + }) } private fun getQuestionBody(): RequestBody { val draftEntity = QuestionDraftEntity( - communityId = communityEntity?.id ?: "", - tags = selectedTags.toList(), - title = title ?: "", - description = content ?: "", - type = type, - gameId = gameEntity?.id ?: "", - tagActivityId = selectActivityLabelEntity?.id ?: "", - tagActivityName = selectActivityLabelEntity?.name ?: "" + communityId = communityEntity?.id ?: "", + tags = selectedTags.toList(), + title = title ?: "", + description = content ?: "", + type = type, + gameId = gameEntity?.id ?: "", + tagActivityId = selectActivityLabelEntity?.id ?: "", + tagActivityName = selectActivityLabelEntity?.name ?: "" ) if (questionEntity != null) { draftEntity.questionId = questionEntity?.id ?: "" @@ -325,18 +325,18 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( fun getQuestionDraftContent(draftId: String) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", true)) mApi.getQuestionDraft(UserManager.getInstance().userId, draftId) - .compose(singleToMain()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: QuestionDraftEntity) { - questionDraftsContent.postValue(data) - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) - } + .compose(singleToMain()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: QuestionDraftEntity) { + questionDraftsContent.postValue(data) + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("加载中...", false)) + } + }) } override fun getRichType(): RichType = RichType.QUESTION 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 a6b0592f0b..bfc954484d 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 @@ -157,7 +157,12 @@ class TagsSelectFragment : BaseFragment() { }, object : ConfirmListener { override fun onConfirm() { // MtaHelper.onEvent("提交相似问题弹窗", CommunityManager.getInstance().community.name, "问题相似-去看看") - val intent = NewQuestionDetailActivity.getIntent(requireContext(), data?.questionId ?: "", mEntrance, "相似问题") + val intent = NewQuestionDetailActivity.getIntent( + requireContext(), + data?.questionId ?: "", + mEntrance, + "相似问题" + ) context?.startActivity(intent) } }) @@ -172,7 +177,12 @@ class TagsSelectFragment : BaseFragment() { object : ConfirmListener { override fun onConfirm() { // MtaHelper.onEvent("提交重复问题弹窗", CommunityManager.getInstance().community.name, "问题重复-去看看") - val intent = NewQuestionDetailActivity.getIntent(requireContext(), data?.questionId ?: "", mEntrance, "重复问题") + val intent = NewQuestionDetailActivity.getIntent( + requireContext(), + data?.questionId ?: "", + mEntrance, + "重复问题" + ) context?.startActivity(intent) } }) diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/tip/QuestionTitleTipAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/tip/QuestionTitleTipAdapter.kt index 3896ddf85e..6c06cda6b2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/tip/QuestionTitleTipAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/tip/QuestionTitleTipAdapter.kt @@ -21,7 +21,8 @@ import com.gh.gamecenter.retrofit.RetrofitManager /** * Created by khy on 3/05/18. */ -class QuestionTitleTipAdapter(private val context: Context, title: AutoCompleteTextView, communityId: String?) : BaseAdapter(), Filterable { +class QuestionTitleTipAdapter(private val context: Context, title: AutoCompleteTextView, communityId: String?) : + BaseAdapter(), Filterable { var questionList: MutableList = ArrayList() var mTitleView = title @@ -51,7 +52,10 @@ class QuestionTitleTipAdapter(private val context: Context, title: AutoCompleteT private fun replayKeyword(title: String): String { var translationKey = escapeExprSpecialWord(mSearchKey) - return if (TextUtils.isEmpty(translationKey)) title else title.replace(translationKey?.toRegex()!!, getHtmlKeyword()) + return if (TextUtils.isEmpty(translationKey)) title else title.replace( + translationKey?.toRegex()!!, + getHtmlKeyword() + ) } // 特殊符合转译 diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteAdapter.kt index b027ad9db3..c87b01ff41 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteAdapter.kt @@ -67,12 +67,24 @@ open class QuestionsInviteAdapter( when (getItemViewType(position)) { ItemViewType.ITEM_FOOTER -> { val footerViewHolder = holder as FooterViewHolder - footerViewHolder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver, R.string.invite_more_players) + footerViewHolder.initFooterViewHolder( + mIsLoading, + mIsNetworkError, + mIsOver, + R.string.invite_more_players + ) } ItemViewType.ITEM_BODY -> { val entity = mEntityList[position] (holder as QuestionsInviteViewHolder).initQuestionsInviteViewHolder(mContext, entity, mPath) - holder.itemView.setOnClickListener { DirectUtils.directToHomeActivity(mContext, entity.id, mEntrance, mPath) } + holder.itemView.setOnClickListener { + DirectUtils.directToHomeActivity( + mContext, + entity.id, + mEntrance, + mPath + ) + } } ItemViewType.ITEM_HEADER -> { val headerEntity = mEntityList[position] diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteFragment.kt index 10ff5f8df8..258ca0f86d 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/invite/QuestionsInviteFragment.kt @@ -45,7 +45,8 @@ class QuestionsInviteFragment : ListFragment { - if (mAdapter == null) mAdapter = QuestionsInviteAdapter(requireContext(), this, mEntrance, "问题详情-邀请回答") else mAdapter + if (mAdapter == null) mAdapter = + QuestionsInviteAdapter(requireContext(), this, mEntrance, "问题详情-邀请回答") else mAdapter return mAdapter!! } @@ -90,11 +92,11 @@ class QuestionsInviteFragment : ListFragment(application) { +class QuestionsInviteViewModel(application: Application, var questionId: String?, var searchKey: String?) : + ListViewModel(application) { var invite = MutableLiveData() var inviteError = MutableLiveData() @@ -38,10 +38,12 @@ class QuestionsInviteViewModel(application: Application, var questionId: String? return if (forSearch) { RetrofitManager.getInstance().api.getInviteExperts(questionId, HaloApp.getInstance().channel, page) } else { - RetrofitManager.getInstance().api.getSearchInviteExperts(questionId, - searchKey, - HaloApp.getInstance().channel, - page) + RetrofitManager.getInstance().api.getSearchInviteExperts( + questionId, + searchKey, + HaloApp.getInstance().channel, + page + ) } } @@ -59,35 +61,39 @@ class QuestionsInviteViewModel(application: Application, var questionId: String? val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) RetrofitManager.getInstance().api - .postInvite(body, questionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - invite.postValue(userId) - } + .postInvite(body, questionId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + invite.postValue(userId) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - try { - val string = e?.response()?.errorBody()?.string() - val json = JSONObject(string) - if (e?.code() == 403 && "ALREADY ANSWERED" == json.getString("detail")) { - val data = json.getJSONObject("data") - inviteError.postValue(data.getString("answer_id")) - return - } else { - ErrorHelper.handleError(getApplication(), string, false) - } - } catch (e1: Exception) { - e1.printStackTrace() + override fun onFailure(e: HttpException?) { + super.onFailure(e) + try { + val string = e?.response()?.errorBody()?.string() + val json = JSONObject(string) + if (e?.code() == 403 && "ALREADY ANSWERED" == json.getString("detail")) { + val data = json.getJSONObject("data") + inviteError.postValue(data.getString("answer_id")) + return + } else { + ErrorHelper.handleError(getApplication(), string, false) } + } catch (e1: Exception) { + e1.printStackTrace() } - }) + } + }) } - class Factory(private val mApplication: Application, private val mQuestionId: String?, private val mSearchKey: String?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mQuestionId: String?, + private val mSearchKey: String? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return QuestionsInviteViewModel(mApplication, mQuestionId, mSearchKey) as T } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt index 65dd925081..53a9fe951c 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt @@ -30,12 +30,13 @@ class NewQuestionDetailActivity : ToolBarActivity() { override fun getBusinessId(): Pair { return Pair( - targetFragment.arguments?.getString(EntranceConsts.KEY_QUESTIONS_ID) ?: "", - targetFragment.arguments?.getParcelable(EntranceConsts.KEY_COMMUNITY_DATA)?.id - ?: "") + targetFragment.arguments?.getString(EntranceConsts.KEY_QUESTIONS_ID) ?: "", + targetFragment.arguments?.getParcelable(EntranceConsts.KEY_COMMUNITY_DATA)?.id + ?: "" + ) } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt index 1ed5329fd0..a42e876567 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt @@ -15,7 +15,12 @@ import com.gh.gamecenter.databinding.ItemArticleDetailContentBinding import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity import com.gh.gamecenter.qa.comment.base.BaseCommentAdapter -class NewQuestionDetailAdapter(context: Context, var mViewModel: NewQuestionDetailViewModel, type: AdapterType, val entrance: String) : +class NewQuestionDetailAdapter( + context: Context, + var mViewModel: NewQuestionDetailViewModel, + type: AdapterType, + val entrance: String +) : BaseCommentAdapter(context, mViewModel, type, entrance) { var questionDetailVH: QuestionDetailContentViewHolder? = null @@ -37,10 +42,12 @@ class NewQuestionDetailAdapter(context: Context, var mViewModel: NewQuestionDeta ITEM_QUESTION_DETAIL -> { val isWebViewInstalled = PackageUtils.checkWebViewIsAvailable(mContext) if (isWebViewInstalled) { - val binding: ItemArticleDetailContentBinding = ItemArticleDetailContentBinding.inflate(mLayoutInflater, parent, false) + val binding: ItemArticleDetailContentBinding = + ItemArticleDetailContentBinding.inflate(mLayoutInflater, parent, false) QuestionDetailContentViewHolder(binding, mViewModel).apply { questionDetailVH = this } } else { - val binding: FragmentWebWarningBinding = FragmentWebWarningBinding.inflate(mLayoutInflater, parent, false) + val binding: FragmentWebWarningBinding = + FragmentWebWarningBinding.inflate(mLayoutInflater, parent, false) UnAvaliableWebviewViewHolder(binding) } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt index afccdb4ffe..e7a2a65521 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailFragment.kt @@ -190,7 +190,11 @@ class NewQuestionDetailFragment : } mBinding.inputContainer.bottomCommentTv.text = "回答" mBinding.inputContainer.bottomLikeTv.text = "邀请" - mBinding.inputContainer.bottomLikeIv.setImageDrawable(R.drawable.ic_question_detail_invite.toDrawable(requireContext())) + mBinding.inputContainer.bottomLikeIv.setImageDrawable( + R.drawable.ic_question_detail_invite.toDrawable( + requireContext() + ) + ) updateStartButton() mBinding.inputContainer.bottomLikeIv.setOnClickListener { mViewModel.questionDetail?.let { @@ -350,7 +354,9 @@ class NewQuestionDetailFragment : private fun updateStartButton() { mBinding.inputContainer.bottomStarIv.setImageDrawable( if (mViewModel.questionDetail?.me?.isFavorite == true) - R.drawable.ic_article_detail_stared_bottom_bar.toDrawable(requireContext()) else R.drawable.ic_article_detail_star_bottom_bar.toDrawable(requireContext()) + R.drawable.ic_article_detail_stared_bottom_bar.toDrawable(requireContext()) else R.drawable.ic_article_detail_star_bottom_bar.toDrawable( + requireContext() + ) ) mBinding.inputContainer.bottomStarTv.setTextColor( if (mViewModel.questionDetail?.me?.isFavorite == true) @@ -605,7 +611,8 @@ class NewQuestionDetailFragment : "${it.text}问题后,其中的所有回答都将被${it.text}", it.text, "取消", - { mListViewModel.moderatorsHideQuestion() }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + { mListViewModel.moderatorsHideQuestion() }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) ) NewLogUtils.logSharePanelClick( "click_delete", mViewModel.questionDetail?.user?.id diff --git a/app/src/main/java/com/gh/gamecenter/qa/subject/AskSubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/subject/AskSubjectAdapter.java index 0fd5ad9104..f4ca7eabdd 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/subject/AskSubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/subject/AskSubjectAdapter.java @@ -6,6 +6,7 @@ import android.view.ViewGroup; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; + import com.gh.gamecenter.R; import com.gh.gamecenter.common.viewholder.FooterViewHolder; import com.gh.gamecenter.common.baselist.ListAdapter; diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumTopVideoView.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumTopVideoView.kt index 9ae59a6f8b..7d568733c1 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumTopVideoView.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumTopVideoView.kt @@ -31,7 +31,8 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge import io.reactivex.disposables.Disposable import java.util.* -class ForumTopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class ForumTopVideoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private var mMuteCallback: MuteCallback private var mVolumeObserver: VolumeObserver private var mMuteDisposable: Disposable? = null @@ -43,14 +44,15 @@ class ForumTopVideoView @JvmOverloads constructor(context: Context, attrs: Attri init { post { - gestureDetector = GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { - override fun onSingleTapConfirmed(e: MotionEvent): Boolean { - if (!mChangePosition && !mChangeVolume && !mBrightness) { - onClickUiToggle(e) + gestureDetector = + GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + if (!mChangePosition && !mChangeVolume && !mBrightness) { + onClickUiToggle(e) + } + return super.onSingleTapConfirmed(e) } - return super.onSingleTapConfirmed(e) - } - }) + }) if (mIfCurrentIsFullscreen) { showBackBtn() @@ -259,7 +261,9 @@ class ForumTopVideoView @JvmOverloads constructor(context: Context, attrs: Attri } override fun isShowNetConfirm(): Boolean { - return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected(context) + return (!mOriginUrl.startsWith("file") && !mOriginUrl.startsWith("android.resource") && !CommonUtil.isWifiConnected( + context + ) && mNeedShowWifiTip) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt index 521b6d8851..bf9775f800 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt @@ -25,7 +25,8 @@ class ForumVideoDetailActivity : BaseActivity() { containerFragment = supportFragmentManager.findFragmentByTag(ForumVideoDetailFragment::class.java.name) ?: ForumVideoDetailFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment!!, ForumVideoDetailFragment::class.java.name) + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment!!, ForumVideoDetailFragment::class.java.name) .commitAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt index f198423f83..9ebcbb8d1d 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailFragment.kt @@ -466,7 +466,13 @@ class ForumVideoDetailFragment : BaseFragment_TabLayout() { } }, null ) - DownloadItemUtils.updateDownloadButton(requireContext(), mBinding.downloadBtn, gameEntity, false, PluginLocation.only_game) + DownloadItemUtils.updateDownloadButton( + requireContext(), + mBinding.downloadBtn, + gameEntity, + false, + PluginLocation.only_game + ) } private fun showMoreItemDialog() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/comment/VideoCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/comment/VideoCommentAdapter.kt index 717e799630..7acb0b7116 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/comment/VideoCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/comment/VideoCommentAdapter.kt @@ -8,8 +8,8 @@ import com.gh.gamecenter.qa.article.detail.CommentItemData import com.gh.gamecenter.qa.comment.base.BaseCommentAdapter import java.util.ArrayList -class VideoCommentAdapter(val context: Context, val mViewModel: VideoCommentViewModel, val entrance: String) - : BaseCommentAdapter(context, mViewModel, AdapterType.COMMENT, entrance) { +class VideoCommentAdapter(val context: Context, val mViewModel: VideoCommentViewModel, val entrance: String) : + BaseCommentAdapter(context, mViewModel, AdapterType.COMMENT, entrance) { override fun setListData(updateData: MutableList?) { if (updateData != null && mEntityList != null && mEntityList.size >= updateData.size) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescAdapter.kt index 8dceb0979f..5799796406 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescAdapter.kt @@ -15,7 +15,11 @@ import com.gh.gamecenter.entity.VideoDescItemEntity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailViewModel -class VideoDescAdapter(context: Context, val mVideoDetailViewModel: ForumVideoDetailViewModel, val mViewModel: VideoDescViewModel) : +class VideoDescAdapter( + context: Context, + val mVideoDetailViewModel: ForumVideoDetailViewModel, + val mViewModel: VideoDescViewModel +) : ListAdapter(context) { private var mContentIsExpand = false private var expandHeight = 0 @@ -55,7 +59,14 @@ class VideoDescAdapter(context: Context, val mVideoDetailViewModel: ForumVideoDe FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) } VIDEO_TOP_DETAIL -> { - VideoDescTopViewHolder(parent.toBinding(), mContentIsExpand, shrinkHeight, expandHeight, mVideoDetailViewModel, mViewModel) + VideoDescTopViewHolder( + parent.toBinding(), + mContentIsExpand, + shrinkHeight, + expandHeight, + mVideoDetailViewModel, + mViewModel + ) } VIDEO_RECOMMEND -> { VideoItemViewHolder(parent.toBinding()) @@ -83,7 +94,8 @@ class VideoDescAdapter(context: Context, val mVideoDetailViewModel: ForumVideoDe holder.binding.durationTv.text = TimeUtils.formatVideoDuration(recommendVideo?.length ?: 0) holder.binding.videoTitleTv.text = recommendVideo?.title holder.binding.userName.text = recommendVideo?.user?.name - holder.binding.voteAndCommentTv.text = "点赞 ${recommendVideo?.count?.vote} · 评论 ${recommendVideo?.count?.comment}" + holder.binding.voteAndCommentTv.text = + "点赞 ${recommendVideo?.count?.vote} · 评论 ${recommendVideo?.count?.comment}" holder.binding.root.setOnClickListener { recommendVideo?.let { mContext.startActivity(ForumVideoDetailActivity.getIntent(mContext, it.id, it.bbs?.id ?: "")) diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescFragment.kt index 52e5f51146..b6609c8632 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/desc/VideoDescFragment.kt @@ -27,7 +27,7 @@ class VideoDescFragment : LazyListFragment { return mAdapter ?: VideoDescAdapter(requireContext(), mVideoDetailViewModel, mListViewModel) - .apply { mAdapter = this } + .apply { mAdapter = this } } override fun getItemDecoration(): RecyclerView.ItemDecoration? = null diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt index 803eee277c..c1c48e2196 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishActivity.kt @@ -21,7 +21,7 @@ class VideoPublishActivity : ToolBarActivity() { findViewById(R.id.backBtn).setOnClickListener { onBackPressed() } } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() @@ -41,7 +41,17 @@ class VideoPublishActivity : ToolBarActivity() { entrance: String, path: String ): Intent { - return getIntent(context, communityEntity, gameEntity, activityLabel, type, disableForumSelection, false, entrance, path) + return getIntent( + context, + communityEntity, + gameEntity, + activityLabel, + type, + disableForumSelection, + false, + entrance, + path + ) } @JvmStatic diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt index 0140952b7f..a2666d035b 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/publish/VideoPublishViewModel.kt @@ -46,7 +46,12 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica val processDialog = MediatorLiveData() val postLiveData = MediatorLiveData>() - fun postVideoPosterAndContent(isDraft: Boolean, videoEntity: ForumVideoEntity, updatedPosterPath: String, videoPath: String?) { + fun postVideoPosterAndContent( + isDraft: Boolean, + videoEntity: ForumVideoEntity, + updatedPosterPath: String, + videoPath: String? + ) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传视频封面中...", true)) var videoPoster = "" val latch = ObservableUtil.latch(1, { @@ -78,7 +83,8 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica val localVideoPoster = HaloApp.getInstance().cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".jpg" try { - val bmp = ThumbnailUtils.createVideoThumbnail(videoPath ?: "", MediaStore.Images.Thumbnails.MINI_KIND) + val bmp = + ThumbnailUtils.createVideoThumbnail(videoPath ?: "", MediaStore.Images.Thumbnails.MINI_KIND) // bmp 可能为空 FileOutputStream(localVideoPoster).use { out -> bmp?.compress(Bitmap.CompressFormat.PNG, 100, out) @@ -115,8 +121,12 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica tryCatchInRelease { val retriever = MediaMetadataRetriever() retriever.setDataSource(getApplication(), Uri.fromFile(File(it))) - videoWidth = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH) ?: "") - videoHeight = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT) ?: "") + videoWidth = Integer.valueOf( + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH) ?: "" + ) + videoHeight = Integer.valueOf( + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT) ?: "" + ) retriever.release() } } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java b/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java index f9da389367..823efcd917 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java @@ -1,11 +1,13 @@ package com.gh.gamecenter.retrofit; import android.content.Context; + import com.gh.common.constant.Config; import com.gh.gamecenter.common.retrofit.BaseRetrofitManager; import com.gh.gamecenter.retrofit.service.ApiService; import com.gh.gamecenter.retrofit.service.VApiService; import com.halo.assistant.HaloApp; + import okhttp3.OkHttpClient; /** @@ -44,7 +46,9 @@ public class RetrofitManager extends BaseRetrofitManager { return mUploadApiService; } - public VApiService getVApi() { return mVApiService; } + public VApiService getVApi() { + return mVApiService; + } private static class SingletonHolder { private static final RetrofitManager INSTANCE = new RetrofitManager(); diff --git a/app/src/main/java/com/gh/gamecenter/room/AppDatabase.java b/app/src/main/java/com/gh/gamecenter/room/AppDatabase.java index cd546b68d5..4dc8543778 100644 --- a/app/src/main/java/com/gh/gamecenter/room/AppDatabase.java +++ b/app/src/main/java/com/gh/gamecenter/room/AppDatabase.java @@ -247,32 +247,32 @@ public abstract class AppDatabase extends RoomDatabase { private static class SingletonHolder { private static final AppDatabase INSTANCE = Room.databaseBuilder(HaloApp.getInstance().getApplicationContext(), AppDatabase.class, DATABASE_NAME) - .addMigrations( - MIGRATION_2_4, - MIGRATION_4_5, - MIGRATION_5_6, - MIGRATION_6_7, - MIGRATION_7_8, - MIGRATION_8_9, - MIGRATION_9_10, - MIGRATION_10_11, - MIGRATION_11_12, - MIGRATION_12_13, - MIGRATION_13_14, - MIGRATION_14_15, - MIGRATION_15_16, - MIGRATION_16_17, - MIGRATION_17_18, - MIGRATION_18_19, - MIGRATION_19_20, - MIGRATION_20_21, - MIGRATION_21_22, - MIGRATION_22_23 - ) - // 不允许主线程查询 - .allowMainThreadQueries() + .addMigrations( + MIGRATION_2_4, + MIGRATION_4_5, + MIGRATION_5_6, + MIGRATION_6_7, + MIGRATION_7_8, + MIGRATION_8_9, + MIGRATION_9_10, + MIGRATION_10_11, + MIGRATION_11_12, + MIGRATION_12_13, + MIGRATION_13_14, + MIGRATION_14_15, + MIGRATION_15_16, + MIGRATION_16_17, + MIGRATION_17_18, + MIGRATION_18_19, + MIGRATION_19_20, + MIGRATION_20_21, + MIGRATION_21_22, + MIGRATION_22_23 + ) + // 不允许主线程查询 + .allowMainThreadQueries() // // 提供db升级的策略而不是强行销毁 // .fallbackToDestructiveMigration() - .build(); + .build(); } } diff --git a/app/src/main/java/com/gh/gamecenter/room/converter/ImageInfoConverter.java b/app/src/main/java/com/gh/gamecenter/room/converter/ImageInfoConverter.java index 3db36c2cd9..f68d168619 100644 --- a/app/src/main/java/com/gh/gamecenter/room/converter/ImageInfoConverter.java +++ b/app/src/main/java/com/gh/gamecenter/room/converter/ImageInfoConverter.java @@ -3,6 +3,7 @@ package com.gh.gamecenter.room.converter; import com.gh.gamecenter.core.utils.GsonUtils; import com.gh.gamecenter.qa.entity.ImageInfo; import com.google.gson.reflect.TypeToken; + import java.lang.reflect.Type; import java.util.List; @@ -16,7 +17,8 @@ public class ImageInfoConverter { @TypeConverter public static List toList(String token) { - Type type = new TypeToken>() {}.getType(); + Type type = new TypeToken>() { + }.getType(); return GsonUtils.getGson().fromJson(token, type); } } diff --git a/app/src/main/java/com/gh/gamecenter/room/dao/SimulatorGameDao.kt b/app/src/main/java/com/gh/gamecenter/room/dao/SimulatorGameDao.kt index a22bd6b1f1..7b3304392b 100644 --- a/app/src/main/java/com/gh/gamecenter/room/dao/SimulatorGameDao.kt +++ b/app/src/main/java/com/gh/gamecenter/room/dao/SimulatorGameDao.kt @@ -17,7 +17,11 @@ interface SimulatorGameDao { fun getAllSimulatorGame(): List @Query("select * from SimulatorGameRecordEntity where simulatorType = :simulatorType and isDeleted = 0 order by isRecentlyPlayed desc limit :pageSize offset :offset") - fun getSimulatorGameWithOffset(simulatorType: String, pageSize: Int, offset: Int): Single> + fun getSimulatorGameWithOffset( + simulatorType: String, + pageSize: Int, + offset: Int + ): Single> @Query("select distinct simulator from SimulatorGameRecordEntity where isDeleted = 0 order by simulatorType desc") fun getSimulatorSingle(): Single> diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt index 1728ccfbc8..2aea6af395 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt @@ -131,7 +131,13 @@ open class SearchDefaultFragment : BaseFragment() { headTitle.textSize = 16F headActionTv.text = "清空" headActionTv.setTextColor(R.color.text_subtitleDesc.toColor(requireContext())) - headActionTv.setCompoundDrawablesWithIntrinsicBounds(VectorDrawableCompat.create(resources, R.drawable.search_history_delete, null), null, null, null) + headActionTv.setCompoundDrawablesWithIntrinsicBounds( + VectorDrawableCompat.create( + resources, + R.drawable.search_history_delete, + null + ), null, null, null + ) headActionTv.setOnClickListener { DialogHelper.showCenterWarningDialog(requireContext(), "清空记录", "确定清空历史搜索记录?", confirmClickCallback = { mSearchHistoryDao?.deleteAll() @@ -259,7 +265,8 @@ open class SearchDefaultFragment : BaseFragment() { }.root fun updateView() { - mBinding.historyHeadContainer.root.visibility = if (mViewModel?.isExistHistory == true) View.VISIBLE else View.GONE + mBinding.historyHeadContainer.root.visibility = + if (mViewModel?.isExistHistory == true) View.VISIBLE else View.GONE mBinding.historyFlex.visibility = if (mViewModel?.isExistHistory == true) View.VISIBLE else View.GONE mBinding.hotTagHeadContainer.root.layoutParams = (mBinding.hotTagHeadContainer.root.layoutParams as ConstraintLayout.LayoutParams).apply { @@ -279,9 +286,11 @@ open class SearchDefaultFragment : BaseFragment() { 0 ) } - mBinding.hotTagHeadContainer.root.visibility = if (mViewModel?.isExistHotTag == true) View.VISIBLE else View.GONE + mBinding.hotTagHeadContainer.root.visibility = + if (mViewModel?.isExistHotTag == true) View.VISIBLE else View.GONE mBinding.hotTagFlex.visibility = if (mViewModel?.isExistHotTag == true) View.VISIBLE else View.GONE - mBinding.hotHeadContainer.root.visibility = if (mViewModel?.isExistHotSearch == true) View.VISIBLE else View.GONE + mBinding.hotHeadContainer.root.visibility = + if (mViewModel?.isExistHotSearch == true) View.VISIBLE else View.GONE mBinding.hotList.visibility = if (mViewModel?.isExistHotSearch == true) View.VISIBLE else View.GONE mBinding.rankTabLayout.visibility = if (mViewModel?.isExistRankList == true) View.VISIBLE else View.GONE mBinding.rankTabIndicator.visibility = if (mViewModel?.isExistRankList == true) View.VISIBLE else View.GONE @@ -358,7 +367,8 @@ open class SearchDefaultFragment : BaseFragment() { flexCell.textSize = 12F flexCell.text = SMART_TAG_TEXT flexCell.setTextColor(Color.WHITE) - val colors = intArrayOf(R.color.text_FFB749.toColor(requireContext()), R.color.text_FF6D3C.toColor(requireContext())) + val colors = + intArrayOf(R.color.text_FFB749.toColor(requireContext()), R.color.text_FF6D3C.toColor(requireContext())) val position = floatArrayOf(0F, 1F) val linearGradient = LinearGradient( 0F, diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt index 87b0df2332..c8550be1a5 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt @@ -21,7 +21,8 @@ class SearchDefaultRankAdapter( override fun getItemCount() = mRankContent.size - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = SearchDefaultRankItemViewHolder(parent.toBinding()) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + SearchDefaultRankItemViewHolder(parent.toBinding()) override fun onBindViewHolder(holder: SearchDefaultRankItemViewHolder, position: Int) { val rank = mRankContent[position] @@ -50,12 +51,19 @@ class SearchDefaultRankAdapter( labelIv.setImageDrawable(labelIcon.toDrawable()) } root.setOnClickListener { - DirectUtils.directToLinkPage(mContext, rank.link, "游戏搜索-搜索榜单", "${mTitle}-${rank.name}", rank.exposureEvent) + DirectUtils.directToLinkPage( + mContext, + rank.link, + "游戏搜索-搜索榜单", + "${mTitle}-${rank.name}", + rank.exposureEvent + ) Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, it.windowToken) NewFlatLogUtils.logSearchClickRank(rank.name, (position + 1).toString()) } } } - inner class SearchDefaultRankItemViewHolder(val binding: SearchDefaultRankItemBinding) : BaseRecyclerViewHolder(binding.root) + inner class SearchDefaultRankItemViewHolder(val binding: SearchDefaultRankItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt index 88354bfb9a..c2a5ef9511 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt @@ -29,7 +29,8 @@ class SearchDefaultRankListAdapter( view!!.findViewById(R.id.rankContainer).run { layoutManager = LinearLayoutManager(mContext) - adapter = SearchDefaultRankAdapter(mContext, mRankList[position].title, mRankList[position].content.take(10)) + adapter = + SearchDefaultRankAdapter(mContext, mRankList[position].title, mRankList[position].content.take(10)) } return view } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt index 9ea89e5268..14e5c43065 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt @@ -130,7 +130,12 @@ class SearchGameIndexAdapter( BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() @@ -149,7 +154,10 @@ class SearchGameIndexAdapter( cornerRadius = 2F.dip2px().toFloat() if (gameEntity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameEntity.subtitleStyle?.background}")) + setStroke( + 0.5F.dip2px(), + Color.parseColor("#${gameEntity.subtitleStyle?.background}") + ) } else { shape = GradientDrawable.RECTANGLE setColor(Color.parseColor("#${gameEntity.subtitleStyle?.background}")) @@ -171,7 +179,12 @@ class SearchGameIndexAdapter( } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } binding.topDivider.goneIf(position == 0) diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt index 37f4d4977f..bf5d267123 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt @@ -102,12 +102,12 @@ class SearchGameIndexFragment : ListFragment { Util_System_Keyboard.hideSoftKeyboard(requireActivity()) LogUtils.uploadSearchGame("ask_more_func", "搜索页", mKey, SearchType.fromString(mType).toChinese()) - SuggestionActivity.startSuggestionActivity(context, SuggestType.functionSuggest, "","求功能:$mKey") + SuggestionActivity.startSuggestionActivity(context, SuggestType.functionSuggest, "", "求功能:$mKey") } R.id.reuseNoDataSkipGameTv -> { Util_System_Keyboard.hideSoftKeyboard(requireActivity()) LogUtils.uploadSearchGame("ask_more_games", "搜索页", mKey, SearchType.fromString(mType).toChinese()) - SuggestionActivity.startSuggestionActivity(context, SuggestType.gameCollect, "","求游戏:$mKey") + SuggestionActivity.startSuggestionActivity(context, SuggestType.gameCollect, "", "求游戏:$mKey") } } } @@ -141,7 +141,7 @@ class SearchGameIndexFragment : ListFragment() @@ -66,7 +72,12 @@ class SearchSubjectItemViewHolder(var binding: SearchSubjectItemBinding) : Recyc headContainer.headTitle.text = entity.name headContainer.headActionTv.text = "全部" headContainer.headActionTv.setTextColor(R.color.theme_font.toColor(context)) - headContainer.headActionTv.setCompoundDrawablesWithIntrinsicBounds(null, null, VectorDrawableCompat.create(context.resources, R.drawable.ic_home_head_arrow, null), null) + headContainer.headActionTv.setCompoundDrawablesWithIntrinsicBounds( + null, + null, + VectorDrawableCompat.create(context.resources, R.drawable.ic_home_head_arrow, null), + null + ) headContainer.headActionTv.setOnClickListener { dao?.add(key) DirectUtils.directToSubject(context, entity.columnId, entity.name, "($type-专题)") diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt index 0502860db2..07d1d37a81 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt @@ -195,7 +195,12 @@ class SearchGameResultAdapter( BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() @@ -236,7 +241,12 @@ class SearchGameResultAdapter( } ConstraintSet().apply { clone(root) - connect(R.id.game_name, ConstraintSet.END, if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, ConstraintSet.START) + connect( + R.id.game_name, + ConstraintSet.END, + if (gameEntity.serverLabel != null && !gameEntity.advanceDownload) R.id.recent_played_tag else R.id.gameSubtitleTv, + ConstraintSet.START + ) }.applyTo(root) } binding.gameItemIncluded.root.setPadding(16F.dip2px(), 16F.dip2px(), 16F.dip2px(), 16F.dip2px()) @@ -477,14 +487,26 @@ class SearchGameResultAdapter( gameEntity, holder.adapterPosition, this, - StringUtils.buildString(entrance, "+(搜索-列表[", key, "=", type, "=", (holder.adapterPosition + 1).toString(), "])"), + StringUtils.buildString( + entrance, + "+(搜索-列表[", + key, + "=", + type, + "=", + (holder.adapterPosition + 1).toString(), + "])" + ), "搜索-列表:" + gameEntity.name!!, exposureEvent, null, null, object : EmptyCallback { override fun onCallback() { - Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, binding.gameItemIncluded.downloadBtn.windowToken) + Util_System_Keyboard.hideSoftKeyboardByIBinder( + mContext, + binding.gameItemIncluded.downloadBtn.windowToken + ) if (searchMap[gameEntity.id] == null) { EventBus.getDefault().post(EBSearch("search", gameEntity.id, gameEntity.name)) diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultFragment.kt index 4d65b92cb0..cf9be29e1e 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultFragment.kt @@ -74,7 +74,8 @@ class SearchGameResultFragment : ListFragment { if (mScrollIng) return - LogUtils.uploadSearchGame("close_floating_window", "搜索页", mKey, SearchType.fromString(mType).toChinese()) + LogUtils.uploadSearchGame( + "close_floating_window", + "搜索页", + mKey, + SearchType.fromString(mType).toChinese() + ) showCloseMenuView() } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultViewModel.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultViewModel.kt index e048959fa6..319a184572 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultViewModel.kt @@ -31,7 +31,7 @@ class SearchGameResultViewModel(application: Application) : ListViewModel + .subscribe({ mutableList -> mSearchSubjects.addAll(mutableList) mSearchSubjects.forEach { itemDataList.add( @@ -90,10 +90,10 @@ class SearchGameResultViewModel(application: Application) : ListViewModel "QQ" - "wechat" -> "微信" - "weibo" -> "微博" - "douyin" -> "抖音" + "qq" -> "QQ" + "wechat" -> "微信" + "weibo" -> "微博" + "douyin" -> "抖音" // "mobile" -> "手机" - else -> "手机" - } + else -> "手机" + } } override fun onClick(v: View) { diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt b/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt index da5568eeb5..909fdb7308 100644 --- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt @@ -76,8 +76,9 @@ class BindPhoneFragment : ToolbarFragment() { } mBinding.bindPhoneSkip.goneIf(!mFromLogin) - mBinding.bindPhoneTitle.text = if (mChangePhone) requireContext().resources.getString(R.string.bind_phone_title2) - else requireContext().resources.getString(R.string.bind_phone_title1) + mBinding.bindPhoneTitle.text = + if (mChangePhone) requireContext().resources.getString(R.string.bind_phone_title2) + else requireContext().resources.getString(R.string.bind_phone_title1) mBinding.bindPhoneDesc.text = if (mChangePhone) { val phoneNum = UserManager.getInstance().userInfoEntity?.loginMobile ?: "" "当前手机号:" + phoneNum.substring(0, 3) + "******" + phoneNum.substring(9, 11) @@ -120,7 +121,10 @@ class BindPhoneFragment : ToolbarFragment() { if (phoneNum.length >= 11) { hidePhoneNum = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, 11) } - startActivityForResult(BindPhoneActivity.getBindPhoneConflictIntent(requireContext(), hidePhoneNum, user), 0) + startActivityForResult( + BindPhoneActivity.getBindPhoneConflictIntent(requireContext(), hidePhoneNum, user), + 0 + ) }) mViewModel.finishLiveData.observe(viewLifecycleOwner, Observer { isSuccess -> @@ -136,7 +140,8 @@ class BindPhoneFragment : ToolbarFragment() { } // 更新本地用户已绑定手机的信息 - val phoneNum: String = mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") + val phoneNum: String = + mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") UserManager.getInstance().userInfoEntity = UserManager.getInstance().userInfoEntity?.apply { loginMobile = phoneNum } @@ -220,7 +225,8 @@ class BindPhoneFragment : ToolbarFragment() { } R.id.bind_phone_captcha -> { - val phoneNum: String = mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") + val phoneNum: String = + mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") if (mChangePhone) { val oldPhoneNum = UserManager.getInstance().userInfoEntity?.loginMobile ?: "" mViewModel.reBindPhoneOne(oldPhoneNum, phoneNum, requireContext()) @@ -231,14 +237,19 @@ class BindPhoneFragment : ToolbarFragment() { R.id.bind_phone_btn -> { val oldPhoneNum = UserManager.getInstance().userInfoEntity?.loginMobile ?: "" - val phoneNum: String = mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") + val phoneNum: String = + mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") // 更换手机号,当输入手机号和当前手机号相同则弹出提示 if (mChangePhone && phoneNum == oldPhoneNum) { - DialogUtils.showNoticeDialog(requireContext(), null, getString(R.string.change_phone_same), object : ConfirmListener { - override fun onConfirm() { - mBinding.bindPhoneEt.setText("") - } - }) + DialogUtils.showNoticeDialog( + requireContext(), + null, + getString(R.string.change_phone_same), + object : ConfirmListener { + override fun onConfirm() { + mBinding.bindPhoneEt.setText("") + } + }) return } diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt b/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt index 68e45a60fd..6a5b27dae1 100644 --- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt @@ -40,36 +40,40 @@ class BindPhoneViewModel(application: Application) : AndroidViewModel(applicatio val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.bindPhone(1, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val body = JSONObject(data.string()) - mServiceId = body.getString("service_id") ?: "" - nextLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val body = JSONObject(data.string()) + mServiceId = body.getString("service_id") ?: "" + nextLiveData.postValue(true) + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 400150 -> phoneBoundLiveData.postValue(GsonUtils.fromJson(content.getJSONObject("detail").toString(), ConflictUserEntity::class.java)) + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 400150 -> phoneBoundLiveData.postValue( + GsonUtils.fromJson( + content.getJSONObject("detail").toString(), ConflictUserEntity::class.java + ) + ) - 403202 -> LoginUtils.captchaErrorHint(context, content) + 403202 -> LoginUtils.captchaErrorHint(context, content) - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法获取验证码,请检查你的网络状态") + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法获取验证码,请检查你的网络状态") } } - }) + } + }) } @SuppressLint("CheckResult") @@ -87,37 +91,37 @@ class BindPhoneViewModel(application: Application) : AndroidViewModel(applicatio val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.bindPhone(2, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - ToastUtils.showToast("手机号绑定成功") - finishLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + ToastUtils.showToast("手机号绑定成功") + finishLiveData.postValue(true) + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 403202 -> LoginUtils.captchaErrorHint(context, content) + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 403202 -> LoginUtils.captchaErrorHint(context, content) - 400302 -> finishLiveData.postValue(false) + 400302 -> finishLiveData.postValue(false) - 403092 -> ToastUtils.showToast("填写邀请码错误") + 403092 -> ToastUtils.showToast("填写邀请码错误") - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法完成绑定,请检查你的网络状态") + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法完成绑定,请检查你的网络状态") } } - }) + } + }) } @SuppressLint("CheckResult") @@ -131,36 +135,40 @@ class BindPhoneViewModel(application: Application) : AndroidViewModel(applicatio val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.reBindPhone(1, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val body = JSONObject(data.string()) - mServiceId = body.getString("service_id") ?: "" - nextLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val body = JSONObject(data.string()) + mServiceId = body.getString("service_id") ?: "" + nextLiveData.postValue(true) + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 400150 -> phoneBoundLiveData.postValue(GsonUtils.fromJson(content.getJSONObject("detail").toString(), ConflictUserEntity::class.java)) + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 400150 -> phoneBoundLiveData.postValue( + GsonUtils.fromJson( + content.getJSONObject("detail").toString(), ConflictUserEntity::class.java + ) + ) - 403202 -> LoginUtils.captchaErrorHint(context, content) + 403202 -> LoginUtils.captchaErrorHint(context, content) - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法获取验证码,请检查你的网络状态") + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法获取验证码,请检查你的网络状态") } } - }) + } + }) } @SuppressLint("CheckResult") @@ -179,36 +187,36 @@ class BindPhoneViewModel(application: Application) : AndroidViewModel(applicatio val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.reBindPhone(2, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - ToastUtils.showToast("手机号更换成功") - finishLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + ToastUtils.showToast("手机号更换成功") + finishLiveData.postValue(true) + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 403202 -> LoginUtils.captchaErrorHint(context, content) + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 403202 -> LoginUtils.captchaErrorHint(context, content) - 400302 -> finishLiveData.postValue(false) + 400302 -> finishLiveData.postValue(false) - 403092 -> ToastUtils.showToast("填写邀请码错误") + 403092 -> ToastUtils.showToast("填写邀请码错误") - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法完成绑定,请检查你的网络状态") + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法完成绑定,请检查你的网络状态") } } - }) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt b/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt index f15c8b3821..38f6b0434b 100644 --- a/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt @@ -29,12 +29,14 @@ class SecurityActivity : ToolBarActivity() { fun getIntent(context: Context, entrance: String, isLogoutStyle: Boolean = false): Intent { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - bundle.putString(SecurityFragment.DISPLAY_TYPE, - if (isLogoutStyle) { - SecurityFragment.DisplayType.LOGOUT.value - } else { - SecurityFragment.DisplayType.DEFAULT.value - }) + bundle.putString( + SecurityFragment.DISPLAY_TYPE, + if (isLogoutStyle) { + SecurityFragment.DisplayType.LOGOUT.value + } else { + SecurityFragment.DisplayType.DEFAULT.value + } + ) return getTargetIntent(context, SecurityActivity::class.java, SecurityFragment::class.java, bundle) } diff --git a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt b/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt index f11cd6eec2..2e712fb218 100644 --- a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt @@ -71,9 +71,15 @@ class SecurityFragment : ToolbarFragment() { textMoreTv.visibility = View.VISIBLE root.setOnClickListener { if (UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty()) { - startActivityForResult(BindPhoneActivity.getNormalIntent(requireContext(), false), INSERT_MOBILE_CODE) + startActivityForResult( + BindPhoneActivity.getNormalIntent(requireContext(), false), + INSERT_MOBILE_CODE + ) } else { - startActivityForResult(BindPhoneActivity.getNormalIntent(requireContext(), true), INSERT_MOBILE_CODE) + startActivityForResult( + BindPhoneActivity.getNormalIntent(requireContext(), true), + INSERT_MOBILE_CODE + ) } } } @@ -89,11 +95,12 @@ class SecurityFragment : ToolbarFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == INSERT_MOBILE_CODE) { - mBinding.bindPhoneItem.textMoreTv.text = if (UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty()) { - "立即绑定" - } else { - UserManager.getInstance().userInfoEntity?.loginMobile - } + mBinding.bindPhoneItem.textMoreTv.text = + if (UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty()) { + "立即绑定" + } else { + UserManager.getInstance().userInfoEntity?.loginMobile + } } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServerTestActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServerTestActivity.kt index 7ecf246f7d..611f9f2aa2 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServerTestActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServerTestActivity.kt @@ -33,7 +33,12 @@ class GameServerTestActivity : DownloadToolbarActivity() { bundle.putString(GameServersTestFragment.TEST_COLUMN_ID, id) bundle.putString(GameServersTestFragment.TEST_TITLE, title) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - return getTargetIntent(context, GameServerTestActivity::class.java, GameServersTestFragment::class.java, bundle) + return getTargetIntent( + context, + GameServerTestActivity::class.java, + GameServersTestFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt index c8a178525d..802c567c7d 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersActivity.kt @@ -54,9 +54,9 @@ class GameServersActivity : DownloadToolbarActivity() { mTabIndicatorView = findViewById(R.id.tab_indicator) mTabContainer = findViewById(R.id.tab_container) mFakeToolbarTitleTv = findViewById(R.id.toolbarTitleTv) - + savedInstanceState?.run { - if (getInt(KEY_LAST_SELECTED_POSITION) == 1) { + if (getInt(KEY_LAST_SELECTED_POSITION) == 1) { mTabContainer?.post { updateIndicatorOffset(0.999F) } @@ -84,7 +84,8 @@ class GameServersActivity : DownloadToolbarActivity() { mIndicatorParams = mTabIndicatorView?.layoutParams as RelativeLayout.LayoutParams - val mtaTabSelectedClosure = { MtaHelper.onEvent("开服表", "Tab", if (mServersTest?.isChecked == true) "开测" else "开服") } + val mtaTabSelectedClosure = + { MtaHelper.onEvent("开服表", "Tab", if (mServersTest?.isChecked == true) "开测" else "开服") } // init viewpager mFragments.add(GameServersPublishFragment()) mFragments.add(GameServersTestFragment()) @@ -133,7 +134,7 @@ class GameServersActivity : DownloadToolbarActivity() { for (childFragment in fragments) { if (childFragment is GameServersContentFragment) { childFragment.vpScrollState(state) - } else if (childFragment is GameServersTestFragment){ + } else if (childFragment is GameServersTestFragment) { childFragment.vpScrollState(state) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.kt index 82382538a6..037d9986ce 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentAdapter.kt @@ -45,7 +45,12 @@ class GameServersContentAdapter( private var mNextIsLoading = false private var mIsShowPullDownTip = false - fun submitList(updateData: ArrayList, isShowPullDownTip: Boolean, isDown: Boolean = false, downSize: Int = 0) { + fun submitList( + updateData: ArrayList, + isShowPullDownTip: Boolean, + isDown: Boolean = false, + downSize: Int = 0 + ) { mDataList = updateData mIsShowPullDownTip = isShowPullDownTip if (isDown) { diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.kt index 799449eb77..12fc3f63bd 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentFragment.kt @@ -83,7 +83,8 @@ class GameServersContentFragment : BaseFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mLlParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + mLlParams = + RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) (mBinding?.recyclerView?.itemAnimator as DefaultItemAnimator?)?.supportsChangeAnimations = false mBinding?.recyclerView?.layoutManager = LinearLayoutManager(requireContext()).apply { mLayoutManager = this } mViewModel = viewModelProvider() @@ -95,7 +96,10 @@ class GameServersContentFragment : BaseFragment() { mAdapter?.submitList(it.second, isShowPullDownTip = false, isDown = true, downSize = it.third) mBinding?.kaifuTimeContainer?.kaifuItemTime?.visibility = View.VISIBLE } else { - mAdapter?.submitList(it.second, mShowPullDownTipFlag || mBinding?.pullDownTip?.visibility == View.VISIBLE) + mAdapter?.submitList( + it.second, + mShowPullDownTipFlag || mBinding?.pullDownTip?.visibility == View.VISIBLE + ) } showPullDownTip() if (mIsRefresh) { @@ -190,7 +194,8 @@ class GameServersContentFragment : BaseFragment() { if (timeHint == null || timeHint == 0L) { val serverEntity = timeGameEntity?.serverEntity if (serverEntity != null) { - mBinding?.kaifuTimeContainer?.kaifuItemTimeTv?.text = dateFm.format(serverEntity.getTime() * 1000) + mBinding?.kaifuTimeContainer?.kaifuItemTimeTv?.text = + dateFm.format(serverEntity.getTime() * 1000) mBinding?.kaifuTimeContainer?.kaifuItemHeader?.setImageResource(R.drawable.kaifu_time_icon) mBinding?.kaifuTimeContainer?.kaifuItemTimeTv?.tag = serverEntity.getTime() } @@ -258,11 +263,15 @@ class GameServersContentFragment : BaseFragment() { if (responseHour != requestHour) { noMatchView.translationY = 0F noMatchView.visibility = View.VISIBLE - recyclerView.translationY = if (canScrollVertically) 40F.dip2px().toFloat() else -(8F.dip2px().toFloat()) + recyclerView.translationY = + if (canScrollVertically) 40F.dip2px().toFloat() else -(8F.dip2px().toFloat()) postDelayedRunnable({ tryCatchInRelease { - noMatchView.animate().translationY(-(40F.dip2px().toFloat())).setDuration(200).start() - recyclerView.animate().translationY(recyclerView.translationY - 40F.dip2px().toFloat()).setDuration(200).start() + noMatchView.animate().translationY(-(40F.dip2px().toFloat())).setDuration(200) + .start() + recyclerView.animate() + .translationY(recyclerView.translationY - 40F.dip2px().toFloat()) + .setDuration(200).start() } }, 2000) } else { @@ -357,7 +366,8 @@ class GameServersContentFragment : BaseFragment() { if ("delete" == status.status) { mViewModel?.locationMap?.get(status.packageName)?.let { for (location in it) { - mViewModel?.listLiveData?.value?.second?.safelyGetInRelease(location)?.getEntryMap()?.remove(status.platform) + mViewModel?.listLiveData?.value?.second?.safelyGetInRelease(location)?.getEntryMap() + ?.remove(status.platform) mAdapter?.notifyItemChanged(location) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentViewModel.kt index 3d83955cce..484843595b 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersContentViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersContentViewModel.kt @@ -20,8 +20,7 @@ import com.gh.gamecenter.retrofit.RetrofitManager import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -class GameServersContentViewModel(application: Application) - : AndroidViewModel(application) { +class GameServersContentViewModel(application: Application) : AndroidViewModel(application) { val locationMap: ArrayMap> = arrayMapOf() val listLiveData: MutableLiveData, Int>> = MutableLiveData() @@ -29,7 +28,8 @@ class GameServersContentViewModel(application: Application) var day: String? = null var hour: String? = null var tags: String? = null -// var type: String? = null + + // var type: String? = null // var mRealIndex = 0 var mEntrance = "" var prevId: String? = null @@ -56,37 +56,39 @@ class GameServersContentViewModel(application: Application) return } - val filterQuery = UrlFilterUtils.getFilterQuery("day", day, "hour", hour, "tag", tags, - "action", action, "prev_server_id", prevId, "next_server_id", nextId) + val filterQuery = UrlFilterUtils.getFilterQuery( + "day", day, "hour", hour, "tag", tags, + "action", action, "prev_server_id", prevId, "next_server_id", nextId + ) RetrofitManager.getInstance().api - .getGameServers(filterQuery) + .getGameServers(filterQuery) // .map(RegionSettingHelper.filterGame) // .map(ApkActiveUtils.filterMapperList) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ServerPublishEntity) { - when (action) { - null -> { - prevId = data.prevId - nextId = data.nextId - } - "down" -> prevId = data.prevId - "up" -> nextId = data.nextId - } - - if (action == "down") { - handlePrevData(data.data, action) - } else { - handleData(data.data, isRefresh, action) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ServerPublishEntity) { + when (action) { + null -> { + prevId = data.prevId + nextId = data.nextId } + "down" -> prevId = data.prevId + "up" -> nextId = data.nextId } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - loadStatusLiveData.postValue(Pair(action, LoadStatus.INIT_FAILED)) + if (action == "down") { + handlePrevData(data.data, action) + } else { + handleData(data.data, isRefresh, action) } - }) + } + + override fun onFailure(exception: Exception) { + super.onFailure(exception) + loadStatusLiveData.postValue(Pair(action, LoadStatus.INIT_FAILED)) + } + }) } fun handleData(data: List, isRefresh: Boolean, action: String?) { @@ -108,7 +110,8 @@ class GameServersContentViewModel(application: Application) // 当页面是由启动弹窗过来的第一或第二个页面的时候添加启动弹窗信息 if (mEntrance.contains(EntranceConsts.ENTRANCE_WELCOME) - && mEntrance.countOccurrences("+") <= 1) { + && mEntrance.countOccurrences("+") <= 1 + ) { entity.setWelcomeDialogInfoIfAvailable() } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersPublishFragment.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersPublishFragment.kt index f301144103..2467c6c70b 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersPublishFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersPublishFragment.kt @@ -69,10 +69,13 @@ class GameServersPublishFragment : LazyFragment() { val bundle = arguments bundle?.putString(EntranceConsts.KEY_TYPE, "开服") - mContentFragment = childFragmentManager.findFragmentByTag(GameServersContentFragment::class.java.name) as? GameServersContentFragment + mContentFragment = + childFragmentManager.findFragmentByTag(GameServersContentFragment::class.java.name) as? GameServersContentFragment ?: GameServersContentFragment() mContentFragment.arguments = bundle - childFragmentManager.beginTransaction().replace(R.id.layout_fragment_content, mContentFragment, GameServersContentFragment::class.java.name).commitAllowingStateLoss() + childFragmentManager.beginTransaction() + .replace(R.id.layout_fragment_content, mContentFragment, GameServersContentFragment::class.java.name) + .commitAllowingStateLoss() loadServerFilterTag() } @@ -80,14 +83,14 @@ class GameServersPublishFragment : LazyFragment() { @SuppressLint("CheckResult") private fun loadServerFilterTag() { RetrofitManager.getInstance().api - .serverFilterTag - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - if (mCategoryList.isEmpty()) mCategoryList.addAll(data) - } - }) + .serverFilterTag + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + if (mCategoryList.isEmpty()) mCategoryList.addAll(data) + } + }) } private fun showCategoryPopupWindow(v: CheckedTextView, callback: (String?) -> Unit) { @@ -97,9 +100,9 @@ class GameServersPublishFragment : LazyFragment() { val inflater = LayoutInflater.from(context) val layout = inflater.inflate(R.layout.popup_server_category, null) val popupWindow = PopupWindow( - layout, - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val reset = layout.findViewById(R.id.reset) @@ -122,8 +125,15 @@ class GameServersPublishFragment : LazyFragment() { label.gravity = Gravity.CENTER label.textSize = 13F label.text = name - label.background = DrawableView.getOvalSelectorStyle(R.color.background, R.color.text_e6f3ff, requireContext()) - label.setTextColor(DrawableView.getSelectorColorStyle(R.color.text_title, R.color.theme_font, requireContext())) + label.background = + DrawableView.getOvalSelectorStyle(R.color.background, R.color.text_e6f3ff, requireContext()) + label.setTextColor( + DrawableView.getSelectorColorStyle( + R.color.text_title, + R.color.theme_font, + requireContext() + ) + ) label.isSingleLine = true labelsContainer.addView(label) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { @@ -198,9 +208,9 @@ class GameServersPublishFragment : LazyFragment() { val inflater = LayoutInflater.from(v.context) val layout = inflater.inflate(R.layout.popup_server_time, null) val popupWindow = PopupWindow( - layout, - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val today = layout.findViewById(R.id.today) @@ -263,7 +273,13 @@ class GameServersPublishFragment : LazyFragment() { } today.setTextColor(DrawableView.getSelectorColorStyle(R.color.text_title, R.color.theme_font, requireContext())) - tomorrow.setTextColor(DrawableView.getSelectorColorStyle(R.color.text_title, R.color.theme_font, requireContext())) + tomorrow.setTextColor( + DrawableView.getSelectorColorStyle( + R.color.text_title, + R.color.theme_font, + requireContext() + ) + ) after.setTextColor(DrawableView.getSelectorColorStyle(R.color.text_title, R.color.theme_font, requireContext())) layout.setOnClickListener { diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestAdapter.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestAdapter.kt index bdb6b7c770..f82cde8d9d 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestAdapter.kt @@ -24,12 +24,13 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.adapter.BaseRecyclerAdapter -class GameServersTestAdapter(context: Context, - private val mViewModel: GameServersTestViewModel, - private val mScrollToTopClosure: () -> Unit, - private var mBasicExposureSource: List?, - private val mEntrance: String) - : BaseRecyclerAdapter(context), IExposable { +class GameServersTestAdapter( + context: Context, + private val mViewModel: GameServersTestViewModel, + private val mScrollToTopClosure: () -> Unit, + private var mBasicExposureSource: List?, + private val mEntrance: String +) : BaseRecyclerAdapter(context), IExposable { private var mDataList = ArrayList() private val mExposureEventArray: SparseArray = SparseArray() @@ -79,18 +80,22 @@ class GameServersTestAdapter(context: Context, val isTheLastOfTheLatestConsecutiveGame = mDataList[position].isTheLastOfTheLatestConsecutiveGame holder.itemView.setPadding( - 16F.dip2px(), - 8F.dip2px(), - 16F.dip2px(), - if (isTheLastOfTheLatestConsecutiveGame) 16F.dip2px() else 8F.dip2px()) + 16F.dip2px(), + 8F.dip2px(), + 16F.dip2px(), + if (isTheLastOfTheLatestConsecutiveGame) 16F.dip2px() else 8F.dip2px() + ) holder.bindGameItem(gameEntity, forceShowSubtitle = true) mBasicExposureSource?.let { exposureSources.addAll(it) } - exposureSources.add(ExposureSource( + exposureSources.add( + ExposureSource( "开测表详情", - getExposureSourceValue(gameEntity.testTime ?: ""))) + getExposureSourceValue(gameEntity.testTime ?: "") + ) + ) mExposureEventArray.put(position, createEvent(gameEntity, exposureSources)) initViewHolder(gameEntity, holder) @@ -112,16 +117,26 @@ class GameServersTestAdapter(context: Context, } private fun initViewHolder(gameEntity: GameEntity, viewHolder: GameItemViewHolder) { - DownloadItemUtils.setOnClickListener(mContext, - viewHolder.binding.downloadBtn, gameEntity, viewHolder.adapterPosition, this, - StringUtils.buildString(mEntrance, "+(开服表[", viewHolder.adapterPosition.toString(), "])"), - StringUtils.buildString("开服表:", gameEntity.name), - mExposureEventArray[viewHolder.adapterPosition]) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(viewHolder.binding), true, gameEntity.briefStyle) + DownloadItemUtils.setOnClickListener( + mContext, + viewHolder.binding.downloadBtn, gameEntity, viewHolder.adapterPosition, this, + StringUtils.buildString(mEntrance, "+(开服表[", viewHolder.adapterPosition.toString(), "])"), + StringUtils.buildString("开服表:", gameEntity.name), + mExposureEventArray[viewHolder.adapterPosition] + ) + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(viewHolder.binding), + true, + gameEntity.briefStyle + ) viewHolder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, gameEntity, - StringUtils.buildString(mEntrance, "+(开服表[", viewHolder.adapterPosition.toString(), "])"), - traceEvent = mExposureEventArray[viewHolder.adapterPosition]) + GameDetailActivity.startGameDetailActivity( + mContext, gameEntity, + StringUtils.buildString(mEntrance, "+(开服表[", viewHolder.adapterPosition.toString(), "])"), + traceEvent = mExposureEventArray[viewHolder.adapterPosition] + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestFragment.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestFragment.kt index 15f828c141..91c24b3c38 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestFragment.kt @@ -93,7 +93,7 @@ class GameServersTestFragment : LazyFragment() { override fun onFragmentFirstVisible() { mTestColumnId = arguments?.getString(TEST_COLUMN_ID, DEFAULT_TEST_COLUMN_ID) - ?: DEFAULT_TEST_COLUMN_ID + ?: DEFAULT_TEST_COLUMN_ID mViewModel = viewModelProviderFromParent(GameServersTestViewModel.Factory(HaloApp.getInstance(), mTestColumnId)) @@ -160,11 +160,12 @@ class GameServersTestFragment : LazyFragment() { } mAdapter = GameServersTestAdapter( - requireContext(), - mViewModel!!, - { mSubBinding?.recyclerView?.scrollToPosition(0) }, - exposureSource, - mEntrance) + requireContext(), + mViewModel!!, + { mSubBinding?.recyclerView?.scrollToPosition(0) }, + exposureSource, + mEntrance + ) logEntranceIfNeeded() @@ -194,12 +195,14 @@ class GameServersTestFragment : LazyFragment() { // 悬挂的文案 mSubBinding?.kaifuTimeContainer?.kaifuItemTime?.goneIf(firstVisiblePosition == 0) - mSubBinding?.kaifuTimeContainer?.kaifuItemTimeTv?.text = mViewModel?.getDayTextByPosition(firstVisiblePosition) + mSubBinding?.kaifuTimeContainer?.kaifuItemTimeTv?.text = + mViewModel?.getDayTextByPosition(firstVisiblePosition) // 悬挂界面移动 val lp = mSubBinding?.kaifuTimeContainer?.kaifuItemTime?.layoutParams as RelativeLayout.LayoutParams if (firstVisiblePosition != 0 - && mViewModel?.getItemAtPosition(firstVisiblePosition + 1)?.time != null) { + && mViewModel?.getItemAtPosition(firstVisiblePosition + 1)?.time != null + ) { val bottom = layoutManager.findViewByPosition(firstVisiblePosition)?.bottom ?: 0 if (bottom <= mSubBinding?.kaifuTimeContainer?.kaifuItemTime?.height ?: 0) { lp.topMargin = bottom - (mSubBinding?.kaifuTimeContainer?.kaifuItemTime?.height ?: 0) @@ -249,24 +252,24 @@ class GameServersTestFragment : LazyFragment() { mBinding?.filterView?.visibility = View.VISIBLE mBinding?.filterView?.setupFilter( - mViewModel!!.dayList, - mViewModel!!.dayList[2], - mViewModel!!.typeList, - "测试状态", - { day -> - mDay = day - mSupremeSelectedDay = day - scrollToDay(mDay ?: mViewModel!!.dayList.first()) - logTimeFilterSelectedEvent(mDay ?: mViewModel!!.dayList.first()) - }, - { name -> - mBinding?.serverStatus?.text = if (name == GameServersTestViewModel.ALL) "测试状态" else name - mType = name + mViewModel!!.dayList, + mViewModel!!.dayList[2], + mViewModel!!.typeList, + "测试状态", + { day -> + mDay = day + mSupremeSelectedDay = day + scrollToDay(mDay ?: mViewModel!!.dayList.first()) + logTimeFilterSelectedEvent(mDay ?: mViewModel!!.dayList.first()) + }, + { name -> + mBinding?.serverStatus?.text = if (name == GameServersTestViewModel.ALL) "测试状态" else name + mType = name - logTypeFilterSelectedEvent(name) - mViewModel?.updateTypeFilter(name) - }, - true + logTypeFilterSelectedEvent(name) + mViewModel?.updateTypeFilter(name) + }, + true ) mBinding?.filterView?.updateSelectedSubFilter(mViewModel!!.typeList.first()) @@ -299,13 +302,18 @@ class GameServersTestFragment : LazyFragment() { private fun scrollToDay(day: String) { val positionToScroll = mViewModel!!.getDayPositionByDayString(day) if (positionToScroll >= 0) { - (mSubBinding?.recyclerView?.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(positionToScroll, 0) + (mSubBinding?.recyclerView?.layoutManager as LinearLayoutManager).scrollToPositionWithOffset( + positionToScroll, + 0 + ) } } - private fun showServersStatusPopupWindow(v: CheckedTextView, - typeList: ArrayList, - callback: (String) -> Unit) { + private fun showServersStatusPopupWindow( + v: CheckedTextView, + typeList: ArrayList, + callback: (String) -> Unit + ) { MtaHelper.onEvent("开服表", "开测Tab", "测试状态") v.isChecked = true @@ -314,9 +322,9 @@ class GameServersTestFragment : LazyFragment() { val binding = PopupServerStatusBinding.inflate(LayoutInflater.from(context)) val layout = binding.root val popupWindow = PopupWindow( - layout, - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val tvList = arrayListOf(binding.all, binding.publishServer, binding.notDeleteServer, binding.deleteServer) @@ -355,15 +363,23 @@ class GameServersTestFragment : LazyFragment() { val binding = PopupTestTimeBinding.inflate(LayoutInflater.from(v.context)) val layout = binding.root - val popupWindow = PopupWindow(layout, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + val popupWindow = + PopupWindow(layout, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) binding.line.visibility = View.GONE - val tvList = arrayListOf(binding.previousTv, binding.yesterdayTv, binding.todayTv, binding.tomorrowTv, binding.afterTv) + val tvList = + arrayListOf(binding.previousTv, binding.yesterdayTv, binding.todayTv, binding.tomorrowTv, binding.afterTv) for ((index, tv) in tvList.withIndex()) { tv.text = dayList[index] - tv.setTextColor(DrawableView.getSelectorColorStyle(R.color.text_title, R.color.theme_font, requireContext())) + tv.setTextColor( + DrawableView.getSelectorColorStyle( + R.color.text_title, + R.color.theme_font, + requireContext() + ) + ) tv.isChecked = tv.text == v.text tv.setOnClickListener { callback.invoke(tv.text.toString()) @@ -454,10 +470,10 @@ class GameServersTestFragment : LazyFragment() { val lastPageData = PageSwitchDataHelper.popLastPageData() if (lastPageData != null) { LogUtils.logServerTestAccessEvent( - lastPageData[PageSwitchDataHelper.PAGE_BUSINESS_TYPE], - lastPageData[PageSwitchDataHelper.PAGE_BUSINESS_NAME], - mViewModel!!.testTitle, - mViewModel!!.testRemark + lastPageData[PageSwitchDataHelper.PAGE_BUSINESS_TYPE], + lastPageData[PageSwitchDataHelper.PAGE_BUSINESS_NAME], + mViewModel!!.testTitle, + mViewModel!!.testRemark ) } } @@ -469,7 +485,8 @@ class GameServersTestFragment : LazyFragment() { if (status.status == "delete") { mViewModel?.locationMap?.get(status.packageName)?.let { for (location in it) { - mViewModel?.listLiveData?.value?.safelyGetInRelease(location)?.game?.getEntryMap()?.remove(status.platform) + mViewModel?.listLiveData?.value?.safelyGetInRelease(location)?.game?.getEntryMap() + ?.remove(status.platform) mAdapter?.notifyItemChanged(location) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestViewModel.kt index 3658adf18e..39d26a3c6f 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/GameServersTestViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/GameServersTestViewModel.kt @@ -22,8 +22,8 @@ import java.text.SimpleDateFormat import java.util.* import kotlin.math.abs -class GameServersTestViewModel(application: Application, private val mColumnId: String) - : AndroidViewModel(application) { +class GameServersTestViewModel(application: Application, private val mColumnId: String) : + AndroidViewModel(application) { private var mServerTestEntity: ServerTestEntity? = null private var mTimePositionSparseArray = SparseIntArray() @@ -49,23 +49,23 @@ class GameServersTestViewModel(application: Application, private val mColumnId: fun load(filter: String = ALL) { mCurrentTypeFilter = filter RetrofitManager.getInstance().api.getGameTestServers(mColumnId, null) - .subscribeOn(Schedulers.io()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ServerTestEntity) { - testRemark = data.remark - mServerTestEntity = data - dayList[0] = "过去${data.settings.testTimeRange}天" - transformData(data, filter) - loadStatusLiveData.postValue(true) - isTestOnLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ServerTestEntity) { + testRemark = data.remark + mServerTestEntity = data + dayList[0] = "过去${data.settings.testTimeRange}天" + transformData(data, filter) + loadStatusLiveData.postValue(true) + isTestOnLiveData.postValue(true) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - loadStatusLiveData.postValue(false) - isTestOnLiveData.postValue(false) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + loadStatusLiveData.postValue(false) + isTestOnLiveData.postValue(false) + } + }) } fun updateTypeFilter(filter: String) { @@ -213,10 +213,13 @@ class GameServersTestViewModel(application: Application, private val mColumnId: game.testTime = testTimeInHumanReadableFormat game.containerId = mColumnId game.containerType = ExposureEntity.TEST_SERVER_ID - subList.add(ItemData( + subList.add( + ItemData( game = game, readableDaysOffset = readableDaysOffset, - isTheLastOfTheLatestConsecutiveGame = index == slice.gameList.lastIndex)) + isTheLastOfTheLatestConsecutiveGame = index == slice.gameList.lastIndex + ) + ) isEmptyIndeed = false } @@ -263,14 +266,15 @@ class GameServersTestViewModel(application: Application, private val mColumnId: } class ItemData( - var time: String? = null, - var game: GameEntity? = null, - var text: String? = null, - var readableDaysOffset: Int = 0, - var isTheLastOfTheLatestConsecutiveGame: Boolean = false + var time: String? = null, + var game: GameEntity? = null, + var text: String? = null, + var readableDaysOffset: Int = 0, + var isTheLastOfTheLatestConsecutiveGame: Boolean = false ) - class Factory(private val mApplication: Application, private val mColumnId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val mApplication: Application, private val mColumnId: String) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return GameServersTestViewModel(mApplication, mColumnId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuActivity.kt index 0bae436902..7538f05af9 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuActivity.kt @@ -59,9 +59,10 @@ class AddKaiFuActivity : ToolBarActivity() { // initViewModel mViewModel = ViewModelProviders.of(this).get(AddKaiFuViewModel::class.java) mViewModel?.initData( - intent.getParcelableExtra(ServerCalendarEntity.TAG) ?: ServerCalendarEntity(), - intent.getParcelableArrayListExtra(EntranceConsts.KEY_KAIFU_LIST) ?: arrayListOf(), - intent.getStringExtra(EntranceConsts.KEY_GAMEID) ?: "") + intent.getParcelableExtra(ServerCalendarEntity.TAG) ?: ServerCalendarEntity(), + intent.getParcelableArrayListExtra(EntranceConsts.KEY_KAIFU_LIST) ?: arrayListOf(), + intent.getStringExtra(EntranceConsts.KEY_GAMEID) ?: "" + ) mViewModel?.postResult?.observe(this, androidx.lifecycle.Observer { it -> if (it == null) { toast(R.string.post_failure_hint) @@ -146,23 +147,23 @@ class AddKaiFuActivity : ToolBarActivity() { startDate.time = Date(System.currentTimeMillis() - TWO_MONTH_TIME) endDate.time = Date(System.currentTimeMillis() + TWO_MONTH_TIME) val pvTime = TimePickerBuilder(this, timeSelectListener) - .setType(booleanArrayOf(true, true, true, true, true, false)) - .setCancelText("取消") - .setSubmitText("确定") - .setTitleSize(15) - .setOutSideCancelable(false) - .isCyclic(false) - .setSubmitColor(R.color.theme_font.toColor(this)) - .setCancelColor(R.color.hint.toColor(this)) - .setTitleBgColor(R.color.background_white.toColor(this)) - .setBgColor(R.color.background_white.toColor(this)) - .setDate(selectedDate) - .setRangDate(startDate, endDate) - .setLabel("年", "月", "日", "时", "分", "") - .isCenterLabel(false) - .isDialog(true) - .setContentTextSize(15) - .build() + .setType(booleanArrayOf(true, true, true, true, true, false)) + .setCancelText("取消") + .setSubmitText("确定") + .setTitleSize(15) + .setOutSideCancelable(false) + .isCyclic(false) + .setSubmitColor(R.color.theme_font.toColor(this)) + .setCancelColor(R.color.hint.toColor(this)) + .setTitleBgColor(R.color.background_white.toColor(this)) + .setBgColor(R.color.background_white.toColor(this)) + .setDate(selectedDate) + .setRangDate(startDate, endDate) + .setLabel("年", "月", "日", "时", "分", "") + .isCenterLabel(false) + .isDialog(true) + .setContentTextSize(15) + .build() val dialog = pvTime.dialog @@ -172,8 +173,10 @@ class AddKaiFuActivity : ToolBarActivity() { minuteWheelView.adapter = HaloWheelViewAdapter(mPickerMinutes) if (dialog != null) { - val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM) + val params = FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM + ) params.leftMargin = 0 params.rightMargin = 0 pvTime.dialogContainerLayout.layoutParams = params @@ -225,10 +228,12 @@ class AddKaiFuActivity : ToolBarActivity() { } companion object { - fun getIntent(context: Context, entity: ServerCalendarEntity, - kaifuList: ArrayList, - gameId: String, - selectTime: Long): Intent { + fun getIntent( + context: Context, entity: ServerCalendarEntity, + kaifuList: ArrayList, + gameId: String, + selectTime: Long + ): Intent { val intent = Intent(context, AddKaiFuActivity::class.java) intent.putExtra(ServerCalendarEntity.TAG, entity) intent.putExtra(EntranceConsts.KEY_GAMEID, gameId) diff --git a/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuViewModel.kt index b6c318852b..0cc74e0a70 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/add/AddKaiFuViewModel.kt @@ -103,7 +103,9 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application fun copyLastFirstNameToNext() { for (i in 0 until calendarList.size) { - if (i != calendarList.size - 1 && !calendarList[i].getFirstName().isNullOrEmpty() && calendarList[i + 1].getFirstName().isNullOrEmpty()) { + if (i != calendarList.size - 1 && !calendarList[i].getFirstName() + .isNullOrEmpty() && calendarList[i + 1].getFirstName().isNullOrEmpty() + ) { var firstName = calendarList[i].getFirstName().toString() if (firstName.isNotEmpty() && "+" == firstName[firstName.length - 1].toString()) { firstName = firstName.substring(0, firstName.length - 2) @@ -116,7 +118,9 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application fun copyLastFirstAndServerNameToNext() { for (i in 0 until calendarList.size) { - if (i != calendarList.size - 1 && !calendarList[i].getServerName().isNullOrEmpty() && calendarList[i + 1].getServerName().isNullOrEmpty()) { + if (i != calendarList.size - 1 && !calendarList[i].getServerName() + .isNullOrEmpty() && calendarList[i + 1].getServerName().isNullOrEmpty() + ) { var firstName = calendarList[i].getFirstName().toString() var serverName = calendarList[i].getServerName().toString() val pattern = "[0-9]+(?=[^0-9]*\$)" @@ -153,7 +157,9 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application for (i in 1 until calendarList.size) { val entity = calendarList[i] - if (entity.getTime() != 0L || !entity.getFirstName()?.trim().isNullOrEmpty() || !entity.getServerName()?.trim().isNullOrEmpty()) { + if (entity.getTime() != 0L || !entity.getFirstName()?.trim().isNullOrEmpty() || !entity.getServerName() + ?.trim().isNullOrEmpty() + ) { break } if (i == calendarList.size - 1) { @@ -188,7 +194,9 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application for (i in 1 until calendarList.size) { val entity = calendarList[i] - if (entity.getTime() == 0L || entity.getFirstName()?.trim().isNullOrEmpty() || entity.getServerName()?.trim().isNullOrEmpty()) { + if (entity.getTime() == 0L || entity.getFirstName()?.trim().isNullOrEmpty() || entity.getServerName() + ?.trim().isNullOrEmpty() + ) { entity.setNote("") break } else { @@ -224,8 +232,14 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application } } if (i == calendarList.size - 1 && !isSuccess) { - DialogHelper.showDialog(activity, "提示", "当前开服表中已经存在相同的内容,请检查修改" - , "返回修改", "", extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + DialogHelper.showDialog( + activity, + "提示", + "当前开服表中已经存在相同的内容,请检查修改", + "返回修改", + "", + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) return } } @@ -239,30 +253,37 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application toast(getApplication(), "内容为空,不能提交") return } - DialogHelper.showDialog(activity, "提示", "确定提交${postList.size}条开服信息吗?" - , "确定", "返回", { postData(postList) }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + DialogHelper.showDialog( + activity, + "提示", + "确定提交${postList.size}条开服信息吗?", + "确定", + "返回", + { postData(postList) }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } private fun postData(postList: ArrayList) { val body = RequestBody.create(MediaType.parse("application/json"), GsonUtils.toJson(postList)) RetrofitManager.getInstance().api.addKaifu(body, mGameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: List?) { - if (response != null) { - for (i in response.indices) { - postList[i].id = response[i] - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + if (response != null) { + for (i in response.indices) { + postList[i].id = response[i] } - postResult.postValue(postList) } + postResult.postValue(postList) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - postResult.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + postResult.postValue(null) + } + }) } } diff --git a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt index b51b974043..07dc7c2252 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuActivity.kt @@ -48,9 +48,9 @@ class PatchKaifuActivity : ToolBarActivity() { mBinding = ActivityKaifuPatchBinding.bind(mContentView) val entity = mViewModel?.serverEntity - mBinding?.timeTv?.text =entity?.getFormatTime("yyyy-MM-dd HH:mm") - mBinding?.nameTv?.text =entity?.getNote() - mBinding?.remarkTv?.text =entity?.remark + mBinding?.timeTv?.text = entity?.getFormatTime("yyyy-MM-dd HH:mm") + mBinding?.nameTv?.text = entity?.getNote() + mBinding?.remarkTv?.text = entity?.remark mBinding?.patchName?.setText(entity?.getNote()) mBinding?.patchRemark?.setText(entity?.remark) mBinding?.noteDelTv?.text = entity?.getNote() @@ -90,7 +90,8 @@ class PatchKaifuActivity : ToolBarActivity() { toast("内容没有变化,不能提交") return@setOnClickListener } - DialogHelper.showDialog(this, + DialogHelper.showDialog( + this, "提示", if (mBinding?.patchBtn?.isChecked!!) "确定修改开服信息吗?" else "确定删除开服信息吗?", "确定", diff --git a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuViewModel.kt index 9244eea4e6..55824f2ee5 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/patch/PatchKaifuViewModel.kt @@ -41,44 +41,44 @@ class PatchKaifuViewModel(application: Application) : AndroidViewModel(applicati apiService.deleteKaifu(gameId, serverEntity!!.id) } observable - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - val kaiFuCalendarEntity = ServerCalendarEntity() - kaiFuCalendarEntity.id = serverEntity?.id - if (isPatch) { - kaiFuCalendarEntity.setNote(patchName) - kaiFuCalendarEntity.remark = patchRemark - kaiFuCalendarEntity.setTime(serverEntity?.getTime()!!) - postResult.postValue(kaiFuCalendarEntity) - } else { - postResult.postValue(kaiFuCalendarEntity) - } - - Utils.toast(getApplication(), "提交成功") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + super.onResponse(response) + val kaiFuCalendarEntity = ServerCalendarEntity() + kaiFuCalendarEntity.id = serverEntity?.id + if (isPatch) { + kaiFuCalendarEntity.setNote(patchName) + kaiFuCalendarEntity.remark = patchRemark + kaiFuCalendarEntity.setTime(serverEntity?.getTime()!!) + postResult.postValue(kaiFuCalendarEntity) + } else { + postResult.postValue(kaiFuCalendarEntity) } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - if (e != null) { - val string = e.response().errorBody()?.string() - val objects = JSONObject(string) - val code = objects.getInt("code") - if (code == 403043) { - Utils.toast(getApplication(), "提交失败,可能由于数据没有刷新,请5-10分钟后再试") - return - } else if (code == 400001) { - val kaiFuCalendarEntity = ServerCalendarEntity() - kaiFuCalendarEntity.id = serverEntity?.id - postResult.postValue(kaiFuCalendarEntity) - Utils.toast(getApplication(), "删除成功") - return - } + Utils.toast(getApplication(), "提交成功") + } + + override fun onFailure(e: HttpException?) { + super.onFailure(e) + if (e != null) { + val string = e.response().errorBody()?.string() + val objects = JSONObject(string) + val code = objects.getInt("code") + if (code == 403043) { + Utils.toast(getApplication(), "提交失败,可能由于数据没有刷新,请5-10分钟后再试") + return + } else if (code == 400001) { + val kaiFuCalendarEntity = ServerCalendarEntity() + kaiFuCalendarEntity.id = serverEntity?.id + postResult.postValue(kaiFuCalendarEntity) + Utils.toast(getApplication(), "删除成功") + return } - Utils.toast(getApplication(), R.string.post_failure_hint) } - }) + Utils.toast(getApplication(), R.string.post_failure_hint) + } + }) } } diff --git a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt b/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt index de56cc713e..7715680fc2 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt @@ -1,4 +1,5 @@ package com.gh.gamecenter.setting + import android.content.Context import android.content.Intent import android.os.Bundle @@ -15,7 +16,12 @@ class GameDownloadSettingActivity : ToolBarActivity() { fun getIntent(context: Context, entrance: String): Intent { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - return getTargetIntent(context, GameDownloadSettingActivity::class.java, GameDownloadSettingFragment::class.java, bundle) + return getTargetIntent( + context, + GameDownloadSettingActivity::class.java, + GameDownloadSettingFragment::class.java, + bundle + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt b/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt index 914dfc6469..4d0ca72e2b 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt @@ -20,13 +20,14 @@ import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentGameDownloadSettingBinding import java.io.File -class GameDownloadSettingFragment: ToolbarFragment() { +class GameDownloadSettingFragment : ToolbarFragment() { private var mBinding: FragmentGameDownloadSettingBinding? = null override fun getLayoutId() = 0 - override fun getInflatedLayout() = FragmentGameDownloadSettingBinding.inflate(layoutInflater).apply { mBinding = this }.root + override fun getInflatedLayout() = + FragmentGameDownloadSettingBinding.inflate(layoutInflater).apply { mBinding = this }.root override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -88,7 +89,8 @@ class GameDownloadSettingFragment: ToolbarFragment() { contentTv.visibility = View.VISIBLE root.setOnClickListener { onEvent("我的光环_设置", "设置功能", "图片保存目录") - if (TextUtils.isEmpty(dirPath)) dirPath = Environment.getExternalStorageDirectory().path + "/pictures/ghzhushou" + if (TextUtils.isEmpty(dirPath)) dirPath = + Environment.getExternalStorageDirectory().path + "/pictures/ghzhushou" startFilePath(dirPath) } } diff --git a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt index 0e2912468b..6b0f3267c8 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt @@ -1,4 +1,5 @@ package com.gh.gamecenter.setting + import android.content.Context import android.content.Intent import android.os.Bundle diff --git a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt index f82c526f8d..032d7e2667 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt @@ -10,7 +10,7 @@ import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentVideoSettingBinding -class VideoSettingFragment: ToolbarFragment() { +class VideoSettingFragment : ToolbarFragment() { private var mBinding: FragmentVideoSettingBinding? = null private var mContentVideoOptionSelected = "" @@ -18,7 +18,8 @@ class VideoSettingFragment: ToolbarFragment() { override fun getLayoutId() = 0 - override fun getInflatedLayout() = FragmentVideoSettingBinding.inflate(layoutInflater).apply { mBinding = this }.root + override fun getInflatedLayout() = + FragmentVideoSettingBinding.inflate(layoutInflater).apply { mBinding = this }.root override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -106,7 +107,8 @@ class VideoSettingFragment: ToolbarFragment() { private fun initStatus() { mContentVideoOptionSelected = SPUtils.getString(SP_CONTENT_VIDEO_OPTION, VIDEO_OPTION_WIFI) ?: VIDEO_OPTION_WIFI - mHomeOrDetailVideoOptionSelected = SPUtils.getString(SP_HOME_OR_DETAIL_VIDEO_OPTION, VIDEO_OPTION_WIFI) ?: VIDEO_OPTION_WIFI + mHomeOrDetailVideoOptionSelected = + SPUtils.getString(SP_HOME_OR_DETAIL_VIDEO_OPTION, VIDEO_OPTION_WIFI) ?: VIDEO_OPTION_WIFI setContentVideoOption(mContentVideoOptionSelected) setHomeOrDetailVideoOption(mHomeOrDetailVideoOptionSelected) mBinding?.muteItem?.switchLottie?.setSwitchAnimation(SPUtils.getBoolean(SP_VIDEO_PLAY_MUTE, true)) diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt index 9e53ff6fa3..4a2085c65e 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt @@ -105,7 +105,7 @@ class SimulatorGameFragment : ToolbarFragment() { mBinding.fragmentTabContainer.goneIf(list.size == 1) mTypeAliasList.add(entity.typeAlias) mFragmentsList.add(childFragmentManager.findFragmentByTag("android:switcher:${mBinding.fragmentViewPager.id}:$index") - ?: SimulatorGameListFragment().apply { with(bundleOf(EntranceConsts.KEY_SIMULATOR to entity)) }) + ?: SimulatorGameListFragment().apply { with(bundleOf(EntranceConsts.KEY_SIMULATOR to entity)) }) } if (mBinding.fragmentViewPager.adapter != null) { @@ -120,7 +120,7 @@ class SimulatorGameFragment : ToolbarFragment() { mViewModel.simulatorGameLoadSuccess.observe(viewLifecycleOwner, Observer { AppExecutor.uiExecutor.executeWithDelay(Runnable { tryCatchInRelease { showSimulatorGuide(it) } - },500) + }, 500) }) } @@ -174,7 +174,11 @@ class SimulatorGameFragment : ToolbarFragment() { if (!isSimulatorGuide) { val binding = PopupSimulatorGuideBinding.inflate(LayoutInflater.from(requireContext()), null, false) - val popupWindow = BugFixedPopupWindow(binding.root, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT) + val popupWindow = BugFixedPopupWindow( + binding.root, + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT + ) popupWindow.apply { isTouchable = true isFocusable = true diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt index 32ca3cecdd..691bf58cfa 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt @@ -43,9 +43,11 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SimulatorEntity import com.gh.gamecenter.room.AppDatabase -class SimulatorGameListAdapter(context: Context, - var simulator: SimulatorEntity, - var fragment: SimulatorGameListFragment) : ListAdapter(context) { +class SimulatorGameListAdapter( + context: Context, + var simulator: SimulatorEntity, + var fragment: SimulatorGameListFragment +) : ListAdapter(context) { private var mCurrentOption = OPTION_MANAGER private var mShowSelectFlag = false @@ -120,13 +122,22 @@ class SimulatorGameListAdapter(context: Context, holder.binding.btnSimulator.run { if (PackageUtils.isInstalledFromAllPackage(context, simulator.apk?.packageName)) { - val versionFromInstalledApp = PackageUtils.getVersionNameByPackageName(simulator.apk?.packageName) + val versionFromInstalledApp = + PackageUtils.getVersionNameByPackageName(simulator.apk?.packageName) val shouldShowUpdate = Version(simulator.apk?.version).isHigherThan(versionFromInstalledApp) text = if (shouldShowUpdate) "更新模拟器" else "卸载模拟器" - setTextColor(if (shouldShowUpdate) R.color.theme.toColor(mContext) else R.color.text_subtitleDesc.toColor(mContext)) + setTextColor( + if (shouldShowUpdate) R.color.theme.toColor(mContext) else R.color.text_subtitleDesc.toColor( + mContext + ) + ) setOnClickListener { if (shouldShowUpdate) { - SimulatorDownloadManager.getInstance().showDownloadDialog(context, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME) + SimulatorDownloadManager.getInstance().showDownloadDialog( + context, + simulator, + SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME + ) MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${simulator.typeAlias}+更新模拟器") } else { DialogHelper.showDialog( @@ -136,12 +147,16 @@ class SimulatorGameListAdapter(context: Context, "确定", "取消", confirmClickCallback = { - PackageInstaller.uninstallForPackageName(mContext, simulator.apk?.packageName ?: "") + PackageInstaller.uninstallForPackageName( + mContext, + simulator.apk?.packageName ?: "" + ) }, uiModificationCallback = { binding -> binding.contentTv.setTextColor(R.color.text_title.toColor(mContext)) }, - extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } } } else { @@ -149,7 +164,11 @@ class SimulatorGameListAdapter(context: Context, text = "安装模拟器" setTextColor(R.color.theme.toColor(mContext)) setOnClickListener { - SimulatorDownloadManager.getInstance().showDownloadDialog(context, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME) + SimulatorDownloadManager.getInstance().showDownloadDialog( + context, + simulator, + SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME + ) MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${simulator.typeAlias}+下载模拟器") } } @@ -169,12 +188,21 @@ class SimulatorGameListAdapter(context: Context, BindingAdapters.setGameName(gameName, gameEntity, false, null) BindingAdapters.setTextSize(gameRating, if (gameEntity.commentCount > 3) 12 else 10) BindingAdapters.setGameTags(labelList, gameEntity) - gameRating.setCompoundDrawablesWithIntrinsicBounds(if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, null, null, null) + gameRating.setCompoundDrawablesWithIntrinsicBounds( + if (gameEntity.commentCount > 3) R.drawable.game_horizontal_rating.toDrawable() else null, + null, + null, + null + ) gameRating.setPadding(0, 0, if (gameEntity.commentCount > 3) 8F.dip2px() else 0, 0) gameRating.text = if (gameEntity.commentCount > 3) { if (gameEntity.star == 10.0F) "10" else gameEntity.star.toString() } else "" - gameRating.setTextColor(if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor(mContext)) + gameRating.setTextColor( + if (gameEntity.commentCount > 3) R.color.theme_font.toColor(mContext) else R.color.theme.toColor( + mContext + ) + ) gameDes.text = gameEntity.decoratedDes recommendStar.rating = gameEntity.recommendStar.toFloat() } @@ -203,32 +231,36 @@ class SimulatorGameListAdapter(context: Context, } DownloadItemUtils.setOnClickListener(mContext, - gameItemIncluded.downloadBtn, - gameEntity, - position, - this@SimulatorGameListAdapter, - "(${mEntrance})", - StringUtils.buildString(mEntrance, ":", gameEntity.name), - null, - object : EmptyCallback { - override fun onCallback() { - // 若当前点击为启动模拟器游戏,且当前item不是近期玩过的游戏(即未显示"近期玩过"标签),则将标志位mLaunchGameFlag置为true - if (gameItemIncluded.downloadBtn.text == R.string.launch.toResString() - && gameItemIncluded.recentPlayedTag.visibility == View.GONE) { - mLaunchGameFlag = true - } + gameItemIncluded.downloadBtn, + gameEntity, + position, + this@SimulatorGameListAdapter, + "(${mEntrance})", + StringUtils.buildString(mEntrance, ":", gameEntity.name), + null, + object : EmptyCallback { + override fun onCallback() { + // 若当前点击为启动模拟器游戏,且当前item不是近期玩过的游戏(即未显示"近期玩过"标签),则将标志位mLaunchGameFlag置为true + if (gameItemIncluded.downloadBtn.text == R.string.launch.toResString() + && gameItemIncluded.recentPlayedTag.visibility == View.GONE + ) { + mLaunchGameFlag = true } - }) + } + }) DownloadItemUtils.updateItem( - mContext, - gameEntity, - GameViewHolder(holder.binding.gameItemIncluded), - true + mContext, + gameEntity, + GameViewHolder(holder.binding.gameItemIncluded), + true ) optionsIv.setOnClickListener { - showSingleOptionWindow(optionsIv, gameItemIncluded.downloadBtn.text == mContext.getString(R.string.launch)) { + showSingleOptionWindow( + optionsIv, + gameItemIncluded.downloadBtn.text == mContext.getString(R.string.launch) + ) { val gameName = gameEntity.name ?: "" when (it) { "添加到桌面" -> { @@ -236,7 +268,11 @@ class SimulatorGameListAdapter(context: Context, createShortcut(gameEntity) MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${gameName}+添加到桌面") } - "游戏详情" -> GameDetailActivity.startGameDetailActivity(mContext, gameEntity.id, "(${mEntrance})") + "游戏详情" -> GameDetailActivity.startGameDetailActivity( + mContext, + gameEntity.id, + "(${mEntrance})" + ) "删除游戏" -> { MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${gameName}+删除游戏") showDeleteSingleGameDialog(gameEntity) @@ -279,7 +315,8 @@ class SimulatorGameListAdapter(context: Context, val deleteItem = contentView.findViewById(R.id.item_delete) val completeItem = contentView.findViewById(R.id.item_complete) - mPopWindow = PopupWindow(contentView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + mPopWindow = + PopupWindow(contentView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) mPopWindow.showAtLocation(fragment.requireActivity().window.decorView, Gravity.BOTTOM, 0, 0) completeItem.setOnClickListener { @@ -340,8 +377,8 @@ class SimulatorGameListAdapter(context: Context, private fun showSingleOptionWindow(view: View, isShowShortCut: Boolean, clickListener: (String) -> Unit) { val contentList = arrayListOf( - Pair("游戏详情", R.drawable.ic_simulator_game_detail), - Pair("删除游戏", R.drawable.ic_delete_game_blue) + Pair("游戏详情", R.drawable.ic_simulator_game_detail), + Pair("删除游戏", R.drawable.ic_delete_game_blue) ) if (isShowShortCut) { contentList.add(0, Pair("添加到桌面", R.drawable.ic_shortcut_simulator_blue)) @@ -349,9 +386,9 @@ class SimulatorGameListAdapter(context: Context, val inflater = LayoutInflater.from(mContext) val layout = inflater.inflate(R.layout.layout_popup_container, null) val popupWindow = BugFixedPopupWindow( - layout, - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val container = layout.findViewById(R.id.container) @@ -440,10 +477,10 @@ class SimulatorGameListAdapter(context: Context, putExtra(EntranceConsts.KEY_TO, EntranceConsts.HOST_LAUNCH_SIMULATOR_GAME) putExtra(EntranceConsts.KEY_GAME, gameEntity.toJson()) val info = ShortcutInfoCompat.Builder(mContext, gameName) - .setIcon(IconCompat.createWithBitmap(bitmap)) - .setShortLabel(gameName) - .setIntent(this) - .build() + .setIcon(IconCompat.createWithBitmap(bitmap)) + .setShortLabel(gameName) + .setIntent(this) + .build() ShortcutManagerCompat.requestPinShortcut(mContext, info, null) } } @@ -469,7 +506,8 @@ class SimulatorGameListAdapter(context: Context, } inner class SimulatorGameViewHolder(val binding: SimulatorGameItemBinding) : RecyclerView.ViewHolder(binding.root) - inner class SimulatorHeaderViewHolder(val binding: SimulatorHeaderViewBinding) : BaseRecyclerViewHolder(binding.root) + inner class SimulatorHeaderViewHolder(val binding: SimulatorHeaderViewBinding) : + BaseRecyclerViewHolder(binding.root) companion object { const val OPTION_MANAGER = 100 diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt index 561d2cf0a6..706e2e7972 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt @@ -79,11 +79,16 @@ class SimulatorGameListFragment : ListFragment(application) { +class SimulatorGameListViewModel(application: Application, var type: String) : + ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api @@ -58,13 +59,13 @@ class SimulatorGameListViewModel(application: Application, var type: String) : L mApi.getSimulatorGames(HaloApp.getInstance().gid, page, getFilter()) } else { mSimulatorGameDao.getSimulatorGameWithOffset(type, 40, (page - 1) * 40) - .map { simulatorGameList -> - val gameEntities = ArrayList() - simulatorGameList.forEach { - gameEntities.add(it.convertSimulatorGameRecordEntityToGameEntity()) - } - gameEntities + .map { simulatorGameList -> + val gameEntities = ArrayList() + simulatorGameList.forEach { + gameEntities.add(it.convertSimulatorGameRecordEntityToGameEntity()) } + gameEntities + } } } @@ -84,8 +85,10 @@ class SimulatorGameListViewModel(application: Application, var type: String) : L } - class Factory(private val mApplication: Application, - private val mType: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mType: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return SimulatorGameListViewModel(mApplication, mType) as T } diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameViewModel.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameViewModel.kt index 2147836be6..37644ca920 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameViewModel.kt @@ -42,34 +42,35 @@ class SimulatorGameViewModel(application: Application) : AndroidViewModel(applic val simulatorsSingle = api.simulators val deviceSimulatorTypesSingle = api.getDeviceSimulatorTypes(HaloApp.getInstance().gid) Single.merge(simulatorsSingle, deviceSimulatorTypesSingle) - .subscribeOn(Schedulers.io()) - .observeOn(Schedulers.io()) - .subscribe({ - val localSimulatorList: List = AppDatabase.getInstance().simulatorGameDao().getSimulatorList() + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe({ + val localSimulatorList: List = + AppDatabase.getInstance().simulatorGameDao().getSimulatorList() - if (it.isNotEmpty()) { - when (it[0]) { - is SimulatorEntity -> mSimulatorsList = it as List + if (it.isNotEmpty()) { + when (it[0]) { + is SimulatorEntity -> mSimulatorsList = it as List - is String -> { - mTypeList = it as List - // 若服务端的列表 type 与本地已有 type 的数量不一样时同步本地数据到服务端 - if (localSimulatorList.size != mTypeList?.size) { - SimulatorGameManager.recordDownloadSimulatorGames() - } + is String -> { + mTypeList = it as List + // 若服务端的列表 type 与本地已有 type 的数量不一样时同步本地数据到服务端 + if (localSimulatorList.size != mTypeList?.size) { + SimulatorGameManager.recordDownloadSimulatorGames() } } } - }, { - simulators.postValue(mResultSimulatorsList) - }, { - if (mSimulatorsList != null && mTypeList != null) { - mSimulatorsList?.forEach { - if (mTypeList!!.contains(it.type)) mResultSimulatorsList.add(it) - } + } + }, { + simulators.postValue(mResultSimulatorsList) + }, { + if (mSimulatorsList != null && mTypeList != null) { + mSimulatorsList?.forEach { + if (mTypeList!!.contains(it.type)) mResultSimulatorsList.add(it) } - simulators.postValue(mResultSimulatorsList) - }) + } + simulators.postValue(mResultSimulatorsList) + }) } fun hideSpecificSimulatorTypeFromMemory(type: String) { @@ -80,12 +81,12 @@ class SimulatorGameViewModel(application: Application) : AndroidViewModel(applic @SuppressLint("CheckResult") private fun getSimulatorsFromLocal() { mSimulatorGameDao.getSimulatorSingle() - .compose(singleToMain()) - .subscribe({ - simulators.postValue(it) - }, { - simulators.postValue(mResultSimulatorsList) - it.printStackTrace() - }) + .compose(singleToMain()) + .subscribe({ + simulators.postValue(it) + }, { + simulators.postValue(mResultSimulatorsList) + it.printStackTrace() + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementActivity.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementActivity.kt index 06bd0a4d6d..de2b175b71 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementActivity.kt @@ -25,7 +25,11 @@ class SimulatorManagementActivity : ToolBarActivity() { companion object { @JvmStatic fun getIntent(context: Context): Intent { - return getTargetIntent(context, SimulatorManagementActivity::class.java, SimulatorManagementFragment::class.java) + return getTargetIntent( + context, + SimulatorManagementActivity::class.java, + SimulatorManagementFragment::class.java + ) } } diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementAdapter.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementAdapter.kt index 0327c699e1..22367a63cf 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementAdapter.kt @@ -22,8 +22,10 @@ import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.databinding.SimulatorItemBinding import com.gh.gamecenter.entity.SimulatorEntity -class SimulatorManagementAdapter(context: Context, - var fragment: SimulatorManagementFragment) : ListAdapter(context) { +class SimulatorManagementAdapter( + context: Context, + var fragment: SimulatorManagementFragment +) : ListAdapter(context) { private var mSingleSelectedPosition = -1 private var mSingleSelectFlag = false @@ -55,10 +57,15 @@ class SimulatorManagementAdapter(context: Context, var shouldShowUpdate = false if (isInstalled) { - val versionFromInstalledApp = PackageUtils.getVersionNameByPackageName(simulator.apk?.packageName) + val versionFromInstalledApp = + PackageUtils.getVersionNameByPackageName(simulator.apk?.packageName) shouldShowUpdate = Version(simulator.apk?.version).isHigherThan(versionFromInstalledApp) text = if (shouldShowUpdate) "更新" else "已安装" - setTextColor(if (shouldShowUpdate) R.color.theme.toColor(mContext) else R.color.text_subtitleDesc.toColor(mContext)) + setTextColor( + if (shouldShowUpdate) R.color.theme.toColor(mContext) else R.color.text_subtitleDesc.toColor( + mContext + ) + ) } else { text = "安装" setTextColor(R.color.theme.toColor(mContext)) @@ -67,34 +74,46 @@ class SimulatorManagementAdapter(context: Context, setOnClickListener { if (isInstalled) { if (shouldShowUpdate) { - SimulatorDownloadManager.getInstance().showDownloadDialog(context, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_MANAGE) + SimulatorDownloadManager.getInstance().showDownloadDialog( + context, + simulator, + SimulatorDownloadManager.SimulatorLocation.SIMULATOR_MANAGE + ) } else { holder.itemView.performClick() } } else { - SimulatorDownloadManager.getInstance().showDownloadDialog(mContext, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_MANAGE) + SimulatorDownloadManager.getInstance().showDownloadDialog( + mContext, + simulator, + SimulatorDownloadManager.SimulatorLocation.SIMULATOR_MANAGE + ) } } } holder.binding.selectIv.run { goneIf(!mShowSelectFlag) - setImageResource(when { - mSelectList[position] && isInstalled -> R.drawable.ic_simulator_selected + setImageResource( + when { + mSelectList[position] && isInstalled -> R.drawable.ic_simulator_selected - !mSelectList[position] && isInstalled -> R.drawable.ic_simulator_unselect + !mSelectList[position] && isInstalled -> R.drawable.ic_simulator_unselect - else -> { - mSelectList[position] = false - R.drawable.ic_simulator_unable + else -> { + mSelectList[position] = false + R.drawable.ic_simulator_unable + } } - }) + ) setOnClickListener { if (isInstalled) { - setImageResource(if (mSelectList[position]) - R.drawable.ic_simulator_unselect - else - R.drawable.ic_simulator_selected) + setImageResource( + if (mSelectList[position]) + R.drawable.ic_simulator_unselect + else + R.drawable.ic_simulator_selected + ) mSelectList[position] = !mSelectList[position] } } @@ -129,7 +148,8 @@ class SimulatorManagementAdapter(context: Context, contentView.isFocusableInTouchMode = true val unInstallBtn = contentView.findViewById(R.id.unInstallBtn) - mPopWindow = PopupWindow(contentView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + mPopWindow = + PopupWindow(contentView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) mPopWindow?.showAtLocation(fragment.requireActivity().window.decorView, Gravity.BOTTOM, 0, 0) unInstallBtn.setOnClickListener { @@ -146,7 +166,8 @@ class SimulatorManagementAdapter(context: Context, uiModificationCallback = { binding -> binding.contentTv.setTextColor(R.color.text_title.toColor(mContext)) }, - extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)) + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) } } } @@ -217,5 +238,6 @@ class SimulatorManagementAdapter(context: Context, } } - inner class SimulatorManagementViewHolder(val binding: SimulatorItemBinding) : BaseRecyclerViewHolder(binding.root) + inner class SimulatorManagementViewHolder(val binding: SimulatorItemBinding) : + BaseRecyclerViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementFragment.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementFragment.kt index dba89ceb7b..75afdde495 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementFragment.kt @@ -31,7 +31,8 @@ class SimulatorManagementFragment : ListFragment() diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementViewModel.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementViewModel.kt index 0d405d5fb2..a899c512c0 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorManagementViewModel.kt @@ -13,7 +13,8 @@ import com.halo.assistant.HaloApp import io.reactivex.Observable import io.reactivex.Single -class SimulatorManagementViewModel(application: Application) : ListViewModel(application) { +class SimulatorManagementViewModel(application: Application) : + ListViewModel(application) { private val mApi = RetrofitManager.getInstance().api @@ -43,12 +44,15 @@ class SimulatorManagementViewModel(application: Application) : ListViewModel> { return Single.create> { emitter -> val simulatorEntityList = ArrayList() - val allInstalledPackages = PackageUtils.getInstalledPackages(HaloApp.getInstance().application, PackageManager.GET_ACTIVITIES) + val allInstalledPackages = + PackageUtils.getInstalledPackages(HaloApp.getInstance().application, PackageManager.GET_ACTIVITIES) allInstalledPackages.forEach { if (it.packageName.contains("com.gh")) { - val activityInfo = it.activities.find { activity -> activity.name.contains("RequestPermissionActivity") } + val activityInfo = + it.activities.find { activity -> activity.name.contains("RequestPermissionActivity") } if (activityInfo != null) { - val appName = it.applicationInfo.loadLabel(HaloApp.getInstance().application.packageManager).toString() + val appName = + it.applicationInfo.loadLabel(HaloApp.getInstance().application.packageManager).toString() val apk = ApkEntity(packageName = it.packageName, version = it.versionName) simulatorEntityList.add(SimulatorEntity(name = appName, apk = apk, active = true)) } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectActivity.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectActivity.kt index 95110507fd..e7b064e7df 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectActivity.kt @@ -19,7 +19,10 @@ class SubjectActivity : DownloadToolbarActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val factory = SubjectViewModel.Factory(HaloApp.getInstance().application, intent.getParcelableExtra(EntranceConsts.KEY_SUBJECT_DATA)) + val factory = SubjectViewModel.Factory( + HaloApp.getInstance().application, + intent.getParcelableExtra(EntranceConsts.KEY_SUBJECT_DATA) + ) updateStatusBarColor(R.color.background_white, R.color.background_white) mViewModel = ViewModelProviders.of(this, factory).get(SubjectViewModel::class.java) } @@ -55,7 +58,14 @@ class SubjectActivity : DownloadToolbarActivity() { val subjectData = SubjectData(subjectId = id, subjectName = name, isOrder = isOrder) bundle.putParcelable(EntranceConsts.KEY_SUBJECT_DATA, subjectData) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - context.startActivity(getTargetIntent(context, SubjectActivity::class.java, SubjectFragment::class.java, bundle)) + context.startActivity( + getTargetIntent( + context, + SubjectActivity::class.java, + SubjectFragment::class.java, + bundle + ) + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt index c1ed233857..efb9451c6f 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.kt @@ -82,7 +82,15 @@ class SubjectAdapter( GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) } ItemViewType.GAME_IMAGE -> { - GameImageViewHolder(GameImageItemBinding.bind(mLayoutInflater.inflate(R.layout.game_image_item, parent, false))) + GameImageViewHolder( + GameImageItemBinding.bind( + mLayoutInflater.inflate( + R.layout.game_image_item, + parent, + false + ) + ) + ) } else -> { FooterViewHolder(mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false)) @@ -238,7 +246,13 @@ class SubjectAdapter( exposureEvent ) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true, subjectData.briefStyle) + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(holder.binding), + true, + subjectData.briefStyle + ) } else if (holder is GameImageViewHolder) { val gameEntity = mEntityList[position] @@ -310,7 +324,11 @@ class SubjectAdapter( } } - private fun generateExposureEvent(gameEntity: GameEntity, subjectStyle: String, isFilterOn: Boolean): ExposureEvent { + private fun generateExposureEvent( + gameEntity: GameEntity, + subjectStyle: String, + isFilterOn: Boolean + ): ExposureEvent { val exposureSourceList = arrayListOf() if (!mViewModel.exposureSourceList.isNullOrEmpty()) { exposureSourceList.addAll(mViewModel.exposureSourceList!!) @@ -336,7 +354,8 @@ class SubjectAdapter( val filterSize = mViewModel.selectedFilterSize.text - sourceString = if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" + sourceString = + if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" } exposureSourceList.add(ExposureSource("专题详情", sourceString)) @@ -357,7 +376,8 @@ class SubjectAdapter( val filterSize = mViewModel.selectedFilterSize.text - sourceString = if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" + sourceString = + if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" } exposureSourceList.add(ExposureSource("专题详情", sourceString)) @@ -371,7 +391,8 @@ class SubjectAdapter( val filterSize = mViewModel.selectedFilterSize.text - sourceString = if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" + sourceString = + if (sourceString.isEmpty()) "$sort+$filterSize" else "$sourceString+$sort+$filterSize" if (sourceString.isNotEmpty()) { exposureSourceList.add(ExposureSource("专题详情", sourceString)) } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt index c8539d0f55..6249d6769f 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt @@ -29,7 +29,10 @@ class SubjectFragment : LazyFragment() { override fun onFragmentFirstVisible() { initMenu(R.menu.menu_download) - val factory = SubjectViewModel.Factory(HaloApp.getInstance().application, arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA)) + val factory = SubjectViewModel.Factory( + HaloApp.getInstance().application, + arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA) + ) mViewModel = ViewModelProviders.of(this, factory).get(SubjectViewModel::class.java) super.onFragmentFirstVisible() @@ -72,17 +75,17 @@ class SubjectFragment : LazyFragment() { "tile" == entity.typeEntity.layout -> { tag = SubjectTileFragment::class.java.name childFragmentManager.findFragmentByTag(tag) - ?: SubjectTileFragment() + ?: SubjectTileFragment() } "rows" == entity.typeEntity.layout -> { tag = SubjectRowsFragment::class.java.name childFragmentManager.findFragmentByTag(tag) - ?: SubjectRowsFragment() + ?: SubjectRowsFragment() } else -> { tag = SubjectTabFragment::class.java.name childFragmentManager.findFragmentByTag(tag) - ?: SubjectTabFragment() + ?: SubjectTabFragment() } } val bundle = arguments diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt index c657f7bbca..07559af9c0 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt @@ -68,20 +68,23 @@ class SubjectListFragment : LazyListFragment() override fun provideListAdapter(): SubjectAdapter { if (mAdapter == null) { - mAdapter = SubjectAdapter(requireContext(), - mListViewModel, - mSubjectViewModel, - arguments?.getString(EntranceConsts.KEY_ENTRANCE), - mIsColumnCollection) + mAdapter = SubjectAdapter( + requireContext(), + mListViewModel, + mSubjectViewModel, + arguments?.getString(EntranceConsts.KEY_ENTRANCE), + mIsColumnCollection + ) } return mAdapter as SubjectAdapter } override fun provideListViewModel(): SubjectListViewModel { val factory = SubjectListViewModel.Factory( - HaloApp.getInstance().application, - arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA)!!, - arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST)) + HaloApp.getInstance().application, + arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA)!!, + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST) + ) if (requireContext() is SubjectActivity) { requireActivity().intent.getParcelableExtra(EntranceConsts.KEY_SUBJECT_DATA)?.let { val f = SubjectViewModel.Factory(HaloApp.getInstance().application, it) @@ -94,7 +97,8 @@ class SubjectListFragment : LazyListFragment() override fun onFragmentFirstVisible() { mIsColumnCollection = arguments?.getBoolean(EntranceConsts.KEY_IS_COLUMN_COLLECTION, false) ?: false super.onFragmentFirstVisible() - (mListViewModel as SubjectListViewModel).lastPageDataMap = arguments?.get(SubjectFragment.LAST_PAGE_DATA) as? HashMap + (mListViewModel as SubjectListViewModel).lastPageDataMap = + arguments?.get(SubjectFragment.LAST_PAGE_DATA) as? HashMap mCachedView?.setBackgroundColor(R.color.background_white.toColor(requireContext())) val skeletonLayoutId = when (arguments?.getString(EntranceConsts.KEY_SUBJECT_TYPE) ?: "") { @@ -146,7 +150,8 @@ class SubjectListFragment : LazyListFragment() override fun onTitleClick() { if (mLayoutManager == null || mLayoutManager.findFirstCompletelyVisibleItemPosition() == 0 - || provideListAdapter().itemCount == 0) { + || provideListAdapter().itemCount == 0 + ) { // do nothing } else { mLayoutManager.scrollToPosition(0) diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt index 610385a23a..e48ec42648 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt @@ -21,9 +21,11 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import retrofit2.HttpException -class SubjectListViewModel(application: Application, - var subjectData: SubjectData, - var exposureSourceList: List?) : ListViewModel(application) { +class SubjectListViewModel( + application: Application, + var subjectData: SubjectData, + var exposureSourceList: List? +) : ListViewModel(application) { // 供专题类型为 rows 时统计用 var selectedLabelList = arrayListOf() @@ -35,10 +37,11 @@ class SubjectListViewModel(application: Application, override fun provideDataSingle(page: Int): Single> { return RetrofitManager.getInstance().api.getColumn( - subjectData.subjectId, - subjectData.sort, - if (subjectData.filter.isEmpty()) "type:全部" else subjectData.filter, - page) + subjectData.subjectId, + subjectData.sort, + if (subjectData.filter.isEmpty()) "type:全部" else subjectData.filter, + page + ) } override fun mergeResultLiveData() { @@ -52,13 +55,15 @@ class SubjectListViewModel(application: Application, game.subjectData = gameSubjectData if (useUpdateTagStyle) { game.tagStyle.clear() - game.tagStyle.add(TagStyleEntity( - id = "local_generated", - name = TimeUtils.getFormatTime(game.updateTime, "MM-dd") + " 更新", - color = "1383EB", - background = "E8F3FF", - column = "1383EB" - )) + game.tagStyle.add( + TagStyleEntity( + id = "local_generated", + name = TimeUtils.getFormatTime(game.updateTime, "MM-dd") + " 更新", + color = "1383EB", + background = "E8F3FF", + column = "1383EB" + ) + ) } } mResultLiveData.postValue(it) @@ -68,26 +73,26 @@ class SubjectListViewModel(application: Application, private fun updateSubjectSettingBeforeInitialLoad() { // 无论是否加载成功都回落到普通的专题列表加载 RetrofitManager.getInstance().api - .getColumnSettings(subjectData.subjectId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: SubjectSettingEntity?) { - super.onResponse(response) - subjectData.requireUpdateSetting = false - subjectData.tagType = response?.tag - subjectData.isOrder = response?.order - subjectData.briefStyle = response?.briefStyle ?: "" - subjectData.showSuffix = response?.showSuffix ?: true + .getColumnSettings(subjectData.subjectId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: SubjectSettingEntity?) { + super.onResponse(response) + subjectData.requireUpdateSetting = false + subjectData.tagType = response?.tag + subjectData.isOrder = response?.order + subjectData.briefStyle = response?.briefStyle ?: "" + subjectData.showSuffix = response?.showSuffix ?: true - loadData() - } + loadData() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - loadData() - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + loadData() + } + }) } override fun load(loadType: LoadType) { @@ -104,7 +109,11 @@ class SubjectListViewModel(application: Application, } } - class Factory(private val mApplication: Application, private val subjectData: SubjectData, private val exposureSourceList: List? = null) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val subjectData: SubjectData, + private val exposureSourceList: List? = null + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return SubjectListViewModel(mApplication, subjectData, exposureSourceList) as T } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectViewModel.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectViewModel.kt index b18ea8c702..48d5c79406 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectViewModel.kt @@ -41,55 +41,56 @@ class SubjectViewModel(application: Application, var subjectData: SubjectData?) private fun loadSubjectName() { RetrofitManager.getInstance().api - .getSubjectName(subjectData?.subjectId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : JSONObjectResponse() { - override fun onResponse(response: JSONObject) { - var name = response.getString("name") - if (!TextUtils.isEmpty(name) && !Config.isShowPlugin()) { - name = name.replace("插件", "游戏") - } - subjectData?.subjectName = name - subjectNameLD.postValue(name) - loadSubjectType() + .getSubjectName(subjectData?.subjectId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : JSONObjectResponse() { + override fun onResponse(response: JSONObject) { + var name = response.getString("name") + if (!TextUtils.isEmpty(name) && !Config.isShowPlugin()) { + name = name.replace("插件", "游戏") } + subjectData?.subjectName = name + subjectNameLD.postValue(name) + loadSubjectType() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - subjectNameLD.postValue("专题") - subjectData?.subjectName = "专题" - loadSubjectType() - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + subjectNameLD.postValue("专题") + subjectData?.subjectName = "专题" + loadSubjectType() + } + }) } private fun loadSubjectType() { RetrofitManager.getInstance().api - .getColumnSettings(subjectData?.subjectId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: SubjectSettingEntity?) { - super.onResponse(response) - val content = response!!.typeEntity.content - content.add(0, "全部") - subjectData?.tagType = response.tag - subjectData?.briefStyle = response.briefStyle - subjectData?.showSuffix = response.showSuffix - subjectData?.isOrder = response.order - subjectSettingLD.postValue(response) - } + .getColumnSettings(subjectData?.subjectId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: SubjectSettingEntity?) { + super.onResponse(response) + val content = response!!.typeEntity.content + content.add(0, "全部") + subjectData?.tagType = response.tag + subjectData?.briefStyle = response.briefStyle + subjectData?.showSuffix = response.showSuffix + subjectData?.isOrder = response.order + subjectSettingLD.postValue(response) + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - subjectSettingLD.postValue(null) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + subjectSettingLD.postValue(null) + } + }) } - class Factory(private val mApplication: Application, private val subjectData: SubjectData?) : ViewModelProvider.NewInstanceFactory() { + class Factory(private val mApplication: Application, private val subjectData: SubjectData?) : + ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return SubjectViewModel(mApplication, subjectData) as T } diff --git a/app/src/main/java/com/gh/gamecenter/subject/rows/SubjectRowsFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/rows/SubjectRowsFragment.kt index dbbd4c0525..88aa46bc50 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/rows/SubjectRowsFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/rows/SubjectRowsFragment.kt @@ -52,10 +52,12 @@ class SubjectRowsFragment : BaseFragment() { createLabelsLayout() createFilterLayout() - mListFragment = childFragmentManager.findFragmentByTag(SubjectListFragment::class.java.name) as? SubjectListFragment - ?: SubjectListFragment() + mListFragment = + childFragmentManager.findFragmentByTag(SubjectListFragment::class.java.name) as? SubjectListFragment + ?: SubjectListFragment() mListFragment.arguments = arguments - childFragmentManager.beginTransaction().replace(R.id.rows_list_container, mListFragment, SubjectListFragment::class.java.name) + childFragmentManager.beginTransaction() + .replace(R.id.rows_list_container, mListFragment, SubjectListFragment::class.java.name) .commitAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/gamecenter/subject/tab/SubjectTabFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/tab/SubjectTabFragment.kt index fbb1e5b5d8..41f1bbe128 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/tab/SubjectTabFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/tab/SubjectTabFragment.kt @@ -41,8 +41,9 @@ class SubjectTabFragment : BaseFragment() { // 专题详情 val subjectData = arguments?.getParcelable(EntranceConsts.KEY_SUBJECT_DATA) ?: return - val settingsEntity = arguments?.getParcelable(SubjectSettingEntity::class.java.simpleName) - ?: return + val settingsEntity = + arguments?.getParcelable(SubjectSettingEntity::class.java.simpleName) + ?: return tagList = settingsEntity.typeEntity.content as ArrayList if (tagList.size > 1) { mBinding.subjectTabContainer.visibility = View.VISIBLE @@ -142,10 +143,12 @@ class SubjectTabFragment : BaseFragment() { tab.customView = provideTabView(tabTitle) if (i == 0) { tab.customView?.background = R.drawable.border_round_theme_14.toDrawable(requireContext()) - tab.customView?.findViewById(R.id.tab_title)?.setTextColor(R.color.theme_font.toColor(requireContext())) + tab.customView?.findViewById(R.id.tab_title) + ?.setTextColor(R.color.theme_font.toColor(requireContext())) } else { tab.customView?.background = R.drawable.border_round_eee_14.toDrawable(requireContext()) - tab.customView?.findViewById(R.id.tab_title)?.setTextColor(R.color.text_title.toColor(requireContext())) + tab.customView?.findViewById(R.id.tab_title) + ?.setTextColor(R.color.text_title.toColor(requireContext())) } when (i) { @@ -162,12 +165,14 @@ class SubjectTabFragment : BaseFragment() { override fun onTabUnselected(tab: TabLayout.Tab?) { tab?.customView?.background = R.drawable.border_round_eee_14.toDrawable(requireContext()) - tab?.customView?.findViewById(R.id.tab_title)?.setTextColor(R.color.text_title.toColor(requireContext())) + tab?.customView?.findViewById(R.id.tab_title) + ?.setTextColor(R.color.text_title.toColor(requireContext())) } override fun onTabSelected(tab: TabLayout.Tab?) { tab?.customView?.background = R.drawable.border_round_theme_14.toDrawable(requireContext()) - tab?.customView?.findViewById(R.id.tab_title)?.setTextColor(R.color.theme_font.toColor(requireContext())) + tab?.customView?.findViewById(R.id.tab_title) + ?.setTextColor(R.color.theme_font.toColor(requireContext())) } }) } @@ -187,9 +192,15 @@ class SubjectTabFragment : BaseFragment() { for (i in 0 until mBinding.subjectTab.tabCount) { val tab = mBinding.subjectTab.getTabAt(i) ?: continue tab.customView?.background = - if (tab.isSelected) R.drawable.border_round_theme_14.toDrawable(requireContext()) else R.drawable.border_round_eee_14.toDrawable(requireContext()) + if (tab.isSelected) R.drawable.border_round_theme_14.toDrawable(requireContext()) else R.drawable.border_round_eee_14.toDrawable( + requireContext() + ) tab.customView?.findViewById(R.id.tab_title) - ?.setTextColor(if (tab.isSelected) R.color.theme_font.toColor(requireContext()) else R.color.text_title.toColor(requireContext())) + ?.setTextColor( + if (tab.isSelected) R.color.theme_font.toColor(requireContext()) else R.color.text_title.toColor( + requireContext() + ) + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/subject/tile/SubjectTypeListAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/tile/SubjectTypeListAdapter.kt index 17a242b238..9c5d00d64a 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/tile/SubjectTypeListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/tile/SubjectTypeListAdapter.kt @@ -11,9 +11,11 @@ import androidx.recyclerview.widget.RecyclerView import com.gh.gamecenter.R import com.lightgame.adapter.BaseRecyclerAdapter -class SubjectTypeListAdapter(context: Context, - private val mItemClickListener: (type: String) -> Unit, - private val mGameType: List) : BaseRecyclerAdapter(context) { +class SubjectTypeListAdapter( + context: Context, + private val mItemClickListener: (type: String) -> Unit, + private val mGameType: List +) : BaseRecyclerAdapter(context) { private var mCurType = "全部" diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestGameCollectAdapter.kt b/app/src/main/java/com/gh/gamecenter/suggest/SuggestGameCollectAdapter.kt index 115bb86172..da7df97784 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestGameCollectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestGameCollectAdapter.kt @@ -11,8 +11,10 @@ import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.adapter.BaseRecyclerAdapter -class SuggestGameCollectAdapter(context: Context, - private val mGameList: List) : BaseRecyclerAdapter(context) { +class SuggestGameCollectAdapter( + context: Context, + private val mGameList: List +) : BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameItemViewHolder { return GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) @@ -23,7 +25,7 @@ class SuggestGameCollectAdapter(context: Context, } override fun onBindViewHolder(holder: GameItemViewHolder, position: Int) { - holder.itemView.setPadding(8F.dip2px(),4F.dip2px(),12F.dip2px(),4F.dip2px()) + holder.itemView.setPadding(8F.dip2px(), 4F.dip2px(), 12F.dip2px(), 4F.dip2px()) val gameEntity = mGameList[position] holder.bindGameItem(gameEntity) diff --git a/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java index e0aa7ae5d8..9e7f72c871 100644 --- a/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/suggest/SuggestSelectGameAdapter.java @@ -7,10 +7,13 @@ import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; + import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.base.fragment.BaseFragment; import com.gh.gamecenter.common.utils.BitmapUtils; + import androidx.core.content.ContextCompat; + import com.gh.common.util.PackageUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsActivity.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsActivity.kt index 8ae519e2e9..68cf750a0b 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsActivity.kt @@ -22,12 +22,22 @@ class TagsActivity : DownloadToolbarActivity() { const val SOURCE = "source" @JvmStatic - fun getIntent(context: Context, tag: String, source: String?, entrance: String, path: String, exposureSourceList: List? = null): Intent { + fun getIntent( + context: Context, + tag: String, + source: String?, + entrance: String, + path: String, + exposureSourceList: List? = null + ): Intent { val bundle = Bundle() bundle.putString(TAG, tag) bundle.putString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) bundle.putString(SOURCE, source ?: "") - if (exposureSourceList != null) bundle.putParcelableArrayList(KEY_EXPOSURE_SOURCE_LIST, ArrayList(exposureSourceList)) + if (exposureSourceList != null) bundle.putParcelableArrayList( + KEY_EXPOSURE_SOURCE_LIST, + ArrayList(exposureSourceList) + ) when (context) { is GameDetailActivity -> bundle.putString(FROM, From.GAME_DETAIL.value) diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsHorizontalAdapter.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsHorizontalAdapter.kt index 15f16f3abd..ec045cb450 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsHorizontalAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsHorizontalAdapter.kt @@ -10,11 +10,12 @@ import com.gh.gamecenter.databinding.ItemTagBinding import com.gh.gamecenter.entity.TagEntity import com.lightgame.adapter.BaseRecyclerAdapter -class TagsHorizontalAdapter(context: Context, - private val mViewModel: TagsListViewModel, - private val mTagList: List, - private val mSmoothScrollAction: (position: Int) -> Unit) - : BaseRecyclerAdapter(context) { +class TagsHorizontalAdapter( + context: Context, + private val mViewModel: TagsListViewModel, + private val mTagList: List, + private val mSmoothScrollAction: (position: Int) -> Unit +) : BaseRecyclerAdapter(context) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TagsViewHolder { return TagsViewHolder(ItemTagBinding.inflate(mLayoutInflater, parent, false)) diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsListAdapter.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsListAdapter.kt index de256041b9..0d4fda55d0 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsListAdapter.kt @@ -21,9 +21,11 @@ import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.GameItemViewHolder import com.lightgame.download.DownloadEntity -class TagsListAdapter(context: Context, - private val mViewModel: TagsListViewModel, - private val mEntrance: String?) : ListAdapter(context), IExposable { +class TagsListAdapter( + context: Context, + private val mViewModel: TagsListViewModel, + private val mEntrance: String? +) : ListAdapter(context), IExposable { private val mExposureEventSparseArray: SparseArray = SparseArray() @@ -59,7 +61,10 @@ class TagsListAdapter(context: Context, return ItemViewType.GAME_NORMAL } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): androidx.recyclerview.widget.RecyclerView.ViewHolder { + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): androidx.recyclerview.widget.RecyclerView.ViewHolder { return when (viewType) { ItemViewType.GAME_NORMAL -> { GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) @@ -84,7 +89,8 @@ class TagsListAdapter(context: Context, val padTop = if (position == 0) 16F.dip2px() else 8F.dip2px() holder.itemView.setPadding(16F.dip2px(), padTop, 16F.dip2px(), 8F.dip2px()) - val exposureSource = ExposureSource("标签详情", "${mViewModel.selectedTag.name} + ${mViewModel.getSortTypeInChinese()}") + val exposureSource = + ExposureSource("标签详情", "${mViewModel.selectedTag.name} + ${mViewModel.getSortTypeInChinese()}") val exposureSourceList = arrayListOf() val exposureEvent = ExposureEvent.createEvent(gameEntity, exposureSourceList) exposureSourceList.addAll(mViewModel.basicExposureSourceList) @@ -93,16 +99,30 @@ class TagsListAdapter(context: Context, mExposureEventSparseArray.append(position, exposureEvent) holder.itemView.setOnClickListener { - GameDetailActivity.startGameDetailActivity(mContext, gameEntity, mEntrance ?: "", traceEvent = exposureEvent) - } - DownloadItemUtils.setOnClickListener(mContext, - holder.binding.downloadBtn, + GameDetailActivity.startGameDetailActivity( + mContext, gameEntity, - position, - this, - StringUtils.buildString(mEntrance, "+(标签详情[", mViewModel.selectedTag.name, "]:列表[", (position + 1).toString(), "])"), - StringUtils.buildString(mViewModel.selectedTag.name, ":", gameEntity.name), - exposureEvent) + mEntrance ?: "", + traceEvent = exposureEvent + ) + } + DownloadItemUtils.setOnClickListener( + mContext, + holder.binding.downloadBtn, + gameEntity, + position, + this, + StringUtils.buildString( + mEntrance, + "+(标签详情[", + mViewModel.selectedTag.name, + "]:列表[", + (position + 1).toString(), + "])" + ), + StringUtils.buildString(mViewModel.selectedTag.name, ":", gameEntity.name), + exposureEvent + ) DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding), true) } else if (holder is FooterViewHolder) { holder.initItemPadding() @@ -112,7 +132,7 @@ class TagsListAdapter(context: Context, fun notifyItemByDownload(download: DownloadEntity) { for (key in positionAndPackageMap.keys) { - if (key.contains(download.packageName)&& key.contains(download.gameId)) { + if (key.contains(download.packageName) && key.contains(download.gameId)) { val position = positionAndPackageMap[key] if (position != null && mEntityList != null && position < mEntityList.size) { mEntityList[position].getEntryMap()[download.platform] = download @@ -124,7 +144,7 @@ class TagsListAdapter(context: Context, fun notifyItemAndRemoveDownload(status: EBDownloadStatus) { for (key in positionAndPackageMap.keys) { - if (key.contains(status.packageName)&& key.contains(status.gameId)) { + if (key.contains(status.packageName) && key.contains(status.gameId)) { val position = positionAndPackageMap[key] if (position != null && mEntityList != null && position < mEntityList.size) { mEntityList[position].getEntryMap().remove(status.platform) diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt index 6fbd189bb5..e14ea15404 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt @@ -77,7 +77,8 @@ class TagsListFragment : ListFragment() { .show() mTag = arguments?.getString(TagsActivity.TAG) ?: "" - val exposureSourceList = arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST) + val exposureSourceList = + arguments?.getParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST) if (!exposureSourceList.isNullOrEmpty()) { mViewModel.basicExposureSourceList = exposureSourceList } else { @@ -87,7 +88,8 @@ class TagsListFragment : ListFragment() { mViewModel.basicExposureSourceList = arrayListOf(ExposureSource("游戏详情", source)) } TagsActivity.From.SEARCH.value -> { - mViewModel.basicExposureSourceList = arrayListOf(ExposureSource("首页搜索", ""), ExposureSource("热门标签", source)) + mViewModel.basicExposureSourceList = + arrayListOf(ExposureSource("首页搜索", ""), ExposureSource("热门标签", source)) } } } @@ -156,7 +158,8 @@ class TagsListFragment : ListFragment() { } private fun updateTagsView(tags: ArrayList) { - mBinding.tagsRecyclerView.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + mBinding.tagsRecyclerView.layoutManager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) mBinding.tagsRecyclerView.adapter = TagsHorizontalAdapter(requireContext(), mViewModel, tags) { mBinding.tagsRecyclerView.smoothScrollToPosition(it) } @@ -164,7 +167,8 @@ class TagsListFragment : ListFragment() { override fun onLoadRefresh() { if (mReuseNoConn?.visibility == View.VISIBLE - && (mBinding.tagsRecyclerView.adapter == null || mBinding.tagsRecyclerView.adapter?.itemCount == 0)) { + && (mBinding.tagsRecyclerView.adapter == null || mBinding.tagsRecyclerView.adapter?.itemCount == 0) + ) { mViewModel.getTags(mTag) } else { mBaseHandler.postDelayed({ mListViewModel.load(LoadType.REFRESH) }, 200) diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsListViewModel.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsListViewModel.kt index 1b757574e1..b9d3988a36 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsListViewModel.kt @@ -37,8 +37,8 @@ class TagsListViewModel(application: Application) : ListViewModel> { return RetrofitManager.getInstance() - .api - .getGamesWithSpecificTag(getSortSize(), getSortType(), page) + .api + .getGamesWithSpecificTag(getSortSize(), getSortType(), page) } override fun mergeResultLiveData() { @@ -56,8 +56,10 @@ class TagsListViewModel(application: Application) : ListViewModel>() { - override fun onSuccess(data: ArrayList) { - val tagToShow = data.find { tag -> - tag.name == tagName - } ?: TagEntity() - changeSelectedTag(tagToShow) + .api + .getRelatedTags(UrlFilterUtils.getFilterQuery("tag", tagName)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: ArrayList) { + val tagToShow = data.find { tag -> + tag.name == tagName + } ?: TagEntity() + changeSelectedTag(tagToShow) - tags.postValue(data) - } + tags.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - requestTagsError.postValue(true) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + requestTagsError.postValue(true) + } + }) } private fun getSortSize(): String? { return UrlFilterUtils.getFilterQuery( - "tag_id", selectedTag.id, - "min_size", mSortSize.min.toString(), - "max_size", mSortSize.max.toString()) + "tag_id", selectedTag.id, + "min_size", mSortSize.min.toString(), + "max_size", mSortSize.max.toString() + ) } private fun getSortType(): String? { diff --git a/app/src/main/java/com/gh/gamecenter/teenagermode/PasswordSettingFragment.kt b/app/src/main/java/com/gh/gamecenter/teenagermode/PasswordSettingFragment.kt index bc09474c4b..df5218d0eb 100644 --- a/app/src/main/java/com/gh/gamecenter/teenagermode/PasswordSettingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/teenagermode/PasswordSettingFragment.kt @@ -167,7 +167,11 @@ class PasswordSettingFragment : ToolbarFragment() { }) } else { mBinding?.hintTv?.text = "与第一次输入的密码不一致" - mBinding?.hintTv?.setTextColor(R.color.theme_red.toColor(requireContext())) + mBinding?.hintTv?.setTextColor( + R.color.theme_red.toColor( + requireContext() + ) + ) clearContent() } } @@ -205,7 +209,11 @@ class PasswordSettingFragment : ToolbarFragment() { hintTv.setTextColor(R.color.text_subtitle.toColor(requireContext())) resetPwdTv.setTextColor(R.color.theme_font.toColor(requireContext())) nextTv.background = R.drawable.download_button_normal_style.toDrawable(requireContext()) - verifyEt.setTextViewStyle(R.drawable.bg_verify_password.toDrawable(requireContext()), R.drawable.bg_verify_password_select.toDrawable(requireContext()), R.color.text_title.toColor(requireContext())) + verifyEt.setTextViewStyle( + R.drawable.bg_verify_password.toDrawable(requireContext()), + R.drawable.bg_verify_password_select.toDrawable(requireContext()), + R.color.text_title.toColor(requireContext()) + ) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt index a980df50c4..20717f6e3f 100644 --- a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt @@ -20,7 +20,9 @@ class TeenagerModeActivity : BaseActivity() { mContainerFragment = supportFragmentManager.findFragmentByTag(TeenagerModeFragment::class.java.name) ?: TeenagerModeFragment().with(intent.extras) if (mContainerFragment?.isAdded == false) { - supportFragmentManager.beginTransaction().replace(R.id.placeholder, mContainerFragment!!, TeenagerModeFragment::class.java.name).commitAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, mContainerFragment!!, TeenagerModeFragment::class.java.name) + .commitAllowingStateLoss() } } diff --git a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt index 89c150b2ea..78d2262ecf 100644 --- a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt @@ -23,7 +23,8 @@ class TeenagerModeFragment : ToolbarFragment() { override fun getLayoutId(): Int = 0 - override fun getInflatedLayout() = FragmentTeenagerModeBinding.inflate(layoutInflater).apply { mBinding = this }.root + override fun getInflatedLayout() = + FragmentTeenagerModeBinding.inflate(layoutInflater).apply { mBinding = this }.root override fun onResume() { super.onResume() @@ -38,11 +39,16 @@ class TeenagerModeFragment : ToolbarFragment() { mBinding?.include?.normalToolbar?.setBackgroundColor(Color.TRANSPARENT) mBinding?.switchTv?.setOnClickListener { if (!ClickUtils.isFastDoubleClick(R.id.switchTv)) { - val mContainerFragment = requireActivity().supportFragmentManager.findFragmentByTag(PasswordSettingFragment::class.java.name) - ?: PasswordSettingFragment().with(bundle) + val mContainerFragment = + requireActivity().supportFragmentManager.findFragmentByTag(PasswordSettingFragment::class.java.name) + ?: PasswordSettingFragment().with(bundle) requireActivity().supportFragmentManager.beginTransaction().run { addToBackStack(null) - add(R.id.placeholder, mContainerFragment!!, PasswordSettingFragment::class.java.name).commitAllowingStateLoss() + add( + R.id.placeholder, + mContainerFragment!!, + PasswordSettingFragment::class.java.name + ).commitAllowingStateLoss() } } } @@ -72,14 +78,26 @@ class TeenagerModeFragment : ToolbarFragment() { mBinding?.changePwdTv?.visibility = View.VISIBLE mBinding?.titleTv?.text = "儿童/青少年模式已开启" mBinding?.switchTv?.text = "关闭儿童/青少年模式" - mBinding?.switchTv?.layoutParams = (mBinding?.switchTv?.layoutParams as ConstraintLayout.LayoutParams).apply { setMargins(0, 0, 0, 68F.dip2px()) } + mBinding?.switchTv?.layoutParams = (mBinding?.switchTv?.layoutParams as ConstraintLayout.LayoutParams).apply { + setMargins( + 0, + 0, + 0, + 68F.dip2px() + ) + } mBinding?.changePwdTv?.setOnClickListener { val bundle = Bundle().apply { putString(TeenagerModeActivity.TYPE, TeenagerModeActivity.TYPE_CHANGE_PWD) } - val mContainerFragment = requireActivity().supportFragmentManager.findFragmentByTag(PasswordSettingFragment::class.java.name) - ?: PasswordSettingFragment().with(bundle) + val mContainerFragment = + requireActivity().supportFragmentManager.findFragmentByTag(PasswordSettingFragment::class.java.name) + ?: PasswordSettingFragment().with(bundle) requireActivity().supportFragmentManager.beginTransaction().run { addToBackStack(null) - add(R.id.placeholder, mContainerFragment!!, PasswordSettingFragment::class.java.name).commitAllowingStateLoss() + add( + R.id.placeholder, + mContainerFragment!!, + PasswordSettingFragment::class.java.name + ).commitAllowingStateLoss() } } } diff --git a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockAdapter.kt b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockAdapter.kt index f4acdf39dc..dd2f15604d 100644 --- a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockAdapter.kt @@ -15,7 +15,8 @@ import com.gh.gamecenter.entity.ToolBoxBlockEntity import com.gh.gamecenter.common.entity.ToolBoxEntity import com.lightgame.adapter.BaseRecyclerAdapter -class ToolBoxBlockAdapter(context: Context, private val mViewModel: ToolBoxViewModel) : BaseRecyclerAdapter(context) { +class ToolBoxBlockAdapter(context: Context, private val mViewModel: ToolBoxViewModel) : + BaseRecyclerAdapter(context) { private var mEntityList = mutableListOf() diff --git a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxItemAdapter.kt b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxItemAdapter.kt index f491a79c18..29d1b0ff1d 100644 --- a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxItemAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxItemAdapter.kt @@ -19,7 +19,11 @@ import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.databinding.ItemToolboxBinding import com.lightgame.adapter.BaseRecyclerAdapter -class ToolBoxItemAdapter(context: Context, private val isBlockInside: Boolean = false, private val mViewModel: ToolBoxViewModel) : +class ToolBoxItemAdapter( + context: Context, + private val isBlockInside: Boolean = false, + private val mViewModel: ToolBoxViewModel +) : BaseRecyclerAdapter(context) { private var mEntityList: List = arrayListOf() @@ -102,7 +106,7 @@ class ToolBoxItemAdapter(context: Context, private val isBlockInside: Boolean = viewHolder.binding.divider.goneIf(isBlockInside) viewHolder.binding.root.setOnClickListener { mViewModel.addToHistoryList(toolBoxEntity) - + val url = toolBoxEntity.url if (url != null && url.contains(Config.URL_ARTICLE)) { val newsId = url.substring(url.lastIndexOf("/") + 1, url.length - 5) // 5: ".html" diff --git a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxViewModel.kt b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxViewModel.kt index e8656837f2..e9d34bca16 100644 --- a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxViewModel.kt @@ -55,7 +55,12 @@ class ToolBoxViewModel(application: Application) : AndroidViewModel(application) // 添加最近使用列表 fun getNewList(list: List): List { val historyList = getHistoryList() - return if (historyList.isNotEmpty()) arrayListOf(ToolBoxBlockEntity(categoryName = "最近使用", toolboxList = historyList)).apply { + return if (historyList.isNotEmpty()) arrayListOf( + ToolBoxBlockEntity( + categoryName = "最近使用", + toolboxList = historyList + ) + ).apply { addAll(list) } else list } @@ -63,7 +68,10 @@ class ToolBoxViewModel(application: Application) : AndroidViewModel(application) fun getHistoryList(): List { if (SPUtils.getString(Constants.TOOLBOX_HISTORY).isEmpty()) return emptyList() try { - val historyList: List = GsonUtils.gson.fromJson(SPUtils.getString(Constants.TOOLBOX_HISTORY), object : TypeToken>() {}.type) + val historyList: List = GsonUtils.gson.fromJson( + SPUtils.getString(Constants.TOOLBOX_HISTORY), + object : TypeToken>() {}.type + ) val validList = arrayListOf().apply { // 最多展示30天以内的打开记录 for (item in historyList) { diff --git a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataActivity.kt b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataActivity.kt index 86c34ad4bd..f850ec9702 100644 --- a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataActivity.kt @@ -18,7 +18,8 @@ class VideoDataActivity : BaseActivity() { val containerFragment = supportFragmentManager.findFragmentByTag(VideoDataFragment::class.java.name) ?: VideoDataFragment().with(intent.extras) // 若 placeholder 外层为 RelativeLayout 的话,会出现莫名的偏移 - supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment, VideoDataFragment::class.java.name) + supportFragmentManager.beginTransaction() + .replace(R.id.placeholder, containerFragment, VideoDataFragment::class.java.name) .commitAllowingStateLoss() } diff --git a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataAdapter.kt index 94f97e2f89..c4a0f728b2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataAdapter.kt @@ -237,5 +237,6 @@ class VideoDataAdapter(context: Context) : ListAdapter(context) { class VideoDataOverviewViewHolder(var binding: ItemVideoDataOverviewBinding) : RecyclerView.ViewHolder(binding.root) class VideoDataFansChartViewHolder(var binding: ItemVideoDataChartBinding) : RecyclerView.ViewHolder(binding.root) - class VideoDataPlayCountChartViewHolder(var binding: ItemVideoDataChartBinding) : RecyclerView.ViewHolder(binding.root) + class VideoDataPlayCountChartViewHolder(var binding: ItemVideoDataChartBinding) : + RecyclerView.ViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataFragment.kt b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataFragment.kt index b59694d5d2..ca76969e60 100644 --- a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataFragment.kt @@ -34,10 +34,19 @@ class VideoDataFragment : BaseFragment() { super.onViewCreated(view, savedInstanceState) mBinding.reuseToolbar.backBtn.setImageDrawable(R.drawable.ic_bar_back_light.toDrawable()) mBinding.reuseToolbar.normalTitle.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) - mBinding.reuseToolbar.normalToolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent)) + mBinding.reuseToolbar.normalToolbar.setBackgroundColor( + ContextCompat.getColor( + requireContext(), + R.color.transparent + ) + ) mBinding.reuseToolbar.normalTitle.text = "视频数据" - mBinding.refreshView.setProgressViewOffset(false, 0, 80F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources)) + mBinding.refreshView.setProgressViewOffset( + false, + 0, + 80F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources) + ) mBinding.refreshView.setOnRefreshListener { mViewModel.loadData() } diff --git a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataViewModel.kt index bb04199c8b..7e7ab126c0 100644 --- a/app/src/main/java/com/gh/gamecenter/video/data/VideoDataViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/data/VideoDataViewModel.kt @@ -29,72 +29,72 @@ class VideoDataViewModel(application: Application) : AndroidViewModel(applicatio private fun getVideoOverView() { api.getVideoData(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: VideoDataOverViewEntity?) { - super.onResponse(response) - if (response != null) { - videoDataList.clear() - if (response.date != TimeUtils.getToday()) { - response.yesterdayFan = 0 - response.yesterdayPlay = 0 - response.yesterdayVote = 0 - response.yesterdayComment = 0 - response.yesterdayShare = 0 - response.yesterdayFavorite = 0 - } - videoDataList.add(VideoDataItem(videoDataOverView = response)) - videoDataLiveData.postValue(Resource.success(videoDataList)) - getVideoFansData() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: VideoDataOverViewEntity?) { + super.onResponse(response) + if (response != null) { + videoDataList.clear() + if (response.date != TimeUtils.getToday()) { + response.yesterdayFan = 0 + response.yesterdayPlay = 0 + response.yesterdayVote = 0 + response.yesterdayComment = 0 + response.yesterdayShare = 0 + response.yesterdayFavorite = 0 } + videoDataList.add(VideoDataItem(videoDataOverView = response)) + videoDataLiveData.postValue(Resource.success(videoDataList)) + getVideoFansData() } + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - videoDataLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + videoDataLiveData.postValue(Resource.error(e)) + } + }) } private fun getVideoFansData() { api.getVideoFansData(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: LinkedHashMap?) { - super.onResponse(response) - if (!response.isNullOrEmpty()) { - videoDataList.add(VideoDataItem(videoFans = response)) - videoDataLiveData.postValue(Resource.success(videoDataList)) - } - getVideoPlayData() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: LinkedHashMap?) { + super.onResponse(response) + if (!response.isNullOrEmpty()) { + videoDataList.add(VideoDataItem(videoFans = response)) + videoDataLiveData.postValue(Resource.success(videoDataList)) } + getVideoPlayData() + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - videoDataLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + videoDataLiveData.postValue(Resource.error(e)) + } + }) } private fun getVideoPlayData() { api.getVideoPlayData(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response>() { - override fun onResponse(response: LinkedHashMap?) { - super.onResponse(response) - if (!response.isNullOrEmpty()) { - videoDataList.add(VideoDataItem(videoPlay = response)) - videoDataLiveData.postValue(Resource.success(videoDataList)) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response>() { + override fun onResponse(response: LinkedHashMap?) { + super.onResponse(response) + if (!response.isNullOrEmpty()) { + videoDataList.add(VideoDataItem(videoPlay = response)) + videoDataLiveData.postValue(Resource.success(videoDataList)) } + } - override fun onFailure(e: HttpException?) { - super.onFailure(e) - videoDataLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + super.onFailure(e) + videoDataLiveData.postValue(Resource.error(e)) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt index 3b89492073..9be1f02e46 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt @@ -55,7 +55,8 @@ import io.reactivex.disposables.Disposable import org.greenrobot.eventbus.EventBus import java.util.concurrent.TimeUnit -class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : StandardGSYVideoPlayer(context, attrs) { +class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + StandardGSYVideoPlayer(context, attrs) { private val mEntrance = "(视频详情)" private var mVideoEntity: VideoEntity? = null @@ -89,9 +90,10 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib } true } - gestureDetector = GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { + gestureDetector = + GestureDetector(getContext().applicationContext, object : GestureDetector.SimpleOnGestureListener() { - }) + }) mMuteCallback = object : MuteCallback { override fun onMute(isMute: Boolean) { if (isMute) { @@ -175,7 +177,12 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib DialogUtils.showViewBadgeDialog(context, videoEntity.user.badge) { MtaHelper.onEvent("进入徽章墙_用户记录", "视频详情", "${videoEntity.user.name}(${videoEntity.user.id})") MtaHelper.onEvent("徽章中心", "进入徽章中心", "视频详情") - DirectUtils.directToBadgeWall(context, videoEntity.user.id, videoEntity.user.name, videoEntity.user.icon) + DirectUtils.directToBadgeWall( + context, + videoEntity.user.id, + videoEntity.user.name, + videoEntity.user.icon + ) } } @@ -243,7 +250,12 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib MtaHelper.onEvent("视频详情", "查看游戏", mCombinedTitleAndId) uploadVideoStreamingPlaying("点击游戏图标") if (videoEntity.game?.exposureEvent != null) { - GameDetailActivity.startGameDetailActivity(context, videoEntity.gameId, mEntrance, videoEntity.game?.exposureEvent) + GameDetailActivity.startGameDetailActivity( + context, + videoEntity.gameId, + mEntrance, + videoEntity.game?.exposureEvent + ) } } @@ -484,7 +496,12 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib val shrinkAnimator = mBinding.shareIv.animate().scaleX(0f).scaleY(0f) shrinkAnimator.duration = 250 shrinkAnimator.doOnEnd { - mBinding.shareIv.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_video_detail_share_wechat)) + mBinding.shareIv.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.ic_video_detail_share_wechat + ) + ) val enlargeAnimator = mBinding.shareIv.animate().scaleX(1f).scaleY(1f) enlargeAnimator.duration = 250 enlargeAnimator.doOnEnd { @@ -524,7 +541,8 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib } override fun showWifiDialog() { - val trafficVideo = PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SettingsFragment.TRAFFIC_VIDEO_SP_KEY, false) + val trafficVideo = PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(SettingsFragment.TRAFFIC_VIDEO_SP_KEY, false) val nonWifiTips = SPUtils.getBoolean(Constants.SP_NON_WIFI_TIPS, true) if (!trafficVideo) { if (nonWifiTips) { @@ -537,14 +555,14 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib if (nonWifiTips) { DialogHelper.showDialog(context, "注意", "您当前使用的移动网络,确定要继续播放视频吗?", "继续播放", "暂时不了", confirmClickCallback = { - HaloApp.put(Constants.SHOULD_SHOW_VIDEO_MOBILE_WARNING, false) - SPUtils.setBoolean(Constants.SP_NON_WIFI_TIPS, false) - startPlayLogic() - }, cancelClickCallback = { - if (mViewModel?.isHomeVideo == false) { - (context as Activity).finish() - } - }) + HaloApp.put(Constants.SHOULD_SHOW_VIDEO_MOBILE_WARNING, false) + SPUtils.setBoolean(Constants.SP_NON_WIFI_TIPS, false) + startPlayLogic() + }, cancelClickCallback = { + if (mViewModel?.isHomeVideo == false) { + (context as Activity).finish() + } + }) } else { startPlayLogic() } @@ -886,9 +904,19 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib override fun updateStartImage() { if (mCurrentState == GSYVideoView.CURRENT_STATE_PLAYING) { - (startButton as ImageView).setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_game_detail_pause)) + (startButton as ImageView).setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.ic_game_detail_pause + ) + ) } else { - (startButton as ImageView).setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_video_detail_play)) + (startButton as ImageView).setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.ic_video_detail_play + ) + ) } } @@ -902,14 +930,22 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib recordMta("播放") recordMta(if (mIfCurrentIsFullscreen) "全屏播放-继续播放" else "继续播放") MtaHelper.onEvent("视频详情", "播放", mCombinedTitleAndId) - MtaHelper.onEvent("视频详情", if (mIfCurrentIsFullscreen) "全屏播放-继续播放" else "继续播放", "${mVideoEntity!!.title}(${mVideoEntity!!.id})") + MtaHelper.onEvent( + "视频详情", + if (mIfCurrentIsFullscreen) "全屏播放-继续播放" else "继续播放", + "${mVideoEntity!!.title}(${mVideoEntity!!.id})" + ) uploadVideoStreamingPlaying("继续") } else { recordMta("暂停") recordMta(if (mIfCurrentIsFullscreen) "全屏播放-点击暂停" else "点击暂停") MtaHelper.onEvent("视频详情", "暂停", mCombinedTitleAndId) - MtaHelper.onEvent("视频详情", if (mIfCurrentIsFullscreen) "全屏播放-点击暂停" else "点击暂停", "${mVideoEntity!!.title}(${mVideoEntity!!.id})") + MtaHelper.onEvent( + "视频详情", + if (mIfCurrentIsFullscreen) "全屏播放-点击暂停" else "点击暂停", + "${mVideoEntity!!.title}(${mVideoEntity!!.id})" + ) uploadVideoStreamingPlaying("暂停") } super.onClick(v) @@ -960,7 +996,11 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib if (isManual) { ToastUtils.showToast("当前处于静音状态") recordMta(if (mIfCurrentIsFullscreen) "全屏播放-点击静音" else "点击静音") - MtaHelper.onEvent("视频详情", if (mIfCurrentIsFullscreen) "全屏播放-点击静音" else "点击静音", "${mVideoEntity!!.title}(${mVideoEntity!!.id})") + MtaHelper.onEvent( + "视频详情", + if (mIfCurrentIsFullscreen) "全屏播放-点击静音" else "点击静音", + "${mVideoEntity!!.title}(${mVideoEntity!!.id})" + ) uploadVideoStreamingPlaying("静音") } } @@ -971,7 +1011,11 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib (gsyVideoManager as CustomManager).isNeedMute = false if (isManual) { recordMta(if (mIfCurrentIsFullscreen) "全屏播放-解除静音" else "解除静音") - MtaHelper.onEvent("视频详情", if (mIfCurrentIsFullscreen) "全屏播放-解除静音" else "解除静音", "${mVideoEntity!!.title}(${mVideoEntity!!.id})") + MtaHelper.onEvent( + "视频详情", + if (mIfCurrentIsFullscreen) "全屏播放-解除静音" else "解除静音", + "${mVideoEntity!!.title}(${mVideoEntity!!.id})" + ) uploadVideoStreamingPlaying("解除静音") } } @@ -1010,7 +1054,8 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib fun recordMta(key: String, value: String = "") { mViewModel?.let { if (it.isHomeVideo) { - val eventId = if (it.location == VideoDetailContainerViewModel.Location.VIDEO_NEWEST.value) "视频流_最新" else "视频流_推荐" + val eventId = + if (it.location == VideoDetailContainerViewModel.Location.VIDEO_NEWEST.value) "视频流_最新" else "视频流_推荐" MtaHelper.onEvent(eventId, key, if (value.isEmpty()) mCombinedTitleAndId else value) } } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt index 6c9a0f1d2f..ab1848061d 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt @@ -90,7 +90,10 @@ class HomeVideoFragment : BaseLazyFragment() { val newestBundle = bundleOf(EntranceConsts.KEY_UUID to UUID.randomUUID().toString()) newestBundle.putAll(arguments) newestBundle.putString(EntranceConsts.KEY_PATH, "视频流-关注Tab") - newestBundle.putString(EntranceConsts.KEY_LOCATION, VideoDetailContainerViewModel.Location.VIDEO_ATTENTION.value) + newestBundle.putString( + EntranceConsts.KEY_LOCATION, + VideoDetailContainerViewModel.Location.VIDEO_ATTENTION.value + ) newestVideoDetailFragment = VideoDetailContainerFragment() newestVideoDetailFragment?.with(newestBundle) fragments.add(newestVideoDetailFragment!!) @@ -102,7 +105,10 @@ class HomeVideoFragment : BaseLazyFragment() { val recommendBundle = bundleOf(EntranceConsts.KEY_UUID to UUID.randomUUID().toString()) recommendBundle.putAll(arguments) recommendBundle.putString(EntranceConsts.KEY_PATH, "视频流-推荐Tab") - recommendBundle.putString(EntranceConsts.KEY_LOCATION, VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.value) + recommendBundle.putString( + EntranceConsts.KEY_LOCATION, + VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.value + ) recommendVideoDetailFragment?.with(recommendBundle) } else { recommendVideoDetailFragment?.with(arguments) @@ -122,10 +128,19 @@ class HomeVideoFragment : BaseLazyFragment() { mNewHint?.visibility = View.GONE MtaHelper.onEvent("视频流_最新", "顶部Tab", "最新Tab") LogUtils.uploadVideoStreamingPlaying( - "点击最新Tab", "", "视频流-最新Tab", - arguments?.getString(EntranceConsts.KEY_REFERER), "", newestVideoDetailFragment?.arguments?.getString( - EntranceConsts.KEY_UUID) - ?: "", 0.0, 0, 0, "play" + "点击最新Tab", + "", + "视频流-最新Tab", + arguments?.getString(EntranceConsts.KEY_REFERER), + "", + newestVideoDetailFragment?.arguments?.getString( + EntranceConsts.KEY_UUID + ) + ?: "", + 0.0, + 0, + 0, + "play" ) } else { MtaHelper.onEvent("视频流_推荐", "顶部Tab", "推荐Tab") diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt index 154f6af243..31aaa6e089 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt @@ -45,7 +45,8 @@ class VideoAdapter( var isVisible = false//fragment是否可见 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val params = RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT) + val params = + RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT) val view = DetailPlayerView(mContext).apply { layoutParams = params } @@ -78,7 +79,11 @@ class VideoAdapter( mOrientationUtils.backToProtVideo() videoView.hideAllButton(false) videoView.recordMta("全屏播放-退出全屏") - MtaHelper.onEvent("视频详情", "全屏播放-退出全屏", "${videoList[position].title}(${videoList[position].id})") + MtaHelper.onEvent( + "视频详情", + "全屏播放-退出全屏", + "${videoList[position].title}(${videoList[position].id})" + ) videoView.uploadVideoStreamingPlaying("全屏播放-退出全屏") } }) @@ -162,18 +167,32 @@ class VideoAdapter( val btn = this val exposureEvent = generateExposure(game) game.exposureEvent = exposureEvent - DownloadItemUtils.setOnClickListener(mContext, this, - game, 0, this@VideoAdapter, - mViewModel.path, BaseActivity.mergeEntranceAndPath(mViewModel.path, "视频详情"), exposureEvent, object : EmptyCallback { + DownloadItemUtils.setOnClickListener(mContext, + this, + game, + 0, + this@VideoAdapter, + mViewModel.path, + BaseActivity.mergeEntranceAndPath(mViewModel.path, "视频详情"), + exposureEvent, + object : EmptyCallback { override fun onCallback() { when (btn.text) { "下载" -> { videoView.recordMta("下载游戏") - MtaHelper.onEvent("视频详情", "下载游戏", "${videoList[position].title}(${videoList[position].id})") + MtaHelper.onEvent( + "视频详情", + "下载游戏", + "${videoList[position].title}(${videoList[position].id})" + ) } "预约" -> { videoView.recordMta("预约游戏") - MtaHelper.onEvent("视频详情", "预约游戏", "${videoList[position].title}(${videoList[position].id})") + MtaHelper.onEvent( + "视频详情", + "预约游戏", + "${videoList[position].title}(${videoList[position].id})" + ) } } videoView.uploadVideoStreamingPlaying("点击下载按钮", btn.text.toString()) diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt index ca1ea8c142..4604d458d2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt @@ -22,10 +22,13 @@ class VideoDetailActivity : BaseActivity() { val extras = intent.extras extras?.putString("uuid", uuid.toString()) - mContainerFragment = supportFragmentManager.findFragmentByTag(HomeVideoFragment::class.java.name) as? HomeVideoFragment + mContainerFragment = + supportFragmentManager.findFragmentByTag(HomeVideoFragment::class.java.name) as? HomeVideoFragment ?: HomeVideoFragment().with(extras) as HomeVideoFragment - supportFragmentManager.beginTransaction().replace(R.id.layout_activity_content, mContainerFragment!!, HomeVideoFragment::class.java.name).commitNowAllowingStateLoss() + supportFragmentManager.beginTransaction() + .replace(R.id.layout_activity_content, mContainerFragment!!, HomeVideoFragment::class.java.name) + .commitNowAllowingStateLoss() } override fun handleBackPressed(): Boolean { diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt index b796abe5db..b0f6ca9672 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -122,7 +122,11 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mBinding.refresh.isEnabled = false } mBinding.smartRefreshLayout.setNoMoreData(true) - mBinding.refresh.setProgressViewOffset(false, 0, 50F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources)) + mBinding.refresh.setProgressViewOffset( + false, + 0, + 50F.dip2px() + DisplayUtils.getStatusBarHeight(requireContext().resources) + ) observeData() @@ -161,7 +165,12 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mAdapter.isVisible = isSupportVisible mViewModel.currentDisplayingVideo = it[mViewModel.startPosition] mBinding.recyclerview.scrollToPosition(mViewModel.startPosition) - LogUtils.uploadVideoStreamingEnter(mViewModel.path, mReferer, mViewModel.currentDisplayingVideo?.id, mViewModel.uuid) + LogUtils.uploadVideoStreamingEnter( + mViewModel.path, + mReferer, + mViewModel.currentDisplayingVideo?.id, + mViewModel.uuid + ) mIsFirstIn = false } @@ -306,26 +315,44 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { MtaHelper.onEvent("视频详情", "下滑", titleAndId) if (position + 1 < mViewModel.videoList.value?.size ?: 0) { LogUtils.uploadVideoStreamingPlaying( - "开始播放-下滑", "", mViewModel.path, - mViewModel.entranceDetail, mViewModel.videoList.value?.get(position + 1)?.id, mViewModel.uuid, 0.0, 0, 0, "play" + "开始播放-下滑", + "", + mViewModel.path, + mViewModel.entranceDetail, + mViewModel.videoList.value?.get(position + 1)?.id, + mViewModel.uuid, + 0.0, + 0, + 0, + "play" ) } } else { MtaHelper.onEvent("视频详情", "上滑", titleAndId) if (position - 1 >= 0) { LogUtils.uploadVideoStreamingPlaying( - "开始播放-上滑", "", mViewModel.path, - mViewModel.entranceDetail, mViewModel.videoList.value?.get(position - 1)?.id, mViewModel.uuid, 0.0, 0, 0, "play" + "开始播放-上滑", + "", + mViewModel.path, + mViewModel.entranceDetail, + mViewModel.videoList.value?.get(position - 1)?.id, + mViewModel.uuid, + 0.0, + 0, + 0, + "play" ) } } - val detailPlayerView = mBinding.recyclerview.findViewHolderForAdapterPosition(position)?.itemView as? DetailPlayerView + val detailPlayerView = + mBinding.recyclerview.findViewHolderForAdapterPosition(position)?.itemView as? DetailPlayerView clearPlayerViewInfo(detailPlayerView) } } override fun onPageSelected(position: Int, isBottom: Boolean) { - val isNoMoreData = isBottom && mLocation != VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.value + val isNoMoreData = + isBottom && mLocation != VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.value mBinding.smartRefreshLayout.isEnableLoadMore = isNoMoreData mBinding.smartRefreshLayout.setNoMoreData(isNoMoreData) // val isShowClick = SPUtils.getBoolean(Constants.SP_SHOW_CLICK_GUIDE) @@ -485,7 +512,8 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mBinding.slideGuideAnimation.layoutParams = layoutParams val guideTitleLayoutParams = mBinding.guideTitle.layoutParams as RelativeLayout.LayoutParams - guideTitleLayoutParams.topMargin = layoutParams.topMargin + DisplayUtils.dip2px(68f) + DisplayUtils.dip2px(16f) + guideTitleLayoutParams.topMargin = + layoutParams.topMargin + DisplayUtils.dip2px(68f) + DisplayUtils.dip2px(16f) mBinding.guideTitle.gravity = Gravity.CENTER mBinding.guideTitle.layoutParams = guideTitleLayoutParams @@ -623,7 +651,10 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mViewModel.currentDisplayingVideo?.let { video -> showMoreMenuDialog(video, targetView) { text -> val combinedTitleAndId = - StringUtils.combineTwoString(mViewModel.currentDisplayingVideo?.gameName, mViewModel.currentDisplayingVideo?.id) + StringUtils.combineTwoString( + mViewModel.currentDisplayingVideo?.gameName, + mViewModel.currentDisplayingVideo?.id + ) if (text.contains("收藏")) { if (UserManager.getInstance().isLoggedIn) { if (video.me.isVideoFavorite) { @@ -814,7 +845,8 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mAdapter.videoList.forEachIndexed { index, videoEntity -> if (userId == videoEntity.user.id) { videoEntity.me.isFollower = isFollow - val detailPlayerView = mBinding.recyclerview.findViewHolderForAdapterPosition(index)?.itemView as? DetailPlayerView + val detailPlayerView = + mBinding.recyclerview.findViewHolderForAdapterPosition(index)?.itemView as? DetailPlayerView if (mViewModel.currentDisplayingVideo == videoEntity) { detailPlayerView?.updateViewDetail(videoEntity) } else { diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt index 19d54082a7..ef6b948dc3 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt @@ -235,11 +235,11 @@ class VideoDetailContainerViewModel(application: Application) : AndroidViewModel .api.getAttentionVideoStream(UserManager.getInstance().userId, body, page) } } - .compose(singleToMain()) - .subscribe(object : BiResponse>>() { - override fun onSuccess(data: retrofit2.Response>) { - val headers = data.headers() - total = headers.get("total")?.toInt() ?: 0 + .compose(singleToMain()) + .subscribe(object : BiResponse>>() { + override fun onSuccess(data: retrofit2.Response>) { + val headers = data.headers() + total = headers.get("total")?.toInt() ?: 0 val videoEntities = data.body() ?: arrayListOf() diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt index 100ee56f6f..5f58f8dd7c 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt @@ -85,7 +85,11 @@ class GameVideoActivity : ToolBarActivity() { }) mBinding.gameIcon.setOnClickListener { - GameDetailActivity.startGameDetailActivity(this, gameId, BaseActivity.mergeEntranceAndPath(mEntrance, "视频合集")) + GameDetailActivity.startGameDetailActivity( + this, + gameId, + BaseActivity.mergeEntranceAndPath(mEntrance, "视频合集") + ) } mBinding.gameName.setOnClickListener { mBinding.gameIcon.performClick() } diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt index 978a858f57..55473877c0 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt @@ -62,7 +62,15 @@ class GameVideoAdapter( fromLocation = VideoDetailContainerViewModel.Location.NEWEST_GAME_VIDEO.value path = "视频合集-最新" } - DirectUtils.directToVideoDetail(mContext, entity.id, fromLocation, false, gameId = gameId, entrance = mEntrance, path = path) + DirectUtils.directToVideoDetail( + mContext, + entity.id, + fromLocation, + false, + gameId = gameId, + entrance = mEntrance, + path = path + ) holder.binding.userInfo.setOnClickListener { DirectUtils.directToHomeActivity(mContext, entity.user.id, mEntrance, path) diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt index 6be5d41052..9186403128 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt @@ -21,11 +21,13 @@ class GameVideoFragment : ListFragment { val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) - return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + return ViewModelProviders.of(this, factory) + .get(NormalListViewModel::class.java) as NormalListViewModel } override fun provideDataObservable(page: Int): Observable> { diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt index 75fa86fb10..4952a6b8e0 100644 --- a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt @@ -24,23 +24,25 @@ class GameVideoViewModel(application: Application, val gameId: String) : Android @SuppressLint("CheckResult") private fun getGameVideoInfo() { RetrofitManager - .getInstance() - .api.getGameVideoInfo(gameId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: GameVideoInfo) { - gameViewInfo.postValue(Resource.success(data)) - } + .getInstance() + .api.getGameVideoInfo(gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: GameVideoInfo) { + gameViewInfo.postValue(Resource.success(data)) + } - override fun onFailure(exception: Exception) { - gameViewInfo.postValue(Resource.error(null)) - } - }) + override fun onFailure(exception: Exception) { + gameViewInfo.postValue(Resource.error(null)) + } + }) } - class Factory(private val mApplication: Application, - private val gameId: String) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val gameId: String + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return GameVideoViewModel(mApplication, gameId) as T } diff --git a/app/src/main/java/com/gh/gamecenter/video/label/VideoLabelViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/label/VideoLabelViewModel.kt index 6906da1fc9..5705b91562 100644 --- a/app/src/main/java/com/gh/gamecenter/video/label/VideoLabelViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/label/VideoLabelViewModel.kt @@ -13,7 +13,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import retrofit2.HttpException -class VideoLabelViewModel(application: Application, val location: String, val bbsId: String) : AndroidViewModel(application) { +class VideoLabelViewModel(application: Application, val location: String, val bbsId: String) : + AndroidViewModel(application) { val activityTags = MutableLiveData?>() diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/PosterClipActivity.kt b/app/src/main/java/com/gh/gamecenter/video/poster/PosterClipActivity.kt index bedec06355..412ec9b34d 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/PosterClipActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/PosterClipActivity.kt @@ -23,12 +23,13 @@ class PosterClipActivity : ToolBarActivity() { setNavigationTitle("剪辑封面") val videoPath = intent.getStringExtra(EntranceConsts.KEY_PATH_VIDEO) - val fragment = supportFragmentManager.findFragmentByTag(VideoPosterFragment::class.java.name) as? VideoPosterFragment + val fragment = + supportFragmentManager.findFragmentByTag(VideoPosterFragment::class.java.name) as? VideoPosterFragment ?: VideoPosterFragment.newInstance(videoPath, null) supportFragmentManager - .beginTransaction() - .replace(R.id.layout_fragment_content, fragment, VideoPosterFragment::class.java.name) - .commitAllowingStateLoss() + .beginTransaction() + .replace(R.id.layout_fragment_content, fragment, VideoPosterFragment::class.java.name) + .commitAllowingStateLoss() findViewById(R.id.menu_next).setOnClickListener { val clipPath = cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".jpg" @@ -49,10 +50,7 @@ class PosterClipActivity : ToolBarActivity() { } override fun handleBackPressed(): Boolean { - DialogHelper.showDialog(this, "提示" - , "确定放弃剪辑封面吗?" - , "确定", "暂不" - , { finish() }) + DialogHelper.showDialog(this, "提示", "确定放弃剪辑封面吗?", "确定", "暂不", { finish() }) return true } diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/PosterEditActivity.kt b/app/src/main/java/com/gh/gamecenter/video/poster/PosterEditActivity.kt index d069111257..84314086a8 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/PosterEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/PosterEditActivity.kt @@ -35,7 +35,8 @@ import com.zhihu.matisse.internal.entity.SelectionSpec import com.zhihu.matisse.internal.model.AlbumCollection import java.io.File -class PosterEditActivity : BaseActivity_TabLayout(), AdapterView.OnItemSelectedListener, AlbumCollection.AlbumCallbacks { +class PosterEditActivity : BaseActivity_TabLayout(), AdapterView.OnItemSelectedListener, + AlbumCollection.AlbumCallbacks { private lateinit var mBinding: ActivityPosterEditBinding @@ -57,7 +58,8 @@ class PosterEditActivity : BaseActivity_TabLayout(), AdapterView.OnItemSelectedL override fun provideTabView(position: Int, tabTitle: String?): View { val tabCustomView = BaseFragment_TabLayout.createDefaultTabCustomView(this, tabTitle) - tabCustomView.findViewById(R.id.tab_title).setTextColor(resources.getColorStateList(R.color.poster_text_tabbar_style)) + tabCustomView.findViewById(R.id.tab_title) + .setTextColor(resources.getColorStateList(R.color.poster_text_tabbar_style)) return tabCustomView } @@ -123,7 +125,12 @@ class PosterEditActivity : BaseActivity_TabLayout(), AdapterView.OnItemSelectedL } DisplayUtils.transparentStatusBar(this) - mBaseHandler.postDelayed({ mBinding.activityTabIndicator.generatePath(mBinding.activityViewPager.currentItem, 0F) }, 10) + mBaseHandler.postDelayed({ + mBinding.activityTabIndicator.generatePath( + mBinding.activityViewPager.currentItem, + 0F + ) + }, 10) } private fun initAlbumsSpinner() { @@ -211,10 +218,7 @@ class PosterEditActivity : BaseActivity_TabLayout(), AdapterView.OnItemSelectedL } override fun handleBackPressed(): Boolean { - DialogHelper.showDialog(this, "提示" - , "确定放弃编辑封面吗?" - , "确定", "暂不" - , { finish() }) + DialogHelper.showDialog(this, "提示", "确定放弃编辑封面吗?", "确定", "暂不", { finish() }) return true } diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/photo/PhotoPosterAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/poster/photo/PhotoPosterAdapter.kt index 7bd05ed44d..b1986c18d0 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/photo/PhotoPosterAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/photo/PhotoPosterAdapter.kt @@ -28,8 +28,9 @@ class PhotoPosterAdapter : RecyclerViewCursorAdapter( val item = Item.valueOf(cursor) SelectionSpec.getInstance().imageEngine.loadThumbnail( - HaloApp.getInstance().application, mImageResize, null, - holder.binding.preview, item.contentUri) + HaloApp.getInstance().application, mImageResize, null, + holder.binding.preview, item.contentUri + ) holder.binding.checkView.isChecked = mCheckMap[position] != null holder.binding.checkView.isClickable = false holder.itemView.setOnClickListener { diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterFragment.kt b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterFragment.kt index 1968b4fb7a..4141953b8c 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterFragment.kt @@ -43,8 +43,8 @@ class VideoPosterFragment : BaseFragment() { mBinding.receiveIv.setBitmap(it.thumbs) } else if (it.thumbsUrl != null) { ImageUtils.picasso - .load(Uri.parse(it.thumbsUrl)) - .into(mBinding.receiveIv.cropImageZoomView) + .load(Uri.parse(it.thumbsUrl)) + .into(mBinding.receiveIv.cropImageZoomView) } }) } diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterReviewAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterReviewAdapter.kt index 965756a458..f5d667ae4d 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterReviewAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterReviewAdapter.kt @@ -12,8 +12,10 @@ import com.gh.gamecenter.R import com.gh.gamecenter.databinding.VideoPosterPreviewItemBinding import com.lightgame.adapter.BaseRecyclerAdapter -class VideoPosterReviewAdapter(context: Context, - val viewModel: VideoPosterViewModel) : BaseRecyclerAdapter(context) { +class VideoPosterReviewAdapter( + context: Context, + val viewModel: VideoPosterViewModel +) : BaseRecyclerAdapter(context) { private var mListData: MutableList = ArrayList() @@ -45,8 +47,8 @@ class VideoPosterReviewAdapter(context: Context, holder.binding.preview.setImageBitmap(thumbs) } else if (videoPreview.thumbsUrl != null) { ImageUtils.picasso - .load(Uri.parse(videoPreview.thumbsUrl)) - .into(holder.binding.preview) + .load(Uri.parse(videoPreview.thumbsUrl)) + .into(holder.binding.preview) } holder.binding.preview.setOnClickListener { viewModel.previewLiveData.postValue(videoPreview) @@ -87,6 +89,7 @@ class VideoPosterReviewAdapter(context: Context, } } -class VideoPosterReviewItemViewHolder(val binding: VideoPosterPreviewItemBinding) : BaseRecyclerViewHolder(binding.root) { +class VideoPosterReviewItemViewHolder(val binding: VideoPosterPreviewItemBinding) : + BaseRecyclerViewHolder(binding.root) { } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterViewModel.kt index aab2227d8f..919ae09bd8 100644 --- a/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/poster/video/VideoPosterViewModel.kt @@ -12,9 +12,11 @@ import com.gh.gamecenter.entity.VideoEntity import java.io.File import kotlin.math.roundToLong -class VideoPosterViewModel(application: Application, - val videoPath: String?, - val videoEntity: VideoEntity?) : AndroidViewModel(application) { +class VideoPosterViewModel( + application: Application, + val videoPath: String?, + val videoEntity: VideoEntity? +) : AndroidViewModel(application) { val videoPreviewsLiveData = MutableLiveData>() @@ -97,9 +99,11 @@ class VideoPosterViewModel(application: Application, class VideoPreview(val time: Long, val thumbs: Bitmap? = null, val thumbsUrl: String? = null) - class Factory(private val mApplication: Application, - private val mVideoPath: String?, - private val mVideoEntity: VideoEntity?) : ViewModelProvider.NewInstanceFactory() { + class Factory( + private val mApplication: Application, + private val mVideoPath: String?, + private val mVideoEntity: VideoEntity? + ) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { return VideoPosterViewModel(mApplication, mVideoPath, mVideoEntity) as T diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/UploadEntity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/UploadEntity.kt index 54a9f44701..04f1d89f16 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/UploadEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/UploadEntity.kt @@ -7,10 +7,10 @@ import androidx.room.PrimaryKey @Keep @Entity data class UploadEntity( - @PrimaryKey - val uploadFilePath: String, - val fileMD5: String?, - val domain: String, // url = domain + key - val key: String, - var success: Boolean + @PrimaryKey + val uploadFilePath: String, + val fileMD5: String?, + val domain: String, // url = domain + key + val key: String, + var success: Boolean ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/UploadManager.kt b/app/src/main/java/com/gh/gamecenter/video/upload/UploadManager.kt index 165ee2fbde..d147930ae5 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/UploadManager.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/UploadManager.kt @@ -61,30 +61,40 @@ object UploadManager : OnUploadListener { if (mUploadThreadMap[uploadFilePath]?.isAlive == true) return RetrofitManager.getInstance() - .api - .ossUpdateConfig - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { + .api + .ossUpdateConfig + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { - override fun onSuccess(data: OssEntity) { - data.uploadFilePath = uploadFilePath - if (uploadEntity != null) { - data.domain = uploadEntity.domain - data.key = uploadEntity.key - } else { - tryCatchInRelease { mUploadDao.addUpload(UploadEntity(uploadFilePath, fileMD5, data.domain, data.key, false)) } + override fun onSuccess(data: OssEntity) { + data.uploadFilePath = uploadFilePath + if (uploadEntity != null) { + data.domain = uploadEntity.domain + data.key = uploadEntity.key + } else { + tryCatchInRelease { + mUploadDao.addUpload( + UploadEntity( + uploadFilePath, + fileMD5, + data.domain, + data.key, + false + ) + ) } - - val uploadThread = UploadThread(data, this@UploadManager) - uploadThread.start() - mUploadThreadMap[uploadFilePath] = uploadThread } - override fun onFailure(exception: Exception) { - onUploadFailure(uploadFilePath, "get oss config failure : " + exception.message) - } - }) + val uploadThread = UploadThread(data, this@UploadManager) + uploadThread.start() + mUploadThreadMap[uploadFilePath] = uploadThread + } + + override fun onFailure(exception: Exception) { + onUploadFailure(uploadFilePath, "get oss config failure : " + exception.message) + } + }) } fun isUploading(uploadFilePath: String): Boolean { diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/UploadThread.kt b/app/src/main/java/com/gh/gamecenter/video/upload/UploadThread.kt index 742762d064..ff65a8d51d 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/UploadThread.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/UploadThread.kt @@ -20,8 +20,10 @@ import java.io.File * todo BUG 上传过程中遇到网络问题中断 onFailure()方法无法响应 * https://github.com/aliyun/aliyun-oss-android-sdk/issues/75 */ -class UploadThread(private val mOssEntity: OssEntity, - private val mUploadListener: OnUploadListener) : Thread() { +class UploadThread( + private val mOssEntity: OssEntity, + private val mUploadListener: OnUploadListener +) : Thread() { private var mOssAsyncTask: OSSAsyncTask? = null @@ -42,7 +44,8 @@ class UploadThread(private val mOssEntity: OssEntity, conf.maxConcurrentRequest = 5 conf.maxErrorRetry = 2 - val credentialProvider = OSSStsTokenCredentialProvider(mOssEntity.accessKeyId, mOssEntity.accessKeySecret, mOssEntity.securityToken) + val credentialProvider = + OSSStsTokenCredentialProvider(mOssEntity.accessKeyId, mOssEntity.accessKeySecret, mOssEntity.securityToken) val oss = OSSClient(HaloApp.getInstance().application, mOssEntity.endPoint, credentialProvider, conf) val recordDirectory = Environment.getExternalStorageDirectory().absolutePath + "/oss_record/" @@ -51,38 +54,50 @@ class UploadThread(private val mOssEntity: OssEntity, recordDir.mkdirs() } - val request = ResumableUploadRequest(mOssEntity.bucket, mOssEntity.key, mOssEntity.uploadFilePath, recordDirectory) + val request = + ResumableUploadRequest(mOssEntity.bucket, mOssEntity.key, mOssEntity.uploadFilePath, recordDirectory) request.setDeleteUploadOnCancelling(false) request.progressCallback = OSSProgressCallback { _, currentSize, totalSize -> mUploadListener.onProgressChanged( - mOssEntity.uploadFilePath, - currentSize / 1000, - totalSize / 1000, - getSpeed(currentSize / 1000)) + mOssEntity.uploadFilePath, + currentSize / 1000, + totalSize / 1000, + getSpeed(currentSize / 1000) + ) } - mOssAsyncTask = oss.asyncResumableUpload(request, object : OSSCompletedCallback { - override fun onSuccess(request: ResumableUploadRequest, result: ResumableUploadResult) { - mRetryCount = 0 - mNeedInvokeFailureInCompleted = false - mUploadListener.onUploadSuccess(mOssEntity.uploadFilePath, mOssEntity.domain + mOssEntity.key) + mOssAsyncTask = oss.asyncResumableUpload( + request, + object : OSSCompletedCallback { + override fun onSuccess(request: ResumableUploadRequest, result: ResumableUploadResult) { + mRetryCount = 0 + mNeedInvokeFailureInCompleted = false + mUploadListener.onUploadSuccess(mOssEntity.uploadFilePath, mOssEntity.domain + mOssEntity.key) - } + } - override fun onFailure(request: ResumableUploadRequest, clientExcepion: ClientException, serviceException: ServiceException) { - mNeedInvokeFailureInCompleted = false - mUploadListener.onUploadFailure(mOssEntity.uploadFilePath, clientExcepion.message + "/" + serviceException.message) - } - }) + override fun onFailure( + request: ResumableUploadRequest, + clientExcepion: ClientException, + serviceException: ServiceException + ) { + mNeedInvokeFailureInCompleted = false + mUploadListener.onUploadFailure( + mOssEntity.uploadFilePath, + clientExcepion.message + "/" + serviceException.message + ) + } + }) mOssAsyncTask?.waitUntilFinished() Utils.log(UploadThread::class.java.simpleName + "=>upload task completed::" + mNeedInvokeFailureInCompleted) if (mNeedInvokeFailureInCompleted) { if (File(mOssEntity.uploadFilePath).exists() && - NetworkUtils.isNetworkConnected(HaloApp.getInstance().application)) { + NetworkUtils.isNetworkConnected(HaloApp.getInstance().application) + ) { if (mRetryCount <= mMaxRetryCount) { sleep(2000) run() diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt index fd7df46e8b..c3324b08b8 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt @@ -241,8 +241,14 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.watermarkGroup.visibility = View.VISIBLE mBinding.videoSourceEt.visibility = View.GONE mBinding.gameVideoSourceLine.visibility = View.VISIBLE - mBinding.chooseActivityIv.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_upload_video_activity_enable)) - mBinding.chooseActivityIv.background = ContextCompat.getDrawable(this, R.drawable.bg_upload_video_choose_activity_enable) + mBinding.chooseActivityIv.setImageDrawable( + ContextCompat.getDrawable( + this, + R.drawable.ic_upload_video_activity_enable + ) + ) + mBinding.chooseActivityIv.background = + ContextCompat.getDrawable(this, R.drawable.bg_upload_video_choose_activity_enable) } else { mBinding.originalTv.isChecked = false mBinding.reprintTv.isChecked = true @@ -250,7 +256,12 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.videoSourceEt.visibility = View.VISIBLE mBinding.gameVideoSourceLine.visibility = View.GONE mBinding.videoSourceEt.requestFocus() - mBinding.chooseActivityIv.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_upload_video_activity_unenable)) + mBinding.chooseActivityIv.setImageDrawable( + ContextCompat.getDrawable( + this, + R.drawable.ic_upload_video_activity_unenable + ) + ) mBinding.chooseActivityIv.background = ContextCompat.getDrawable(this, R.drawable.bg_shape_f5_radius_999) } } @@ -471,7 +482,7 @@ class UploadVideoActivity : ToolBarActivity() { handleFileNotFound() } else { DialogUtils.showUploadDraftDialog(this@UploadVideoActivity, - object :CancelListener{ + object : CancelListener { override fun onCancel() { if (!File(mVideoFileEntity?.path).exists()) { toast("上传失败,视频文件不存在") @@ -596,12 +607,18 @@ class UploadVideoActivity : ToolBarActivity() { } if (mUpdatedPosterPath.isEmpty() && videoData.poster.isNotEmpty()) { - mViewModel.postContent(isDraft, videoData, mVideoFileEntity?.path, mBinding.originalTv.isChecked && mBinding.watermarkSb.isChecked) + mViewModel.postContent( + isDraft, + videoData, + mVideoFileEntity?.path, + mBinding.originalTv.isChecked && mBinding.watermarkSb.isChecked + ) } else { val posterPath = if (mUpdatedPosterPath.isNotEmpty()) { mUpdatedPosterPath } else { - val localVideoPoster = application.cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".jpg" + val localVideoPoster = + application.cacheDir.absolutePath + File.separator + System.currentTimeMillis() + ".jpg" try { val bmp = ThumbnailUtils.createVideoThumbnail( mVideoFileEntity?.path @@ -777,7 +794,8 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.uploadStatus.text = "视频上传中..." mBinding.uploadSpeed.visibility = View.VISIBLE mBinding.uploadButton.visibility = View.VISIBLE - mBinding.uploadSpeed.text = (SpeedUtils.getSpeed(speed) + "预计还需" + SpeedUtils.getRemainTime(totalSize, currentSize, speed)) + mBinding.uploadSpeed.text = + (SpeedUtils.getSpeed(speed) + "预计还需" + SpeedUtils.getRemainTime(totalSize, currentSize, speed)) mBinding.uploadProgress.update(((360 * currentSize) / totalSize).toInt(), "") } } @@ -936,7 +954,13 @@ class UploadVideoActivity : ToolBarActivity() { /** * 普通入口(视频投稿) */ - fun getIntent(context: Context, videoPath: String, entrance: String, path: String, poster: String? = null): Intent { + fun getIntent( + context: Context, + videoPath: String, + entrance: String, + path: String, + poster: String? = null + ): Intent { val intent = Intent(context, UploadVideoActivity::class.java) intent.putExtra(EntranceConsts.KEY_PATH, path) intent.putExtra(EntranceConsts.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt index 73fd413a8e..25867d42ef 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt @@ -59,29 +59,39 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true)) val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) mApi.postVideo(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - tryWithDefaultCatch { - val videoId = JSONObject(response?.string().toString()).getString("_id") + override fun onResponse(response: ResponseBody?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + tryWithDefaultCatch { + val videoId = JSONObject(response?.string().toString()).getString("_id") - val poster = jsonObject.getString("poster") - val url = jsonObject.getString("url") - val length = jsonObject.getLong("length") - postLiveData.postValue(Resource.success(MyVideoEntity(id = videoId, poster = poster, url = url, length = length, status = "pending"))) + val poster = jsonObject.getString("poster") + val url = jsonObject.getString("url") + val length = jsonObject.getLong("length") + postLiveData.postValue( + Resource.success( + MyVideoEntity( + id = videoId, + poster = poster, + url = url, + length = length, + status = "pending" + ) + ) + ) - EnergyBridge.postEnergyTask("upload_video", videoId) - } + EnergyBridge.postEnergyTask("upload_video", videoId) } + } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - postLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + postLiveData.postValue(Resource.error(e)) + } + }) } @SuppressLint("CheckResult") @@ -94,20 +104,20 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat } postVideoDraft - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - postDraftLiveData.postValue(Resource.success("")) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + postDraftLiveData.postValue(Resource.success("")) + } - override fun onFailure(exception: Exception) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - postDraftLiveData.postValue(Resource.error(null)) - } + override fun onFailure(exception: Exception) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + postDraftLiveData.postValue(Resource.error(null)) + } - }) + }) } @@ -115,48 +125,64 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true)) val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) mApi.patchVideo(body, videoId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - val poster = jsonObject.getString("poster") - val url = jsonObject.getString("url") - val length = jsonObject.getLong("length") - postLiveData.postValue(Resource.success(MyVideoEntity(id = videoId, poster = poster, url = url, length = length, status = "pending"))) - } + override fun onResponse(response: ResponseBody?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + val poster = jsonObject.getString("poster") + val url = jsonObject.getString("url") + val length = jsonObject.getLong("length") + postLiveData.postValue( + Resource.success( + MyVideoEntity( + id = videoId, + poster = poster, + url = url, + length = length, + status = "pending" + ) + ) + ) + } - override fun onFailure(e: HttpException?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - postLiveData.postValue(Resource.error(e)) - } - }) + override fun onFailure(e: HttpException?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + postLiveData.postValue(Resource.error(e)) + } + }) } - fun postVideoPosterAndContent(isDraft: Boolean, content: VideoEntity, videoPath: String?, videoPoster: String, watermark: Boolean = false) { + fun postVideoPosterAndContent( + isDraft: Boolean, + content: VideoEntity, + videoPath: String?, + videoPoster: String, + watermark: Boolean = false + ) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传视频封面中...", true)) val application: Application = getApplication() UploadImageUtils.compressAndUploadImage( UploadImageUtils.UploadType.poster, videoPoster, true, - object : UploadImageUtils.OnUploadImageListener { - override fun onSuccess(imageUrl: String) { - content.poster = imageUrl - postContent(isDraft, content, videoPath, watermark) - } + object : UploadImageUtils.OnUploadImageListener { + override fun onSuccess(imageUrl: String) { + content.poster = imageUrl + postContent(isDraft, content, videoPath, watermark) + } - override fun onError(e: Throwable?) { - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - if (e != null && e is HttpException && e.code() == 403) { - Utils.toast(getApplication(), "图片违规,请重新编辑") - } else { - Utils.toast(application, "保存失败,请检查网络正常后再重试") - } + override fun onError(e: Throwable?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) + if (e != null && e is HttpException && e.code() == 403) { + Utils.toast(getApplication(), "图片违规,请重新编辑") + } else { + Utils.toast(application, "保存失败,请检查网络正常后再重试") } + } - override fun onProgress(total: Long, progress: Long) { - } - }) + override fun onProgress(total: Long, progress: Long) { + } + }) } fun postContent(isDraft: Boolean, videoEntity: VideoEntity, videoPath: String?, watermark: Boolean = false) { @@ -173,8 +199,10 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat tryCatchInRelease { val retriever = MediaMetadataRetriever() retriever.setDataSource(getApplication(), Uri.fromFile(File(it))) - videoWidth = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)) - videoHeight = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)) + videoWidth = + Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)) + videoHeight = + Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)) retriever.release() } } @@ -191,67 +219,67 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat @SuppressLint("CheckResult") private fun getActivityTagStatus() { mApi.activityTagStatus - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: JsonObject) { - val status = data.get("status").asString//on, off - activityTagLiveData.postValue(status == "on") - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: JsonObject) { + val status = data.get("status").asString//on, off + activityTagLiveData.postValue(status == "on") + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - activityTagLiveData.postValue(false) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + activityTagLiveData.postValue(false) + } + }) } @SuppressLint("CheckResult") private fun getVideoTags() { mApi.videoTags - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - tagsLiveData.postValue(data) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + tagsLiveData.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + } + }) } @SuppressLint("CheckResult") private fun getVideoCategory() { mApi.videoCategories - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(data) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse>() { + override fun onSuccess(data: List) { + categoryLiveData.postValue(data) + } - override fun onFailure(exception: Exception) { - super.onFailure(exception) - } - }) + override fun onFailure(exception: Exception) { + super.onFailure(exception) + } + }) } fun deleteDraft(id: String) { mApi.deleteVideoDraft(UserManager.getInstance().userId, id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: ResponseBody?) { - deleteDraftLiveData.postValue(response?.string() ?: "") - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + deleteDraftLiveData.postValue(response?.string() ?: "") + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - deleteDraftLiveData.postValue(e?.response()?.errorBody()?.string() ?: "") - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + deleteDraftLiveData.postValue(e?.response()?.errorBody()?.string() ?: "") + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/VideoFileEntity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/VideoFileEntity.kt index 0161bb4d02..1d20e85b7f 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/VideoFileEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/VideoFileEntity.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.video.upload.view data class VideoFileEntity( - val path: String, - var url: String?, - var poster: String, - var length: Long = 0, - var size: Long = 0, - val format: String + val path: String, + var url: String?, + var poster: String, + var length: Long = 0, + var size: Long = 0, + val format: String ) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftActivity.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftActivity.kt index bb47088e16..262087e1d8 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftActivity.kt @@ -15,12 +15,13 @@ class VideoDraftActivity : ToolBarActivity() { updateStatusBarColor(R.color.background_white, R.color.background_white) } - override fun isAutoResetViewBackgroundEnabled(): Boolean =true + override fun isAutoResetViewBackgroundEnabled(): Boolean = true override fun onDarkModeChanged() { super.onDarkModeChanged() updateStatusBarColor(R.color.background_white, R.color.background_white) } + companion object { fun getIntent(context: Context): Intent { return getTargetIntent(context, VideoDraftActivity::class.java, VideoDraftFragment::class.java) diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt index b086d27ee4..62990d1254 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftAdapter.kt @@ -66,7 +66,12 @@ class VideoDraftAdapter( text = draftEntity.game?.name textSize = 11f setPadding(10f.dip2px(), 6f.dip2px(), 10f.dip2px(), 6f.dip2px()) - setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(context, R.drawable.ic_forum_label), null, null, null) + setCompoundDrawablesWithIntrinsicBounds( + ContextCompat.getDrawable( + context, + R.drawable.ic_forum_label + ), null, null, null + ) background = ContextCompat.getDrawable(context, R.drawable.bg_shape_f5_radius_999) } } else { diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt index bcdb227e99..d373b01025 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftFragment.kt @@ -22,7 +22,8 @@ class VideoDraftFragment : ListFragment() override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == VideoManagerActivity.REQUEST_CODE_DRAFT && resultCode == UploadVideoActivity.RESULT_CODE_VIDEO || - resultCode == UploadVideoActivity.RESULT_CODE_DRAFT) { + resultCode == UploadVideoActivity.RESULT_CODE_DRAFT + ) { onLoadRefresh() } } diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftViewModel.kt index 1de8d86ad1..9e0b2dafaf 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoDraftViewModel.kt @@ -28,25 +28,25 @@ class VideoDraftViewModel(application: Application) : ListViewModel() { - override fun onResponse(response: ResponseBody?) { - val list = mListLiveData.value - if (list != null) { - for (data in list) { - if (data.id == id) { - list.remove(data) - mListLiveData.postValue(list) - break - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val list = mListLiveData.value + if (list != null) { + for (data in list) { + if (data.id == id) { + list.remove(data) + mListLiveData.postValue(list) + break } } } + } - override fun onFailure(e: HttpException?) { - ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) - } - }) + override fun onFailure(e: HttpException?) { + ErrorHelper.handleError(getApplication(), e?.response()?.errorBody()?.string()) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt index 5c4f64c2b5..3f903f85b5 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt @@ -35,7 +35,15 @@ class VideoManagerActivity : BaseActivity_TabLayout() { if (uris.size > 0) { val videoPath = PathUtils.getPath(this, uris[0]) ?: "" val intent = if (mVideoLink != null) { - UploadVideoActivity.getIntent(this, videoPath, mVideoLink!!, mSimpleGameEntity, mEntrance, "视频投稿", "") + UploadVideoActivity.getIntent( + this, + videoPath, + mVideoLink!!, + mSimpleGameEntity, + mEntrance, + "视频投稿", + "" + ) } else { UploadVideoActivity.getIntent(this, videoPath, mEntrance, "视频投稿", "") } @@ -70,20 +78,20 @@ class VideoManagerActivity : BaseActivity_TabLayout() { override fun onMenuItemClick(item: MenuItem): Boolean { if (item.itemId == R.id.menu_text) { PermissionHelper.checkStoragePermissionBeforeAction(this, - object : EmptyCallback { - override fun onCallback() { - MtaHelper.onEvent("我的光环_新", "视频投稿", "上传视频") - LogUtils.logVideoStreamingUpload("点击上传视频按钮", "视频投稿", "", "") - Matisse.from(this@VideoManagerActivity) - .choose(MimeType.ofVideo()) - .countable(true) - .singleChoiceMode(true) - .addFilter(GhMatisseVideoFilter()) - .addApplyFilter(GhMatisseVideoApplyFilter()) - .showSingleMediaType(true) - .forResult(REQUEST_CODE_SELECT_VIDEO) - } - }) + object : EmptyCallback { + override fun onCallback() { + MtaHelper.onEvent("我的光环_新", "视频投稿", "上传视频") + LogUtils.logVideoStreamingUpload("点击上传视频按钮", "视频投稿", "", "") + Matisse.from(this@VideoManagerActivity) + .choose(MimeType.ofVideo()) + .countable(true) + .singleChoiceMode(true) + .addFilter(GhMatisseVideoFilter()) + .addApplyFilter(GhMatisseVideoApplyFilter()) + .showSingleMediaType(true) + .forResult(REQUEST_CODE_SELECT_VIDEO) + } + }) } return super.onMenuItemClick(item) } @@ -123,7 +131,12 @@ class VideoManagerActivity : BaseActivity_TabLayout() { } @JvmStatic - fun getVideoManagerBundle(linkEntity: VideoLinkEntity, simpleGameEntity: SimpleGameEntity, entrance: String? = null, path: String? = ""): Bundle { + fun getVideoManagerBundle( + linkEntity: VideoLinkEntity, + simpleGameEntity: SimpleGameEntity, + entrance: String? = null, + path: String? = "" + ): Bundle { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_PATH, path) bundle.putParcelable(VideoLinkEntity::class.java.simpleName, linkEntity) @@ -139,10 +152,12 @@ class VideoManagerActivity : BaseActivity_TabLayout() { * @param link 只用于数据统计 */ @JvmStatic - fun getIntent(context: Context, - linkEntity: VideoLinkEntity, - entrance: String?, - path: String?): Intent { + fun getIntent( + context: Context, + linkEntity: VideoLinkEntity, + entrance: String?, + path: String? + ): Intent { val intent = Intent(context, VideoManagerActivity::class.java) intent.putExtra(VideoLinkEntity::class.java.simpleName, linkEntity) intent.putExtra(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyAdapter.kt index 654c806882..d10532a8d5 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyAdapter.kt @@ -25,9 +25,11 @@ import com.gh.gamecenter.video.upload.view.UploadVideoActivity import java.text.SimpleDateFormat import java.util.* -class VideoVerifyAdapter(context: Context, - private val mViewModel: VideoVerifyViewModel, - private val mEntrance: String) : ListAdapter(context) { +class VideoVerifyAdapter( + context: Context, + private val mViewModel: VideoVerifyViewModel, + private val mEntrance: String +) : ListAdapter(context) { override fun areItemsTheSame(oldItem: VideoEntity?, newItem: VideoEntity?): Boolean { return oldItem?.id == newItem?.id @@ -80,21 +82,30 @@ class VideoVerifyAdapter(context: Context, } holder.itemView.setOnClickListener { - DirectUtils.directToVideoDetail(mContext, entity.id, VideoDetailContainerViewModel.Location.USER_UPLOADED_VIDEO.value, false, path = "视频投稿-已投稿") + DirectUtils.directToVideoDetail( + mContext, + entity.id, + VideoDetailContainerViewModel.Location.USER_UPLOADED_VIDEO.value, + false, + path = "视频投稿-已投稿" + ) } holder.binding.more.setOnClickListener { showMorePopWindow(holder.binding.more, entity) { if (it == "编辑") { PermissionHelper.checkStoragePermissionBeforeAction(mContext, - object : EmptyCallback { - override fun onCallback() { - val intent = UploadVideoActivity.getIntent(mContext, entity, mEntrance, "视频投稿-已投稿") - if (mContext is Activity) { - (mContext as Activity).startActivityForResult(intent, VideoManagerActivity.REQUEST_CODE_VIDEO) - } - LogUtils.logVideoStreamingUpload("点击编辑按钮", "视频投稿-已投稿", "", "") + object : EmptyCallback { + override fun onCallback() { + val intent = UploadVideoActivity.getIntent(mContext, entity, mEntrance, "视频投稿-已投稿") + if (mContext is Activity) { + (mContext as Activity).startActivityForResult( + intent, + VideoManagerActivity.REQUEST_CODE_VIDEO + ) } - }) + LogUtils.logVideoStreamingUpload("点击编辑按钮", "视频投稿-已投稿", "", "") + } + }) } else { if (entity.status == "pending") { ToastUtils.showToast("视频正在审核中") @@ -148,9 +159,9 @@ class VideoVerifyAdapter(context: Context, val inflater = LayoutInflater.from(view.context) val layout = inflater.inflate(R.layout.layout_popup_container, null) val popupWindow = BugFixedPopupWindow( - layout, - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT + layout, + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT ) val container = layout.findViewById(R.id.container) diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyViewModel.kt index f69ecc1383..18d26be97a 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoVerifyViewModel.kt @@ -28,26 +28,26 @@ class VideoVerifyViewModel(application: Application) : ListViewModel() { - override fun onResponse(response: ResponseBody?) { - Utils.toast(getApplication(), "操作成功") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + Utils.toast(getApplication(), "操作成功") - val list = mListLiveData.value ?: return - for (entity in list) { - if (entity.id == videoId) { - list.remove(entity) - mListLiveData.postValue(list) - break - } + val list = mListLiveData.value ?: return + for (entity in list) { + if (entity.id == videoId) { + list.remove(entity) + mListLiveData.postValue(list) + break } } + } - override fun onFailure(e: HttpException?) { - val string = e?.response()?.errorBody()?.string() ?: "" - ErrorHelper.handleError(getApplication(), string) - } - }) + override fun onFailure(e: HttpException?) { + val string = e?.response()?.errorBody()?.string() ?: "" + ErrorHelper.handleError(getApplication(), string) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt index b16bbeebd0..40ccb8c186 100644 --- a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt @@ -35,7 +35,12 @@ import com.gh.gamecenter.suggest.SuggestSelectGameAdapter import com.lightgame.utils.Utils import splitties.collections.forEachWithIndex -class VoteAdapter(context: Context, private val fragment: VoteFragment, private val addVoteCallback: () -> Unit, private val voteCallback: (id: String?) -> Unit) : +class VoteAdapter( + context: Context, + private val fragment: VoteFragment, + private val addVoteCallback: () -> Unit, + private val voteCallback: (id: String?) -> Unit +) : ListAdapter(context) { var mSelectGameDialog: Dialog? = null @@ -44,7 +49,8 @@ class VoteAdapter(context: Context, private val fragment: VoteFragment, private //进度条原始最大宽度 private var mPbWidth = (DisplayUtils.getScreenWidth() - 144F.dip2px()).toFloat() - override fun areItemsTheSame(oldItem: VersionVoteEntity, newItem: VersionVoteEntity) = !oldItem.id.isNullOrEmpty() && oldItem.id == newItem.id + override fun areItemsTheSame(oldItem: VersionVoteEntity, newItem: VersionVoteEntity) = + !oldItem.id.isNullOrEmpty() && oldItem.id == newItem.id override fun getItemViewType(position: Int) = if (position == itemCount - 1) 0 else 1 @@ -57,7 +63,11 @@ class VoteAdapter(context: Context, private val fragment: VoteFragment, private override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { if (holder is VoteViewHolder) { val versionVoteEntity = mEntityList[position] - holder.binding.root.setBackgroundColor(if (versionVoteEntity.isHighLight) R.color.comment_highlight.toColor(mContext) else R.color.background_white.toColor(mContext)) + holder.binding.root.setBackgroundColor( + if (versionVoteEntity.isHighLight) R.color.comment_highlight.toColor( + mContext + ) else R.color.background_white.toColor(mContext) + ) if (versionVoteEntity.open) { val userData = versionVoteEntity.me if (userData != null && userData.isVersionRequested) { diff --git a/app/src/main/java/com/gh/gamecenter/vote/VoteFragment.kt b/app/src/main/java/com/gh/gamecenter/vote/VoteFragment.kt index df8b9e6332..8649e4e816 100644 --- a/app/src/main/java/com/gh/gamecenter/vote/VoteFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/vote/VoteFragment.kt @@ -37,7 +37,7 @@ import org.json.JSONObject import java.io.File import java.util.* -class VoteFragment: ListFragment() { +class VoteFragment : ListFragment() { private lateinit var mBinding: FragmentVoteBinding private lateinit var mAdapter: VoteAdapter private lateinit var mUploadDialog: UploadScheduleDialog @@ -70,7 +70,12 @@ class VoteFragment: ListFragment() { override fun onCreate(savedInstanceState: Bundle?) { mGameId = requireArguments().getString(EntranceConsts.KEY_GAMEID) ?: "" - setNavigationTitle(getString(R.string.title_vote_formatable, requireArguments().getString(EntranceConsts.KEY_GAMENAME))) + setNavigationTitle( + getString( + R.string.title_vote_formatable, + requireArguments().getString(EntranceConsts.KEY_GAMENAME) + ) + ) super.onCreate(savedInstanceState) initAd() initSearchBar() @@ -189,18 +194,21 @@ class VoteFragment: ListFragment() { //上传apk private fun uploadApk(installGameEntity: InstallGameEntity) { val path = installGameEntity.gamePath ?: "" - mUploadFileDisposable = OssUploadUtils.uploadFile(path, OssUploadUtils.UploadType.GAME, object : OssUploadUtils.OnUploadFileListener { - override fun onSuccess(url: String) { - mApkUrl = url - mUploadFileDisposable?.dispose() - mUploadDialog.updateProgress(357) //即99% - mListViewModel.postApkInfo(mApkUrl, installGameEntity) - } + mUploadFileDisposable = OssUploadUtils.uploadFile( + path, + OssUploadUtils.UploadType.GAME, + object : OssUploadUtils.OnUploadFileListener { + override fun onSuccess(url: String) { + mApkUrl = url + mUploadFileDisposable?.dispose() + mUploadDialog.updateProgress(357) //即99% + mListViewModel.postApkInfo(mApkUrl, installGameEntity) + } - override fun onError(e: Throwable?) { - mUploadDialog.uploadFail() + override fun onError(e: Throwable?) { + mUploadDialog.uploadFail() + } } - } ) { _, currentSize, totalSize -> val progress = (currentSize / totalSize.toFloat()) * 357 //即最多99% mUploadDialog.updateProgress(progress.toInt()) diff --git a/app/src/main/java/com/gh/vspace/VBackupHelper.kt b/app/src/main/java/com/gh/vspace/VBackupHelper.kt index ebd2d1269d..cab8d5cf73 100644 --- a/app/src/main/java/com/gh/vspace/VBackupHelper.kt +++ b/app/src/main/java/com/gh/vspace/VBackupHelper.kt @@ -95,13 +95,14 @@ object VBackupHelper { } } - val backupZip = ZipFile(backupDir.absolutePath + "/" + backupSubDir.name + ".zip").apply { addFolder(backupSubDir) } + val backupZip = + ZipFile(backupDir.absolutePath + "/" + backupSubDir.name + ".zip").apply { addFolder(backupSubDir) } backupSubDir.deleteRecursively() val fileName = MD5Utils.calculateMD5(backupZip.file) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - Files.move(backupZip.file.toPath(), File(backupDir.absolutePath +"/" + fileName + ".zip").toPath()) + Files.move(backupZip.file.toPath(), File(backupDir.absolutePath + "/" + fileName + ".zip").toPath()) } } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerActivity.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerActivity.kt index 121f4ff998..f712339beb 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerActivity.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerActivity.kt @@ -8,9 +8,9 @@ import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.updateStatusBarColor -class VDownloadManagerActivity: ToolBarActivity() { +class VDownloadManagerActivity : ToolBarActivity() { - private var mFragment : VDownloadManagerWrapperFragment? = null + private var mFragment: VDownloadManagerWrapperFragment? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -39,7 +39,11 @@ class VDownloadManagerActivity: ToolBarActivity() { companion object { @JvmStatic @JvmOverloads - fun getIntent(context: Context, switchToDownloadingTab: Boolean = false, isFromHomeRecent: Boolean = false): Intent { + fun getIntent( + context: Context, + switchToDownloadingTab: Boolean = false, + isFromHomeRecent: Boolean = false + ): Intent { val intent = Intent(context, VDownloadManagerActivity::class.java) intent.putExtra(EntranceConsts.KEY_POSITION, if (switchToDownloadingTab) 1 else 0) intent.putExtra(EntranceConsts.KEY_IS_FROM_HOME_RECENT, isFromHomeRecent) diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt index 8000d090e8..1e8ef50fd7 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt @@ -260,7 +260,12 @@ class VDownloadManagerAdapter( root.setBackgroundColor(R.color.background_white.toColor(mContext)) checkAllCb.setTextColor(R.color.text_title.toColor(mContext)) selectNumTv.setTextColor(R.color.theme_font.toColor(mContext)) - checkAllCb.setCompoundDrawablesWithIntrinsicBounds(R.drawable.selector_ic_simulator.toDrawable(mContext), null, null, null) + checkAllCb.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.selector_ic_simulator.toDrawable(mContext), + null, + null, + null + ) checkSelectItems() } } @@ -269,8 +274,14 @@ class VDownloadManagerAdapter( mPopupBinding?.run { selectNumTv.text = if (selectItems.isEmpty()) "" else "(${selectItems.size})" itemDelete.background = - if (selectItems.isEmpty()) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable(mContext) - itemDelete.setTextColor(if (selectItems.isEmpty()) R.color.text_subtitle.toColor(mContext) else R.color.white.toColor(mContext)) + if (selectItems.isEmpty()) R.drawable.button_round_gray_light.toDrawable(mContext) else R.drawable.download_button_normal_style.toDrawable( + mContext + ) + itemDelete.setTextColor( + if (selectItems.isEmpty()) R.color.text_subtitle.toColor(mContext) else R.color.white.toColor( + mContext + ) + ) itemDelete.isEnabled = selectItems.isNotEmpty() checkAllCb.isChecked = selectItems.size == mEntityList.size } diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt index 067ca4beb9..8a6af4c5fa 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt @@ -115,7 +115,12 @@ class VDownloadManagerFragment : override fun onDarkModeChanged() { super.onDarkModeChanged() - mBinding.headerContainer.lottieView.setSwitchAnimation(SPUtils.getBoolean(Constants.SP_HOME_VGAME_AREA_ENABLED, true)) + mBinding.headerContainer.lottieView.setSwitchAnimation( + SPUtils.getBoolean( + Constants.SP_HOME_VGAME_AREA_ENABLED, + true + ) + ) mAdapter.updatePopupWindow() } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerWrapperFragment.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerWrapperFragment.kt index 308af24c8b..c764a8137d 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerWrapperFragment.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerWrapperFragment.kt @@ -14,7 +14,7 @@ import com.gh.gamecenter.databinding.FragmentVdownloadManagerWrapperBinding import com.gh.gamecenter.history.IBatchDelete import com.gh.gamecenter.history.ManageOption -class VDownloadManagerWrapperFragment: BaseLazyTabFragment() { +class VDownloadManagerWrapperFragment : BaseLazyTabFragment() { private var mLastPosition = 0 private var mManageMenu: MenuItem? = null @@ -59,7 +59,10 @@ class VDownloadManagerWrapperFragment: BaseLazyTabFragment() { override fun initFragmentList(fragments: MutableList) { fragments.add(VDownloadManagerFragment().with(Bundle().apply { putString(VDownloadManagerViewModel.TYPE, VDownloadManagerViewModel.TYPE_DOWNLOADED) - putBoolean(EntranceConsts.KEY_IS_FROM_HOME_RECENT, arguments?.getBoolean(EntranceConsts.KEY_IS_FROM_HOME_RECENT) ?: false) + putBoolean( + EntranceConsts.KEY_IS_FROM_HOME_RECENT, + arguments?.getBoolean(EntranceConsts.KEY_IS_FROM_HOME_RECENT) ?: false + ) })) fragments.add(VDownloadManagerFragment().with(Bundle().apply { putString(VDownloadManagerViewModel.TYPE, VDownloadManagerViewModel.TYPE_DOWNLOADING) diff --git a/app/src/main/java/com/gh/vspace/VFeedbackDialogFragment.kt b/app/src/main/java/com/gh/vspace/VFeedbackDialogFragment.kt index 8912c3b0fc..48f279620f 100644 --- a/app/src/main/java/com/gh/vspace/VFeedbackDialogFragment.kt +++ b/app/src/main/java/com/gh/vspace/VFeedbackDialogFragment.kt @@ -83,7 +83,10 @@ class VFeedbackDialogFragment : BaseDialogFragment() { } mBinding.submitTv.setOnClickListener { mViewModel.postFeedback(mGame!!.id, mBinding.feedbackEt.text.toString(), getSelectedTagString()) - NewFlatLogUtils.logHaloFunGameExitDialogSubmitClick(mBinding.feedbackEt.text.toString(), JSONArray(getSelectedTagString())) + NewFlatLogUtils.logHaloFunGameExitDialogSubmitClick( + mBinding.feedbackEt.text.toString(), + JSONArray(getSelectedTagString()) + ) dismissAllowingStateLoss() } checkLabel() diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index 55ebae351c..520a2b1a62 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -112,7 +112,8 @@ object VHelper { val config = Config.getVSettingEntity()?.va if (config?.arch64 != null - && PackageUtils.isInstalled(context, config.arch64.packageName)) { + && PackageUtils.isInstalled(context, config.arch64.packageName) + ) { connectService(true) // 检查畅玩助手组件更新 diff --git a/app/src/main/java/com/gh/vspace/VLoadCompleteWindowHelper.kt b/app/src/main/java/com/gh/vspace/VLoadCompleteWindowHelper.kt index 8031939c12..c4ae7ac4a2 100644 --- a/app/src/main/java/com/gh/vspace/VLoadCompleteWindowHelper.kt +++ b/app/src/main/java/com/gh/vspace/VLoadCompleteWindowHelper.kt @@ -139,15 +139,24 @@ object VLoadCompleteWindowHelper { } mBinding.closeIv.setOnClickListener { if (!ClickUtils.isFastDoubleClick(it.id)) { - NewFlatLogUtils.logHaloFunDownloadCompleteTipClick("关闭", mAdapter.gameEntityList[mBinding.viewPager.currentItem].id) + NewFlatLogUtils.logHaloFunDownloadCompleteTipClick( + "关闭", + mAdapter.gameEntityList[mBinding.viewPager.currentItem].id + ) mBinding.viewPager.removeCallbacks(mLoopTask) mBinding.viewPager.removeCallbacks(mDismissTask) EasyFloat.dismiss(LOAD_COMPLETE_WINDOW) } } mBinding.launchTv.setOnClickListener { - NewFlatLogUtils.logHaloFunDownloadCompleteTipClick("启动", mAdapter.gameEntityList[mBinding.viewPager.currentItem].id) - VHelper.installOrLaunch(activity, mAdapter.gameEntityList[mBinding.viewPager.currentItem].getApk()[0].packageName) + NewFlatLogUtils.logHaloFunDownloadCompleteTipClick( + "启动", + mAdapter.gameEntityList[mBinding.viewPager.currentItem].id + ) + VHelper.installOrLaunch( + activity, + mAdapter.gameEntityList[mBinding.viewPager.currentItem].getApk()[0].packageName + ) } } } @@ -213,7 +222,8 @@ class LoadCompleteFloatAnimator : OnFloatAnimator { } } -class GameLoadCompleteAdapter(context: Context, var gameEntityList: List = emptyList()): BaseRecyclerAdapter(context) { +class GameLoadCompleteAdapter(context: Context, var gameEntityList: List = emptyList()) : + BaseRecyclerAdapter(context) { fun submitList(entityList: List) { if (entityList.isNotEmpty()) { @@ -237,7 +247,8 @@ class GameLoadCompleteAdapter(context: Context, var gameEntityList: List() // 获取缓存大小 @@ -560,7 +571,12 @@ class SettingsFragment : ToolbarFragment() { override fun onDarkModeChanged() { super.onDarkModeChanged() mBinding.root.setBackgroundColor(R.color.background.toColor(requireContext())) - mBinding.personalRecommendItem.switchLottie.setSwitchAnimation(SPUtils.getBoolean(PERSONAL_RECOMMEND_SP_KEY, true)) + mBinding.personalRecommendItem.switchLottie.setSwitchAnimation( + SPUtils.getBoolean( + PERSONAL_RECOMMEND_SP_KEY, + true + ) + ) mBinding.usageStatsItem.switchLottie.setSwitchAnimation(mUsageStatus) mBinding.notificationAuthorityItem.switchLottie.setSwitchAnimation(NotificationHelper.notificationIsEnable()) } diff --git a/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt b/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt index e1a4368dc2..e87186094c 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt @@ -28,7 +28,8 @@ class SwitchInstallMethodFragment : ToolbarFragment() { override fun getLayoutId() = 0 - override fun getInflatedLayout() = FragmentSwitchInstallMethodBinding.inflate(layoutInflater).apply { mBinding = this }.root + override fun getInflatedLayout() = + FragmentSwitchInstallMethodBinding.inflate(layoutInflater).apply { mBinding = this }.root override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -43,14 +44,23 @@ class SwitchInstallMethodFragment : ToolbarFragment() { val manufacturer = Build.MANUFACTURER.toUpperCase(Locale.CHINA) var defaultHintText: CharSequence - var browserHintText: CharSequence = "1.光环助手下载应用后,通过跳转默认浏览器安装已下载的应用(不会重复消耗流量),即可完成免密码安装\n2.内存较大的游戏在浏览器解压时间较长,需要等待片刻,您也可以通过浏览器的“下载记录”查看解压进度" + var browserHintText: CharSequence = + "1.光环助手下载应用后,通过跳转默认浏览器安装已下载的应用(不会重复消耗流量),即可完成免密码安装\n2.内存较大的游戏在浏览器解压时间较长,需要等待片刻,您也可以通过浏览器的“下载记录”查看解压进度" if (manufacturer == "OPPO" || manufacturer == "VIVO") { - val clickText : CharSequence = "前往手机设置-指纹、面部与密码>" - val endText = if (manufacturer == "OPPO") " 设置锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[安装验证];或者点击[添加面部]录入面部,将面部用于[安装验证],即可实现快速安装" else "开启锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[解锁],即可实现快速安装" - defaultHintText = "1.直接使用光环助手下载应用,但${manufacturer}手机自身安全性检测,下载后需要进行验证账户密码、指纹等解锁后安装\n2.您可以 $clickText$endText" + val clickText: CharSequence = "前往手机设置-指纹、面部与密码>" + val endText = + if (manufacturer == "OPPO") " 设置锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[安装验证];或者点击[添加面部]录入面部,将面部用于[安装验证],即可实现快速安装" else "开启锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[解锁],即可实现快速安装" + defaultHintText = + "1.直接使用光环助手下载应用,但${manufacturer}手机自身安全性检测,下载后需要进行验证账户密码、指纹等解锁后安装\n2.您可以 $clickText$endText" defaultHintText = SpanBuilder(defaultHintText) - .click(requireContext(), defaultHintText.length - clickText.length - endText.length, defaultHintText.length - endText.length, R.color.theme_font, true) { + .click( + requireContext(), + defaultHintText.length - clickText.length - endText.length, + defaultHintText.length - endText.length, + R.color.theme_font, + true + ) { requireContext().startActivity(Intent(Settings.ACTION_SETTINGS)) } .build() @@ -58,8 +68,17 @@ class SwitchInstallMethodFragment : ToolbarFragment() { val clickableText: CharSequence = "可查看使用教程>" browserHintText = "$browserHintText\n\n以上未能解决安装需要密码的,$clickableText" browserHintText = SpanBuilder(browserHintText) - .click(requireContext(), browserHintText.length - clickableText.length, browserHintText.length, R.color.theme_font, true) { - val url = SPUtils.getString(Constants.SP_BROWSER_HINT_URL, if (manufacturer == "OPPO") Constants.DEFAULT_OPPO_BROWSER_HINT_URL else Constants.DEFAULT_VIVO_BROWSER_HINT_URL) + .click( + requireContext(), + browserHintText.length - clickableText.length, + browserHintText.length, + R.color.theme_font, + true + ) { + val url = SPUtils.getString( + Constants.SP_BROWSER_HINT_URL, + if (manufacturer == "OPPO") Constants.DEFAULT_OPPO_BROWSER_HINT_URL else Constants.DEFAULT_VIVO_BROWSER_HINT_URL + ) requireContext().startActivity(WebActivity.getQAIntent(requireContext(), url, "安装问题", false, 1)) } .build() diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java index 2cd90cce90..dfdc521912 100644 --- a/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GameNewsSearchResultFragment.java @@ -7,6 +7,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + import android.text.Html; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java index 112f42bf5e..7fba0e81a7 100644 --- a/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/game/GamePluginAdapter.java @@ -160,7 +160,7 @@ public class GamePluginAdapter extends BaseRecyclerAdapter { public int getItemCount() { if (mPluginDisplayStatus == PluginDisplayStatus.OPEN) { return mPluginList.size() + 1; // 显示底部线条 - } else if(mPluginDisplayStatus == PluginDisplayStatus.OPEN_AND_BUTTON) { + } else if (mPluginDisplayStatus == PluginDisplayStatus.OPEN_AND_BUTTON) { return mPluginList.size(); } else if (mPluginDisplayStatus == PluginDisplayStatus.OPEN_TWO_AND_BUTTON) { return mPluginList.size() > 2 ? 2 : mPluginList.size(); diff --git a/app/src/main/java/com/halo/assistant/fragment/user/BbsCertificationViewModel.kt b/app/src/main/java/com/halo/assistant/fragment/user/BbsCertificationViewModel.kt index 1e24d3ffa7..315a6c9a2f 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/BbsCertificationViewModel.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/BbsCertificationViewModel.kt @@ -40,13 +40,13 @@ class BbsCertificationViewModel(application: Application) : AndroidViewModel(app @SuppressLint("CheckResult") fun unBindPhone() { api.unBindPhone() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - unBindLiveData.postValue(true) - } - }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + unBindLiveData.postValue(true) + } + }) } companion object { diff --git a/app/src/main/java/com/halo/assistant/fragment/user/ManuallyRealNameViewModel.kt b/app/src/main/java/com/halo/assistant/fragment/user/ManuallyRealNameViewModel.kt index 9806fdc0a8..f8ef667f47 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/ManuallyRealNameViewModel.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/ManuallyRealNameViewModel.kt @@ -22,7 +22,7 @@ import retrofit2.HttpException class ManuallyRealNameViewModel(application: Application) : AndroidViewModel(application) { - var remoteImageUrl: String ?= null + var remoteImageUrl: String? = null var resultLiveData = MutableLiveData() var reviewLiveData = MutableLiveData() diff --git a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt index 05b9c47743..d08785976a 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt @@ -221,7 +221,7 @@ class RealNameInfoFragment : ToolbarFragment() { mBinding.nameEt.setText(sb.toString()) mBinding.idCardEt.setText( idCard.id?.replace( - "(\\d)\\d{16}([0-9,X-Y])".toRegex(), + "(\\d)\\d{16}([0-9,X-Y])".toRegex(), "$1****************$2" ) ) diff --git a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.kt b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.kt index a394d02fef..165400388c 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoFragment.kt @@ -121,7 +121,11 @@ class UserInfoFragment : ToolbarFragment() { } mBinding.userinfoSafeTutorialTv.setOnClickListener { MtaHelper.onEvent("个人主页详情", "个人中心", "账号安全指南") - DirectUtils.directToWebView(requireContext(), "https://resource.ghzs.com/page/guide_page/safety_guide.html", "(个人中心)") + DirectUtils.directToWebView( + requireContext(), + "https://resource.ghzs.com/page/guide_page/safety_guide.html", + "(个人中心)" + ) } if (userInfo != null) { display(mBinding.userinfoIconSd, userInfo.icon) diff --git a/app/src/main/java/com/halo/assistant/fragment/user/UserPortraitCropImageActivity.java b/app/src/main/java/com/halo/assistant/fragment/user/UserPortraitCropImageActivity.java index 7e43ade04b..4709eada10 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/UserPortraitCropImageActivity.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/UserPortraitCropImageActivity.java @@ -71,35 +71,35 @@ public class UserPortraitCropImageActivity extends CropImageActivity { postDialog.show(getSupportFragmentManager(), null); final String path = getCacheDir() + File.separator + System.currentTimeMillis() + ".jpg"; Observable.create((ObservableOnSubscribe) emitter -> { - boolean isSuccess = savePicture(path); - if (isSuccess) { - UploadImageUtils.INSTANCE.uploadImage(UploadImageUtils.UploadType.icon, path, new UploadImageUtils.OnUploadImageListener() { - @Override - public void onSuccess(@NotNull String imageUrl) { - emitter.onNext(imageUrl); - emitter.onComplete(); - } + boolean isSuccess = savePicture(path); + if (isSuccess) { + UploadImageUtils.INSTANCE.uploadImage(UploadImageUtils.UploadType.icon, path, new UploadImageUtils.OnUploadImageListener() { + @Override + public void onSuccess(@NotNull String imageUrl) { + emitter.onNext(imageUrl); + emitter.onComplete(); + } - @Override - public void onError(@Nullable Throwable e) { - if (e != null) { - emitter.onError(e); - } else { - emitter.onError(new IllegalStateException("upload image error")); - } - } + @Override + public void onError(@Nullable Throwable e) { + if (e != null) { + emitter.onError(e); + } else { + emitter.onError(new IllegalStateException("upload image error")); + } + } - @Override - public void onProgress(long total, long progress) { - int percent = (int) (100 * (progress / (float) total)); - if (percent >= 100) percent = 99; - if (postDialog != null) { - postDialog.uploadWaitingHint("图片上传中 " + percent + "%"); - } + @Override + public void onProgress(long total, long progress) { + int percent = (int) (100 * (progress / (float) total)); + if (percent >= 100) percent = 99; + if (postDialog != null) { + postDialog.uploadWaitingHint("图片上传中 " + percent + "%"); + } + } + }); } - }); - } - }).subscribeOn(Schedulers.io()) + }).subscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) .subscribe(new Response() { @Override diff --git a/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt b/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt index 061502945d..4865107607 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/VerifiedConfirmDialog.kt @@ -7,8 +7,8 @@ import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.R import com.gh.gamecenter.databinding.DialogVerifiedConfirmBinding -class VerifiedConfirmDialog(val mContext: Context, private val mEvent: String, private val mKey: String) - : TrackableDialog(mContext, R.style.DialogWindowTransparent, mEvent, mKey) { +class VerifiedConfirmDialog(val mContext: Context, private val mEvent: String, private val mKey: String) : + TrackableDialog(mContext, R.style.DialogWindowTransparent, mEvent, mKey) { var onConfirmClickListener: (() -> Unit)? = null private val mBinding: DialogVerifiedConfirmBinding by lazy { DialogVerifiedConfirmBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneFragment.kt b/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneFragment.kt index 92ec592288..4908bbd255 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneFragment.kt @@ -131,7 +131,7 @@ class VerifyPhoneFragment : ToolbarFragment() { if (ClickUtils.isFastDoubleClick()) return mBinding.run { - when(v) { + when (v) { captchaTv -> { val phoneNum = mBinding.phoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") if (phoneNum.length == 11) { @@ -139,7 +139,8 @@ class VerifyPhoneFragment : ToolbarFragment() { } } verifyBtn -> { - val phoneNum: String = mBinding.phoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") + val phoneNum: String = + mBinding.phoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") when { phoneNum.isBlank() -> toast("手机号不允许为空") phoneNum.length < 11 -> toast("手机号错误请重新输入") diff --git a/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneViewModel.kt b/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneViewModel.kt index dccf46e435..5ef48409ed 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneViewModel.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/VerifyPhoneViewModel.kt @@ -42,37 +42,37 @@ class VerifyPhoneViewModel(application: Application) : AndroidViewModel(applicat val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.verifyPhone(1, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val body = JSONObject(data.string()) - mServiceId = body.getString("service_id") ?: "" - nextLiveData.postValue(true) - } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val body = JSONObject(data.string()) + mServiceId = body.getString("service_id") ?: "" + nextLiveData.postValue(true) + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 403202 -> LoginUtils.captchaErrorHint(context, content) - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法获取验证码,请检查你的网络状态") + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 403202 -> LoginUtils.captchaErrorHint(context, content) + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法获取验证码,请检查你的网络状态") } } - }) + } + }) } @SuppressLint("CheckResult") - fun verifyPhoneTwo(phoneNum: String, code: String, context: Context) { + fun verifyPhoneTwo(phoneNum: String, code: String, context: Context) { val device = DeviceUtils.getLoginDevice(getApplication()) val params: MutableMap = HashMap() params["mobile"] = phoneNum @@ -83,40 +83,40 @@ class VerifyPhoneViewModel(application: Application) : AndroidViewModel(applicat val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) api.verifyPhone(2, body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val cachedUserInfo = UserRepository.getInstance().cacheUserInfoEntity - if (cachedUserInfo != null) { - val body = JSONObject(data.string()) - val entity = body.getString("mobile_auth").toObject() ?: MobileAuthEntity() - cachedUserInfo.mobileAuth = entity.apply { - remark = cachedUserInfo.mobileAuth?.remark ?: LinkEntity() - } - UserRepository.getInstance().cacheAndNotifyUserInfo(cachedUserInfo, true) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: ResponseBody) { + val cachedUserInfo = UserRepository.getInstance().cacheUserInfoEntity + if (cachedUserInfo != null) { + val body = JSONObject(data.string()) + val entity = body.getString("mobile_auth").toObject() ?: MobileAuthEntity() + cachedUserInfo.mobileAuth = entity.apply { + remark = cachedUserInfo.mobileAuth?.remark ?: LinkEntity() } - finishLiveData.postValue(true) - NewFlatLogUtils.logPhoneNumberVerifyDialogSuccess() + UserRepository.getInstance().cacheAndNotifyUserInfo(cachedUserInfo, true) } + finishLiveData.postValue(true) + NewFlatLogUtils.logPhoneNumberVerifyDialogSuccess() + } - override fun onFailure(e: Exception) { - super.onFailure(e) - if (e is HttpException) { - try { - val responseBody = e.response().errorBody() - val string = responseBody!!.string() - val content = JSONObject(string) - when (val code = content.getInt("code")) { - 403202 -> LoginUtils.captchaErrorHint(context, content) - else -> LoginUtils.outputErrorHint(context, code) - } - } catch (e1: Exception) { - e1.printStackTrace() - Utils.toast(context, "无法完成验证,请检查你的网络状态") + override fun onFailure(e: Exception) { + super.onFailure(e) + if (e is HttpException) { + try { + val responseBody = e.response().errorBody() + val string = responseBody!!.string() + val content = JSONObject(string) + when (val code = content.getInt("code")) { + 403202 -> LoginUtils.captchaErrorHint(context, content) + else -> LoginUtils.outputErrorHint(context, code) } + } catch (e1: Exception) { + e1.printStackTrace() + Utils.toast(context, "无法完成验证,请检查你的网络状态") } } - }) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCounAdapter.java b/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCounAdapter.java index 390a5424da..551d725cca 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCounAdapter.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCounAdapter.java @@ -1,7 +1,9 @@ package com.halo.assistant.fragment.user.region; import android.content.Context; + import androidx.recyclerview.widget.RecyclerView; + import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCountFragment.java b/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCountFragment.java index a17716d0b2..d299c7f57c 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCountFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/region/RegionCountFragment.java @@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; diff --git a/app/src/main/res/anim/slide_in_from_bottom.xml b/app/src/main/res/anim/slide_in_from_bottom.xml index c2c3c4adeb..94cbca6f2a 100644 --- a/app/src/main/res/anim/slide_in_from_bottom.xml +++ b/app/src/main/res/anim/slide_in_from_bottom.xml @@ -5,6 +5,6 @@ + android:toYDelta="0%" /> \ No newline at end of file diff --git a/app/src/main/res/color/comment_send_btn_dark_selector.xml b/app/src/main/res/color/comment_send_btn_dark_selector.xml index 72874fdd8b..2419dad8d8 100644 --- a/app/src/main/res/color/comment_send_btn_dark_selector.xml +++ b/app/src/main/res/color/comment_send_btn_dark_selector.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/comment_send_btn_selector.xml b/app/src/main/res/color/comment_send_btn_selector.xml index 3c1b41c417..136d34c88b 100644 --- a/app/src/main/res/color/comment_send_btn_selector.xml +++ b/app/src/main/res/color/comment_send_btn_selector.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/forum_category_selector.xml b/app/src/main/res/color/forum_category_selector.xml index b674382ac2..948223d8e9 100644 --- a/app/src/main/res/color/forum_category_selector.xml +++ b/app/src/main/res/color/forum_category_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/color/game_upload_rg_button_selector.xml b/app/src/main/res/color/game_upload_rg_button_selector.xml index 58d37622ec..26725a5291 100644 --- a/app/src/main/res/color/game_upload_rg_button_selector.xml +++ b/app/src/main/res/color/game_upload_rg_button_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/color/home_video_text_tabbar_style.xml b/app/src/main/res/color/home_video_text_tabbar_style.xml index 30442b2e14..7a60c7dcd7 100644 --- a/app/src/main/res/color/home_video_text_tabbar_style.xml +++ b/app/src/main/res/color/home_video_text_tabbar_style.xml @@ -1,10 +1,10 @@ - + - - - - - + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/libao_linged_selector.xml b/app/src/main/res/color/libao_linged_selector.xml index 3ec0c25f4c..5913467bf7 100644 --- a/app/src/main/res/color/libao_linged_selector.xml +++ b/app/src/main/res/color/libao_linged_selector.xml @@ -1,5 +1,5 @@ - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/color/libao_rg_button_selector.xml b/app/src/main/res/color/libao_rg_button_selector.xml index 0dd3933b9b..03e3e0e5d4 100644 --- a/app/src/main/res/color/libao_rg_button_selector.xml +++ b/app/src/main/res/color/libao_rg_button_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/color/libao_taoed_selector.xml b/app/src/main/res/color/libao_taoed_selector.xml index b7b6d0588d..aeed446f66 100644 --- a/app/src/main/res/color/libao_taoed_selector.xml +++ b/app/src/main/res/color/libao_taoed_selector.xml @@ -1,5 +1,5 @@ - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/color/tab_selector.xml b/app/src/main/res/color/tab_selector.xml index 40659ca1c7..4bf1430034 100644 --- a/app/src/main/res/color/tab_selector.xml +++ b/app/src/main/res/color/tab_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/tabbar_textcolor_selector.xml b/app/src/main/res/color/tabbar_textcolor_selector.xml index ec42576488..32df2371dd 100644 --- a/app/src/main/res/color/tabbar_textcolor_selector.xml +++ b/app/src/main/res/color/tabbar_textcolor_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/text_downloading_style.xml b/app/src/main/res/color/text_downloading_style.xml index fb81106b28..8a401ef0c2 100644 --- a/app/src/main/res/color/text_downloading_style.xml +++ b/app/src/main/res/color/text_downloading_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/text_plugining_style.xml b/app/src/main/res/color/text_plugining_style.xml index bf1cd2350e..a00f585395 100644 --- a/app/src/main/res/color/text_plugining_style.xml +++ b/app/src/main/res/color/text_plugining_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/color/vote_selector.xml b/app/src/main/res/color/vote_selector.xml index 5b039a9aaa..8492cdfa3a 100644 --- a/app/src/main/res/color/vote_selector.xml +++ b/app/src/main/res/color/vote_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/subject_tab_down.xml b/app/src/main/res/drawable-hdpi/subject_tab_down.xml index 460204f82e..c5d8e487b3 100644 --- a/app/src/main/res/drawable-hdpi/subject_tab_down.xml +++ b/app/src/main/res/drawable-hdpi/subject_tab_down.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable-night/download_dialog_status_collection_gray.xml b/app/src/main/res/drawable-night/download_dialog_status_collection_gray.xml index db1863ed0a..d73d8d7620 100644 --- a/app/src/main/res/drawable-night/download_dialog_status_collection_gray.xml +++ b/app/src/main/res/drawable-night/download_dialog_status_collection_gray.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable-night/download_dialog_status_download_gray.xml b/app/src/main/res/drawable-night/download_dialog_status_download_gray.xml index f0d8c91414..e112a6a459 100644 --- a/app/src/main/res/drawable-night/download_dialog_status_download_gray.xml +++ b/app/src/main/res/drawable-night/download_dialog_status_download_gray.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable-night/ic_column_search.xml b/app/src/main/res/drawable-night/ic_column_search.xml index 3e1ef2c680..ef2a6c0d43 100644 --- a/app/src/main/res/drawable-night/ic_column_search.xml +++ b/app/src/main/res/drawable-night/ic_column_search.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable-night/ic_menu_gamedetail_more.xml b/app/src/main/res/drawable-night/ic_menu_gamedetail_more.xml index 5cbc15eb02..e67b2c4488 100644 --- a/app/src/main/res/drawable-night/ic_menu_gamedetail_more.xml +++ b/app/src/main/res/drawable-night/ic_menu_gamedetail_more.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable-night/ic_simulator_manager.xml b/app/src/main/res/drawable-night/ic_simulator_manager.xml index 99d5a172a1..77b272571f 100644 --- a/app/src/main/res/drawable-night/ic_simulator_manager.xml +++ b/app/src/main/res/drawable-night/ic_simulator_manager.xml @@ -3,14 +3,14 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable-night/ic_simulator_uninstall.xml b/app/src/main/res/drawable-night/ic_simulator_uninstall.xml index 468746091f..c2f1b412d3 100644 --- a/app/src/main/res/drawable-night/ic_simulator_uninstall.xml +++ b/app/src/main/res/drawable-night/ic_simulator_uninstall.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable-night/icon_more.xml b/app/src/main/res/drawable-night/icon_more.xml index e961c16f9d..39481ed235 100644 --- a/app/src/main/res/drawable-night/icon_more.xml +++ b/app/src/main/res/drawable-night/icon_more.xml @@ -3,11 +3,11 @@ android:height="12dp" android:viewportWidth="12" android:viewportHeight="12"> - + diff --git a/app/src/main/res/drawable-night/icon_share_black.xml b/app/src/main/res/drawable-night/icon_share_black.xml index d05e355d5a..26cc9030aa 100644 --- a/app/src/main/res/drawable-night/icon_share_black.xml +++ b/app/src/main/res/drawable-night/icon_share_black.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable-night/toolbar_download.xml b/app/src/main/res/drawable-night/toolbar_download.xml index ae916938d8..f9ba706480 100644 --- a/app/src/main/res/drawable-night/toolbar_download.xml +++ b/app/src/main/res/drawable-night/toolbar_download.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable-night/toolbar_message.xml b/app/src/main/res/drawable-night/toolbar_message.xml index 6567c8c80b..53c164bc2a 100644 --- a/app/src/main/res/drawable-night/toolbar_message.xml +++ b/app/src/main/res/drawable-night/toolbar_message.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml b/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml index fe14da9d5f..b63d4c1ec0 100644 --- a/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml +++ b/app/src/main/res/drawable-xhdpi/tabbar_right_selector.xml @@ -1,9 +1,9 @@ - + - - - - + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/bg_game_detail_seekbar.xml b/app/src/main/res/drawable-xxhdpi/bg_game_detail_seekbar.xml index 1974b3d4e6..d83a681478 100644 --- a/app/src/main/res/drawable-xxhdpi/bg_game_detail_seekbar.xml +++ b/app/src/main/res/drawable-xxhdpi/bg_game_detail_seekbar.xml @@ -2,26 +2,26 @@ - - - + + + - - - + + + - - - + + + diff --git a/app/src/main/res/drawable-xxhdpi/bg_video_control.xml b/app/src/main/res/drawable-xxhdpi/bg_video_control.xml index e23cb35da6..78d7596f38 100644 --- a/app/src/main/res/drawable-xxhdpi/bg_video_control.xml +++ b/app/src/main/res/drawable-xxhdpi/bg_video_control.xml @@ -3,5 +3,5 @@ + android:startColor="@color/transparent" /> diff --git a/app/src/main/res/drawable/ask_recommends_vp_select.xml b/app/src/main/res/drawable/ask_recommends_vp_select.xml index 7bcce540d6..29bb42facd 100644 --- a/app/src/main/res/drawable/ask_recommends_vp_select.xml +++ b/app/src/main/res/drawable/ask_recommends_vp_select.xml @@ -1,5 +1,5 @@ - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ask_voting_button_border.xml b/app/src/main/res/drawable/ask_voting_button_border.xml index 768e399f99..abc1788710 100644 --- a/app/src/main/res/drawable/ask_voting_button_border.xml +++ b/app/src/main/res/drawable/ask_voting_button_border.xml @@ -1,11 +1,11 @@ - + + android:width="1dp" + android:color="@color/theme_font" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_shape_round_stroke_theme_font.xml b/app/src/main/res/drawable/background_shape_round_stroke_theme_font.xml index 77165152e0..ec232b2a8e 100644 --- a/app/src/main/res/drawable/background_shape_round_stroke_theme_font.xml +++ b/app/src/main/res/drawable/background_shape_round_stroke_theme_font.xml @@ -1,6 +1,8 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_article_edit_label_select.xml b/app/src/main/res/drawable/bg_article_edit_label_select.xml index c081a5db56..8f6b828b11 100644 --- a/app/src/main/res/drawable/bg_article_edit_label_select.xml +++ b/app/src/main/res/drawable/bg_article_edit_label_select.xml @@ -1,7 +1,9 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_article_edit_label_unselect.xml b/app/src/main/res/drawable/bg_article_edit_label_unselect.xml index 810afee8ef..3091fbfe60 100644 --- a/app/src/main/res/drawable/bg_article_edit_label_unselect.xml +++ b/app/src/main/res/drawable/bg_article_edit_label_unselect.xml @@ -1,7 +1,9 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_border_blue_radius_4.xml b/app/src/main/res/drawable/bg_border_blue_radius_4.xml index f07bb37d2d..faefcf9cd0 100644 --- a/app/src/main/res/drawable/bg_border_blue_radius_4.xml +++ b/app/src/main/res/drawable/bg_border_blue_radius_4.xml @@ -1,13 +1,13 @@ - + + android:width="0.5dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_border_blue_radius_4_width_1.xml b/app/src/main/res/drawable/bg_border_blue_radius_4_width_1.xml index 54e5c4e614..2fa86119b9 100644 --- a/app/src/main/res/drawable/bg_border_blue_radius_4_width_1.xml +++ b/app/src/main/res/drawable/bg_border_blue_radius_4_width_1.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_change_cover_btn.xml b/app/src/main/res/drawable/bg_change_cover_btn.xml index 1d2e5fd0e9..b4e1fc58fe 100644 --- a/app/src/main/res/drawable/bg_change_cover_btn.xml +++ b/app/src/main/res/drawable/bg_change_cover_btn.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_chart_fill.xml b/app/src/main/res/drawable/bg_chart_fill.xml index d528a90fe0..d218e26e54 100644 --- a/app/src/main/res/drawable/bg_chart_fill.xml +++ b/app/src/main/res/drawable/bg_chart_fill.xml @@ -3,5 +3,5 @@ + android:angle="270" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_ebf8ff_radius_2.xml b/app/src/main/res/drawable/bg_ebf8ff_radius_2.xml index fac75d2988..fadbfc81a7 100644 --- a/app/src/main/res/drawable/bg_ebf8ff_radius_2.xml +++ b/app/src/main/res/drawable/bg_ebf8ff_radius_2.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_editor_link_btn.xml b/app/src/main/res/drawable/bg_editor_link_btn.xml index 63a03b2383..156d086597 100644 --- a/app/src/main/res/drawable/bg_editor_link_btn.xml +++ b/app/src/main/res/drawable/bg_editor_link_btn.xml @@ -1,7 +1,9 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_fold_rating_reason.xml b/app/src/main/res/drawable/bg_fold_rating_reason.xml index 7d9aba6f13..06bed987de 100644 --- a/app/src/main/res/drawable/bg_fold_rating_reason.xml +++ b/app/src/main/res/drawable/bg_fold_rating_reason.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_forum_activity_card.xml b/app/src/main/res/drawable/bg_forum_activity_card.xml index 418cba45d1..212740e3df 100644 --- a/app/src/main/res/drawable/bg_forum_activity_card.xml +++ b/app/src/main/res/drawable/bg_forum_activity_card.xml @@ -4,7 +4,7 @@ + android:bottom="2dp" /> @@ -13,7 +13,7 @@ + android:bottom="2dp" /> @@ -22,7 +22,7 @@ + android:bottom="2dp" /> @@ -31,7 +31,7 @@ + android:bottom="2dp" /> diff --git a/app/src/main/res/drawable/bg_forum_follow.xml b/app/src/main/res/drawable/bg_forum_follow.xml index fc6cf8cc4f..87c822d721 100644 --- a/app/src/main/res/drawable/bg_forum_follow.xml +++ b/app/src/main/res/drawable/bg_forum_follow.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_game_collection_cover_tag.xml b/app/src/main/res/drawable/bg_game_collection_cover_tag.xml index 483480a1ef..3606b11294 100644 --- a/app/src/main/res/drawable/bg_game_collection_cover_tag.xml +++ b/app/src/main/res/drawable/bg_game_collection_cover_tag.xml @@ -1,6 +1,8 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_game_collection_video_item.xml b/app/src/main/res/drawable/bg_game_collection_video_item.xml index 81c0b8a0ec..e967783e65 100644 --- a/app/src/main/res/drawable/bg_game_collection_video_item.xml +++ b/app/src/main/res/drawable/bg_game_collection_video_item.xml @@ -4,6 +4,6 @@ + android:angle="270" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_game_item_recommend.xml b/app/src/main/res/drawable/bg_game_item_recommend.xml index 07aad691c7..11875cbbd4 100644 --- a/app/src/main/res/drawable/bg_game_item_recommend.xml +++ b/app/src/main/res/drawable/bg_game_item_recommend.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_home_vgame_progress_active.xml b/app/src/main/res/drawable/bg_home_vgame_progress_active.xml index 41008d3c83..d8d45c3ef1 100644 --- a/app/src/main/res/drawable/bg_home_vgame_progress_active.xml +++ b/app/src/main/res/drawable/bg_home_vgame_progress_active.xml @@ -10,8 +10,7 @@ - + diff --git a/app/src/main/res/drawable/bg_image_viewer_article.xml b/app/src/main/res/drawable/bg_image_viewer_article.xml index c986c9d64d..ca800225dc 100644 --- a/app/src/main/res/drawable/bg_image_viewer_article.xml +++ b/app/src/main/res/drawable/bg_image_viewer_article.xml @@ -1,7 +1,8 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_original_label.xml b/app/src/main/res/drawable/bg_original_label.xml index da49c23a8b..6717ab97ee 100644 --- a/app/src/main/res/drawable/bg_original_label.xml +++ b/app/src/main/res/drawable/bg_original_label.xml @@ -1,8 +1,8 @@ - - + + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_personal_card.xml b/app/src/main/res/drawable/bg_personal_card.xml index ec4acfd538..6580282f61 100644 --- a/app/src/main/res/drawable/bg_personal_card.xml +++ b/app/src/main/res/drawable/bg_personal_card.xml @@ -4,7 +4,7 @@ + android:bottom="2dp" /> @@ -13,7 +13,7 @@ + android:bottom="2dp" /> @@ -22,7 +22,7 @@ + android:bottom="2dp" /> @@ -31,7 +31,7 @@ + android:bottom="2dp" /> diff --git a/app/src/main/res/drawable/bg_rating_stop_server_remind.xml b/app/src/main/res/drawable/bg_rating_stop_server_remind.xml index ba7a95a36a..d6e24cda57 100644 --- a/app/src/main/res/drawable/bg_rating_stop_server_remind.xml +++ b/app/src/main/res/drawable/bg_rating_stop_server_remind.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_recent_visit.xml b/app/src/main/res/drawable/bg_recent_visit.xml index f132223805..9038c11f4a 100644 --- a/app/src/main/res/drawable/bg_recent_visit.xml +++ b/app/src/main/res/drawable/bg_recent_visit.xml @@ -1,11 +1,11 @@ - + + android:bottomLeftRadius="999dp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_save_pic.xml b/app/src/main/res/drawable/bg_save_pic.xml index fd954fa75f..22f3860c8e 100644 --- a/app/src/main/res/drawable/bg_save_pic.xml +++ b/app/src/main/res/drawable/bg_save_pic.xml @@ -2,7 +2,8 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_verify_password_select.xml b/app/src/main/res/drawable/bg_verify_password_select.xml index c0f96a8c96..2a75243336 100644 --- a/app/src/main/res/drawable/bg_verify_password_select.xml +++ b/app/src/main/res/drawable/bg_verify_password_select.xml @@ -1,6 +1,8 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_vfeedback_label.xml b/app/src/main/res/drawable/bg_vfeedback_label.xml index 2ae7cc065d..7634b6c367 100644 --- a/app/src/main/res/drawable/bg_vfeedback_label.xml +++ b/app/src/main/res/drawable/bg_vfeedback_label.xml @@ -1,6 +1,8 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_vgame_icon_mask.xml b/app/src/main/res/drawable/bg_vgame_icon_mask.xml index 1a21fffb10..7b329fd552 100644 --- a/app/src/main/res/drawable/bg_vgame_icon_mask.xml +++ b/app/src/main/res/drawable/bg_vgame_icon_mask.xml @@ -6,5 +6,5 @@ + android:startColor="@color/black_alpha_80" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_video_detail_marquee.xml b/app/src/main/res/drawable/bg_video_detail_marquee.xml index 46ef6a62d4..a7b431986c 100644 --- a/app/src/main/res/drawable/bg_video_detail_marquee.xml +++ b/app/src/main/res/drawable/bg_video_detail_marquee.xml @@ -2,6 +2,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_video_detail_name.xml b/app/src/main/res/drawable/bg_video_detail_name.xml index ff3a2b3d5b..018d303136 100644 --- a/app/src/main/res/drawable/bg_video_detail_name.xml +++ b/app/src/main/res/drawable/bg_video_detail_name.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_web_close.xml b/app/src/main/res/drawable/bg_web_close.xml index 1097cf486f..ccac066a02 100644 --- a/app/src/main/res/drawable/bg_web_close.xml +++ b/app/src/main/res/drawable/bg_web_close.xml @@ -2,16 +2,16 @@ - - - + + + - + - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_black_bg.xml b/app/src/main/res/drawable/border_black_bg.xml index 8d534f5be8..badf3d473b 100644 --- a/app/src/main/res/drawable/border_black_bg.xml +++ b/app/src/main/res/drawable/border_black_bg.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/title" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_blue_dim.xml b/app/src/main/res/drawable/border_blue_dim.xml index d0c638bec7..f72036a2af 100644 --- a/app/src/main/res/drawable/border_blue_dim.xml +++ b/app/src/main/res/drawable/border_blue_dim.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_dialog_bg.xml b/app/src/main/res/drawable/border_dialog_bg.xml index ebe3d9895b..584d6684ad 100644 --- a/app/src/main/res/drawable/border_dialog_bg.xml +++ b/app/src/main/res/drawable/border_dialog_bg.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_dialog_white_bg_5.xml b/app/src/main/res/drawable/border_dialog_white_bg_5.xml index a943e8fb2b..9876aced25 100644 --- a/app/src/main/res/drawable/border_dialog_white_bg_5.xml +++ b/app/src/main/res/drawable/border_dialog_white_bg_5.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_green_bg.xml b/app/src/main/res/drawable/border_green_bg.xml index c53c690bbc..2c7ebb61b9 100644 --- a/app/src/main/res/drawable/border_green_bg.xml +++ b/app/src/main/res/drawable/border_green_bg.xml @@ -1,12 +1,12 @@ - + + android:width="0.6dp" + android:color="@color/tag_green" /> - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_round_c2c6cc.xml b/app/src/main/res/drawable/border_round_c2c6cc.xml index 7d2fd374e0..b37a746515 100644 --- a/app/src/main/res/drawable/border_round_c2c6cc.xml +++ b/app/src/main/res/drawable/border_round_c2c6cc.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/text_C2C6CC" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_round_ccc.xml b/app/src/main/res/drawable/border_round_ccc.xml index a241bda899..055745104c 100644 --- a/app/src/main/res/drawable/border_round_ccc.xml +++ b/app/src/main/res/drawable/border_round_ccc.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/text_body" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_round_ccc_999.xml b/app/src/main/res/drawable/border_round_ccc_999.xml index f10c281ff3..d21bcf872c 100644 --- a/app/src/main/res/drawable/border_round_ccc_999.xml +++ b/app/src/main/res/drawable/border_round_ccc_999.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/text_body" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_round_stroke_0dot5_eee_999.xml b/app/src/main/res/drawable/border_round_stroke_0dot5_eee_999.xml index 8048495a44..098f666ae3 100644 --- a/app/src/main/res/drawable/border_round_stroke_0dot5_eee_999.xml +++ b/app/src/main/res/drawable/border_round_stroke_0dot5_eee_999.xml @@ -5,7 +5,7 @@ + android:color="@color/divider" /> diff --git a/app/src/main/res/drawable/border_round_stroke_eee_4.xml b/app/src/main/res/drawable/border_round_stroke_eee_4.xml index 358e603295..935cbcac7a 100644 --- a/app/src/main/res/drawable/border_round_stroke_eee_4.xml +++ b/app/src/main/res/drawable/border_round_stroke_eee_4.xml @@ -5,7 +5,7 @@ + android:color="@color/divider" /> diff --git a/app/src/main/res/drawable/border_round_stroke_eee_999.xml b/app/src/main/res/drawable/border_round_stroke_eee_999.xml index c76f0e9bd9..9b1d64d4d8 100644 --- a/app/src/main/res/drawable/border_round_stroke_eee_999.xml +++ b/app/src/main/res/drawable/border_round_stroke_eee_999.xml @@ -5,7 +5,7 @@ + android:color="@color/divider" /> diff --git a/app/src/main/res/drawable/border_round_stroke_themefont_999.xml b/app/src/main/res/drawable/border_round_stroke_themefont_999.xml index 6e8c07c3ca..b6fe424789 100644 --- a/app/src/main/res/drawable/border_round_stroke_themefont_999.xml +++ b/app/src/main/res/drawable/border_round_stroke_themefont_999.xml @@ -5,7 +5,7 @@ + android:color="@color/theme_font" /> diff --git a/app/src/main/res/drawable/border_round_white.xml b/app/src/main/res/drawable/border_round_white.xml index 4840458147..f79f536295 100644 --- a/app/src/main/res/drawable/border_round_white.xml +++ b/app/src/main/res/drawable/border_round_white.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/white" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_round_white_30.xml b/app/src/main/res/drawable/border_round_white_30.xml index 489385183a..d98a530dbc 100644 --- a/app/src/main/res/drawable/border_round_white_30.xml +++ b/app/src/main/res/drawable/border_round_white_30.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/white" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/border_suggest_bg.xml b/app/src/main/res/drawable/border_suggest_bg.xml index 64e944f2fa..7aa5d2901f 100644 --- a/app/src/main/res/drawable/border_suggest_bg.xml +++ b/app/src/main/res/drawable/border_suggest_bg.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/content" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_border_blue_oval.xml b/app/src/main/res/drawable/button_border_blue_oval.xml index 36a9716d72..4ad33379fb 100644 --- a/app/src/main/res/drawable/button_border_blue_oval.xml +++ b/app/src/main/res/drawable/button_border_blue_oval.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_border_gray.xml b/app/src/main/res/drawable/button_border_gray.xml index 7b02131099..2241b0eff0 100644 --- a/app/src/main/res/drawable/button_border_gray.xml +++ b/app/src/main/res/drawable/button_border_gray.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/button_gray" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_border_gray_oval.xml b/app/src/main/res/drawable/button_border_gray_oval.xml index 9aaed6d4f7..7f3864b4c0 100644 --- a/app/src/main/res/drawable/button_border_gray_oval.xml +++ b/app/src/main/res/drawable/button_border_gray_oval.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/button_gray" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_border_round_gray.xml b/app/src/main/res/drawable/button_border_round_gray.xml index 19e8e6f82a..423a13b96e 100644 --- a/app/src/main/res/drawable/button_border_round_gray.xml +++ b/app/src/main/res/drawable/button_border_round_gray.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/button_gray" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_gray_style.xml b/app/src/main/res/drawable/button_gray_style.xml index d92805a84e..0310aa6822 100644 --- a/app/src/main/res/drawable/button_gray_style.xml +++ b/app/src/main/res/drawable/button_gray_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_normal_border.xml b/app/src/main/res/drawable/button_normal_border.xml index c3194363a1..7b39bd64cf 100644 --- a/app/src/main/res/drawable/button_normal_border.xml +++ b/app/src/main/res/drawable/button_normal_border.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_normal_round_border.xml b/app/src/main/res/drawable/button_normal_round_border.xml index 95b186a8fd..84f8a498be 100644 --- a/app/src/main/res/drawable/button_normal_round_border.xml +++ b/app/src/main/res/drawable/button_normal_round_border.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_normal_round_style.xml b/app/src/main/res/drawable/button_normal_round_style.xml index d74cf4db69..101bbd8ed5 100644 --- a/app/src/main/res/drawable/button_normal_round_style.xml +++ b/app/src/main/res/drawable/button_normal_round_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_normal_style.xml b/app/src/main/res/drawable/button_normal_style.xml index bd6b778b74..8f165edd34 100644 --- a/app/src/main/res/drawable/button_normal_style.xml +++ b/app/src/main/res/drawable/button_normal_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_round_f5f5f5.xml b/app/src/main/res/drawable/button_round_f5f5f5.xml index b72a1f18d9..90a7a1be91 100644 --- a/app/src/main/res/drawable/button_round_f5f5f5.xml +++ b/app/src/main/res/drawable/button_round_f5f5f5.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/choose_game_collection_cover_type_selector.xml b/app/src/main/res/drawable/choose_game_collection_cover_type_selector.xml index 71204e8eef..e39cab215f 100644 --- a/app/src/main/res/drawable/choose_game_collection_cover_type_selector.xml +++ b/app/src/main/res/drawable/choose_game_collection_cover_type_selector.xml @@ -1,7 +1,7 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/comment_border_bg.xml b/app/src/main/res/drawable/comment_border_bg.xml index 12b099b7e1..7ca82a70e8 100644 --- a/app/src/main/res/drawable/comment_border_bg.xml +++ b/app/src/main/res/drawable/comment_border_bg.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/theme_font" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/comment_send_button_selector.xml b/app/src/main/res/drawable/comment_send_button_selector.xml index e32ebeafb1..b8caf89b88 100644 --- a/app/src/main/res/drawable/comment_send_button_selector.xml +++ b/app/src/main/res/drawable/comment_send_button_selector.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/comment_send_button_selector_dark.xml b/app/src/main/res/drawable/comment_send_button_selector_dark.xml index 2f94ebbf20..6a63beda8a 100644 --- a/app/src/main/res/drawable/comment_send_button_selector_dark.xml +++ b/app/src/main/res/drawable/comment_send_button_selector_dark.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/comment_vote_selector.xml b/app/src/main/res/drawable/comment_vote_selector.xml index c6dd9d8795..0920d41837 100644 --- a/app/src/main/res/drawable/comment_vote_selector.xml +++ b/app/src/main/res/drawable/comment_vote_selector.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_comment_background.xml b/app/src/main/res/drawable/community_comment_background.xml index adf5584ed4..8507af7c8d 100644 --- a/app/src/main/res/drawable/community_comment_background.xml +++ b/app/src/main/res/drawable/community_comment_background.xml @@ -1,9 +1,11 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_comment_background_dark.xml b/app/src/main/res/drawable/community_comment_background_dark.xml index 092e1419be..e7b347bcbf 100644 --- a/app/src/main/res/drawable/community_comment_background_dark.xml +++ b/app/src/main/res/drawable/community_comment_background_dark.xml @@ -1,9 +1,11 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_comment_reply_background.xml b/app/src/main/res/drawable/community_comment_reply_background.xml index dee31678cb..98913953a8 100644 --- a/app/src/main/res/drawable/community_comment_reply_background.xml +++ b/app/src/main/res/drawable/community_comment_reply_background.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_editor_insert_search_background.xml b/app/src/main/res/drawable/community_editor_insert_search_background.xml index 7513de2244..4b24a5b11e 100644 --- a/app/src/main/res/drawable/community_editor_insert_search_background.xml +++ b/app/src/main/res/drawable/community_editor_insert_search_background.xml @@ -1,8 +1,8 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_invite_search_background.xml b/app/src/main/res/drawable/community_invite_search_background.xml index b74ddc8deb..ae7dae0ca4 100644 --- a/app/src/main/res/drawable/community_invite_search_background.xml +++ b/app/src/main/res/drawable/community_invite_search_background.xml @@ -1,6 +1,6 @@ - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/community_vote_selector.xml b/app/src/main/res/drawable/community_vote_selector.xml index 2e3da8d639..cb3c52b107 100644 --- a/app/src/main/res/drawable/community_vote_selector.xml +++ b/app/src/main/res/drawable/community_vote_selector.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/detail_download_open_image_style.xml b/app/src/main/res/drawable/detail_download_open_image_style.xml index 2c1cb47e1e..54f2efa49b 100644 --- a/app/src/main/res/drawable/detail_download_open_image_style.xml +++ b/app/src/main/res/drawable/detail_download_open_image_style.xml @@ -1,16 +1,16 @@ - + - - + + + android:width="0.6dp" + android:color="@color/white" /> - + - - + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/drawable/detail_download_open_style.xml b/app/src/main/res/drawable/detail_download_open_style.xml index 7359053629..39388529a9 100644 --- a/app/src/main/res/drawable/detail_download_open_style.xml +++ b/app/src/main/res/drawable/detail_download_open_style.xml @@ -1,17 +1,17 @@ - + - - + + + android:width="0.6dp" + android:color="@color/theme" /> - + - - + + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/detail_downloading_normal_image_style.xml b/app/src/main/res/drawable/detail_downloading_normal_image_style.xml index 57220e52d9..dcb7103ed5 100644 --- a/app/src/main/res/drawable/detail_downloading_normal_image_style.xml +++ b/app/src/main/res/drawable/detail_downloading_normal_image_style.xml @@ -1,28 +1,28 @@ - + - - + + + android:width="0.6dp" + android:color="@color/white" /> - + - - + + - - - - - + + + + + - - - + android:endColor="@color/white" + android:startColor="@color/white" /> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/detail_downloading_normal_rect_style.xml b/app/src/main/res/drawable/detail_downloading_normal_rect_style.xml index db22536f6d..3eafb53c94 100644 --- a/app/src/main/res/drawable/detail_downloading_normal_rect_style.xml +++ b/app/src/main/res/drawable/detail_downloading_normal_rect_style.xml @@ -1,28 +1,28 @@ - + - - + + + android:width="0.6dp" + android:color="@color/theme" /> - + - - + + - - - - - + + + + + - - - + android:endColor="@color/theme" + android:startColor="@color/theme" /> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/detail_downloading_normal_style.xml b/app/src/main/res/drawable/detail_downloading_normal_style.xml index b2596c8fb5..efe49c4e2b 100644 --- a/app/src/main/res/drawable/detail_downloading_normal_style.xml +++ b/app/src/main/res/drawable/detail_downloading_normal_style.xml @@ -1,28 +1,28 @@ - + - - + + + android:width="0.6dp" + android:color="@color/theme" /> - + - - + + - - - - - + + + + + - - - + android:endColor="@color/theme" + android:startColor="@color/theme" /> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_app_updating_bg.xml b/app/src/main/res/drawable/dialog_app_updating_bg.xml index acf9b061e9..4f879ebd7a 100644 --- a/app/src/main/res/drawable/dialog_app_updating_bg.xml +++ b/app/src/main/res/drawable/dialog_app_updating_bg.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_communities_select_btn_bg.xml b/app/src/main/res/drawable/dialog_communities_select_btn_bg.xml index 60949e35ab..a97c43e76f 100644 --- a/app/src/main/res/drawable/dialog_communities_select_btn_bg.xml +++ b/app/src/main/res/drawable/dialog_communities_select_btn_bg.xml @@ -1,10 +1,10 @@ - + + android:width="1dp" + android:color="@color/white" /> - + - - + + diff --git a/app/src/main/res/drawable/dialog_edit_bg.xml b/app/src/main/res/drawable/dialog_edit_bg.xml index 00ab80bfd6..e746e792c5 100644 --- a/app/src/main/res/drawable/dialog_edit_bg.xml +++ b/app/src/main/res/drawable/dialog_edit_bg.xml @@ -1,9 +1,9 @@ - + + android:width="1dp" + android:color="@color/cutting_line" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_game_tags_background.xml b/app/src/main/res/drawable/dialog_game_tags_background.xml index 01ccf54420..6220500d84 100644 --- a/app/src/main/res/drawable/dialog_game_tags_background.xml +++ b/app/src/main/res/drawable/dialog_game_tags_background.xml @@ -1,9 +1,11 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_privacy_title_underline.xml b/app/src/main/res/drawable/dialog_privacy_title_underline.xml index fadad5568e..2400911b71 100644 --- a/app/src/main/res/drawable/dialog_privacy_title_underline.xml +++ b/app/src/main/res/drawable/dialog_privacy_title_underline.xml @@ -5,7 +5,6 @@ android:endColor="#FFEF9F" android:startColor="#FF95F1" /> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_reserve_background.xml b/app/src/main/res/drawable/dialog_reserve_background.xml index f215757ad2..beae2f074e 100644 --- a/app/src/main/res/drawable/dialog_reserve_background.xml +++ b/app/src/main/res/drawable/dialog_reserve_background.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/download_dialog_item_progress.xml b/app/src/main/res/drawable/download_dialog_item_progress.xml index 3b67680ce7..4f68f564a5 100644 --- a/app/src/main/res/drawable/download_dialog_item_progress.xml +++ b/app/src/main/res/drawable/download_dialog_item_progress.xml @@ -21,7 +21,7 @@ - + - + diff --git a/app/src/main/res/drawable/download_dialog_status_collection_gray.xml b/app/src/main/res/drawable/download_dialog_status_collection_gray.xml index e75288d5a1..bf25b04464 100644 --- a/app/src/main/res/drawable/download_dialog_status_collection_gray.xml +++ b/app/src/main/res/drawable/download_dialog_status_collection_gray.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable/download_dialog_status_download.xml b/app/src/main/res/drawable/download_dialog_status_download.xml index 32c3a4ec95..03c5da0ad7 100644 --- a/app/src/main/res/drawable/download_dialog_status_download.xml +++ b/app/src/main/res/drawable/download_dialog_status_download.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable/download_dialog_status_download_gray.xml b/app/src/main/res/drawable/download_dialog_status_download_gray.xml index 2f1a29b6e1..bb67d505c2 100644 --- a/app/src/main/res/drawable/download_dialog_status_download_gray.xml +++ b/app/src/main/res/drawable/download_dialog_status_download_gray.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable/download_dialog_status_pause.xml b/app/src/main/res/drawable/download_dialog_status_pause.xml index d513061f6f..582f7e14b9 100644 --- a/app/src/main/res/drawable/download_dialog_status_pause.xml +++ b/app/src/main/res/drawable/download_dialog_status_pause.xml @@ -3,8 +3,8 @@ android:height="8dp" android:viewportWidth="8" android:viewportHeight="8"> - + diff --git a/app/src/main/res/drawable/download_oval_hint_up.xml b/app/src/main/res/drawable/download_oval_hint_up.xml index e8b377010d..a19cf0e020 100644 --- a/app/src/main/res/drawable/download_oval_hint_up.xml +++ b/app/src/main/res/drawable/download_oval_hint_up.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_font_bold_selector.xml b/app/src/main/res/drawable/editor_font_bold_selector.xml index 6104b08d14..9a4e5afa9c 100644 --- a/app/src/main/res/drawable/editor_font_bold_selector.xml +++ b/app/src/main/res/drawable/editor_font_bold_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_font_italic_selector.xml b/app/src/main/res/drawable/editor_font_italic_selector.xml index 1eebbfbbdc..fb3134dfe9 100644 --- a/app/src/main/res/drawable/editor_font_italic_selector.xml +++ b/app/src/main/res/drawable/editor_font_italic_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_font_strikethrough_selector.xml b/app/src/main/res/drawable/editor_font_strikethrough_selector.xml index f60fd304b2..da7652a167 100644 --- a/app/src/main/res/drawable/editor_font_strikethrough_selector.xml +++ b/app/src/main/res/drawable/editor_font_strikethrough_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_font_underline_selector.xml b/app/src/main/res/drawable/editor_font_underline_selector.xml index cf8b76630f..d684c3a7ce 100644 --- a/app/src/main/res/drawable/editor_font_underline_selector.xml +++ b/app/src/main/res/drawable/editor_font_underline_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_link_selector.xml b/app/src/main/res/drawable/editor_link_selector.xml index 66631b778b..4105d48d94 100644 --- a/app/src/main/res/drawable/editor_link_selector.xml +++ b/app/src/main/res/drawable/editor_link_selector.xml @@ -1,9 +1,9 @@ - + - - + + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_paragraph_h1_selector.xml b/app/src/main/res/drawable/editor_paragraph_h1_selector.xml index 646e0d4ac8..5f8cbb1663 100644 --- a/app/src/main/res/drawable/editor_paragraph_h1_selector.xml +++ b/app/src/main/res/drawable/editor_paragraph_h1_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_paragraph_h2_selector.xml b/app/src/main/res/drawable/editor_paragraph_h2_selector.xml index 4259648c80..45a70bbe12 100644 --- a/app/src/main/res/drawable/editor_paragraph_h2_selector.xml +++ b/app/src/main/res/drawable/editor_paragraph_h2_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_paragraph_h3_selector.xml b/app/src/main/res/drawable/editor_paragraph_h3_selector.xml index 5e2586cd97..d6a14c2586 100644 --- a/app/src/main/res/drawable/editor_paragraph_h3_selector.xml +++ b/app/src/main/res/drawable/editor_paragraph_h3_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_paragraph_h4_selector.xml b/app/src/main/res/drawable/editor_paragraph_h4_selector.xml index e1422cd192..608c9296a6 100644 --- a/app/src/main/res/drawable/editor_paragraph_h4_selector.xml +++ b/app/src/main/res/drawable/editor_paragraph_h4_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_paragraph_quote_selector.xml b/app/src/main/res/drawable/editor_paragraph_quote_selector.xml index 7df2ee1d30..d653f8dae5 100644 --- a/app/src/main/res/drawable/editor_paragraph_quote_selector.xml +++ b/app/src/main/res/drawable/editor_paragraph_quote_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/editor_video_selector.xml b/app/src/main/res/drawable/editor_video_selector.xml index 97bc96c583..01d1e5f78e 100644 --- a/app/src/main/res/drawable/editor_video_selector.xml +++ b/app/src/main/res/drawable/editor_video_selector.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/fontsize_radio_style.xml b/app/src/main/res/drawable/fontsize_radio_style.xml index 07daf8c70c..2c11632f3c 100644 --- a/app/src/main/res/drawable/fontsize_radio_style.xml +++ b/app/src/main/res/drawable/fontsize_radio_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_collection_poster_mask.xml b/app/src/main/res/drawable/game_collection_poster_mask.xml index 6f3766673f..24d4cda3fc 100644 --- a/app/src/main/res/drawable/game_collection_poster_mask.xml +++ b/app/src/main/res/drawable/game_collection_poster_mask.xml @@ -6,5 +6,5 @@ + android:startColor="@color/black_alpha_20" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/game_collection_tag_selector.xml b/app/src/main/res/drawable/game_collection_tag_selector.xml index dd68f2d7fe..5ab1810e51 100644 --- a/app/src/main/res/drawable/game_collection_tag_selector.xml +++ b/app/src/main/res/drawable/game_collection_tag_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_collection_vote_selector.xml b/app/src/main/res/drawable/game_collection_vote_selector.xml index 6d7f91fd8c..d2a1d960ae 100644 --- a/app/src/main/res/drawable/game_collection_vote_selector.xml +++ b/app/src/main/res/drawable/game_collection_vote_selector.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_detail_amway_bg.xml b/app/src/main/res/drawable/game_detail_amway_bg.xml index 1df8a63bb6..4758569dd9 100644 --- a/app/src/main/res/drawable/game_detail_amway_bg.xml +++ b/app/src/main/res/drawable/game_detail_amway_bg.xml @@ -3,5 +3,7 @@ android:shape="rectangle"> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_detail_btn_receive.xml b/app/src/main/res/drawable/game_detail_btn_receive.xml index 794f7f04a7..171366ea68 100644 --- a/app/src/main/res/drawable/game_detail_btn_receive.xml +++ b/app/src/main/res/drawable/game_detail_btn_receive.xml @@ -1,9 +1,12 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_download_dn.xml b/app/src/main/res/drawable/game_item_btn_download_dn.xml index 49f00238ba..35f5e6d9df 100644 --- a/app/src/main/res/drawable/game_item_btn_download_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_download_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_download_style.xml b/app/src/main/res/drawable/game_item_btn_download_style.xml index e8bd9cadee..3b7ebb1e20 100644 --- a/app/src/main/res/drawable/game_item_btn_download_style.xml +++ b/app/src/main/res/drawable/game_item_btn_download_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_downloading_style.xml b/app/src/main/res/drawable/game_item_btn_downloading_style.xml index 13b27ee4c4..ac6e7d652d 100644 --- a/app/src/main/res/drawable/game_item_btn_downloading_style.xml +++ b/app/src/main/res/drawable/game_item_btn_downloading_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_launch_dn.xml b/app/src/main/res/drawable/game_item_btn_launch_dn.xml index 8b5fef8fdf..b59fa6a9eb 100644 --- a/app/src/main/res/drawable/game_item_btn_launch_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_launch_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_launch_style.xml b/app/src/main/res/drawable/game_item_btn_launch_style.xml index 5dab522655..3549d560ff 100644 --- a/app/src/main/res/drawable/game_item_btn_launch_style.xml +++ b/app/src/main/res/drawable/game_item_btn_launch_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_launch_up.xml b/app/src/main/res/drawable/game_item_btn_launch_up.xml index 42f039f304..0ce176019d 100644 --- a/app/src/main/res/drawable/game_item_btn_launch_up.xml +++ b/app/src/main/res/drawable/game_item_btn_launch_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_pause_dn.xml b/app/src/main/res/drawable/game_item_btn_pause_dn.xml index 79d02ba007..7127c496e4 100644 --- a/app/src/main/res/drawable/game_item_btn_pause_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_pause_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_pause_style.xml b/app/src/main/res/drawable/game_item_btn_pause_style.xml index 000ae85e90..0661a646a9 100644 --- a/app/src/main/res/drawable/game_item_btn_pause_style.xml +++ b/app/src/main/res/drawable/game_item_btn_pause_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_pause_up.xml b/app/src/main/res/drawable/game_item_btn_pause_up.xml index eee478758a..49195fbcb9 100644 --- a/app/src/main/res/drawable/game_item_btn_pause_up.xml +++ b/app/src/main/res/drawable/game_item_btn_pause_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugin_dn.xml b/app/src/main/res/drawable/game_item_btn_plugin_dn.xml index 02cfb94e94..9335c02e05 100644 --- a/app/src/main/res/drawable/game_item_btn_plugin_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_plugin_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugin_style.xml b/app/src/main/res/drawable/game_item_btn_plugin_style.xml index 5d18aed7e8..9beb646511 100644 --- a/app/src/main/res/drawable/game_item_btn_plugin_style.xml +++ b/app/src/main/res/drawable/game_item_btn_plugin_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugin_up.xml b/app/src/main/res/drawable/game_item_btn_plugin_up.xml index 06da2b7e42..da0da6cf82 100644 --- a/app/src/main/res/drawable/game_item_btn_plugin_up.xml +++ b/app/src/main/res/drawable/game_item_btn_plugin_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_dn.xml b/app/src/main/res/drawable/game_item_btn_plugining_dn.xml index 5d210de6c4..8dc0d134e5 100644 --- a/app/src/main/res/drawable/game_item_btn_plugining_dn.xml +++ b/app/src/main/res/drawable/game_item_btn_plugining_dn.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/btn_plugin" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_style.xml b/app/src/main/res/drawable/game_item_btn_plugining_style.xml index 2f2149982a..3d92356bdf 100644 --- a/app/src/main/res/drawable/game_item_btn_plugining_style.xml +++ b/app/src/main/res/drawable/game_item_btn_plugining_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/game_item_btn_plugining_up.xml b/app/src/main/res/drawable/game_item_btn_plugining_up.xml index 4b727eac1c..2307b71f2e 100644 --- a/app/src/main/res/drawable/game_item_btn_plugining_up.xml +++ b/app/src/main/res/drawable/game_item_btn_plugining_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/gamedetail_kaifu_hint.xml b/app/src/main/res/drawable/gamedetail_kaifu_hint.xml index d6358c08dc..11cc45bd00 100644 --- a/app/src/main/res/drawable/gamedetail_kaifu_hint.xml +++ b/app/src/main/res/drawable/gamedetail_kaifu_hint.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_column_search.xml b/app/src/main/res/drawable/ic_column_search.xml index f06bd49d2e..f793efbd64 100644 --- a/app/src/main/res/drawable/ic_column_search.xml +++ b/app/src/main/res/drawable/ic_column_search.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/ic_column_search_light.xml b/app/src/main/res/drawable/ic_column_search_light.xml index 3e1ef2c680..ef2a6c0d43 100644 --- a/app/src/main/res/drawable/ic_column_search_light.xml +++ b/app/src/main/res/drawable/ic_column_search_light.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/ic_create_game_collection.xml b/app/src/main/res/drawable/ic_create_game_collection.xml index e490f65832..504c0ad3de 100644 --- a/app/src/main/res/drawable/ic_create_game_collection.xml +++ b/app/src/main/res/drawable/ic_create_game_collection.xml @@ -3,20 +3,19 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/ic_gamedetail_concern.xml b/app/src/main/res/drawable/ic_gamedetail_concern.xml index d65b35d85e..aa5271d1fd 100644 --- a/app/src/main/res/drawable/ic_gamedetail_concern.xml +++ b/app/src/main/res/drawable/ic_gamedetail_concern.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_gamedetail_concerned.xml b/app/src/main/res/drawable/ic_gamedetail_concerned.xml index 9009cdcaa3..53dcce1370 100644 --- a/app/src/main/res/drawable/ic_gamedetail_concerned.xml +++ b/app/src/main/res/drawable/ic_gamedetail_concerned.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_gamedetail_reserve.xml b/app/src/main/res/drawable/ic_gamedetail_reserve.xml index 3655d0aa78..e538d31b1b 100644 --- a/app/src/main/res/drawable/ic_gamedetail_reserve.xml +++ b/app/src/main/res/drawable/ic_gamedetail_reserve.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_gamedetail_reserved.xml b/app/src/main/res/drawable/ic_gamedetail_reserved.xml index fe6d657c1c..bc0f5ce290 100644 --- a/app/src/main/res/drawable/ic_gamedetail_reserved.xml +++ b/app/src/main/res/drawable/ic_gamedetail_reserved.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_gamedetail_simulator_manage.xml b/app/src/main/res/drawable/ic_gamedetail_simulator_manage.xml index 934a46dcb6..32b3c65c67 100644 --- a/app/src/main/res/drawable/ic_gamedetail_simulator_manage.xml +++ b/app/src/main/res/drawable/ic_gamedetail_simulator_manage.xml @@ -3,20 +3,20 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_gamedetail_smooth_download_hint.xml b/app/src/main/res/drawable/ic_gamedetail_smooth_download_hint.xml index 438e44856a..b603bd9d78 100644 --- a/app/src/main/res/drawable/ic_gamedetail_smooth_download_hint.xml +++ b/app/src/main/res/drawable/ic_gamedetail_smooth_download_hint.xml @@ -3,18 +3,18 @@ android:height="14dp" android:viewportWidth="14" android:viewportHeight="14"> - - + + diff --git a/app/src/main/res/drawable/ic_gamedetail_switch_install.xml b/app/src/main/res/drawable/ic_gamedetail_switch_install.xml index 031b88f2c1..d09d28ff0a 100644 --- a/app/src/main/res/drawable/ic_gamedetail_switch_install.xml +++ b/app/src/main/res/drawable/ic_gamedetail_switch_install.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_jump.xml b/app/src/main/res/drawable/ic_jump.xml index 919cebae1e..dad1bb13cc 100644 --- a/app/src/main/res/drawable/ic_jump.xml +++ b/app/src/main/res/drawable/ic_jump.xml @@ -3,11 +3,10 @@ android:height="10dp" android:viewportWidth="6" android:viewportHeight="10"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_jump_badge.xml b/app/src/main/res/drawable/ic_jump_badge.xml index 0e2efe4cab..4ec68ac584 100644 --- a/app/src/main/res/drawable/ic_jump_badge.xml +++ b/app/src/main/res/drawable/ic_jump_badge.xml @@ -3,15 +3,14 @@ android:height="8dp" android:viewportWidth="5" android:viewportHeight="8"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_menu_gamedetail_more.xml b/app/src/main/res/drawable/ic_menu_gamedetail_more.xml index 59f0e1354e..aa156595da 100644 --- a/app/src/main/res/drawable/ic_menu_gamedetail_more.xml +++ b/app/src/main/res/drawable/ic_menu_gamedetail_more.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_menu_gamedetail_more_light.xml b/app/src/main/res/drawable/ic_menu_gamedetail_more_light.xml index 5cbc15eb02..e67b2c4488 100644 --- a/app/src/main/res/drawable/ic_menu_gamedetail_more_light.xml +++ b/app/src/main/res/drawable/ic_menu_gamedetail_more_light.xml @@ -3,8 +3,8 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_my_follow_comment.xml b/app/src/main/res/drawable/ic_my_follow_comment.xml index 9fe1fb56aa..0dd47322a2 100644 --- a/app/src/main/res/drawable/ic_my_follow_comment.xml +++ b/app/src/main/res/drawable/ic_my_follow_comment.xml @@ -3,12 +3,11 @@ android:height="16dp" android:viewportWidth="16" android:viewportHeight="16"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_my_follow_forum.xml b/app/src/main/res/drawable/ic_my_follow_forum.xml index ab8e24c119..35bc892dd6 100644 --- a/app/src/main/res/drawable/ic_my_follow_forum.xml +++ b/app/src/main/res/drawable/ic_my_follow_forum.xml @@ -3,12 +3,11 @@ android:height="16dp" android:viewportWidth="16" android:viewportHeight="16"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_my_follow_zone.xml b/app/src/main/res/drawable/ic_my_follow_zone.xml index 88674b0eed..36897c61d9 100644 --- a/app/src/main/res/drawable/ic_my_follow_zone.xml +++ b/app/src/main/res/drawable/ic_my_follow_zone.xml @@ -3,12 +3,11 @@ android:height="16dp" android:viewportWidth="16" android:viewportHeight="16"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_children_policy.xml b/app/src/main/res/drawable/ic_personal_children_policy.xml index de4b3642f1..47f47f8b67 100644 --- a/app/src/main/res/drawable/ic_personal_children_policy.xml +++ b/app/src/main/res/drawable/ic_personal_children_policy.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_dark_mode.xml b/app/src/main/res/drawable/ic_personal_dark_mode.xml index 8944d6dba8..7d957e0f78 100644 --- a/app/src/main/res/drawable/ic_personal_dark_mode.xml +++ b/app/src/main/res/drawable/ic_personal_dark_mode.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_personal_feedback.xml b/app/src/main/res/drawable/ic_personal_feedback.xml index 2b89395568..3f2e21f17e 100644 --- a/app/src/main/res/drawable/ic_personal_feedback.xml +++ b/app/src/main/res/drawable/ic_personal_feedback.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_history.xml b/app/src/main/res/drawable/ic_personal_history.xml index 66899a2900..0f09c8fd48 100644 --- a/app/src/main/res/drawable/ic_personal_history.xml +++ b/app/src/main/res/drawable/ic_personal_history.xml @@ -3,12 +3,11 @@ android:height="28dp" android:viewportWidth="28" android:viewportHeight="28"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_info_list.xml b/app/src/main/res/drawable/ic_personal_info_list.xml index 36ea2620d4..ed271face2 100644 --- a/app/src/main/res/drawable/ic_personal_info_list.xml +++ b/app/src/main/res/drawable/ic_personal_info_list.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_light_mode.xml b/app/src/main/res/drawable/ic_personal_light_mode.xml index 1f9fff8dde..7c8d64867f 100644 --- a/app/src/main/res/drawable/ic_personal_light_mode.xml +++ b/app/src/main/res/drawable/ic_personal_light_mode.xml @@ -3,34 +3,34 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - - - - + + + + + diff --git a/app/src/main/res/drawable/ic_personal_message.xml b/app/src/main/res/drawable/ic_personal_message.xml index cd65c98407..cdf0b498d9 100644 --- a/app/src/main/res/drawable/ic_personal_message.xml +++ b/app/src/main/res/drawable/ic_personal_message.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/ic_personal_my_collection.xml b/app/src/main/res/drawable/ic_personal_my_collection.xml index 77450dbe39..46d15b087c 100644 --- a/app/src/main/res/drawable/ic_personal_my_collection.xml +++ b/app/src/main/res/drawable/ic_personal_my_collection.xml @@ -3,11 +3,10 @@ android:height="28dp" android:viewportWidth="28" android:viewportHeight="28"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_my_game_collection.xml b/app/src/main/res/drawable/ic_personal_my_game_collection.xml index efbaaf8076..345f4f0ac4 100644 --- a/app/src/main/res/drawable/ic_personal_my_game_collection.xml +++ b/app/src/main/res/drawable/ic_personal_my_game_collection.xml @@ -3,12 +3,11 @@ android:height="28dp" android:viewportWidth="28" android:viewportHeight="28"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_my_post.xml b/app/src/main/res/drawable/ic_personal_my_post.xml index 032f74ae82..90d3e92335 100644 --- a/app/src/main/res/drawable/ic_personal_my_post.xml +++ b/app/src/main/res/drawable/ic_personal_my_post.xml @@ -3,12 +3,11 @@ android:height="28dp" android:viewportWidth="28" android:viewportHeight="28"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_permission.xml b/app/src/main/res/drawable/ic_personal_permission.xml index 0081275415..8de487daa0 100644 --- a/app/src/main/res/drawable/ic_personal_permission.xml +++ b/app/src/main/res/drawable/ic_personal_permission.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_privacy_policy.xml b/app/src/main/res/drawable/ic_personal_privacy_policy.xml index c7ca87b4af..e2dcff75cc 100644 --- a/app/src/main/res/drawable/ic_personal_privacy_policy.xml +++ b/app/src/main/res/drawable/ic_personal_privacy_policy.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_sdk.xml b/app/src/main/res/drawable/ic_personal_sdk.xml index 9a42f6c5c4..f933a5a4f8 100644 --- a/app/src/main/res/drawable/ic_personal_sdk.xml +++ b/app/src/main/res/drawable/ic_personal_sdk.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_setting.xml b/app/src/main/res/drawable/ic_personal_setting.xml index bd0a20b16c..61992c3f6d 100644 --- a/app/src/main/res/drawable/ic_personal_setting.xml +++ b/app/src/main/res/drawable/ic_personal_setting.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_share.xml b/app/src/main/res/drawable/ic_personal_share.xml index 018718c3c2..1866e4c947 100644 --- a/app/src/main/res/drawable/ic_personal_share.xml +++ b/app/src/main/res/drawable/ic_personal_share.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_personal_user_protocol.xml b/app/src/main/res/drawable/ic_personal_user_protocol.xml index 78e986b727..db6e9a4314 100644 --- a/app/src/main/res/drawable/ic_personal_user_protocol.xml +++ b/app/src/main/res/drawable/ic_personal_user_protocol.xml @@ -3,12 +3,11 @@ android:height="20dp" android:viewportWidth="20" android:viewportHeight="20"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_search_bar_clear.xml b/app/src/main/res/drawable/ic_search_bar_clear.xml index cd467dbe13..d185d02e0a 100644 --- a/app/src/main/res/drawable/ic_search_bar_clear.xml +++ b/app/src/main/res/drawable/ic_search_bar_clear.xml @@ -3,8 +3,8 @@ android:height="14dp" android:viewportWidth="14" android:viewportHeight="14"> - + diff --git a/app/src/main/res/drawable/ic_server_popup_down.xml b/app/src/main/res/drawable/ic_server_popup_down.xml index 265ab17674..ffb455a317 100644 --- a/app/src/main/res/drawable/ic_server_popup_down.xml +++ b/app/src/main/res/drawable/ic_server_popup_down.xml @@ -3,11 +3,10 @@ android:height="5dp" android:viewportWidth="10" android:viewportHeight="5"> - - - - + + + + diff --git a/app/src/main/res/drawable/ic_simulator_manager.xml b/app/src/main/res/drawable/ic_simulator_manager.xml index 421cec2dec..3e959feb6b 100644 --- a/app/src/main/res/drawable/ic_simulator_manager.xml +++ b/app/src/main/res/drawable/ic_simulator_manager.xml @@ -3,14 +3,14 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/ic_simulator_uninstall.xml b/app/src/main/res/drawable/ic_simulator_uninstall.xml index 04a3598842..b1b6a78d7e 100644 --- a/app/src/main/res/drawable/ic_simulator_uninstall.xml +++ b/app/src/main/res/drawable/ic_simulator_uninstall.xml @@ -3,11 +3,11 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_smooth_load_in_background.xml b/app/src/main/res/drawable/ic_smooth_load_in_background.xml index 583ab66427..83adbc0658 100644 --- a/app/src/main/res/drawable/ic_smooth_load_in_background.xml +++ b/app/src/main/res/drawable/ic_smooth_load_in_background.xml @@ -3,20 +3,19 @@ android:height="12dp" android:viewportWidth="12" android:viewportHeight="12"> - - - - - + + + + + diff --git a/app/src/main/res/drawable/ic_tab_activity_svg.xml b/app/src/main/res/drawable/ic_tab_activity_svg.xml index 0d455f3260..03bf70c206 100644 --- a/app/src/main/res/drawable/ic_tab_activity_svg.xml +++ b/app/src/main/res/drawable/ic_tab_activity_svg.xml @@ -3,8 +3,8 @@ android:height="18dp" android:viewportWidth="34" android:viewportHeight="18"> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_vgame_recent_hint.xml b/app/src/main/res/drawable/ic_vgame_recent_hint.xml index 3f50735419..5f41e53734 100644 --- a/app/src/main/res/drawable/ic_vgame_recent_hint.xml +++ b/app/src/main/res/drawable/ic_vgame_recent_hint.xml @@ -3,27 +3,26 @@ android:height="14dp" android:viewportWidth="14" android:viewportHeight="14"> - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/ic_vgame_update_hint.xml b/app/src/main/res/drawable/ic_vgame_update_hint.xml index 7224a694d2..b445242e09 100644 --- a/app/src/main/res/drawable/ic_vgame_update_hint.xml +++ b/app/src/main/res/drawable/ic_vgame_update_hint.xml @@ -4,30 +4,32 @@ android:height="14dp" android:viewportWidth="28" android:viewportHeight="14"> - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_more.xml b/app/src/main/res/drawable/icon_more.xml index 5efd89f935..33cdfbe6cb 100644 --- a/app/src/main/res/drawable/icon_more.xml +++ b/app/src/main/res/drawable/icon_more.xml @@ -3,11 +3,11 @@ android:height="12dp" android:viewportWidth="12" android:viewportHeight="12"> - + diff --git a/app/src/main/res/drawable/icon_share_black.xml b/app/src/main/res/drawable/icon_share_black.xml index 95f937d7e1..f2b2d0e778 100644 --- a/app/src/main/res/drawable/icon_share_black.xml +++ b/app/src/main/res/drawable/icon_share_black.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/image_detail_border.xml b/app/src/main/res/drawable/image_detail_border.xml index 1e39848114..e0403395fd 100644 --- a/app/src/main/res/drawable/image_detail_border.xml +++ b/app/src/main/res/drawable/image_detail_border.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/text_3a3a3a" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/indicator_ad_unselected.xml b/app/src/main/res/drawable/indicator_ad_unselected.xml index e8c276d73c..9c32012155 100644 --- a/app/src/main/res/drawable/indicator_ad_unselected.xml +++ b/app/src/main/res/drawable/indicator_ad_unselected.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/kaifu_amend_selector.xml b/app/src/main/res/drawable/kaifu_amend_selector.xml index a46e935b64..d814804d75 100644 --- a/app/src/main/res/drawable/kaifu_amend_selector.xml +++ b/app/src/main/res/drawable/kaifu_amend_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/kaifu_delete_selector.xml b/app/src/main/res/drawable/kaifu_delete_selector.xml index 4ea6c942fa..eb7abea1e3 100644 --- a/app/src/main/res/drawable/kaifu_delete_selector.xml +++ b/app/src/main/res/drawable/kaifu_delete_selector.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/kc_checkbox_style.xml b/app/src/main/res/drawable/kc_checkbox_style.xml index 0772786052..1381f3ff2a 100644 --- a/app/src/main/res/drawable/kc_checkbox_style.xml +++ b/app/src/main/res/drawable/kc_checkbox_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/kuaichuan_cancel_bg.xml b/app/src/main/res/drawable/kuaichuan_cancel_bg.xml index 59f344785f..2066a87c93 100644 --- a/app/src/main/res/drawable/kuaichuan_cancel_bg.xml +++ b/app/src/main/res/drawable/kuaichuan_cancel_bg.xml @@ -1,13 +1,13 @@ - + + android:width="0.6dp" + android:color="@color/content" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_linged_dn.xml b/app/src/main/res/drawable/libao_linged_dn.xml index d36b2f6126..01168f5e15 100644 --- a/app/src/main/res/drawable/libao_linged_dn.xml +++ b/app/src/main/res/drawable/libao_linged_dn.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_linged_style.xml b/app/src/main/res/drawable/libao_linged_style.xml index b55e2456f6..8537534e5c 100644 --- a/app/src/main/res/drawable/libao_linged_style.xml +++ b/app/src/main/res/drawable/libao_linged_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_linged_up.xml b/app/src/main/res/drawable/libao_linged_up.xml index 09dbd411c3..ea2e7cbe9d 100644 --- a/app/src/main/res/drawable/libao_linged_up.xml +++ b/app/src/main/res/drawable/libao_linged_up.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="@color/btn_plugin" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_search_bg.xml b/app/src/main/res/drawable/libao_search_bg.xml index 1e19230390..4ce26422b0 100644 --- a/app/src/main/res/drawable/libao_search_bg.xml +++ b/app/src/main/res/drawable/libao_search_bg.xml @@ -1,12 +1,12 @@ - + - + - + - \ No newline at end of file + android:width="1dp" + android:color="@color/theme_font" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_taoed_dn.xml b/app/src/main/res/drawable/libao_taoed_dn.xml index a48c01398f..78df2304a4 100644 --- a/app/src/main/res/drawable/libao_taoed_dn.xml +++ b/app/src/main/res/drawable/libao_taoed_dn.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_taoed_style.xml b/app/src/main/res/drawable/libao_taoed_style.xml index 62a43c3127..26b348492b 100644 --- a/app/src/main/res/drawable/libao_taoed_style.xml +++ b/app/src/main/res/drawable/libao_taoed_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/libao_taoed_up.xml b/app/src/main/res/drawable/libao_taoed_up.xml index 0f4584082e..1319784fc8 100644 --- a/app/src/main/res/drawable/libao_taoed_up.xml +++ b/app/src/main/res/drawable/libao_taoed_up.xml @@ -1,13 +1,13 @@ - + + android:width="1dp" + android:color="#ffb13c" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/login_btn_bg_enable.xml b/app/src/main/res/drawable/login_btn_bg_enable.xml index 482387ddeb..f8cb618310 100644 --- a/app/src/main/res/drawable/login_btn_bg_enable.xml +++ b/app/src/main/res/drawable/login_btn_bg_enable.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/login_btn_bg_unenable.xml b/app/src/main/res/drawable/login_btn_bg_unenable.xml index 7b237d1083..c03a6ff67d 100644 --- a/app/src/main/res/drawable/login_btn_bg_unenable.xml +++ b/app/src/main/res/drawable/login_btn_bg_unenable.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/message_unread_hint.xml b/app/src/main/res/drawable/message_unread_hint.xml index e85952fd0f..c3909d39a3 100644 --- a/app/src/main/res/drawable/message_unread_hint.xml +++ b/app/src/main/res/drawable/message_unread_hint.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/news_search_bg.xml b/app/src/main/res/drawable/news_search_bg.xml index f1c85fdf17..68659fef46 100644 --- a/app/src/main/res/drawable/news_search_bg.xml +++ b/app/src/main/res/drawable/news_search_bg.xml @@ -1,12 +1,12 @@ - + - + - + - \ No newline at end of file + android:width="1dp" + android:color="#DBDBDB" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/news_search_btn.xml b/app/src/main/res/drawable/news_search_btn.xml index 3daf4522b0..c339dbc41b 100644 --- a/app/src/main/res/drawable/news_search_btn.xml +++ b/app/src/main/res/drawable/news_search_btn.xml @@ -1,10 +1,10 @@ - + - + + android:bottomRightRadius="2dp" + android:topRightRadius="2dp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_hint_dn.xml b/app/src/main/res/drawable/oval_hint_dn.xml index b983fce439..3af16e2e2c 100644 --- a/app/src/main/res/drawable/oval_hint_dn.xml +++ b/app/src/main/res/drawable/oval_hint_dn.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_hint_red_bg.xml b/app/src/main/res/drawable/oval_hint_red_bg.xml index 6b2803b804..f926ac96ed 100644 --- a/app/src/main/res/drawable/oval_hint_red_bg.xml +++ b/app/src/main/res/drawable/oval_hint_red_bg.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_hint_red_stroke_bg.xml b/app/src/main/res/drawable/oval_hint_red_stroke_bg.xml index 63552ffaf0..315c70fea8 100644 --- a/app/src/main/res/drawable/oval_hint_red_stroke_bg.xml +++ b/app/src/main/res/drawable/oval_hint_red_stroke_bg.xml @@ -1,8 +1,10 @@ - + - + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_hint_up.xml b/app/src/main/res/drawable/oval_hint_up.xml index a7106b8ef6..7583765b73 100644 --- a/app/src/main/res/drawable/oval_hint_up.xml +++ b/app/src/main/res/drawable/oval_hint_up.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_message_hint_bg.xml b/app/src/main/res/drawable/oval_message_hint_bg.xml index e987c9e0f8..c08835b0ab 100644 --- a/app/src/main/res/drawable/oval_message_hint_bg.xml +++ b/app/src/main/res/drawable/oval_message_hint_bg.xml @@ -1,7 +1,7 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/oval_scarlet_bg.xml b/app/src/main/res/drawable/oval_scarlet_bg.xml index 6812ba88e7..fef2a1456a 100644 --- a/app/src/main/res/drawable/oval_scarlet_bg.xml +++ b/app/src/main/res/drawable/oval_scarlet_bg.xml @@ -1,36 +1,36 @@ - + - - - - - - + + + + + + + android:dither="true" + android:shape="oval"> + android:width="1dp" + android:color="#FF0000" /> - - + android:width="1dp" + android:height="1dp" /> + + - - + android:bottom="2dp" + android:left="2dp" + android:right="2dp" + android:top="2dp"> + + - - + android:width="2dp" + android:height="2dp" /> + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/package_check_dialog_item_progress.xml b/app/src/main/res/drawable/package_check_dialog_item_progress.xml index 72ff1aea6c..20fbe52766 100644 --- a/app/src/main/res/drawable/package_check_dialog_item_progress.xml +++ b/app/src/main/res/drawable/package_check_dialog_item_progress.xml @@ -20,7 +20,7 @@ + android:angle="0" /> - + - - + + - - + android:endColor="@color/btn_pause" + android:startColor="@color/btn_pause" /> + + - - - + + + - - - + android:endColor="@color/theme" + android:startColor="@color/theme" /> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/progressbar_plugin_radius_style.xml b/app/src/main/res/drawable/progressbar_plugin_radius_style.xml index 12e954906b..d70641ca4b 100644 --- a/app/src/main/res/drawable/progressbar_plugin_radius_style.xml +++ b/app/src/main/res/drawable/progressbar_plugin_radius_style.xml @@ -1,25 +1,25 @@ - + - - - + + + - - - - - - + android:endColor="@color/btn_pause" + android:startColor="@color/btn_pause" /> + + + + + + - - - + android:endColor="@color/btn_plugin" + android:startColor="@color/btn_plugin" /> + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/rating_checkbox_style.xml b/app/src/main/res/drawable/rating_checkbox_style.xml index e39f23543c..54e0bc7fcc 100644 --- a/app/src/main/res/drawable/rating_checkbox_style.xml +++ b/app/src/main/res/drawable/rating_checkbox_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_grey_bg.xml b/app/src/main/res/drawable/round_grey_bg.xml index be235c7027..0e06fb5750 100644 --- a/app/src/main/res/drawable/round_grey_bg.xml +++ b/app/src/main/res/drawable/round_grey_bg.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/round_white_bg.xml b/app/src/main/res/drawable/round_white_bg.xml index d93a896e60..95186902fc 100644 --- a/app/src/main/res/drawable/round_white_bg.xml +++ b/app/src/main/res/drawable/round_white_bg.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/search_history_delete.xml b/app/src/main/res/drawable/search_history_delete.xml index 6868869f97..795882eb19 100644 --- a/app/src/main/res/drawable/search_history_delete.xml +++ b/app/src/main/res/drawable/search_history_delete.xml @@ -3,14 +3,13 @@ android:height="12dp" android:viewportWidth="12" android:viewportHeight="12"> - - - - + + + + diff --git a/app/src/main/res/drawable/seekbar_progress.xml b/app/src/main/res/drawable/seekbar_progress.xml index 7867f3a797..aaec06f3ce 100644 --- a/app/src/main/res/drawable/seekbar_progress.xml +++ b/app/src/main/res/drawable/seekbar_progress.xml @@ -1,22 +1,20 @@ - + - - + + - + - + + android:startColor="#4FFAF9" /> diff --git a/app/src/main/res/drawable/selector_device_remind_indicator.xml b/app/src/main/res/drawable/selector_device_remind_indicator.xml index 4880d2e57e..4f0d197375 100644 --- a/app/src/main/res/drawable/selector_device_remind_indicator.xml +++ b/app/src/main/res/drawable/selector_device_remind_indicator.xml @@ -8,7 +8,7 @@ - + diff --git a/app/src/main/res/drawable/selector_ic_ask.xml b/app/src/main/res/drawable/selector_ic_ask.xml index 309fa271c0..8d1a6753d3 100644 --- a/app/src/main/res/drawable/selector_ic_ask.xml +++ b/app/src/main/res/drawable/selector_ic_ask.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_ic_game.xml b/app/src/main/res/drawable/selector_ic_game.xml index 917f0a8dcb..e6abf45108 100644 --- a/app/src/main/res/drawable/selector_ic_game.xml +++ b/app/src/main/res/drawable/selector_ic_game.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_ic_history.xml b/app/src/main/res/drawable/selector_ic_history.xml index 2e79eca7d5..55646af9c4 100644 --- a/app/src/main/res/drawable/selector_ic_history.xml +++ b/app/src/main/res/drawable/selector_ic_history.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_ic_home.xml b/app/src/main/res/drawable/selector_ic_home.xml index 297b5b9732..4bfa2b8c7b 100644 --- a/app/src/main/res/drawable/selector_ic_home.xml +++ b/app/src/main/res/drawable/selector_ic_home.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/drawable/selector_ic_user.xml b/app/src/main/res/drawable/selector_ic_user.xml index 887e4d10ca..4732b0a154 100644 --- a/app/src/main/res/drawable/selector_ic_user.xml +++ b/app/src/main/res/drawable/selector_ic_user.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_ic_video.xml b/app/src/main/res/drawable/selector_ic_video.xml index 82af8fa3ff..b49ddcbadc 100644 --- a/app/src/main/res/drawable/selector_ic_video.xml +++ b/app/src/main/res/drawable/selector_ic_video.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_ic_video_history.xml b/app/src/main/res/drawable/selector_ic_video_history.xml index e81de32744..a1c257557f 100644 --- a/app/src/main/res/drawable/selector_ic_video_history.xml +++ b/app/src/main/res/drawable/selector_ic_video_history.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_video_detail_ad_indicator.xml b/app/src/main/res/drawable/selector_video_detail_ad_indicator.xml index 99d665c975..08d9e77d4e 100644 --- a/app/src/main/res/drawable/selector_video_detail_ad_indicator.xml +++ b/app/src/main/res/drawable/selector_video_detail_ad_indicator.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shortcut_dialog_btn_bg.xml b/app/src/main/res/drawable/shortcut_dialog_btn_bg.xml index 76811a7e0e..15341f37e4 100644 --- a/app/src/main/res/drawable/shortcut_dialog_btn_bg.xml +++ b/app/src/main/res/drawable/shortcut_dialog_btn_bg.xml @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/subject_tab_style.xml b/app/src/main/res/drawable/subject_tab_style.xml index f42e5a19a8..d953625f5d 100644 --- a/app/src/main/res/drawable/subject_tab_style.xml +++ b/app/src/main/res/drawable/subject_tab_style.xml @@ -1,7 +1,7 @@ - + - - + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/tabbar_right_bg.xml b/app/src/main/res/drawable/tabbar_right_bg.xml index 96d0fcb6ae..7c3d6444f7 100644 --- a/app/src/main/res/drawable/tabbar_right_bg.xml +++ b/app/src/main/res/drawable/tabbar_right_bg.xml @@ -1,11 +1,11 @@ - + - + + android:bottomRightRadius="4dp" + android:topRightRadius="4dp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_blue_or_white_style.xml b/app/src/main/res/drawable/text_blue_or_white_style.xml index a9eb9a44f1..a6e4e59cd3 100644 --- a/app/src/main/res/drawable/text_blue_or_white_style.xml +++ b/app/src/main/res/drawable/text_blue_or_white_style.xml @@ -1,9 +1,9 @@ - - - - + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/text_white_background.xml b/app/src/main/res/drawable/text_white_background.xml index 9e1e27935c..9291efdf82 100644 --- a/app/src/main/res/drawable/text_white_background.xml +++ b/app/src/main/res/drawable/text_white_background.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_dn.xml b/app/src/main/res/drawable/textview_all_red_dn.xml index add7e21cb4..d032d53e17 100644 --- a/app/src/main/res/drawable/textview_all_red_dn.xml +++ b/app/src/main/res/drawable/textview_all_red_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_style.xml b/app/src/main/res/drawable/textview_all_red_style.xml index a7e769270b..a62d791164 100644 --- a/app/src/main/res/drawable/textview_all_red_style.xml +++ b/app/src/main/res/drawable/textview_all_red_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_all_red_up.xml b/app/src/main/res/drawable/textview_all_red_up.xml index 627dab064e..4fdb36fb0f 100644 --- a/app/src/main/res/drawable/textview_all_red_up.xml +++ b/app/src/main/res/drawable/textview_all_red_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_b3b3b3_bg.xml b/app/src/main/res/drawable/textview_b3b3b3_bg.xml index 1a173b2719..990e289a3f 100644 --- a/app/src/main/res/drawable/textview_b3b3b3_bg.xml +++ b/app/src/main/res/drawable/textview_b3b3b3_bg.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_blue_dn.xml b/app/src/main/res/drawable/textview_blue_dn.xml index d4b9e928d8..997ff04459 100644 --- a/app/src/main/res/drawable/textview_blue_dn.xml +++ b/app/src/main/res/drawable/textview_blue_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_blue_style.xml b/app/src/main/res/drawable/textview_blue_style.xml index 85397eac57..c894279f8a 100644 --- a/app/src/main/res/drawable/textview_blue_style.xml +++ b/app/src/main/res/drawable/textview_blue_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_blue_up.xml b/app/src/main/res/drawable/textview_blue_up.xml index 13bb9b1962..3d1f78b759 100644 --- a/app/src/main/res/drawable/textview_blue_up.xml +++ b/app/src/main/res/drawable/textview_blue_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_cancel_dn.xml b/app/src/main/res/drawable/textview_cancel_dn.xml index 6cac051f57..8f03d8fbd4 100644 --- a/app/src/main/res/drawable/textview_cancel_dn.xml +++ b/app/src/main/res/drawable/textview_cancel_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_cancel_style.xml b/app/src/main/res/drawable/textview_cancel_style.xml index 7e2d4641e7..61d4259df7 100644 --- a/app/src/main/res/drawable/textview_cancel_style.xml +++ b/app/src/main/res/drawable/textview_cancel_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_cancel_up.xml b/app/src/main/res/drawable/textview_cancel_up.xml index aef5d41338..2d6c4c00a8 100644 --- a/app/src/main/res/drawable/textview_cancel_up.xml +++ b/app/src/main/res/drawable/textview_cancel_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_concern_red_dn.xml b/app/src/main/res/drawable/textview_concern_red_dn.xml index ae4c1e48c2..b6074e6ef7 100644 --- a/app/src/main/res/drawable/textview_concern_red_dn.xml +++ b/app/src/main/res/drawable/textview_concern_red_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_concern_red_up.xml b/app/src/main/res/drawable/textview_concern_red_up.xml index 55f901d086..9b30e869c6 100644 --- a/app/src/main/res/drawable/textview_concern_red_up.xml +++ b/app/src/main/res/drawable/textview_concern_red_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_green_dn.xml b/app/src/main/res/drawable/textview_green_dn.xml index 6c09c7c314..fbe114f989 100644 --- a/app/src/main/res/drawable/textview_green_dn.xml +++ b/app/src/main/res/drawable/textview_green_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_green_style.xml b/app/src/main/res/drawable/textview_green_style.xml index 61e7e1cde6..94ee651b21 100644 --- a/app/src/main/res/drawable/textview_green_style.xml +++ b/app/src/main/res/drawable/textview_green_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_green_up.xml b/app/src/main/res/drawable/textview_green_up.xml index f8df7824ba..303307c798 100644 --- a/app/src/main/res/drawable/textview_green_up.xml +++ b/app/src/main/res/drawable/textview_green_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_orange_dn.xml b/app/src/main/res/drawable/textview_orange_dn.xml index 577f74feda..9a01bdc001 100644 --- a/app/src/main/res/drawable/textview_orange_dn.xml +++ b/app/src/main/res/drawable/textview_orange_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_orange_style.xml b/app/src/main/res/drawable/textview_orange_style.xml index bbd9ec9872..92652a130a 100644 --- a/app/src/main/res/drawable/textview_orange_style.xml +++ b/app/src/main/res/drawable/textview_orange_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_orange_up.xml b/app/src/main/res/drawable/textview_orange_up.xml index d145460190..639292203b 100644 --- a/app/src/main/res/drawable/textview_orange_up.xml +++ b/app/src/main/res/drawable/textview_orange_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_red_dn.xml b/app/src/main/res/drawable/textview_red_dn.xml index 3d4f82fe83..380cb8f750 100644 --- a/app/src/main/res/drawable/textview_red_dn.xml +++ b/app/src/main/res/drawable/textview_red_dn.xml @@ -1,19 +1,19 @@ - + - - - + + + - - - - - - + + + + + + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_red_style.xml b/app/src/main/res/drawable/textview_red_style.xml index 7dcc8be95a..c38d06005c 100644 --- a/app/src/main/res/drawable/textview_red_style.xml +++ b/app/src/main/res/drawable/textview_red_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_red_up.xml b/app/src/main/res/drawable/textview_red_up.xml index 7c51181fb4..bf69665542 100644 --- a/app/src/main/res/drawable/textview_red_up.xml +++ b/app/src/main/res/drawable/textview_red_up.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_server_tag.xml b/app/src/main/res/drawable/textview_server_tag.xml index f7251d364b..684afb532e 100644 --- a/app/src/main/res/drawable/textview_server_tag.xml +++ b/app/src/main/res/drawable/textview_server_tag.xml @@ -1,9 +1,9 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/toolbar_download.xml b/app/src/main/res/drawable/toolbar_download.xml index bc782fb2b4..1bab0b37b5 100644 --- a/app/src/main/res/drawable/toolbar_download.xml +++ b/app/src/main/res/drawable/toolbar_download.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/toolbar_download_light.xml b/app/src/main/res/drawable/toolbar_download_light.xml index ae916938d8..f9ba706480 100644 --- a/app/src/main/res/drawable/toolbar_download_light.xml +++ b/app/src/main/res/drawable/toolbar_download_light.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/toolbar_message.xml b/app/src/main/res/drawable/toolbar_message.xml index 2dd620f6ea..d9f809a16a 100644 --- a/app/src/main/res/drawable/toolbar_message.xml +++ b/app/src/main/res/drawable/toolbar_message.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/toolbar_message_light.xml b/app/src/main/res/drawable/toolbar_message_light.xml index 6567c8c80b..53c164bc2a 100644 --- a/app/src/main/res/drawable/toolbar_message_light.xml +++ b/app/src/main/res/drawable/toolbar_message_light.xml @@ -3,15 +3,15 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - - + + diff --git a/app/src/main/res/drawable/toolbar_search_icon.xml b/app/src/main/res/drawable/toolbar_search_icon.xml index 10e46393e6..21acf77e1a 100644 --- a/app/src/main/res/drawable/toolbar_search_icon.xml +++ b/app/src/main/res/drawable/toolbar_search_icon.xml @@ -3,8 +3,8 @@ android:height="14dp" android:viewportWidth="14" android:viewportHeight="14"> - + diff --git a/app/src/main/res/drawable/toolbar_search_icon_light.xml b/app/src/main/res/drawable/toolbar_search_icon_light.xml index 1c36df7bbd..eb579f072c 100644 --- a/app/src/main/res/drawable/toolbar_search_icon_light.xml +++ b/app/src/main/res/drawable/toolbar_search_icon_light.xml @@ -3,8 +3,8 @@ android:height="14dp" android:viewportWidth="14" android:viewportHeight="14"> - + diff --git a/app/src/main/res/drawable/video_choose_preview_border.xml b/app/src/main/res/drawable/video_choose_preview_border.xml index 6b0a9bb37c..a8d675ae0e 100644 --- a/app/src/main/res/drawable/video_choose_preview_border.xml +++ b/app/src/main/res/drawable/video_choose_preview_border.xml @@ -5,7 +5,7 @@ - + diff --git a/app/src/main/res/drawable/video_detail_btn_download_up.xml b/app/src/main/res/drawable/video_detail_btn_download_up.xml index 50bb3f6612..00a695ddaf 100644 --- a/app/src/main/res/drawable/video_detail_btn_download_up.xml +++ b/app/src/main/res/drawable/video_detail_btn_download_up.xml @@ -1,9 +1,11 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/drawable/video_detail_seek_progress.xml b/app/src/main/res/drawable/video_detail_seek_progress.xml index 307d6cca85..53e3dd7cee 100644 --- a/app/src/main/res/drawable/video_detail_seek_progress.xml +++ b/app/src/main/res/drawable/video_detail_seek_progress.xml @@ -2,26 +2,26 @@ - - - + + + - - - + + + - - - + + + diff --git a/app/src/main/res/drawable/video_upload_protocol_checkbox_style.xml b/app/src/main/res/drawable/video_upload_protocol_checkbox_style.xml index e96f0b52a5..a78d424c5c 100644 --- a/app/src/main/res/drawable/video_upload_protocol_checkbox_style.xml +++ b/app/src/main/res/drawable/video_upload_protocol_checkbox_style.xml @@ -1,8 +1,8 @@ - + - - - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_comment.xml b/app/src/main/res/layout/activity_comment.xml index 46b2fb1679..f388ec4729 100644 --- a/app/src/main/res/layout/activity_comment.xml +++ b/app/src/main/res/layout/activity_comment.xml @@ -4,11 +4,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00000000"> + + android:background="@color/black_alpha_40" /> + android:layout_marginTop="80dp" /> - + android:orientation="vertical"> - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/list_refresh" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="45dp" + android:gravity="end|center_vertical" + android:paddingRight="20dp"> + android:layout_width="35dp" + android:layout_height="18dp" + android:layout_marginRight="20dp" + android:background="@color/theme" + android:gravity="center" + android:text="新增" + android:textColor="@color/white" + android:textSize="11sp" /> - + android:id="@+id/delete" + android:layout_width="35dp" + android:layout_height="18dp" + android:gravity="center" + android:text="删除" + android:textColor="@color/hint" + android:textSize="11sp" + android:textStyle="" /> + - - + android:id="@+id/list_rv" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> - + - + - - + + diff --git a/app/src/main/res/layout/activity_install_skeleton.xml b/app/src/main/res/layout/activity_install_skeleton.xml index c2596f0a5c..fdb266b6fa 100644 --- a/app/src/main/res/layout/activity_install_skeleton.xml +++ b/app/src/main/res/layout/activity_install_skeleton.xml @@ -1,611 +1,611 @@ - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:id="@+id/game_order" + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + android:id="@+id/game_icon" + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:id="@+id/game_name" + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:id="@+id/game_des" + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:id="@+id/download_btn" + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingLeft="11dp" + android:paddingTop="8dp" + android:paddingRight="18dp" + android:paddingBottom="8dp"> + android:layout_width="25dp" + android:layout_height="wrap_content" + android:layout_marginLeft="-3dp" + android:layout_marginRight="0dp" + android:gravity="center" + android:maxLength="3" + android:textColor="@color/title" + android:textSize="15sp" + android:visibility="gone" /> + android:layout_width="68dp" + android:layout_height="74dp"> + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:background="@color/background" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginRight="18dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="90dp" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:background="@color/background" + android:ellipsize="end" + android:textSize="11sp" /> + android:layout_width="match_parent" + android:layout_height="28dp"> - + android:layout_width="75dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="10sp" /> + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:layout_width="40dp" + android:layout_height="10dp" + android:background="@color/background" /> + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> - + android:layout_width="40dp" + android:layout_height="10dp" + android:layout_marginLeft="10dp" + android:background="@color/background" /> + - + + android:layout_width="60dp" + android:layout_height="28.5dp" + android:background="@color/background" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_libaodetail.xml b/app/src/main/res/layout/activity_libaodetail.xml index 80a4ee2ff9..fbb72246f1 100644 --- a/app/src/main/res/layout/activity_libaodetail.xml +++ b/app/src/main/res/layout/activity_libaodetail.xml @@ -1,42 +1,42 @@ - - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/libaodetail_rv_show" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/detail_ll_bottom" + android:layout_marginBottom="-7dp" /> + android:id="@+id/list_skeleton" + android:layout_width="match_parent" + android:layout_height="match_parent" /> - + + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> - + - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_libaodetail_skeleton.xml b/app/src/main/res/layout/activity_libaodetail_skeleton.xml index 0f97e0bd66..31b4ef633e 100644 --- a/app/src/main/res/layout/activity_libaodetail_skeleton.xml +++ b/app/src/main/res/layout/activity_libaodetail_skeleton.xml @@ -1,187 +1,187 @@ - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:gravity="center_vertical" + android:orientation="horizontal" + android:padding="20dp"> + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_centerVertical="true" + android:layout_marginRight="11dp" + android:background="@color/background" /> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="vertical"> + android:layout_width="80dp" + android:layout_height="wrap_content" + android:background="@color/background" + android:singleLine="true" + android:textSize="16sp" /> + android:layout_width="100dp" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:layout_marginBottom="6dp" + android:background="@color/background" + android:singleLine="true" + android:textSize="12sp" /> + android:layout_width="50dp" + android:layout_height="wrap_content" + android:background="@color/background" + android:singleLine="true" + android:textSize="12sp" /> - + + android:layout_width="60dp" + android:layout_height="30dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginLeft="10dp" + android:background="@color/background" + android:gravity="center" /> - + + android:id="@+id/libaodetail_content_ll" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:orientation="vertical" + android:paddingLeft="18dp" + android:paddingTop="12dp" + android:paddingRight="18dp" + android:paddingBottom="12dp" + android:visibility="visible"> + android:layout_width="70dp" + android:layout_height="wrap_content" + android:background="@color/background" + android:textSize="15sp" /> + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginTop="12dp" + android:background="@color/cutting_line" + android:visibility="visible" /> + android:id="@+id/libaodetail_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:background="@color/background" + android:textColor="@color/libao_detail_content" /> - + + android:id="@+id/libaodetail_time_ll" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:orientation="vertical" + android:paddingLeft="18dp" + android:paddingTop="12dp" + android:paddingRight="18dp" + android:paddingBottom="12dp" + android:visibility="visible"> + android:layout_width="70dp" + android:layout_height="wrap_content" + android:background="@color/background" + android:textSize="15sp" /> + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginTop="12dp" + android:background="@color/cutting_line" + android:visibility="visible" /> + android:id="@+id/libaodetail_condition" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:textColor="@color/libao_detail_content" + android:visibility="gone" /> + android:id="@+id/libaodetail_time_start" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:background="@color/background" /> + android:id="@+id/libaodetail_time_end" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:background="@color/background" /> - + + android:id="@+id/libaodetail_des_ll" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:orientation="vertical" + android:paddingLeft="18dp" + android:paddingTop="12dp" + android:paddingRight="18dp" + android:paddingBottom="12dp" + android:visibility="visible"> + android:layout_width="70dp" + android:layout_height="wrap_content" + android:background="@color/background" + android:textSize="15sp" /> + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginTop="12dp" + android:background="@color/cutting_line" + android:visibility="visible" /> + android:id="@+id/libaodetail_des" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:background="@color/background" /> - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_network_diagnosis.xml b/app/src/main/res/layout/activity_network_diagnosis.xml index b5e2faa958..c6cfb6e3b6 100644 --- a/app/src/main/res/layout/activity_network_diagnosis.xml +++ b/app/src/main/res/layout/activity_network_diagnosis.xml @@ -55,6 +55,6 @@ android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index fea16636fe..a50ec66495 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -1,14 +1,14 @@ - + - + + android:id="@+id/search_result" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_share_gh.xml b/app/src/main/res/layout/activity_share_gh.xml index dea079b26e..6d0cbdf326 100644 --- a/app/src/main/res/layout/activity_share_gh.xml +++ b/app/src/main/res/layout/activity_share_gh.xml @@ -1,64 +1,64 @@ - + - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/white" + android:scrollbars="none"> + android:id="@+id/content_ll" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:orientation="vertical"> + android:id="@+id/gh_address_qrcode" + android:layout_width="150dp" + android:layout_height="150dp" + android:layout_marginTop="40dp" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="6dp" + android:layout_marginTop="15dp" + android:gravity="center_horizontal" + android:text="光环助手官网" /> + android:id="@+id/gh_address_tv" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:textColor="@color/theme_font" + android:textSize="12sp" + android:textStyle="bold" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="38dp" + android:layout_marginRight="38dp" + android:layout_marginTop="15dp" + android:maxLines="1" + android:text="--------------------------------------------------------------------------------------------------" + android:textColor="@color/content" /> + android:id="@+id/share_rl" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_sharecard.xml b/app/src/main/res/layout/activity_sharecard.xml index c0cdbd456b..6848a7c377 100644 --- a/app/src/main/res/layout/activity_sharecard.xml +++ b/app/src/main/res/layout/activity_sharecard.xml @@ -1,129 +1,129 @@ - + - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/bg_404040"> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/sharecard_bottom"> + android:id="@+id/sharecard_screenshot" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="9dp" + android:layout_marginRight="9dp" + android:layout_marginTop="21dp" + android:background="@drawable/share_text_bg" + android:paddingBottom="20dp" + android:paddingLeft="32dp" + android:paddingRight="32dp"> + android:id="@+id/sharecard_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="55dp" + android:textColor="@color/title" + android:textSize="16sp" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@+id/sharecard_content" + android:layout_marginTop="43dp"> + android:id="@+id/sharecard_game_icon" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_marginRight="12dp" + android:layout_toLeftOf="@+id/sharecard_game_name" /> + android:id="@+id/sharecard_game_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:textColor="@color/title" + android:textSize="16sp" /> - - + + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="20dp" + android:layout_marginLeft="20dp" + android:layout_marginTop="45dp"> + android:id="@+id/sharecard_qrcode" + android:layout_width="47dp" + android:layout_height="47dp" + android:layout_marginRight="10dp" /> + android:id="@+id/sharecard_qrcode_hint" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_toRightOf="@+id/sharecard_qrcode" + android:text="长按二维码查看详情" + android:textColor="@color/hint" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/sharecard_qrcode_hint" + android:layout_marginTop="6dp" + android:layout_toRightOf="@+id/sharecard_qrcode"> + android:id="@+id/sharecard_gh_icon" + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_centerVertical="true" + android:layout_marginRight="5dp" + android:src="@drawable/concern_message_icon" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_toRightOf="@+id/sharecard_gh_icon" + android:text="分享自『光环助手』App" + android:textColor="@color/hint" /> - - - - + + + + + android:id="@+id/sharecard_bottom" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:background="@color/white" + android:orientation="vertical" /> - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_sharecard_pic.xml b/app/src/main/res/layout/activity_sharecard_pic.xml index 479bd86803..af3abdfce6 100644 --- a/app/src/main/res/layout/activity_sharecard_pic.xml +++ b/app/src/main/res/layout/activity_sharecard_pic.xml @@ -1,177 +1,177 @@ - + - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/sharecard_screenshot" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/sharecard_bottom" + android:fillViewport="true"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/sharecard_game_content_img" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + fresco:placeholderImage="@drawable/occupy2" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:orientation="vertical" + android:padding="20dp"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/sharecard_content"> + android:id="@+id/sharecard_game_icon" + android:layout_width="26dp" + android:layout_height="26dp" + android:layout_marginRight="12dp" /> + android:id="@+id/sharecard_game_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_toRightOf="@+id/sharecard_game_icon" + android:textColor="@color/theme_font" + android:textSize="16sp" /> - + + android:id="@+id/sharecard_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:textColor="@color/title" + android:textSize="16sp" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="45dp"> + android:id="@+id/sharecard_qrcode" + android:layout_width="47dp" + android:layout_height="47dp" + android:layout_marginRight="10dp" /> + android:id="@+id/sharecard_qrcode_hint" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_toRightOf="@+id/sharecard_qrcode" + android:text="@string/sharecard_qrcode_hint" + android:textColor="@color/hint" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/sharecard_qrcode_hint" + android:layout_marginTop="6dp" + android:layout_toRightOf="@+id/sharecard_qrcode"> + android:id="@+id/sharecard_gh_icon" + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_centerVertical="true" + android:layout_marginRight="5dp" + android:src="@drawable/concern_message_icon" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_toRightOf="@+id/sharecard_gh_icon" + android:text="@string/sharecard_from" + android:textColor="@color/hint" /> - - - - - + + + + + + android:id="@+id/sharecard_bottom" + android:layout_width="match_parent" + android:layout_height="45dp" + android:layout_alignParentBottom="true" + android:background="@color/black"> + android:id="@+id/sharecard_chang_img" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:gravity="center"> + android:id="@+id/sharecard_chang_img_icon" + android:layout_width="20dp" + android:layout_height="17dp" + android:layout_centerInParent="true" + android:layout_marginRight="10dp" + android:src="@drawable/sharecard_chang_img" /> - + android:id="@+id/sharecard_chang_img_tv" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:layout_toRightOf="@+id/sharecard_chang_img_icon" + android:text="@string/change_img" + android:textColor="@color/white" + android:textSize="15sp" /> + + android:id="@+id/sharecard_share_btn" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:gravity="center"> + android:id="@+id/sharecard_share_icon" + android:layout_width="20dp" + android:layout_height="17dp" + android:layout_marginRight="10dp" + android:src="@drawable/sharecard_share_icon" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toRightOf="@+id/sharecard_share_icon" + android:text="@string/share" + android:textColor="@color/white" + android:textSize="15sp" /> - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash_intro.xml b/app/src/main/res/layout/activity_splash_intro.xml index 78e2f6d72d..669d0a68ee 100644 --- a/app/src/main/res/layout/activity_splash_intro.xml +++ b/app/src/main/res/layout/activity_splash_intro.xml @@ -7,6 +7,6 @@ android:id="@+id/splash_intro_vp_guide" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone"/> + android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_subject.xml b/app/src/main/res/layout/activity_subject.xml index 4a57c5e02a..ad7e0871db 100644 --- a/app/src/main/res/layout/activity_subject.xml +++ b/app/src/main/res/layout/activity_subject.xml @@ -1,28 +1,28 @@ - + - + + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/subject_content" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_suggest.xml b/app/src/main/res/layout/activity_suggest.xml index d2f9071368..31130bb7db 100644 --- a/app/src/main/res/layout/activity_suggest.xml +++ b/app/src/main/res/layout/activity_suggest.xml @@ -7,239 +7,239 @@ android:background="@color/background" android:orientation="vertical"> - + + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:overScrollMode="never" + android:scrollbars="none"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/suggest_game_container" + android:layout_width="match_parent" + android:layout_height="50dp" + android:layout_centerInParent="true" + android:background="@color/background_white" + android:gravity="center_vertical" + android:paddingRight="20dp" + android:visibility="visible"> + android:id="@+id/suggest_game_name_title" + android:layout_width="107dp" + android:layout_height="wrap_content" + android:paddingLeft="20dp" + android:text="游戏名字" + android:textColor="@color/text_black" + android:textSize="15sp" /> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1"> + android:id="@+id/suggest_game_select" + android:layout_width="match_parent" + android:layout_height="30dp" + android:background="@drawable/border_suggest_bg" + android:gravity="center" + android:text="@string/suggest_select_game" + android:textColor="@color/hint" + android:textSize="14sp" + android:visibility="visible" /> + android:id="@+id/suggest_game_name" + android:layout_width="match_parent" + android:layout_height="30dp" + android:gravity="center_vertical" + android:textColor="@color/title" + android:textSize="14sp" + android:visibility="gone" /> - - + + + android:id="@+id/suggest_platform_container" + android:layout_width="match_parent" + android:layout_height="50dp" + android:layout_marginTop="1dp" + android:background="@color/background_white" + android:gravity="center_vertical" + android:visibility="gone"> + android:id="@+id/suggest_platform_title" + android:layout_width="107dp" + android:layout_height="wrap_content" + android:paddingLeft="20dp" + android:text="游戏平台" + android:textColor="@color/text_black" + android:textSize="15sp" /> - + android:id="@+id/suggest_platform_et" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@null" + android:hint="请填写游戏平台" + android:inputType="textEmailAddress" + android:maxLength="64" + android:maxLines="1" + android:paddingTop="10dp" + android:paddingRight="10dp" + android:paddingBottom="10dp" + android:textColor="@color/text_title" + android:textColorHint="@color/text_body" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" /> + + android:id="@+id/suggest_type_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:orientation="vertical" + android:paddingBottom="15dp" + android:visibility="visible"> + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/suggest_type_name" + android:layout_width="107dp" + android:layout_height="50dp" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="功能需求" + android:textColor="@color/text_black" + android:textSize="15sp" /> + android:id="@+id/tv_ad" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="20dp" + android:textColor="@color/theme_font" + android:textSize="12sp" + android:visibility="gone" + tools:text="点击下载万能加速器" + tools:visibility="visible" /> - + + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/type_accelerate" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="20dp" + android:layout_weight="1" + android:drawableLeft="@drawable/kc_checkbox_style" + android:drawablePadding="10dp" + android:gravity="center" + android:paddingTop="15dp" + android:paddingBottom="15dp" + android:text="加速跳过" + android:textColor="@color/content" + android:textSize="14sp" /> + android:id="@+id/type_standalone" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="20dp" + android:layout_weight="1" + android:drawableLeft="@drawable/kc_checkbox_style" + android:drawablePadding="10dp" + android:paddingTop="15dp" + android:paddingBottom="15dp" + android:text="单机功能" + android:textColor="@color/content" + android:textSize="14sp" /> - + android:id="@+id/type_material" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="20dp" + android:layout_weight="1" + android:drawableLeft="@drawable/kc_checkbox_style" + android:drawablePadding="10dp" + android:paddingTop="15dp" + android:paddingBottom="15dp" + android:text="替换素材" + android:textColor="@color/content" + android:textSize="14sp" /> + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical"> + android:id="@+id/type_other" + android:layout_width="107dp" + android:layout_height="wrap_content" + android:drawableLeft="@drawable/kc_checkbox_style" + android:drawablePadding="10dp" + android:paddingLeft="20dp" + android:text="其他" + android:textColor="@color/content" + android:textSize="14sp" /> + android:id="@+id/type_other_name" + android:layout_width="match_parent" + android:layout_height="30dp" + android:layout_marginRight="20dp" + android:background="@drawable/border_suggest_bg" + android:hint="请补充" + android:maxLength="30" + android:paddingLeft="20dp" + android:paddingRight="10dp" + android:singleLine="true" + android:textColor="@color/text_title" + android:textColorHint="@color/text_body" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" /> - - + + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:orientation="vertical"> + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" /> + android:id="@+id/suggest_pic_rv" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="12dp" + android:paddingLeft="20dp" /> - + + android:id="@+id/suggest_link_container" + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:gravity="center_vertical" + android:visibility="gone"> + android:layout_width="107dp" + android:layout_height="wrap_content" + android:paddingLeft="20dp" + android:text="下载链接" + android:textColor="@color/text_black" + android:textSize="15sp" /> - + android:id="@+id/suggest_link_et" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@null" + android:hint="游戏的下载地址" + android:inputType="textEmailAddress" + android:maxLines="1" + android:paddingTop="10dp" + android:paddingRight="10dp" + android:paddingBottom="10dp" + android:textColor="@color/text_title" + android:textColorHint="@color/text_body" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" /> + + android:layout_width="match_parent" + android:layout_height="40dp" + android:layout_marginTop="8dp" + android:background="@color/background_white" + android:gravity="center_vertical"> + android:id="@+id/suggest_email_name" + android:layout_width="107dp" + android:layout_height="wrap_content" + android:paddingLeft="20dp" + android:text="联系方式" + android:textColor="@color/text_black" + android:textSize="15sp" /> - + android:id="@+id/suggest_email_et" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@null" + android:hint="@string/suggest_leave_contact" + android:inputType="textEmailAddress" + android:maxLength="64" + android:maxLines="1" + android:paddingTop="10dp" + android:paddingRight="10dp" + android:paddingBottom="10dp" + android:textColor="@color/text_title" + android:textColorHint="@color/text_body" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="14sp" /> + + + + @@ -601,6 +604,7 @@ android:textSize="14sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + android:text="您还可以通过邮件 feedback@ghzhushou.com 反馈" /> + + android:text="查看详细说明" /> - - + + + android:id="@+id/suggest_post_ll" + android:layout_width="match_parent" + android:layout_height="60dp" + android:background="@color/background_white" + android:orientation="horizontal" + android:padding="10dp"> + android:id="@+id/suggest_post_btn" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/game_item_btn_download_style" + android:gravity="center" + android:text="@string/suggest_post" + android:textColor="@color/white" + android:textSize="14sp" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_toolbox.xml b/app/src/main/res/layout/activity_toolbox.xml index dcde4e62ac..f50de25b59 100644 --- a/app/src/main/res/layout/activity_toolbox.xml +++ b/app/src/main/res/layout/activity_toolbox.xml @@ -59,7 +59,7 @@ layout="@layout/reuse_data_exception" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginTop="80dp"/> + android:layout_marginTop="80dp" /> + android:layout_marginTop="80dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_publish.xml b/app/src/main/res/layout/activity_video_publish.xml index bc4b0e2131..5cd1f33c23 100644 --- a/app/src/main/res/layout/activity_video_publish.xml +++ b/app/src/main/res/layout/activity_video_publish.xml @@ -1,8 +1,8 @@ - + + + android:id="@+id/normal_content" + android:layout_width="match_parent" + android:layout_height="match_parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_viewimage.xml b/app/src/main/res/layout/activity_viewimage.xml index 8c9631011b..2c9c3ae4e1 100644 --- a/app/src/main/res/layout/activity_viewimage.xml +++ b/app/src/main/res/layout/activity_viewimage.xml @@ -62,7 +62,7 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/area_item.xml b/app/src/main/res/layout/area_item.xml index 1c9b29c411..5a310ebfc3 100644 --- a/app/src/main/res/layout/area_item.xml +++ b/app/src/main/res/layout/area_item.xml @@ -1,35 +1,35 @@ - + android:textColor="@color/title" /> + android:layout_width="15dp" + android:layout_height="14dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:src="@drawable/about_more_iocn" /> + android:id="@+id/area_item_select" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:src="@drawable/kc_checkbox_select" + android:visibility="gone" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/area_title_item.xml b/app/src/main/res/layout/area_title_item.xml index a140d70d58..55f5ed4c93 100644 --- a/app/src/main/res/layout/area_title_item.xml +++ b/app/src/main/res/layout/area_title_item.xml @@ -1,10 +1,10 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/ask_recommends_subject_item.xml b/app/src/main/res/layout/ask_recommends_subject_item.xml index 3d91e1d3e2..da48f86a1c 100644 --- a/app/src/main/res/layout/ask_recommends_subject_item.xml +++ b/app/src/main/res/layout/ask_recommends_subject_item.xml @@ -1,18 +1,18 @@ - + + android:id="@+id/subject_icon" + style="@style/frescoStyle" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + fresco:roundedCornerRadius="4.5dp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/comment_head_item.xml b/app/src/main/res/layout/comment_head_item.xml index 9a662ae5c1..1f863c9f75 100644 --- a/app/src/main/res/layout/comment_head_item.xml +++ b/app/src/main/res/layout/comment_head_item.xml @@ -1,35 +1,35 @@ - + + android:layout_width="match_parent" + android:layout_height="40dp" + android:gravity="center_vertical" + android:orientation="horizontal"> - + android:id="@+id/comment_head_title" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:textStyle="bold" + android:gravity="center_vertical" + android:textColor="@color/text_3a3a3a" + android:textSize="15sp" /> + + android:id="@+id/comment_head_line" + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" + android:visibility="gone" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/common_hintdialog.xml b/app/src/main/res/layout/common_hintdialog.xml index eed4c5e41c..9fa6a6b070 100644 --- a/app/src/main/res/layout/common_hintdialog.xml +++ b/app/src/main/res/layout/common_hintdialog.xml @@ -1,47 +1,47 @@ - + + android:id="@+id/tv_dialog_hint_title" + android:layout_width="match_parent" + android:layout_height="55dp" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="@string/dialog_hint_title" + android:textColor="@color/text_3a3a3a" + android:textSize="18sp" + android:textStyle="bold" /> + android:layout_width="321dp" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:id="@+id/tv_dialog_hint_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:lineSpacingMultiplier="1.3" + android:paddingBottom="20dp" + android:paddingLeft="20dp" + android:paddingRight="20dp" + android:paddingTop="20dp" + android:text="@string/dialog_hint_content" + android:textSize="16sp" /> + android:id="@+id/tv_dialog_hint_confirm" + android:layout_width="match_parent" + android:layout_height="50dp" + android:background="@color/theme" + android:gravity="center" + android:text="@string/dialog_hint_confirm" + android:textColor="@color/white" + android:textSize="18sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_add_new_label.xml b/app/src/main/res/layout/dialog_add_new_label.xml index 6beef2dd3d..da62c3b759 100644 --- a/app/src/main/res/layout/dialog_add_new_label.xml +++ b/app/src/main/res/layout/dialog_add_new_label.xml @@ -26,7 +26,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - android:text="新标签"/> + android:text="新标签" /> - + - + - + - + - + - + - + - + - - + + - + - + - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_game_collection_default_cover.xml b/app/src/main/res/layout/dialog_choose_game_collection_default_cover.xml index acad5a2a35..a58204af70 100644 --- a/app/src/main/res/layout/dialog_choose_game_collection_default_cover.xml +++ b/app/src/main/res/layout/dialog_choose_game_collection_default_cover.xml @@ -43,13 +43,13 @@ + app:layout_constraintEnd_toEndOf="@+id/coverRv" /> + android:layout_marginLeft="5dp" /> + + android:drawableLeft="@drawable/ic_device_remind_note" /> + + tools:text="运行游戏前,请详细阅读应用宝-手机下载前必看教程,请悉知!" /> + android:layout_marginTop="16dp" /> + android:orientation="horizontal" /> + tools:visibility="visible" /> + + android:background="@drawable/button_round_f5f5f5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_font_size.xml b/app/src/main/res/layout/dialog_font_size.xml index 2a1f053ede..eeb05dc4ae 100644 --- a/app/src/main/res/layout/dialog_font_size.xml +++ b/app/src/main/res/layout/dialog_font_size.xml @@ -1,52 +1,52 @@ - - + - + - + - + - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_game_big_event.xml b/app/src/main/res/layout/dialog_game_big_event.xml index 385a8ef492..53108a517e 100644 --- a/app/src/main/res/layout/dialog_game_big_event.xml +++ b/app/src/main/res/layout/dialog_game_big_event.xml @@ -1,56 +1,58 @@ + + - - - - - - - - - + android:orientation="horizontal" + android:paddingLeft="24dp" + android:paddingTop="16dp" + android:paddingRight="24dp" + android:paddingBottom="19dp"> + android:textSize="12sp" + android:textColor="@color/text_subtitleDesc" + android:text="更新时间" /> + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_game_off_service.xml b/app/src/main/res/layout/dialog_game_off_service.xml index 5bb03c2330..fd60f732f7 100644 --- a/app/src/main/res/layout/dialog_game_off_service.xml +++ b/app/src/main/res/layout/dialog_game_off_service.xml @@ -3,13 +3,13 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content"> - + - + - + - + - + + tools:text="光环助手资源协议" /> + app:layout_constraintTop_toBottomOf="@+id/titleTv" /> + app:layout_constraintBottom_toBottomOf="parent" /> + + app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_install_hint.xml b/app/src/main/res/layout/dialog_install_hint.xml index 054e9f8c11..7b2826bbf7 100644 --- a/app/src/main/res/layout/dialog_install_hint.xml +++ b/app/src/main/res/layout/dialog_install_hint.xml @@ -1,104 +1,104 @@ - + + android:id="@+id/installhint_title" + android:layout_width="match_parent" + android:layout_height="55dp" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="@string/dialog_hint_title" + android:textColor="@color/text_3a3a3a" + android:textSize="18sp" + android:textStyle="bold" /> + android:layout_width="321dp" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:id="@+id/installhint_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:lineSpacingMultiplier="1.3" + android:paddingBottom="20dp" + android:paddingLeft="20dp" + android:paddingRight="20dp" + android:paddingTop="20dp" + android:text="@string/dialog_hint_content" + android:textSize="16sp" /> + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:id="@+id/installhint_unselect_ll" + android:layout_width="0dp" + android:layout_height="50dp" + android:layout_weight="1" + android:gravity="center" + android:orientation="horizontal"> + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + android:id="@+id/installhint_unselect" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="5dp" + android:src="@drawable/checkbox_unselect" /> - + android:id="@+id/installhint_select" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="5dp" + android:src="@drawable/checkbox_select" + android:visibility="gone" /> + + android:id="@+id/installhint_cancel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/dialog_hint_nomore" + android:textColor="@color/hint" + android:textSize="18sp" /> - + + android:id="@+id/installhint_confirm" + android:layout_width="0dp" + android:layout_height="50dp" + android:layout_weight="1" + android:background="@color/theme" + android:gravity="center" + android:text="@string/dialog_hint_confirm" + android:textColor="@color/white" + android:textSize="18sp" /> - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_install_permission.xml b/app/src/main/res/layout/dialog_install_permission.xml index 79635843b3..b532845ba8 100644 --- a/app/src/main/res/layout/dialog_install_permission.xml +++ b/app/src/main/res/layout/dialog_install_permission.xml @@ -88,7 +88,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/activateTv" - tools:visibility="visible"/> + tools:visibility="visible" /> + + android:padding="18dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_modify_nickname.xml b/app/src/main/res/layout/dialog_modify_nickname.xml index d4b52d35f9..d8a29bff7d 100644 --- a/app/src/main/res/layout/dialog_modify_nickname.xml +++ b/app/src/main/res/layout/dialog_modify_nickname.xml @@ -1,77 +1,77 @@ - + + android:id="@+id/dialog_nickname_title" + android:layout_width="match_parent" + android:layout_height="55dp" + android:gravity="center_vertical" + android:paddingLeft="20dp" + android:text="@string/dialog_nickname_title" + android:textColor="@color/text_3a3a3a" + android:textSize="18sp" + android:textStyle="bold" /> + android:layout_width="321dp" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:id="@+id/dialog_nickname_input" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:layout_marginLeft="15dp" + android:layout_marginRight="15dp" + android:layout_marginTop="8dp" + android:background="@drawable/dialog_edit_bg" + android:hint="@string/dialog_nickname_input" + android:imeOptions="actionDone" + android:inputType="textPersonName" + android:maxLength="10" + android:maxLines="1" + android:padding="8dp" + android:textColor="@color/title" + android:textColorHint="@color/text_9a9a9a" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="18sp" /> + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + android:id="@+id/dialog_nickname_cancel" + android:layout_width="0dp" + android:layout_height="50dp" + android:layout_weight="1" + android:gravity="center" + android:text="@string/dialog_nickname_cancel" + android:textColor="@color/text_9a9a9a" + android:textSize="18sp" /> + android:id="@+id/dialog_nickname_confirm" + android:layout_width="0dp" + android:layout_height="50dp" + android:layout_weight="1" + android:background="@color/theme" + android:gravity="center" + android:text="@string/dialog_nickname_confirm" + android:textColor="@color/white" + android:textSize="18sp" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pass_regulation.xml b/app/src/main/res/layout/dialog_pass_regulation.xml index 661c03d924..67fea0ead9 100644 --- a/app/src/main/res/layout/dialog_pass_regulation.xml +++ b/app/src/main/res/layout/dialog_pass_regulation.xml @@ -27,7 +27,7 @@ android:textColor="@color/text_title" android:textSize="16sp" android:text="@string/pass_regulation" /> - + + android:text="@string/dialog_ok" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_receive_badge.xml b/app/src/main/res/layout/dialog_receive_badge.xml index 56c85823ad..b15437b263 100644 --- a/app/src/main/res/layout/dialog_receive_badge.xml +++ b/app/src/main/res/layout/dialog_receive_badge.xml @@ -38,7 +38,7 @@ android:textColor="@color/text_subtitle" android:textSize="14sp" tools:text="当月累计评论30条" /> - + - + - + - + - + - + - + - + - + - + - + - + - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_report_reason.xml b/app/src/main/res/layout/dialog_report_reason.xml index 7a90f3287a..5cd7fcfa2e 100644 --- a/app/src/main/res/layout/dialog_report_reason.xml +++ b/app/src/main/res/layout/dialog_report_reason.xml @@ -33,7 +33,7 @@ android:id="@+id/reasonRv" android:layout_width="match_parent" android:layout_height="wrap_content" - android:overScrollMode="never"/> + android:overScrollMode="never" /> - - - - - - + + + + + + + + android:layout_below="@id/config_container" /> diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml index fc474e68cd..6669f93e1b 100644 --- a/app/src/main/res/layout/fragment_toolbar.xml +++ b/app/src/main/res/layout/fragment_toolbar.xml @@ -16,7 +16,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:src="@drawable/toolbar_sign" /> - + - diff --git a/app/src/main/res/layout/fragment_user_history.xml b/app/src/main/res/layout/fragment_user_history.xml index 1211eef5a8..5984ab0ada 100644 --- a/app/src/main/res/layout/fragment_user_history.xml +++ b/app/src/main/res/layout/fragment_user_history.xml @@ -77,7 +77,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_vdownload_manager.xml b/app/src/main/res/layout/fragment_vdownload_manager.xml index 0c59a2b72e..c02846fefb 100644 --- a/app/src/main/res/layout/fragment_vdownload_manager.xml +++ b/app/src/main/res/layout/fragment_vdownload_manager.xml @@ -30,8 +30,9 @@ - + + app:layout_constraintBottom_toTopOf="@id/bottomContainer" /> + + + layout="@layout/reuse_loading" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" /> - + + android:id="@+id/news_webview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/news_bottom" + android:scrollbars="vertical" /> + android:id="@+id/web_progressbar" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="3dp" + android:progressDrawable="@drawable/progressbar_bg_style" /> + android:id="@+id/news_bottom" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:background="@color/white" + android:gravity="center" + android:paddingBottom="11dp" + android:paddingTop="11dp" + android:visibility="gone"> - + android:id="@+id/web_comment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:background="@drawable/comment_border_bg" + android:paddingBottom="7dp" + android:paddingLeft="23dp" + android:paddingRight="23dp" + android:paddingTop="7dp" + android:text="@string/vote_web_comment" + android:textColor="@color/theme_font" + android:textSize="16sp" /> + + android:src="@drawable/ico_web_close" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_web_warning.xml b/app/src/main/res/layout/fragment_web_warning.xml index 501b26c5ab..15d2feeb27 100644 --- a/app/src/main/res/layout/fragment_web_warning.xml +++ b/app/src/main/res/layout/fragment_web_warning.xml @@ -11,12 +11,11 @@ layout="@layout/reuse_toolbar" android:visibility="gone" /> - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_zixun_skeleton.xml b/app/src/main/res/layout/fragment_zixun_skeleton.xml index d27f82f028..05567dec07 100644 --- a/app/src/main/res/layout/fragment_zixun_skeleton.xml +++ b/app/src/main/res/layout/fragment_zixun_skeleton.xml @@ -1,16 +1,17 @@ - + + android:background="@color/background" /> + @@ -77,7 +78,7 @@ + android:background="@color/background" /> + android:background="@color/background" /> + android:background="@color/background" /> + android:background="@color/background" /> + android:background="@color/background" /> + android:background="@color/background" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/gallery_video_item.xml b/app/src/main/res/layout/gallery_video_item.xml index 6b88d8c00e..3367fbf61a 100644 --- a/app/src/main/res/layout/gallery_video_item.xml +++ b/app/src/main/res/layout/gallery_video_item.xml @@ -1,6 +1,5 @@ - + android:ellipsize="end" /> \ No newline at end of file diff --git a/app/src/main/res/layout/game_collection_detail_image_item.xml b/app/src/main/res/layout/game_collection_detail_image_item.xml index 4ea994dac5..e2746b5b55 100644 --- a/app/src/main/res/layout/game_collection_detail_image_item.xml +++ b/app/src/main/res/layout/game_collection_detail_image_item.xml @@ -105,7 +105,7 @@ app:drawableStartCompat="@drawable/ic_game_collection_activity" app:layout_constraintBottom_toTopOf="@id/userIcon" app:layout_constraintStart_toStartOf="@+id/imageItemDesContainer" - tools:text="第四期新星up主计划"/> + tools:text="第四期新星up主计划" /> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:fresco="http://schemas.android.com/tools" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/comment_item" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/background_white" + android:paddingLeft="20dp" + android:paddingRight="20dp" + android:paddingBottom="12dp"> - + + + fresco:roundAsCircle="true" /> - + - + - + - - - + - + - + - + diff --git a/app/src/main/res/layout/game_item.xml b/app/src/main/res/layout/game_item.xml index 9cdf0166df..8e62eb655d 100644 --- a/app/src/main/res/layout/game_item.xml +++ b/app/src/main/res/layout/game_item.xml @@ -237,7 +237,7 @@ + android:layout_height="12dp" /> - + + android:id="@+id/game_news_et_search" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/news_search_bg" + android:hint="@string/news_search_input" + android:imeOptions="actionSearch" + android:paddingLeft="5dp" + android:paddingRight="53dp" + android:singleLine="true" + android:textColorHint="@color/hint" + android:textCursorDrawable="@drawable/cursor_color" + android:textSize="16sp" /> + android:id="@+id/game_news_tv_search" + android:layout_width="48dp" + android:layout_height="match_parent" + android:layout_alignParentRight="true" + android:background="@drawable/news_search_btn" + android:gravity="center" + android:text="@string/news_search" + android:textColor="@color/white" + android:textSize="14sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_news_type_item.xml b/app/src/main/res/layout/game_news_type_item.xml index 30120b8710..c20a6fd129 100644 --- a/app/src/main/res/layout/game_news_type_item.xml +++ b/app/src/main/res/layout/game_news_type_item.xml @@ -1,16 +1,16 @@ - + + android:id="@+id/game_news_type_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingBottom="10dp" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:paddingTop="5dp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_news_type_list_item.xml b/app/src/main/res/layout/game_news_type_list_item.xml index e663c72dbb..7fdaa51862 100644 --- a/app/src/main/res/layout/game_news_type_list_item.xml +++ b/app/src/main/res/layout/game_news_type_list_item.xml @@ -1,21 +1,21 @@ - + + android:gravity="center" + android:textSize="16sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_permission_item.xml b/app/src/main/res/layout/game_permission_item.xml index 06e6c954aa..91ac4f003f 100644 --- a/app/src/main/res/layout/game_permission_item.xml +++ b/app/src/main/res/layout/game_permission_item.xml @@ -1,42 +1,42 @@ - + + + + + android:layout_marginLeft="8dp" + android:textColor="@color/text_subtitle" + android:textSize="14sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/hintIv" + app:layout_constraintTop_toTopOf="parent" + tools:text="麦克风" /> - + - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_viewpager_item.xml b/app/src/main/res/layout/game_viewpager_item.xml index 457a00cb9b..1b42668a44 100644 --- a/app/src/main/res/layout/game_viewpager_item.xml +++ b/app/src/main/res/layout/game_viewpager_item.xml @@ -51,7 +51,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" - android:layout_marginRight="16dp"/> + android:layout_marginRight="16dp" /> + tools:visibility="visible" /> + tools:visibility="visible" /> - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="12dp" + android:paddingLeft="18dp" + android:paddingRight="18dp"> + android:id="@+id/gamedetail_item_news_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:text="@string/news_info" + android:textColor="@color/text_black" + android:textSize="15sp" + android:textStyle="bold" /> + android:id="@+id/gamedetail_item_news_more" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:gravity="center"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/news_all" + android:textColor="@color/theme_font" + android:textSize="13sp" /> - + android:layout_width="10dp" + android:layout_height="15dp" + android:layout_marginLeft="4dp" + android:padding="1dp" + android:scaleType="fitXY" + android:src="@drawable/userinfo_color_content" + android:visibility="gone" /> + - + + android:id="@+id/gamedetail_item_line_news1" + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginLeft="18dp" + android:layout_marginRight="18dp" + android:background="@color/cutting_line" + android:visibility="visible" /> + android:id="@+id/gamedetail_item_news1" + android:layout_width="match_parent" + android:layout_height="40dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:paddingLeft="18dp" + android:paddingRight="18dp" + android:visibility="visible"> + android:id="@+id/gamedetail_item_news_type1" + android:layout_width="26dp" + android:layout_height="15dp" + android:background="@drawable/button_normal_border" + android:gravity="center" + android:paddingLeft="1dp" + android:paddingRight="1dp" + android:textColor="@color/text_white" + android:textSize="9sp" /> - + android:id="@+id/gamedetail_item_news_title1" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:ellipsize="end" + android:singleLine="true" + android:textColor="@color/text_3a3a3a" + android:textSize="12sp" /> + + android:id="@+id/gamedetail_item_line_news2" + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginLeft="18dp" + android:layout_marginRight="18dp" + android:background="@color/cutting_line" + android:visibility="gone" /> + android:id="@+id/gamedetail_item_news2" + android:layout_width="match_parent" + android:layout_height="40dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:paddingLeft="18dp" + android:paddingRight="18dp" + android:visibility="gone"> + android:id="@+id/gamedetail_item_news_type2" + android:layout_width="26dp" + android:layout_height="15dp" + android:background="@drawable/button_normal_border" + android:gravity="center" + android:paddingLeft="1dp" + android:paddingRight="1dp" + android:textColor="@color/text_white" + android:textSize="9sp" /> - + android:id="@+id/gamedetail_item_news_title2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:ellipsize="end" + android:singleLine="true" + android:textColor="@color/text_3a3a3a" + android:textSize="12sp" /> + + android:id="@+id/gamedetail_item_line_news3" + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:layout_marginLeft="18dp" + android:layout_marginRight="18dp" + android:background="@color/cutting_line" + android:visibility="gone" /> + android:id="@+id/gamedetail_item_news3" + android:layout_width="match_parent" + android:layout_height="40dp" + android:background="@drawable/reuse_listview_item_style" + android:gravity="center_vertical" + android:paddingLeft="18dp" + android:paddingRight="18dp" + android:visibility="gone"> + android:id="@+id/gamedetail_item_news_type3" + android:layout_width="26dp" + android:layout_height="15dp" + android:background="@drawable/button_normal_border" + android:gravity="center" + android:paddingLeft="1dp" + android:paddingRight="1dp" + android:textColor="@color/text_white" + android:textSize="9sp" /> - - \ No newline at end of file + android:id="@+id/gamedetail_item_news_title3" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:ellipsize="end" + android:singleLine="true" + android:textColor="@color/text_3a3a3a" + android:textSize="12sp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_item_notice.xml b/app/src/main/res/layout/gamedetail_item_notice.xml index f17f8635a9..3a3dfd5666 100644 --- a/app/src/main/res/layout/gamedetail_item_notice.xml +++ b/app/src/main/res/layout/gamedetail_item_notice.xml @@ -1,47 +1,48 @@ - + android:orientation="vertical"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="4dp" + android:src="@drawable/gamedetail_notice_icon" /> + app:mvTextSize="12sp" /> + - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/help_qa_item.xml b/app/src/main/res/layout/help_qa_item.xml index db3cf935fb..f55ae8a330 100644 --- a/app/src/main/res/layout/help_qa_item.xml +++ b/app/src/main/res/layout/help_qa_item.xml @@ -7,4 +7,4 @@ android:maxLines="1" android:ellipsize="end" android:textSize="14sp" - android:textColor="@color/text_title"/> \ No newline at end of file + android:textColor="@color/text_title" /> \ No newline at end of file diff --git a/app/src/main/res/layout/home_video_tab_item.xml b/app/src/main/res/layout/home_video_tab_item.xml index 4519436ec0..1aae21e1c4 100644 --- a/app/src/main/res/layout/home_video_tab_item.xml +++ b/app/src/main/res/layout/home_video_tab_item.xml @@ -28,5 +28,5 @@ android:visibility="gone" app:layout_constraintStart_toEndOf="@+id/content" app:layout_constraintTop_toTopOf="@+id/content" - tools:visibility="visible"/> + tools:visibility="visible" /> \ No newline at end of file diff --git a/app/src/main/res/layout/imprint_dialog.xml b/app/src/main/res/layout/imprint_dialog.xml index bc0a6d0685..d2ba950f2e 100644 --- a/app/src/main/res/layout/imprint_dialog.xml +++ b/app/src/main/res/layout/imprint_dialog.xml @@ -1,46 +1,46 @@ - + + android:layout_width="match_parent" + android:layout_height="60dp" + android:orientation="horizontal"> + android:id="@+id/imprint_close" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="18dp" + android:padding="10dp" + android:src="@drawable/imprint_close" /> - + android:id="@+id/imprint_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:text="后台设置公告文案" + android:textColor="@color/text_5d5d5d" + android:textSize="15sp" /> + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="28dp" + android:layout_marginRight="28dp" + android:layout_marginBottom="30dp"> - + android:id="@+id/imprint_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_ad_banner.xml b/app/src/main/res/layout/item_ad_banner.xml index a6e13b6cc8..94643f707b 100644 --- a/app/src/main/res/layout/item_ad_banner.xml +++ b/app/src/main/res/layout/item_ad_banner.xml @@ -5,4 +5,4 @@ app:roundedCornerRadius="5dp" android:layout_width="match_parent" android:layout_height="match_parent" - app:placeholderImageScaleType="fitXY"/> \ No newline at end of file + app:placeholderImageScaleType="fitXY" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_article_detail_comment_empty.xml b/app/src/main/res/layout/item_article_detail_comment_empty.xml index a73ab5eff0..46a5e486af 100644 --- a/app/src/main/res/layout/item_article_detail_comment_empty.xml +++ b/app/src/main/res/layout/item_article_detail_comment_empty.xml @@ -22,6 +22,7 @@ android:text="@string/article_detail_empty_comment" android:textColor="@color/text_title" android:textSize="16sp" /> + + + android:visibility="gone" /> diff --git a/app/src/main/res/layout/item_detail_more_menu.xml b/app/src/main/res/layout/item_detail_more_menu.xml index 0960bd709d..bd90ad5880 100644 --- a/app/src/main/res/layout/item_detail_more_menu.xml +++ b/app/src/main/res/layout/item_detail_more_menu.xml @@ -24,5 +24,5 @@ android:text="加精" android:textColor="@color/text_title" android:textSize="14sp" - android:layout_marginRight="24dp"/> + android:layout_marginRight="24dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_device_remind_banner.xml b/app/src/main/res/layout/item_device_remind_banner.xml index 39309e07d1..08821a0c09 100644 --- a/app/src/main/res/layout/item_device_remind_banner.xml +++ b/app/src/main/res/layout/item_device_remind_banner.xml @@ -6,4 +6,4 @@ android:layout_height="match_parent" app:placeholderImageScaleType="fitXY" app:roundingBorderColor="@color/background" - app:roundingBorderWidth="1dp"/> \ No newline at end of file + app:roundingBorderWidth="1dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_game_detail_big_event.xml b/app/src/main/res/layout/item_game_detail_big_event.xml index 88c36e4735..581110ff2d 100644 --- a/app/src/main/res/layout/item_game_detail_big_event.xml +++ b/app/src/main/res/layout/item_game_detail_big_event.xml @@ -1,6 +1,5 @@ - + tools:text="预下载已开启,将于1月8日上午10点正式上线" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_game_detail_comment_more.xml b/app/src/main/res/layout/item_game_detail_comment_more.xml index 007f404b83..d2b1c1ab0a 100644 --- a/app/src/main/res/layout/item_game_detail_comment_more.xml +++ b/app/src/main/res/layout/item_game_detail_comment_more.xml @@ -17,5 +17,5 @@ android:drawablePadding="5dp" android:textSize="12sp" android:textColor="@color/text_subtitleDesc" - android:drawableRight="@drawable/ic_game_detail_arrow_right"/> + android:drawableRight="@drawable/ic_game_detail_arrow_right" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_game_detail_game_tag.xml b/app/src/main/res/layout/item_game_detail_game_tag.xml index fbe2a7a526..4701fb9aa2 100644 --- a/app/src/main/res/layout/item_game_detail_game_tag.xml +++ b/app/src/main/res/layout/item_game_detail_game_tag.xml @@ -21,5 +21,5 @@ + android:src="@drawable/ic_right_arrow_darker" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_game_detail_more.xml b/app/src/main/res/layout/item_game_detail_more.xml index 927053b0d3..db90d86eaa 100644 --- a/app/src/main/res/layout/item_game_detail_more.xml +++ b/app/src/main/res/layout/item_game_detail_more.xml @@ -14,5 +14,5 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - android:src="@drawable/ic_game_detail_arrow_down"/> + android:src="@drawable/ic_game_detail_arrow_down" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_skeleton_catalog_subject.xml b/app/src/main/res/layout/item_skeleton_catalog_subject.xml index 3681c1ff44..cb21f63b2b 100644 --- a/app/src/main/res/layout/item_skeleton_catalog_subject.xml +++ b/app/src/main/res/layout/item_skeleton_catalog_subject.xml @@ -24,7 +24,7 @@ layout="@layout/item_skeleton_catalog_simple_game" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1"/> + android:layout_weight="1" /> + android:layout_weight="1" /> + app:layout_constraintBottom_toBottomOf="parent" /> - + - + + app:layout_constraintTop_toTopOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/kaifu_add_item_title.xml b/app/src/main/res/layout/kaifu_add_item_title.xml index d19c384097..d48da0baf3 100644 --- a/app/src/main/res/layout/kaifu_add_item_title.xml +++ b/app/src/main/res/layout/kaifu_add_item_title.xml @@ -43,5 +43,5 @@ android:textColor="@color/title" android:textSize="12sp" /> - + diff --git a/app/src/main/res/layout/kc_game_select_item.xml b/app/src/main/res/layout/kc_game_select_item.xml index b9dfcb0f14..c87b61fed8 100644 --- a/app/src/main/res/layout/kc_game_select_item.xml +++ b/app/src/main/res/layout/kc_game_select_item.xml @@ -1,169 +1,169 @@ - + + android:id="@+id/select_game_order" + android:layout_width="25dp" + android:layout_height="wrap_content" + android:gravity="center" + android:maxLength="3" + android:text="1" + android:textColor="@color/title" + android:textSize="14sp" + android:visibility="gone" /> + android:id="@+id/select_game_thumb" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_marginLeft="5dp" /> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="vertical"> + android:id="@+id/select_game_nameAndsize" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:includeFontPadding="false" + android:lineSpacingMultiplier="0.9" + android:singleLine="true" + android:textColor="@color/text_3a3a3a" + android:textSize="15sp" /> + android:id="@+id/select_game_rl" + android:layout_width="match_parent" + android:layout_height="28dp"> + android:id="@+id/select_game_des" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="5dp" + android:layout_marginTop="10dp" + android:ellipsize="end" + android:includeFontPadding="false" + android:lineSpacingMultiplier="0.9" + android:singleLine="true" + android:textColor="@color/text_3a3a3a" + android:textSize="11sp" /> + android:id="@+id/select_game_ll_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="2.5dp" + android:layout_marginTop="3dp" + android:orientation="horizontal" + android:visibility="gone"> + android:id="@+id/select_download_speed" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="4" + android:ellipsize="end" + android:singleLine="true" + android:text="等待中" + android:textColor="@color/title" + android:textSize="9sp" /> + android:id="@+id/download_percentage" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:ellipsize="end" + android:gravity="right" + android:singleLine="true" + android:text="0.0%" + android:textColor="@color/content" + android:textSize="9sp" /> - + + android:id="@+id/select_game_progressbar" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="3dp" + android:layout_below="@+id/select_game_ll_info" + android:layout_marginBottom="4dp" + android:max="1000" + android:progressDrawable="@drawable/progressbar_bg_style" + android:visibility="gone" /> - + + android:id="@+id/select_game_size" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="fill_vertical" + android:orientation="horizontal" + android:textColor="@color/text_3a3a3a" + android:textSize="12sp"> - + - + + android:id="@+id/select_game_cb_rl" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="center" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:visibility="gone"> + android:id="@+id/select_game_btn" + style="@style/KcCheckboxStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> - + + android:id="@+id/select_status_btn" + android:layout_width="60dp" + android:layout_height="28.5dp" + android:layout_marginRight="8dp" + android:background="@drawable/kuaichuan_cancel_bg" + android:gravity="center" + android:text="取消" + android:textColor="@color/content" + android:textSize="13sp" + android:visibility="gone" /> + android:id="@+id/send_over_icon" + android:layout_width="60dp" + android:layout_height="15dp" + android:layout_marginRight="8dp" + android:src="@drawable/kc_send_over_icon" + android:visibility="gone" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_article_item_video.xml b/app/src/main/res/layout/layout_article_item_video.xml index 37452bf0f1..0fb7347a94 100644 --- a/app/src/main/res/layout/layout_article_item_video.xml +++ b/app/src/main/res/layout/layout_article_item_video.xml @@ -92,7 +92,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="2dp" android:layout_alignParentBottom="true" - layout="@layout/piece_article_video_control"/> + layout="@layout/piece_article_video_control" /> + tools:text="MOD单机" /> + android:text="全部类别" /> - \ No newline at end of file + tools:text="全部全部全部啊啊啊啊啊"> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_full_screen_detail_video_portrait.xml b/app/src/main/res/layout/layout_full_screen_detail_video_portrait.xml index 98b6fb500f..2e1bbfad3b 100644 --- a/app/src/main/res/layout/layout_full_screen_detail_video_portrait.xml +++ b/app/src/main/res/layout/layout_full_screen_detail_video_portrait.xml @@ -31,7 +31,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - layout="@layout/piece_video_control"/> + layout="@layout/piece_video_control" /> + layout="@layout/piece_video_replay" /> + android:scaleType="fitCenter"> + layout="@layout/piece_video_control" /> - + - + + android:id="@+id/followBtn" + android:layout_width="48dp" + android:layout_height="24dp" + android:layout_centerInParent="true" + android:gravity="center" + android:textColor="@color/theme_font" + android:textSize="12sp" + android:text="关注" /> - + diff --git a/app/src/main/res/layout/layout_menu_article_publish.xml b/app/src/main/res/layout/layout_menu_article_publish.xml index 5db88d77d2..c46df88bad 100644 --- a/app/src/main/res/layout/layout_menu_article_publish.xml +++ b/app/src/main/res/layout/layout_menu_article_publish.xml @@ -1,17 +1,17 @@ - + + android:id="@+id/menu_answer_post" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center" + android:paddingRight="20dp" + android:text="发文章" + android:textColor="@color/theme_font" + android:textSize="13sp" /> - + diff --git a/app/src/main/res/layout/layout_menu_button.xml b/app/src/main/res/layout/layout_menu_button.xml index f1c228af1d..6d2b8c6d9e 100644 --- a/app/src/main/res/layout/layout_menu_button.xml +++ b/app/src/main/res/layout/layout_menu_button.xml @@ -1,17 +1,17 @@ - + + android:textColor="@color/title" /> - + diff --git a/app/src/main/res/layout/layout_menu_game_comment.xml b/app/src/main/res/layout/layout_menu_game_comment.xml index 103e9dfc5a..a8cc32dd95 100644 --- a/app/src/main/res/layout/layout_menu_game_comment.xml +++ b/app/src/main/res/layout/layout_menu_game_comment.xml @@ -1,17 +1,17 @@ - + + android:id="@+id/menu_answer_post" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center" + android:paddingRight="20dp" + android:text="提交" + android:textColor="@color/theme_font" + android:textSize="13sp" /> - + diff --git a/app/src/main/res/layout/layout_menu_inset.xml b/app/src/main/res/layout/layout_menu_inset.xml index 449f0d262f..d71bbe64e8 100644 --- a/app/src/main/res/layout/layout_menu_inset.xml +++ b/app/src/main/res/layout/layout_menu_inset.xml @@ -1,4 +1,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_menu_moderator.xml b/app/src/main/res/layout/layout_menu_moderator.xml index 53d60f0f83..2c00329d41 100644 --- a/app/src/main/res/layout/layout_menu_moderator.xml +++ b/app/src/main/res/layout/layout_menu_moderator.xml @@ -1,17 +1,17 @@ - + + android:id="@+id/menu_statement" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center" + android:paddingRight="20dp" + android:text="版规声明" + android:textColor="@color/theme_font" + android:textSize="14sp" /> - + diff --git a/app/src/main/res/layout/layout_menu_positive.xml b/app/src/main/res/layout/layout_menu_positive.xml index 51437be49b..b0b213235e 100644 --- a/app/src/main/res/layout/layout_menu_positive.xml +++ b/app/src/main/res/layout/layout_menu_positive.xml @@ -1,17 +1,17 @@ - + + android:textColor="@color/title" + android:textSize="14sp" + android:text="确定" /> - + diff --git a/app/src/main/res/layout/layout_menu_question_and_answer.xml b/app/src/main/res/layout/layout_menu_question_and_answer.xml index 8006cc0845..931cbd0806 100644 --- a/app/src/main/res/layout/layout_menu_question_and_answer.xml +++ b/app/src/main/res/layout/layout_menu_question_and_answer.xml @@ -1,19 +1,19 @@ - + + android:text="进入问答" /> - + diff --git a/app/src/main/res/layout/layout_popup_option_item.xml b/app/src/main/res/layout/layout_popup_option_item.xml index 8ceb11d611..3dab72715d 100644 --- a/app/src/main/res/layout/layout_popup_option_item.xml +++ b/app/src/main/res/layout/layout_popup_option_item.xml @@ -1,13 +1,13 @@ - \ No newline at end of file + android:gravity="center" + android:orientation="vertical" + android:text="修改" + android:textColor="@color/text_subtitle" + android:textSize="12sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sub_category.xml b/app/src/main/res/layout/layout_sub_category.xml index 32186b9f62..18605e0ec5 100644 --- a/app/src/main/res/layout/layout_sub_category.xml +++ b/app/src/main/res/layout/layout_sub_category.xml @@ -23,7 +23,7 @@ android:layout_height="15dp" android:background="#ededed" android:visibility="gone" - tools:visibility="visible"/> + tools:visibility="visible" /> + tools:visibility="visible" /> + style="@style/android:Widget.Holo.ProgressBar" /> + - + + android:text="@string/string_description" /> + android:text="@string/libao_copy" + android:textColor="@color/theme_font" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/new_comment_item.xml b/app/src/main/res/layout/new_comment_item.xml index 33ac1ff602..18970041db 100644 --- a/app/src/main/res/layout/new_comment_item.xml +++ b/app/src/main/res/layout/new_comment_item.xml @@ -32,7 +32,7 @@ android:layout_width="10dp" android:layout_height="10dp" android:layout_alignParentRight="true" - android:layout_alignParentBottom="true"/> + android:layout_alignParentBottom="true" /> + android:background="@color/divider" /> diff --git a/app/src/main/res/layout/news_detail_comment.xml b/app/src/main/res/layout/news_detail_comment.xml index 1fa3f41014..761c1d5964 100644 --- a/app/src/main/res/layout/news_detail_comment.xml +++ b/app/src/main/res/layout/news_detail_comment.xml @@ -1,37 +1,37 @@ - + + android:id="@+id/newsdetail_comment_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_marginBottom="12dp" + android:paddingLeft="18dp" + android:paddingRight="18dp" + android:paddingTop="12dp" + android:textStyle="bold" + android:textColor="@color/text_3a3a3a" + android:textSize="15sp" /> + android:id="@+id/newsdetail_comment_line" + android:layout_width="match_parent" + android:layout_height="@dimen/cutting_line" + android:background="@color/cutting_line" + android:visibility="gone" /> + android:id="@+id/newsdetail_comment_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/news_detail_skeleton.xml b/app/src/main/res/layout/news_detail_skeleton.xml index e3ee75982a..471e7540e6 100644 --- a/app/src/main/res/layout/news_detail_skeleton.xml +++ b/app/src/main/res/layout/news_detail_skeleton.xml @@ -1,6 +1,5 @@ - + android:background="@color/background" /> + android:background="@color/background" /> + android:layout_marginTop="60dp" /> + android:layout_marginTop="15dp" /> + android:layout_marginTop="15dp" /> + android:background="@color/background" /> + android:layout_marginTop="60dp" /> + android:layout_marginTop="15dp" /> + android:layout_marginTop="15dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/news_footer_item.xml b/app/src/main/res/layout/news_footer_item.xml index 2152444752..97f75f117a 100644 --- a/app/src/main/res/layout/news_footer_item.xml +++ b/app/src/main/res/layout/news_footer_item.xml @@ -1,26 +1,26 @@ - + + android:id="@+id/news_footer_loading" + style="@style/android:Widget.Holo.ProgressBar" + android:layout_width="25dp" + android:layout_height="25dp" + android:layout_margin="5dp" /> + android:id="@+id/news_footer_hint" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:text="@string/loading" + android:textColor="@color/content" + android:textSize="14sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/news_image1_item.xml b/app/src/main/res/layout/news_image1_item.xml index e448d70aec..b9b9a0532e 100644 --- a/app/src/main/res/layout/news_image1_item.xml +++ b/app/src/main/res/layout/news_image1_item.xml @@ -26,7 +26,7 @@ style="@style/frescoStyle" android:layout_width="80dp" android:layout_height="60dp" - app:roundedCornerRadius="8dp"/> + app:roundedCornerRadius="8dp" /> + app:roundedCornerRadius="8dp" /> + app:roundedCornerRadius="8dp" /> + app:roundedCornerRadius="8dp" /> diff --git a/app/src/main/res/layout/newsdetail_item_comment.xml b/app/src/main/res/layout/newsdetail_item_comment.xml index 8f7411a916..175e71f32c 100644 --- a/app/src/main/res/layout/newsdetail_item_comment.xml +++ b/app/src/main/res/layout/newsdetail_item_comment.xml @@ -1,19 +1,19 @@ - + - \ No newline at end of file + android:id="@+id/newsdetail_item_comment" + android:layout_width="120dp" + android:layout_height="35dp" + android:layout_marginBottom="12dp" + android:layout_marginTop="20dp" + android:background="@drawable/comment_border_bg" + android:gravity="center" + android:text="管理我的关注" + android:textColor="@color/theme_font" + android:textSize="16sp" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/newsdetail_item_content.xml b/app/src/main/res/layout/newsdetail_item_content.xml index 9fc953447f..5dfcd4a44b 100644 --- a/app/src/main/res/layout/newsdetail_item_content.xml +++ b/app/src/main/res/layout/newsdetail_item_content.xml @@ -1,55 +1,55 @@ - + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingBottom="10dp" + android:paddingLeft="15dp" + android:paddingRight="15dp" + android:paddingTop="15dp"> + android:id="@+id/newsdetail_item_tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:ellipsize="end" + android:maxLines="2" + android:textColor="@color/black" + android:textSize="20sp" + android:textStyle="bold" /> + android:id="@+id/newsdetail_item_tv_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/newsdetail_item_tv_title" + android:textColor="@color/hint" + android:textSize="12sp" /> + android:id="@+id/newsdetail_item_tv_author" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/newsdetail_item_tv_title" + android:layout_marginLeft="10dp" + android:layout_toRightOf="@id/newsdetail_item_tv_time" + android:textColor="@color/hint" + android:textSize="12sp" /> - + + android:id="@+id/newsdetail_item_wv_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:scrollbars="none" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/newsdetail_item_game.xml b/app/src/main/res/layout/newsdetail_item_game.xml index 230394be26..c4bf3cef00 100644 --- a/app/src/main/res/layout/newsdetail_item_game.xml +++ b/app/src/main/res/layout/newsdetail_item_game.xml @@ -1,87 +1,87 @@ - + + android:layout_width="54dp" + android:layout_height="58dp" + android:layout_marginLeft="10dp" + android:layout_marginRight="8dp"> + android:id="@+id/game_iv_thumb" + android:layout_width="50dp" + android:layout_height="50dp" + android:layout_centerVertical="true" /> - + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginRight="16dp" + android:layout_weight="1" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/game_tv_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:includeFontPadding="false" + android:lineSpacingMultiplier="1.2" + android:textColor="@color/black" + android:textSize="13sp" + android:textStyle="bold" /> - + android:id="@+id/game_server_type" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignBottom="@id/game_tv_name" + android:layout_centerVertical="true" + android:layout_marginBottom="2dp" + android:maxLines="1" + android:paddingLeft="3dp" + android:paddingRight="3dp" + android:paddingBottom="0.5dp" + android:textColor="@color/white" + android:textSize="9sp" + android:visibility="gone" /> + + android:id="@+id/game_tv_info" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:textColor="@color/hint" + android:textSize="11sp" /> - + + android:id="@+id/game_tv_concern" + android:layout_width="57dp" + android:layout_height="28dp" + android:background="@drawable/textview_blue_style" + android:gravity="center" + android:text="@string/game_detail_concern" + android:textColor="@color/white" + android:textSize="13sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/piece_article_input_container.xml b/app/src/main/res/layout/piece_article_input_container.xml index 80e0ff4c78..e2c3131a75 100644 --- a/app/src/main/res/layout/piece_article_input_container.xml +++ b/app/src/main/res/layout/piece_article_input_container.xml @@ -18,7 +18,7 @@ android:background="@color/divider" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintLeft_toLeftOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/piece_game_detail_video.xml b/app/src/main/res/layout/piece_game_detail_video.xml index a14a638ecd..c366e43aa7 100644 --- a/app/src/main/res/layout/piece_game_detail_video.xml +++ b/app/src/main/res/layout/piece_game_detail_video.xml @@ -25,6 +25,7 @@ + + app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/piece_setting_divider.xml b/app/src/main/res/layout/piece_setting_divider.xml index 45ce215a32..f7b57a463b 100644 --- a/app/src/main/res/layout/piece_setting_divider.xml +++ b/app/src/main/res/layout/piece_setting_divider.xml @@ -1,6 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/rank_collection_list.xml b/app/src/main/res/layout/rank_collection_list.xml index 5650aad089..a2e935f843 100644 --- a/app/src/main/res/layout/rank_collection_list.xml +++ b/app/src/main/res/layout/rank_collection_list.xml @@ -1,6 +1,5 @@ - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/simulator_header_view.xml b/app/src/main/res/layout/simulator_header_view.xml index 6608f71ddf..43d053d37f 100644 --- a/app/src/main/res/layout/simulator_header_view.xml +++ b/app/src/main/res/layout/simulator_header_view.xml @@ -1,6 +1,5 @@ - - + android:background="@color/divider" /> \ No newline at end of file diff --git a/app/src/main/res/layout/toolbar_shadow.xml b/app/src/main/res/layout/toolbar_shadow.xml index bdbbb34e36..d62cabb0e4 100644 --- a/app/src/main/res/layout/toolbar_shadow.xml +++ b/app/src/main/res/layout/toolbar_shadow.xml @@ -1,25 +1,29 @@ - + + - + android:background="@color/background_white" /> + + + + android:id="@+id/normal_content" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@+id/toolbar_container" /> \ No newline at end of file diff --git a/app/src/main/res/layout/toolbox_item.xml b/app/src/main/res/layout/toolbox_item.xml index 325abb35e7..1c356586cc 100644 --- a/app/src/main/res/layout/toolbox_item.xml +++ b/app/src/main/res/layout/toolbox_item.xml @@ -1,48 +1,48 @@ - + + android:id="@+id/toolbox_item_game_thumb" + style="@style/frescoStyle" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_centerVertical="true" + android:layout_marginRight="10dp" + fresco:roundedCornerRadius="10dp" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_toRightOf="@+id/toolbox_item_game_thumb"> + android:textStyle="bold" /> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/voting_top_item.xml b/app/src/main/res/layout/voting_top_item.xml index 2c53e95ea4..721017f15b 100644 --- a/app/src/main/res/layout/voting_top_item.xml +++ b/app/src/main/res/layout/voting_top_item.xml @@ -1,24 +1,24 @@ - + + android:id="@+id/voting_top_btn" + android:layout_width="90dp" + android:layout_height="30dp" + android:layout_marginTop="20dp" + android:layout_marginBottom="20dp" + android:background="@drawable/ask_voting_button_border" + android:gravity="center" + android:text="我要投票" + android:textColor="@color/theme_font" + android:textSize="12sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_answer_post.xml b/app/src/main/res/menu/menu_answer_post.xml index bf5a8a317b..4494be775b 100644 --- a/app/src/main/res/menu/menu_answer_post.xml +++ b/app/src/main/res/menu/menu_answer_post.xml @@ -1,6 +1,6 @@ - + + android:id="@+id/menu_answer_post" + android:title="@string/answer_post" + app:actionLayout="@layout/layout_menu_answer_post" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_article_publich.xml b/app/src/main/res/menu/menu_article_publich.xml index bdb87f074a..8a2332210c 100644 --- a/app/src/main/res/menu/menu_article_publich.xml +++ b/app/src/main/res/menu/menu_article_publich.xml @@ -1,11 +1,11 @@ - + + android:id="@+id/menu_article_publish" + android:title="发文章" + app:actionLayout="@layout/layout_menu_article_publish" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_game_collection_edit.xml b/app/src/main/res/menu/menu_game_collection_edit.xml index 60dbd3b86e..da6eeaed0b 100644 --- a/app/src/main/res/menu/menu_game_collection_edit.xml +++ b/app/src/main/res/menu/menu_game_collection_edit.xml @@ -1,11 +1,11 @@ - + + android:id="@+id/menu_game_collection_post" + android:title="提交" + app:actionLayout="@layout/layout_menu_game_collection_post" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_game_comment.xml b/app/src/main/res/menu/menu_game_comment.xml index d92ff3e8af..8a71051705 100644 --- a/app/src/main/res/menu/menu_game_comment.xml +++ b/app/src/main/res/menu/menu_game_comment.xml @@ -1,11 +1,11 @@ - + + android:id="@+id/menu_game_comment" + android:title="提交" + app:actionLayout="@layout/layout_menu_game_comment" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_moderator.xml b/app/src/main/res/menu/menu_moderator.xml index fe42ff5ef3..c5c04d0090 100644 --- a/app/src/main/res/menu/menu_moderator.xml +++ b/app/src/main/res/menu/menu_moderator.xml @@ -2,8 +2,8 @@ + android:id="@+id/menu_moderator_statement" + android:title="提交" + app:actionLayout="@layout/layout_menu_moderator" + app:showAsAction="always" /> \ No newline at end of file diff --git a/app/src/main/res/menu/menu_my_game.xml b/app/src/main/res/menu/menu_my_game.xml index 068cc30ff4..ac981b557d 100644 --- a/app/src/main/res/menu/menu_my_game.xml +++ b/app/src/main/res/menu/menu_my_game.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_my_game_collection.xml b/app/src/main/res/menu/menu_my_game_collection.xml index cf96d0c461..1ee099872a 100644 --- a/app/src/main/res/menu/menu_my_game_collection.xml +++ b/app/src/main/res/menu/menu_my_game_collection.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_positive.xml b/app/src/main/res/menu/menu_positive.xml index 65eb9ae281..3d091f9479 100644 --- a/app/src/main/res/menu/menu_positive.xml +++ b/app/src/main/res/menu/menu_positive.xml @@ -1,11 +1,11 @@ - + + android:id="@+id/layout_menu_positive" + android:title="提交" + app:actionLayout="@layout/layout_menu_positive" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_post.xml b/app/src/main/res/menu/menu_post.xml index 151719a0df..5e418aad29 100644 --- a/app/src/main/res/menu/menu_post.xml +++ b/app/src/main/res/menu/menu_post.xml @@ -1,11 +1,11 @@ - + + android:id="@+id/menu_post" + android:title="@string/answer_post" + app:actionLayout="@layout/layout_menu_post" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_question_invite.xml b/app/src/main/res/menu/menu_question_invite.xml index 7b5f44714a..436954abc1 100644 --- a/app/src/main/res/menu/menu_question_invite.xml +++ b/app/src/main/res/menu/menu_question_invite.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_question_post.xml b/app/src/main/res/menu/menu_question_post.xml index fb502eab2e..94c7639d7a 100644 --- a/app/src/main/res/menu/menu_question_post.xml +++ b/app/src/main/res/menu/menu_question_post.xml @@ -1,15 +1,15 @@ - + + android:id="@+id/menu_question_post" + android:title="提交" + app:actionLayout="@layout/layout_menu_question_post" + app:showAsAction="always" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_simulator_manager.xml b/app/src/main/res/menu/menu_simulator_manager.xml index b9a3f30b01..2f3b67527a 100644 --- a/app/src/main/res/menu/menu_simulator_manager.xml +++ b/app/src/main/res/menu/menu_simulator_manager.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_simulator_uninstall.xml b/app/src/main/res/menu/menu_simulator_uninstall.xml index 0caafbcd5a..f5be50ab7d 100644 --- a/app/src/main/res/menu/menu_simulator_uninstall.xml +++ b/app/src/main/res/menu/menu_simulator_uninstall.xml @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 134b699a7a..78554f9ebb 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -2,5 +2,4 @@ - \ No newline at end of file diff --git a/app/src/main/res/values-v26/style.xml b/app/src/main/res/values-v26/style.xml index 2ef10712de..c7bf75e0db 100644 --- a/app/src/main/res/values-v26/style.xml +++ b/app/src/main/res/values-v26/style.xml @@ -1,5 +1,6 @@ + - @@ -145,7 +144,6 @@ - + +