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 b22f381f69..354b7ca21b 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -32,6 +32,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; import com.facebook.drawee.generic.GenericDraweeHierarchy; @@ -40,12 +41,17 @@ import com.gh.common.constant.Config; import com.gh.common.dialog.TrackableDialog; import com.gh.common.view.DrawableView; import com.gh.common.view.FixLinearLayoutManager; +import com.gh.common.view.LimitHeightLinearLayout; import com.gh.gamecenter.AboutActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.PrivacyPolicyItemViewHolder; +import com.gh.gamecenter.databinding.ImprintContentItemBinding; import com.gh.gamecenter.databinding.PrivacyItemBinding; +import com.gh.gamecenter.entity.ApkEntity; +import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.PrivacyPolicyEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.entity.TrackableEntity; import com.halo.assistant.HaloApp; import com.halo.assistant.fragment.SettingsFragment; @@ -53,6 +59,7 @@ import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.utils.AppManager; import com.lightgame.utils.Utils; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -1237,7 +1244,7 @@ public class DialogUtils { contentTv.setText(content); cancelTv.setOnClickListener(v -> dialog.dismiss()); - continueTv.setOnClickListener(v ->{ + continueTv.setOnClickListener(v -> { listener.onConfirm(); dialog.dismiss(); }); @@ -1252,6 +1259,52 @@ public class DialogUtils { dialog.show(); } + public static void showImprintDialog(Context context, GameEntity gameEntity, String titleName) { + context = checkDialogContext(context); + Dialog dialog = new Dialog(context, R.style.full_dialog); + View inflate = LayoutInflater.from(context).inflate(R.layout.imprint_dialog, null); + dialog.setContentView(inflate); + dialog.show(); + + Window window = dialog.getWindow(); + WindowManager.LayoutParams params; + if (window != null) { + params = window.getAttributes(); + params.width = (int) (context.getResources().getDisplayMetrics().widthPixels * 0.9); + window.setAttributes(params); + window.setBackgroundDrawableResource(R.drawable.full_dialog_background); + } + + inflate.findViewById(R.id.imprint_close).setOnClickListener(v -> dialog.dismiss()); + LinearLayout content = inflate.findViewById(R.id.imprint_content); + ((TextView) inflate.findViewById(R.id.imprint_title)).setText(titleName); + View head = LayoutInflater.from(context).inflate(R.layout.imprint_content_item, null); + content.addView(head, LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(30)); + LimitHeightLinearLayout imprintContainer = inflate.findViewById(R.id.imprint_container); + imprintContainer.setLimitHeight((int) (context.getResources().getDisplayMetrics().heightPixels * 0.8)); + + ArrayList list = gameEntity.getApk(); + SettingsEntity settings = Config.getSettings(); + for (int i = 0; i < list.size(); i++) { + ApkEntity apk = gameEntity.getApk().get(i); + if (settings != null && settings.getGameDownloadBlackList().contains(apk.getPackageName())) { + continue; + } + View item = LayoutInflater.from(context).inflate(R.layout.imprint_content_item, null); + ImprintContentItemBinding bind = DataBindingUtil.bind(item); + bind.setApk(apk); + bind.setPlatformName(PlatformUtils.getInstance(context).getPlatformName(apk.getPlatform())); + content.addView(item, LinearLayout.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(40)); + } + + + // close line + View view = new View(context); + view.setBackgroundColor(context.getResources().getColor(R.color.text_5d5d5d)); + view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(1))); + content.addView(view); + } + /** * @param context may be is application context * @return activity context diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index 7969e1325d..633e56b806 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -1,28 +1,25 @@ package com.gh.common.view; -import android.app.Dialog; import android.content.Context; -import androidx.databinding.DataBindingUtil; + import androidx.annotation.Nullable; import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager.OnPageChangeListener; + import android.text.TextUtils; import android.view.Gravity; import android.view.KeyEvent; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.PopupWindow; import android.widget.TextView; -import com.gh.common.constant.Config; import com.gh.common.exposure.ExposureEvent; import com.gh.common.util.ClickUtils; +import com.gh.common.util.DialogUtils; import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.PackageUtils; @@ -179,7 +176,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { dialogAdMirror.setText(downloadAd.getTitle()); dialogAd.setOnClickListener(v -> { if ("imprint".equals(downloadAd.getType())) { - showImprintDialog(downloadAd.getTitle()); + DialogUtils.showImprintDialog(mContext, gameEntity, downloadAd.getTitle()); } else { DirectUtils.directToLinkPage( mContext, @@ -230,51 +227,6 @@ public class DownloadDialog implements OnCollectionCallBackListener { DownloadManager.getInstance(mContext).addObserver(dataWatcher); } - private void showImprintDialog(String titleName) { - Dialog dialog = new Dialog(mContext, R.style.full_dialog); - View inflate = LayoutInflater.from(mContext).inflate(R.layout.imprint_dialog, null); - dialog.setContentView(inflate); - dialog.show(); - - Window window = dialog.getWindow(); - WindowManager.LayoutParams params; - if (window != null) { - params = window.getAttributes(); - params.width = (int) (mContext.getResources().getDisplayMetrics().widthPixels * 0.9); - window.setAttributes(params); - window.setBackgroundDrawableResource(R.drawable.full_dialog_background); - } - - inflate.findViewById(R.id.imprint_close).setOnClickListener(v -> dialog.dismiss()); - LinearLayout content = inflate.findViewById(R.id.imprint_content); - ((TextView) inflate.findViewById(R.id.imprint_title)).setText(titleName); - View head = LayoutInflater.from(mContext).inflate(R.layout.imprint_content_item, null); - content.addView(head, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(30)); - LimitHeightLinearLayout imprintContainer = inflate.findViewById(R.id.imprint_container); - imprintContainer.setLimitHeight((int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.8)); - - ArrayList list = gameEntity.getApk(); - SettingsEntity settings = Config.getSettings(); - for (int i = 0; i < list.size(); i++) { - ApkEntity apk = gameEntity.getApk().get(i); - if (settings != null && settings.getGameDownloadBlackList().contains(apk.getPackageName())) { - continue; - } - View item = LayoutInflater.from(mContext).inflate(R.layout.imprint_content_item, null); - ImprintContentItemBinding bind = DataBindingUtil.bind(item); - bind.setApk(apk); - bind.setPlatformName(PlatformUtils.getInstance(mContext).getPlatformName(apk.getPlatform())); - content.addView(item, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(40)); - } - - - // close line - View view = new View(mContext); - view.setBackgroundColor(mContext.getResources().getColor(R.color.text_5d5d5d)); - view.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(1))); - content.addView(view); - } - private void sortApk() { for (ApkEntity apkEntity : gameApk) { GameCollectionEntity apkCollection = apkEntity.getApkCollection(); diff --git a/app/src/main/java/com/gh/download/DownloadDialog.kt b/app/src/main/java/com/gh/download/DownloadDialog.kt deleted file mode 100644 index 52bcd6d5d5..0000000000 --- a/app/src/main/java/com/gh/download/DownloadDialog.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.gh.download - -import android.app.Dialog -import android.content.Context -import android.os.Bundle -import android.view.Gravity -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.databinding.DataBindingUtil -import androidx.fragment.app.FragmentActivity -import com.gh.base.fragment.BaseDialogFragment -import com.gh.gamecenter.BuildConfig -import com.gh.gamecenter.R -import com.gh.gamecenter.databinding.DialogDownloadBinding -import com.lightgame.utils.AppManager - -class DownloadDialog : BaseDialogFragment() { - - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val createDialog = super.onCreateDialog(savedInstanceState) - createDialog.setCanceledOnTouchOutside(true) - - val window = createDialog.window - window?.setGravity(Gravity.BOTTOM) - window?.setWindowAnimations(R.style.community_publication_animation) -// window?.setLayout(HaloApp.getInstance().application.resources.displayMetrics.widthPixels, ViewGroup.LayoutParams.WRAP_CONTENT) - return createDialog - } - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val binding: DialogDownloadBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_download, container, false) - - - return binding.root - } - - - companion object { - - @JvmStatic - fun showDownloadDialog(context: Context?) { - val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { - context - } else if (BuildConfig.DEBUG) { - throw IllegalStateException("DownloadDialog context must be FragmentActivity") - } else { - val currentActivity = AppManager.getInstance().currentActivity() - if (currentActivity is FragmentActivity) { - currentActivity - } else { - throw IllegalStateException("current activity context must be FragmentActivity") - } - } - - val downloadDialog = DownloadDialog() - downloadDialog.show(fragmentActivity.supportFragmentManager, DownloadDialog::class.java.name) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt new file mode 100644 index 0000000000..c4d8826a09 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialog.kt @@ -0,0 +1,173 @@ +package com.gh.download.dialog + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.gh.base.fragment.BaseDialogFragment +import com.gh.common.util.DialogUtils +import com.gh.common.util.DirectUtils +import com.gh.download.DownloadManager +import com.gh.gamecenter.BuildConfig +import com.gh.gamecenter.R +import com.gh.gamecenter.databinding.DialogDownloadBinding +import com.lightgame.utils.AppManager +import com.gh.gamecenter.entity.GameEntity +import com.halo.assistant.HaloApp +import com.lightgame.download.DataWatcher +import com.lightgame.download.DownloadEntity +import com.lightgame.download.DownloadStatus +import com.lightgame.utils.Utils + + +class DownloadDialog : BaseDialogFragment() { + + private lateinit var mGameEntity: GameEntity + private lateinit var mViewModel: DownloadViewModel + private lateinit var mBinding: DialogDownloadBinding + + private var mEntrance: String = "" + + private val mDataWatcher = object : DataWatcher() { + override fun onDataChanged(downloadEntity: DownloadEntity) { + if (downloadEntity.gameId == mGameEntity.id && + DownloadStatus.delete != DownloadManager.getInstance(requireContext()).getStatus(downloadEntity.url)) { + } + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val createDialog = super.onCreateDialog(savedInstanceState) + createDialog.setCanceledOnTouchOutside(true) + + val window = createDialog.window + window?.setGravity(Gravity.BOTTOM) + window?.setWindowAnimations(R.style.community_publication_animation) + return createDialog + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mViewModel = ViewModelProviders.of(this).get(DownloadViewModel::class.java) + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_download, container, false) + val downloadNotice = mGameEntity.downloadAd + if (downloadNotice != null) { + mBinding.downloadNotice.visibility = View.VISIBLE + mBinding.downloadNotice.text = downloadNotice.title + mBinding.downloadNotice.setOnClickListener { + if ("imprint" == downloadNotice.type) { + DialogUtils.showImprintDialog(requireContext(), mGameEntity, downloadNotice.title) + } else { + DirectUtils.directToLinkPage( + requireContext(), + downloadNotice, + mEntrance, "下载多平台弹窗") + } + } + } + + // todo test + val apks = mGameEntity.getApk() + val itemList: MutableList = ArrayList() + apks.forEachIndexed { index, apkEntity -> + if (index == 0) { + val itemLink = DownloadDialogItemData() + itemLink.link = GameEntity.PluginLink() + itemList.add(itemLink) + val itemSection = DownloadDialogItemData() + itemSection.section = "" + itemList.add(itemSection) + } + + if (index == 5) { + val itemSection = DownloadDialogItemData() + itemSection.section = "" + itemList.add(itemSection) + } + + if (index < 5) { + val itemInstalled = DownloadDialogItemData() + itemInstalled.installed = apkEntity + itemList.add(itemInstalled) + } else { + val itemInstalled = DownloadDialogItemData() + itemInstalled.normal = apkEntity + itemList.add(itemInstalled) + } + } + mBinding.contentList.layoutManager = createLayoutManager(itemList) + mBinding.contentList.adapter = DownloadDialogAdapter(requireContext(), itemList) + return mBinding.root + } + + + fun showCollectionPage() { + // todo 切换动画 + + } + + private fun createLayoutManager(listData: List): RecyclerView.LayoutManager { + val layoutManager = GridLayoutManager(requireContext(), 2) + layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { + override fun getSpanSize(position: Int): Int { + // todo WTF + val i = if (listData[position].normal == null) 2 else 1 + Utils.log("DownloadDialog: createLayoutManager, SpanSize->" + i + " ,position->" + position) + return i + } + } + return layoutManager + } + + + override fun onResume() { + super.onResume() + DownloadManager.getInstance(requireContext()).addObserver(mDataWatcher) + } + + + override fun onPause() { + super.onPause() + DownloadManager.getInstance(requireContext()).removeObserver(mDataWatcher) + } + + override fun onStart() { + super.onStart() + val width = HaloApp.getInstance().application.resources.displayMetrics.widthPixels + val height = dialog?.window?.attributes?.height ?: ViewGroup.LayoutParams.WRAP_CONTENT + dialog?.window?.setLayout(width, height) + } + + companion object { + + @JvmStatic + fun showDownloadDialog(context: Context?, gameEntity: GameEntity) { + val fragmentActivity: FragmentActivity = if (context is FragmentActivity) { + context + } else if (BuildConfig.DEBUG) { + throw IllegalStateException("DownloadDialog context must be FragmentActivity") + } else { + val currentActivity = AppManager.getInstance().currentActivity() + if (currentActivity is FragmentActivity) { + currentActivity + } else { + throw IllegalStateException("current activity context must be FragmentActivity") + } + } + + val downloadDialog = DownloadDialog().apply { mGameEntity = gameEntity } + downloadDialog.show(fragmentActivity.supportFragmentManager, DownloadDialog::class.java.name) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt new file mode 100644 index 0000000000..c4576c0665 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogAdapter.kt @@ -0,0 +1,61 @@ +package com.gh.download.dialog + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.gh.gamecenter.R +import com.gh.gamecenter.databinding.DownloadDialogInstalledItemBinding +import com.gh.gamecenter.databinding.DownloadDialogItemBinding +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding +import com.gh.gamecenter.databinding.DownloadDialogSectionItemBinding +import com.lightgame.adapter.BaseRecyclerAdapter + +class DownloadDialogAdapter(context: Context, + private val mListData: MutableList) : BaseRecyclerAdapter(context) { + + override fun getItemViewType(position: Int): Int { + val itemData = mListData[position] + if (itemData.link != null) return ITEM_LINK + if (itemData.section != null) return ITEM_SECTION + if (itemData.installed != null) return ITEM_INSTALLED + return ITEM_NORMAL + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view: View + return when (viewType) { + ITEM_LINK -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_link_item, parent, false) + DownloadDialogLinkItemViewHolder(DownloadDialogLinkItemBinding.bind(view)) + } + ITEM_SECTION -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_section_item, parent, false) + DownloadDialogSectionItemViewHolder(DownloadDialogSectionItemBinding.bind(view)) + } + ITEM_INSTALLED -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_installed_item, parent, false) + DownloadDialogInstalledItemViewHolder(DownloadDialogInstalledItemBinding.bind(view)) + } + else -> { + view = mLayoutInflater.inflate(R.layout.download_dialog_item, parent, false) + DownloadDialogItemViewHolder(DownloadDialogItemBinding.bind(view)) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + + } + + override fun getItemCount(): Int { + return mListData.size + } + + companion object { + private const val ITEM_LINK = 200 + private const val ITEM_SECTION = 201 + private const val ITEM_INSTALLED = 202 + private const val ITEM_NORMAL = 203 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt new file mode 100644 index 0000000000..51aadb78fc --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogInstalledItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogInstalledItemBinding + +class DownloadDialogInstalledItemViewHolder(val binding: DownloadDialogInstalledItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt new file mode 100644 index 0000000000..f2a498f537 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemData.kt @@ -0,0 +1,9 @@ +package com.gh.download.dialog + +import com.gh.gamecenter.entity.ApkEntity +import com.gh.gamecenter.entity.GameEntity + +data class DownloadDialogItemData(var link: GameEntity.PluginLink? = null, + var section: String? = null, + var installed: ApkEntity? = null, + var normal: ApkEntity? = null) \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt new file mode 100644 index 0000000000..038c42ed02 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogItemBinding + +class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt new file mode 100644 index 0000000000..0a0b777454 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogLinkItemViewHolder.kt @@ -0,0 +1,8 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding + +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/DownloadDialogSectionItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt new file mode 100644 index 0000000000..268be73cd7 --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogSectionItemViewHolder.kt @@ -0,0 +1,9 @@ +package com.gh.download.dialog + +import com.gh.base.BaseRecyclerViewHolder +import com.gh.gamecenter.databinding.DownloadDialogLinkItemBinding +import com.gh.gamecenter.databinding.DownloadDialogSectionItemBinding + +class DownloadDialogSectionItemViewHolder(val binding: DownloadDialogSectionItemBinding) : BaseRecyclerViewHolder(binding.root) { + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt b/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt new file mode 100644 index 0000000000..5000b4b57e --- /dev/null +++ b/app/src/main/java/com/gh/download/dialog/DownloadViewModel.kt @@ -0,0 +1,11 @@ +package com.gh.download.dialog + +import android.app.Application +import androidx.lifecycle.AndroidViewModel + +/** + * 是否需要viewModel? + */ +class DownloadViewModel(application: Application) : AndroidViewModel(application) { + +} \ No newline at end of file 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 15f205a651..b8a6a41fea 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -171,7 +171,7 @@ class DownloadFragment : BaseFragment_TabLayout() { fun onEventMainThread(skip: EBSkip) { if (DownloadManagerActivity.TAG == skip.type) { if (view != null) { - view!!.postDelayed({ + requireView().postDelayed({ mViewPager.currentItem = skip.currentItem if (isAdded && skip.currentItem == DownloadManagerActivity.INDEX_DOWNLOAD) { val fragments = childFragmentManager.fragments 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 6ef16c0ad6..831336fdb6 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/ApkEntity.kt @@ -22,7 +22,12 @@ data class ApkEntity(@SerializedName("package") var force: Boolean = false, var apkLink: ApkLink? = null, var plugin: String? = "",/*控制是否显示插件化 默认:open,取值有:open/only_index/only_game/close*/ - var time: Long? = null) : Parcelable { + var time: Long? = null, + @SerializedName("platform_name") + val platformName: String = "", + val remark: String = "", + @SerializedName("platform_icon") + val platformIcon: String = "") : Parcelable { fun getPlatform(): String? { if (TextUtils.isEmpty(platform)) { return "官方版" 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 183da91d29..7284733868 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameCollectionEntity.kt @@ -12,8 +12,13 @@ data class GameCollectionEntity( @SerializedName("_id") var id: String? = "", var color: String? = null, - var icon: String? = null, + var icon: String? = null, // todo remove? var name: String? = null, @SerializedName("package") var `package`: List = ArrayList(), - var saveApkEntity: List? = null) : Parcelable + var saveApkEntity: List? = null, + val remark: String = "", + @SerializedName("new_icon") + val newIcon: String = "", + @SerializedName("download_instruction") + val downloadInstruction: String = "") : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt index d86537bcd3..00854ff91d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/GameEntity.kt @@ -165,7 +165,11 @@ data class GameEntity( @SerializedName("mutex_package") val mutexPackage: List? = null, @SerializedName("version_number") - val versionNumber: String = ""//有版号、无版号-有内购、无版号-无内购 + val versionNumber: String = "",// 有版号、无版号-有内购、无版号-无内购 + @SerializedName("plugin_link") + val pluginLink: PluginLink = PluginLink(), + @SerializedName("p_button_add_word") + val downloadDialogTitle: String = "" ) : Parcelable { @IgnoredOnParcel @@ -342,6 +346,16 @@ data class GameEntity( ) : Parcelable } + @Parcelize + data class PluginLink(@SerializedName("link_id") + var linkId: String = "", + var title: String = "", + @SerializedName("link_type") + var linkType: String = "", + @SerializedName("link_text") + var linkText: String = "", + var content: String = "") : Parcelable + companion object { const val TAG: String = "GameEntity" } diff --git a/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt index 7937b2a0ba..cc6a17c4ea 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PlatformEntity.kt @@ -9,10 +9,12 @@ class PlatformEntity { var name: String? = null - var pic: String? = null + var pic: String? = null // todo remove? var color: String? = null + var newPic: String = "" + override fun toString(): String { return "$code=$name=$pic=$color" } diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_back.png b/app/src/main/res/drawable-xxhdpi/download_dialog_back.png new file mode 100644 index 0000000000..dcf28ce57b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_back.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_collection.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_collection.png new file mode 100644 index 0000000000..4290dd16e3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_collection.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_download.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_download.png new file mode 100644 index 0000000000..bdbad42eaa Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_download.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png new file mode 100644 index 0000000000..ff91a0bbf4 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_launch.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png new file mode 100644 index 0000000000..4ce8f90d94 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pause.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png new file mode 100644 index 0000000000..3e9b80adb4 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_pluggable.png differ diff --git a/app/src/main/res/drawable-xxhdpi/download_dialog_status_update.png b/app/src/main/res/drawable-xxhdpi/download_dialog_status_update.png new file mode 100644 index 0000000000..53fc3054bb Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/download_dialog_status_update.png differ diff --git a/app/src/main/res/drawable/download_dialog_item_background.xml b/app/src/main/res/drawable/download_dialog_item_background.xml new file mode 100644 index 0000000000..1776c85f77 --- /dev/null +++ b/app/src/main/res/drawable/download_dialog_item_background.xml @@ -0,0 +1,8 @@ + + + + + + + + \ 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 new file mode 100644 index 0000000000..5a14b7ac19 --- /dev/null +++ b/app/src/main/res/drawable/download_dialog_item_progress.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/download_dialog_version_note.xml b/app/src/main/res/drawable/download_dialog_version_note.xml new file mode 100644 index 0000000000..5a6440f4f5 --- /dev/null +++ b/app/src/main/res/drawable/download_dialog_version_note.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_download.xml b/app/src/main/res/layout/dialog_download.xml index 06c051c17f..5de9a1f8a8 100644 --- a/app/src/main/res/layout/dialog_download.xml +++ b/app/src/main/res/layout/dialog_download.xml @@ -1,17 +1,75 @@ - + + android:background="@drawable/community_edit_window_bg" + android:paddingLeft="20dp" + android:paddingTop="14dp" + android:paddingRight="20dp"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_installed_item.xml b/app/src/main/res/layout/download_dialog_installed_item.xml new file mode 100644 index 0000000000..1ab1ed3234 --- /dev/null +++ b/app/src/main/res/layout/download_dialog_installed_item.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_item.xml b/app/src/main/res/layout/download_dialog_item.xml new file mode 100644 index 0000000000..9004ac120d --- /dev/null +++ b/app/src/main/res/layout/download_dialog_item.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_link_item.xml b/app/src/main/res/layout/download_dialog_link_item.xml new file mode 100644 index 0000000000..032e287260 --- /dev/null +++ b/app/src/main/res/layout/download_dialog_link_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/download_dialog_section_item.xml b/app/src/main/res/layout/download_dialog_section_item.xml new file mode 100644 index 0000000000..64016466bb --- /dev/null +++ b/app/src/main/res/layout/download_dialog_section_item.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/downloadmanager.xml b/app/src/main/res/layout/downloadmanager.xml index faaf658699..a629dd4adb 100644 --- a/app/src/main/res/layout/downloadmanager.xml +++ b/app/src/main/res/layout/downloadmanager.xml @@ -14,7 +14,8 @@ android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/white" - android:orientation="vertical"> + android:orientation="vertical" + android:visibility="gone"> #50556B #979A9F #242529 + #ebebeb \ No newline at end of file