diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index dfb65b8e0c..15b72643fd 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -260,11 +260,12 @@ public class DetailDownloadUtils { case neterror: case subscribe: case downloading: + case redirected: case pause: case overflow: String downloadingText = "游戏加载中 " + downloadEntity.getPercent() + "%"; String resumeText = "继续加载 " + downloadEntity.getPercent() + "%"; - viewHolder.mDownloadPb.setText(downloadEntity.getStatus() == DownloadStatus.downloading ? downloadingText : resumeText); + viewHolder.mDownloadPb.setText((downloadEntity.getStatus() == DownloadStatus.downloading || downloadEntity.getStatus() == DownloadStatus.redirected) ? downloadingText : resumeText); if (downloadEntity.isPluggable() && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { viewHolder.mDownloadPb.setButtonStyle(DownloadButton.ButtonStyle.DOWNLOADING_PLUGIN); } else { @@ -338,18 +339,19 @@ public class DetailDownloadUtils { private static void updateVStyleButton(DetailViewHolder viewHolder) { switch (viewHolder.downloadEntity.getStatus()) { + case redirected: case downloading: - case overflow: viewHolder.mDownloadPb.setText("游戏加载中 " + viewHolder.downloadEntity.getPercent() + "%"); viewHolder.mDownloadPb.setButtonStyle(DownloadButton.ButtonStyle.DOWNLOADING_NORMAL); break; - case timeout: - case neterror: case waiting: - case subscribe: viewHolder.mDownloadPb.setText(R.string.waiting); viewHolder.mDownloadPb.setButtonStyle(DownloadButton.ButtonStyle.DOWNLOADING_NORMAL); break; + case overflow: + case timeout: + case neterror: + case subscribe: case pause: viewHolder.mDownloadPb.setText("继续加载 " + viewHolder.downloadEntity.getPercent() + "%"); viewHolder.mDownloadPb.setButtonStyle(DownloadButton.ButtonStyle.DOWNLOADING_NORMAL); 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 476795c0b2..557dba8753 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -389,6 +389,7 @@ object DownloadItemUtils { isMultiVersion: Boolean = false ) { when (downloadEntity.status) { + DownloadStatus.redirected, DownloadStatus.downloading -> { if (isMultiVersion) { holder.gameDownloadBtn.buttonStyle = DownloadButton.ButtonStyle.NORMAL @@ -402,10 +403,8 @@ object DownloadItemUtils { } else { holder.gameDownloadTips?.visibility = View.GONE holder.gameDownloadBtn.buttonStyle = DownloadButton.ButtonStyle.DOWNLOADING_NORMAL - if (DownloadStatus.pause != DownloadManager.getInstance().getStatus(downloadEntity.url)) { - holder.gameDownloadBtn.progress = (downloadEntity.percent * 10).toInt() - holder.gameDownloadBtn.text = downloadEntity.percent.toString() + "%" - } + holder.gameDownloadBtn.progress = (downloadEntity.percent * 10).toInt() + holder.gameDownloadBtn.text = downloadEntity.percent.toString() + "%" } } DownloadStatus.waiting -> { diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 1aa0e273e1..01eb547f33 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -693,6 +693,14 @@ public class DownloadManager implements DownloadStatusListener { return filterSilentDownloadTask(all); } + /** + * 获取下载列表中除下载状态为完成以外的任务 + */ + public List getAllDownloadEntityExcludeDoneTask() { + List all = getAllDownloadEntity(); + return filterDoneDownloadTask(all); + } + /** * 获取下载列表中的畅玩下载任务快照 */ @@ -733,6 +741,20 @@ public class DownloadManager implements DownloadStatusListener { return filteredDownloadEntityList; } + private ArrayList filterDoneDownloadTask(List downloadEntityList) { + ArrayList filteredDownloadEntityList = new ArrayList<>(); + + if (downloadEntityList == null) return filteredDownloadEntityList; + + for (DownloadEntity downloadEntity : downloadEntityList) { + if (downloadEntity.getStatus() != DownloadStatus.done) { + filteredDownloadEntityList.add(downloadEntity); + } + } + + return filteredDownloadEntityList; + } + public ArrayMap getEntryMap(String name) { return gameMap.get(name); } @@ -954,7 +976,7 @@ public class DownloadManager implements DownloadStatusListener { public void checkAndRetryDownload() { if (!NetworkUtils.isWifiConnected(mContext)) return; - for (DownloadEntity downloadEntity : DownloadManager.getInstance().getAllDownloadEntityExcludeSilentTask()) { + for (DownloadEntity downloadEntity : DownloadManager.getInstance().getAllDownloadEntityExcludeDoneTask()) { if (DownloadStatus.neterror.equals(downloadEntity.getStatus()) || DownloadStatus.timeout.equals(downloadEntity.getStatus()) || DownloadStatus.subscribe.equals(downloadEntity.getStatus())) { 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 d5aeb17ff5..466678c735 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java @@ -8,6 +8,7 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DefaultItemAnimator; @@ -197,6 +198,11 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi } } } + + @Override + public void onDataInit(@NonNull DownloadEntity downloadEntity) { + onDataChanged(downloadEntity); + } }; @Override 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 53643d170e..efcfb1167c 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -166,7 +166,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { } else { viewHolder.binding.dmItemTvStartorpause.setButtonStyle(DownloadButton.ButtonStyle.INSTALL_NORMAL); } - } else if (status.equals(DownloadStatus.downloading)) { + } else if (status.equals(DownloadStatus.downloading) || status.equals(DownloadStatus.redirected)) { viewHolder.binding.dmItemTvSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.theme_font)); viewHolder.binding.dmItemTvSpeed.setText(String.format("%s(剩%s)", SpeedUtils.getSpeed(downloadEntity.getSpeed()), @@ -296,6 +296,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { PackageUtils.launchApplicationByPackageName(mContext, downloadEntity.getPackageName()); } break; + case redirected: case downloading: viewHolder.binding.dmItemTvStartorpause.setText(R.string.resume); viewHolder.binding.dmItemTvStartorpause.setButtonStyle(DownloadButton.ButtonStyle.NORMAL); diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt index 45176e4231..c2c3df279a 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt @@ -391,7 +391,7 @@ class VDownloadManagerAdapter( DownloadStatus.overflow -> { btnText = context.getString(R.string.resume) downloadDes.visibility = View.VISIBLE - downloadDes.text = "已暂停" + downloadDes.text = if (status == DownloadStatus.subscribe) "等待WIFI" else "已暂停" downloadDes.setTextColor(R.color.text_subtitleDesc.toColor(mContext)) setOnClickListener { DownloadManager.getInstance().resume(downloadEntity, true)