diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadAdapter.kt
index d0740f66a81..f6f02d864a6 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadAdapter.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadAdapter.kt
@@ -17,6 +17,7 @@ import com.lagradost.cloudstream3.ui.NoStateAdapter
import com.lagradost.cloudstream3.ui.ViewHolderState
import com.lagradost.cloudstream3.ui.download.button.DownloadStatusTell
import com.lagradost.cloudstream3.utils.AppContextUtils.getNameFull
+import com.lagradost.cloudstream3.utils.DataStoreHelper.fixVisual
import com.lagradost.cloudstream3.utils.DataStoreHelper.getViewPos
import com.lagradost.cloudstream3.utils.ImageLoader.loadImage
import com.lagradost.cloudstream3.utils.VideoDownloadHelper
@@ -151,22 +152,12 @@ class DownloadAdapter(
downloadHeaderGotoChild.isVisible = false
val posDur = getViewPos(card.data.id)
- watchProgressContainer.isVisible = true
downloadHeaderEpisodeProgress.apply {
isVisible = posDur != null
posDur?.let {
- val max = (it.duration / 1000).toInt()
- val progress = (it.position / 1000).toInt()
-
- if (max > 0 && progress >= (0.95 * max).toInt()) {
- playIcon.setImageResource(R.drawable.ic_baseline_check_24)
- isVisible = false
- } else {
- playIcon.setImageResource(R.drawable.netflix_play)
- this.max = max
- this.progress = progress
- isVisible = true
- }
+ val visualPos = it.fixVisual()
+ max = (visualPos.duration / 1000).toInt()
+ progress = (visualPos.position / 1000).toInt()
}
}
@@ -199,7 +190,6 @@ class DownloadAdapter(
)
}
- downloadHeaderInfo.isVisible = true
downloadButton.setDefaultClickListener(card.child, downloadHeaderInfo, onItemClickEvent)
downloadButton.isVisible = !isMultiDeleteState
@@ -220,7 +210,6 @@ class DownloadAdapter(
formattedSize: String
) {
downloadButton.resetViewData()
- watchProgressContainer.isVisible = false
downloadButton.isVisible = false
downloadHeaderEpisodeProgress.isVisible = false
downloadHeaderGotoChild.isVisible = !isMultiDeleteState
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/EpisodeAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/EpisodeAdapter.kt
index 818e79d7456..9bc7619ad10 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/EpisodeAdapter.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/EpisodeAdapter.kt
@@ -209,26 +209,14 @@ class EpisodeAdapter(
if (item.videoWatchState == VideoWatchState.Watched) {
// This cannot be done in getDisplayPosition() as when you have not watched something
// the duration and position is 0
- //episodeProgress.max = 1
- //episodeProgress.progress = 1
- episodePlayIcon.setImageResource(R.drawable.ic_baseline_check_24)
- episodeProgress.isVisible = false
+ episodeProgress.max = 1
+ episodeProgress.progress = 1
+ episodeProgress.isVisible = true
} else {
val displayPos = item.getDisplayPosition()
- val durationSec = (item.duration / 1000).toInt()
- val progressSec = (displayPos / 1000).toInt()
-
- if (displayPos >= item.duration && displayPos > 0) {
- episodePlayIcon.setImageResource(R.drawable.ic_baseline_check_24)
- episodeProgress.isVisible = false
- } else {
- episodePlayIcon.setImageResource(R.drawable.netflix_play)
- episodeProgress.apply {
- max = durationSec
- progress = progressSec
- isVisible = displayPos > 0L
- }
- }
+ episodeProgress.max = (item.duration / 1000).toInt()
+ episodeProgress.progress = (displayPos / 1000).toInt()
+ episodeProgress.isVisible = displayPos > 0L
}
val posterVisible = !item.poster.isNullOrBlank()
@@ -423,24 +411,16 @@ class EpisodeAdapter(
episodeText.isSelected = true // is needed for text repeating
if (item.videoWatchState == VideoWatchState.Watched) {
- episodePlayIcon.setImageResource(R.drawable.ic_baseline_check_24)
- episodeProgress.isVisible = false
+ // This cannot be done in getDisplayPosition() as when you have not watched something
+ // the duration and position is 0
+ episodeProgress.max = 1
+ episodeProgress.progress = 1
+ episodeProgress.isVisible = true
} else {
val displayPos = item.getDisplayPosition()
- val durationSec = (item.duration / 1000).toInt()
- val progressSec = (displayPos / 1000).toInt()
-
- if (displayPos >= item.duration && displayPos > 0) {
- episodePlayIcon.setImageResource(R.drawable.ic_baseline_check_24)
- episodeProgress.isVisible = false
- } else {
- episodePlayIcon.setImageResource(R.drawable.play_button_transparent)
- episodeProgress.apply {
- max = durationSec
- progress = progressSec
- isVisible = displayPos > 0L
- }
- }
+ episodeProgress.max = (item.duration / 1000).toInt()
+ episodeProgress.progress = (displayPos / 1000).toInt()
+ episodeProgress.isVisible = displayPos > 0L
}
itemView.setOnClickListener {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
index f6d0fee7680..9c15a6dd365 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt
@@ -17,6 +17,7 @@ import android.view.animation.Animation
import android.view.animation.DecelerateInterpolator
import android.widget.AbsListView
import android.widget.ArrayAdapter
+import android.widget.Button
import android.widget.Toast
import androidx.core.view.isGone
import androidx.core.view.isInvisible
@@ -65,6 +66,7 @@ import com.lagradost.cloudstream3.ui.result.ResultFragment.updateUIEvent
import com.lagradost.cloudstream3.ui.search.SearchAdapter
import com.lagradost.cloudstream3.ui.search.SearchHelper
import com.lagradost.cloudstream3.utils.AppContextUtils.getNameFull
+import com.lagradost.cloudstream3.utils.AppContextUtils.getShortSeasonText
import com.lagradost.cloudstream3.utils.AppContextUtils.isCastApiAvailable
import com.lagradost.cloudstream3.utils.AppContextUtils.loadCache
import com.lagradost.cloudstream3.utils.AppContextUtils.openBrowser
@@ -607,57 +609,59 @@ open class ResultFragmentPhone : FullScreenPlayer() {
}*/
observeNullable(viewModel.resumeWatching) { resume ->
+ if (resume == null) {
+ resultBinding?.resultResumeParent?.isVisible = false
+ return@observeNullable
+ }
+
resultBinding?.apply {
- if (resume == null) {
- resultResumeParent.isVisible = false
- resultPlayParent.isVisible = true
- resultResumeProgressHolder.isVisible = false
- return@observeNullable
- }
resultResumeParent.isVisible = true
+
+ val setEpisodeText: (Button) -> Unit = { button ->
+ button.text = context?.let {
+ "${it.getString(R.string.resume)} ${it.getShortSeasonText(
+ resume.result.episode,
+ resume.result.season
+ )}"
+ }
+ }
+
resume.progress?.let { progress ->
resultNextSeriesButton.isVisible = false
- resultResumeSeriesTitle.apply {
- isVisible = !resume.isMovie
- text =
- if (resume.isMovie) null else context?.getNameFull(
- resume.result.name,
- resume.result.episode,
- resume.result.season
- )
- }
- if (resume.isMovie) {
- resultPlayParent.isGone = true
- resultResumeSeriesProgressText.isVisible = true
- resultResumeSeriesProgressText.setText(progress.progressLeft)
- }
+ resultResumeSeriesProgressText.setText(progress.progressLeft)
+
resultResumeSeriesProgress.apply {
isVisible = true
- this.max = progress.maxProgress
+ max = progress.maxProgress
this.progress = progress.progress
}
+
+ if (!resume.isMovie) {
+ setEpisodeText(resultResumeSeriesButton)
+ resultMovieParent.isGone = true
+ }
+
+ resultResumeSeriesButton.isVisible = true
+ resultPlayMovie.isGone = true
resultResumeProgressHolder.isVisible = true
+
} ?: run {
- resultResumeProgressHolder.isVisible = false
if (!resume.isMovie) {
+ resultResumeSeriesButton.isVisible = false
+ setEpisodeText(resultNextSeriesButton)
resultNextSeriesButton.isVisible = true
- resultNextSeriesButton.text = context?.getNameFull(
- resume.result.name,
- resume.result.episode,
- resume.result.season
- )
+ resultMovieParent.isGone = true
+ } else {
+ resultResumeParent.isGone = true
}
+
+ resultResumeProgressHolder.isVisible = false
resultResumeSeriesProgress.isVisible = false
- resultResumeSeriesTitle.isVisible = false
resultResumeSeriesProgressText.isVisible = false
}
- resultResumeSeriesButton.setOnClickListener {
- resumeAction(storedData, resume)
- }
- resultNextSeriesButton.setOnClickListener {
- resumeAction(storedData, resume)
- }
+ resultResumeSeriesButton.setOnClickListener { resumeAction(storedData, resume) }
+ resultNextSeriesButton.setOnClickListener { resumeAction(storedData, resume) }
}
}
diff --git a/app/src/main/res/drawable/play_button.xml b/app/src/main/res/drawable/play_button.xml
index ee3d47dfe97..3f5d1a92130 100644
--- a/app/src/main/res/drawable/play_button.xml
+++ b/app/src/main/res/drawable/play_button.xml
@@ -9,11 +9,17 @@
+
diff --git a/app/src/main/res/drawable/progress_bar_rounded.xml b/app/src/main/res/drawable/progress_bar_rounded.xml
new file mode 100644
index 00000000000..142bce1a35b
--- /dev/null
+++ b/app/src/main/res/drawable/progress_bar_rounded.xml
@@ -0,0 +1,16 @@
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/download_child_episode.xml b/app/src/main/res/layout/download_child_episode.xml
index cb9c13d5394..e53e63d312f 100644
--- a/app/src/main/res/layout/download_child_episode.xml
+++ b/app/src/main/res/layout/download_child_episode.xml
@@ -14,44 +14,30 @@
app:cardCornerRadius="@dimen/rounded_image_radius"
app:cardElevation="0dp">
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="0dp"
+ android:layout_marginEnd="0dp"
+ android:nextFocusUp="@id/result_bookmark_Button"
+ android:nextFocusDown="@id/result_download_movie"
+ android:text="@string/resume"
+ app:icon="@drawable/ic_baseline_play_arrow_24"
+ tools:visibility="visible"
+ android:visibility="gone"
+ android:ellipsize="end"
+ android:maxLines="1"/>
+
+ android:ellipsize="end"
+ android:maxLines="1"/>
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
-->
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_result_tv.xml b/app/src/main/res/layout/fragment_result_tv.xml
index 3dff8f0d535..e56cd3e8b7c 100644
--- a/app/src/main/res/layout/fragment_result_tv.xml
+++ b/app/src/main/res/layout/fragment_result_tv.xml
@@ -38,24 +38,24 @@ https://developer.android.com/design/ui/tv/samples/jet-fit
tools:src="@drawable/profile_bg_dark_blue" />
+ android:contentDescription="@null"
+ android:maxWidth="220dp"
+ android:maxHeight="72dp"
+ android:scaleType="fitStart" />
@@ -236,71 +236,69 @@ https://developer.android.com/design/ui/tv/samples/jet-fit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
-
+
+
+
+ tools:progress="25"
+ tools:visibility="visible"
+ android:layout_marginTop="5dp"/>
diff --git a/app/src/main/res/layout/home_result_grid.xml b/app/src/main/res/layout/home_result_grid.xml
index ff07d9a954f..34bde53299f 100644
--- a/app/src/main/res/layout/home_result_grid.xml
+++ b/app/src/main/res/layout/home_result_grid.xml
@@ -61,9 +61,23 @@
tools:text="The Perfect Run" />
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
+ android:contentDescription="@string/episode_play_img_des"
+ android:src="@drawable/ic_baseline_play_arrow_24"
+ app:tint="?attr/textColor" />
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
diff --git a/app/src/main/res/layout/search_result_grid_expanded.xml b/app/src/main/res/layout/search_result_grid_expanded.xml
index b43d3b85268..41d58bbb175 100644
--- a/app/src/main/res/layout/search_result_grid_expanded.xml
+++ b/app/src/main/res/layout/search_result_grid_expanded.xml
@@ -93,8 +93,8 @@
android:layout_height="5dp"
android:layout_gravity="bottom"
android:layout_marginBottom="-1.5dp"
- android:progressBackgroundTint="?attr/white"
- android:progressTint="?attr/white"
+ android:progressBackgroundTint="?attr/colorPrimary"
+ android:progressTint="?attr/colorPrimary"
android:visibility="gone"
tools:progress="50"
tools:visibility="visible" />
@@ -130,4 +130,4 @@
android:textSize="13sp"
tools:text="The Perfect Run\nThe Perfect Run" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 48b69232abe..1864ff5b907 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -121,5 +121,4 @@
#48E484
#ea596e
#FF9800
- #B3000000
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index b0c150000b5..bf75ed44108 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -26,10 +26,4 @@
100dp
5dp
-
- 50dp
- 40dp
- 25dp
- 2dp
- 35dp
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f386bb62eff..67ab9de0edc 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1054,75 +1054,4 @@
@drawable/cast_ic_mini_controller_closed_caption
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-