mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
more viewbindings + result fix + more tests
This commit is contained in:
parent
c946115900
commit
f209c7286e
12 changed files with 214 additions and 140 deletions
|
@ -12,8 +12,14 @@ import com.lagradost.cloudstream3.databinding.FragmentHomeTvBinding
|
||||||
import com.lagradost.cloudstream3.databinding.FragmentSearchBinding
|
import com.lagradost.cloudstream3.databinding.FragmentSearchBinding
|
||||||
import com.lagradost.cloudstream3.databinding.FragmentSearchTvBinding
|
import com.lagradost.cloudstream3.databinding.FragmentSearchTvBinding
|
||||||
import com.lagradost.cloudstream3.databinding.HomeResultGridBinding
|
import com.lagradost.cloudstream3.databinding.HomeResultGridBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomeScrollViewBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomeScrollViewTvBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomepageParentBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomepageParentTvBinding
|
||||||
import com.lagradost.cloudstream3.databinding.RepositoryItemBinding
|
import com.lagradost.cloudstream3.databinding.RepositoryItemBinding
|
||||||
import com.lagradost.cloudstream3.databinding.RepositoryItemTvBinding
|
import com.lagradost.cloudstream3.databinding.RepositoryItemTvBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.SearchResultGridBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.SearchResultGridExpandedBinding
|
||||||
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
||||||
import com.lagradost.cloudstream3.utils.TestingUtils
|
import com.lagradost.cloudstream3.utils.TestingUtils
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
@ -85,6 +91,17 @@ class ExampleInstrumentedTest {
|
||||||
|
|
||||||
testAllLayouts<HomeResultGridBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid)
|
testAllLayouts<HomeResultGridBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid)
|
||||||
//testAllLayouts<HomeResultGridExpandedBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid) ??? fails ???
|
//testAllLayouts<HomeResultGridExpandedBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid) ??? fails ???
|
||||||
|
|
||||||
|
testAllLayouts<SearchResultGridExpandedBinding>(activity, R.layout.search_result_grid, R.layout.search_result_grid_expanded)
|
||||||
|
testAllLayouts<SearchResultGridBinding>(activity, R.layout.search_result_grid, R.layout.search_result_grid_expanded)
|
||||||
|
|
||||||
|
|
||||||
|
// testAllLayouts<HomeScrollViewBinding>(activity, R.layout.home_scroll_view, R.layout.home_scroll_view_tv)
|
||||||
|
// testAllLayouts<HomeScrollViewTvBinding>(activity, R.layout.home_scroll_view, R.layout.home_scroll_view_tv)
|
||||||
|
|
||||||
|
testAllLayouts<HomepageParentTvBinding>(activity, R.layout.homepage_parent_tv, R.layout.homepage_parent)
|
||||||
|
testAllLayouts<HomepageParentBinding>(activity, R.layout.homepage_parent_tv, R.layout.homepage_parent)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,20 @@
|
||||||
package com.lagradost.cloudstream3.ui.home
|
package com.lagradost.cloudstream3.ui.home
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.SearchResponse
|
import com.lagradost.cloudstream3.SearchResponse
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomeResultGridBinding
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.IsBottomLayout
|
import com.lagradost.cloudstream3.utils.UIHelper.IsBottomLayout
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.toPx
|
import com.lagradost.cloudstream3.utils.UIHelper.toPx
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.background_card
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid_expanded.view.*
|
|
||||||
|
|
||||||
class HomeChildItemAdapter(
|
class HomeChildItemAdapter(
|
||||||
val cardList: MutableList<SearchResponse>,
|
val cardList: MutableList<SearchResponse>,
|
||||||
private val overrideLayout: Int? = null,
|
|
||||||
private val nextFocusUp: Int? = null,
|
private val nextFocusUp: Int? = null,
|
||||||
private val nextFocusDown: Int? = null,
|
private val nextFocusDown: Int? = null,
|
||||||
private val clickCallback: (SearchClickCallback) -> Unit,
|
private val clickCallback: (SearchClickCallback) -> Unit,
|
||||||
|
@ -26,11 +24,13 @@ class HomeChildItemAdapter(
|
||||||
var hasNext: Boolean = false
|
var hasNext: Boolean = false
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||||
val layout = overrideLayout
|
val layout = if (parent.context.IsBottomLayout()) R.layout.home_result_grid_expanded else R.layout.home_result_grid
|
||||||
?: if (parent.context.IsBottomLayout()) R.layout.home_result_grid_expanded else R.layout.home_result_grid
|
|
||||||
|
val root = LayoutInflater.from(parent.context).inflate(layout, parent, false)
|
||||||
|
val binding = HomeResultGridBinding.bind(root)
|
||||||
|
|
||||||
return CardViewHolder(
|
return CardViewHolder(
|
||||||
LayoutInflater.from(parent.context).inflate(layout, parent, false),
|
binding,
|
||||||
clickCallback,
|
clickCallback,
|
||||||
itemCount,
|
itemCount,
|
||||||
nextFocusUp,
|
nextFocusUp,
|
||||||
|
@ -69,14 +69,14 @@ class HomeChildItemAdapter(
|
||||||
|
|
||||||
class CardViewHolder
|
class CardViewHolder
|
||||||
constructor(
|
constructor(
|
||||||
itemView: View,
|
val binding: HomeResultGridBinding,
|
||||||
private val clickCallback: (SearchClickCallback) -> Unit,
|
private val clickCallback: (SearchClickCallback) -> Unit,
|
||||||
var itemCount: Int,
|
var itemCount: Int,
|
||||||
private val nextFocusUp: Int? = null,
|
private val nextFocusUp: Int? = null,
|
||||||
private val nextFocusDown: Int? = null,
|
private val nextFocusDown: Int? = null,
|
||||||
private val isHorizontal: Boolean = false
|
private val isHorizontal: Boolean = false
|
||||||
) :
|
) :
|
||||||
RecyclerView.ViewHolder(itemView) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(card: SearchResponse, position: Int) {
|
fun bind(card: SearchResponse, position: Int) {
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ class HomeChildItemAdapter(
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
(itemView.background_card)?.apply {
|
binding.backgroundCard.apply {
|
||||||
val min = 114.toPx
|
val min = 114.toPx
|
||||||
val max = 180.toPx
|
val max = 180.toPx
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ class HomeChildItemAdapter(
|
||||||
itemView.tag = position
|
itemView.tag = position
|
||||||
|
|
||||||
if (position == 0) { // to fix tv
|
if (position == 0) { // to fix tv
|
||||||
itemView.background_card?.nextFocusLeftId = R.id.nav_rail_view
|
binding.backgroundCard.nextFocusLeftId = R.id.nav_rail_view
|
||||||
}
|
}
|
||||||
//val ani = ScaleAnimation(0.9f, 1.0f, 0.9f, 1f)
|
//val ani = ScaleAnimation(0.9f, 1.0f, 0.9f, 1f)
|
||||||
//ani.fillAfter = true
|
//ani.fillAfter = true
|
||||||
|
|
|
@ -10,18 +10,12 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.lagradost.cloudstream3.HomePageList
|
import com.lagradost.cloudstream3.HomePageList
|
||||||
import com.lagradost.cloudstream3.LoadResponse
|
import com.lagradost.cloudstream3.LoadResponse
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomepageParentBinding
|
||||||
import com.lagradost.cloudstream3.ui.result.setLinearListLayout
|
import com.lagradost.cloudstream3.ui.result.setLinearListLayout
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
import com.lagradost.cloudstream3.ui.search.SearchClickCallback
|
||||||
import com.lagradost.cloudstream3.ui.search.SearchFragment.Companion.filterSearchResponse
|
import com.lagradost.cloudstream3.ui.search.SearchFragment.Companion.filterSearchResponse
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.isRecyclerScrollable
|
import com.lagradost.cloudstream3.utils.AppUtils.isRecyclerScrollable
|
||||||
import kotlinx.android.synthetic.main.activity_main_tv.*
|
|
||||||
import kotlinx.android.synthetic.main.activity_main_tv.view.*
|
|
||||||
import kotlinx.android.synthetic.main.fragment_home.*
|
|
||||||
import kotlinx.android.synthetic.main.fragment_home.view.*
|
|
||||||
import kotlinx.android.synthetic.main.fragment_home_head_tv.*
|
|
||||||
import kotlinx.android.synthetic.main.fragment_home_head_tv.view.*
|
|
||||||
import kotlinx.android.synthetic.main.homepage_parent.view.*
|
|
||||||
|
|
||||||
class LoadClickCallback(
|
class LoadClickCallback(
|
||||||
val action: Int = 0,
|
val action: Int = 0,
|
||||||
|
@ -37,12 +31,17 @@ open class ParentItemAdapter(
|
||||||
private val expandCallback: ((String) -> Unit)? = null,
|
private val expandCallback: ((String) -> Unit)? = null,
|
||||||
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
val root = LayoutInflater.from(parent.context).inflate(
|
||||||
|
if (isTvSettings()) R.layout.homepage_parent_tv else R.layout.homepage_parent,
|
||||||
|
parent,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
val binding = HomepageParentBinding.bind(root)
|
||||||
|
|
||||||
return ParentViewHolder(
|
return ParentViewHolder(
|
||||||
LayoutInflater.from(parent.context).inflate(
|
binding,
|
||||||
if (isTvSettings()) R.layout.homepage_parent_tv else R.layout.homepage_parent,
|
|
||||||
parent,
|
|
||||||
false
|
|
||||||
),
|
|
||||||
clickCallback,
|
clickCallback,
|
||||||
moreInfoClickCallback,
|
moreInfoClickCallback,
|
||||||
expandCallback
|
expandCallback
|
||||||
|
@ -153,14 +152,14 @@ open class ParentItemAdapter(
|
||||||
|
|
||||||
class ParentViewHolder
|
class ParentViewHolder
|
||||||
constructor(
|
constructor(
|
||||||
itemView: View,
|
val binding: HomepageParentBinding,
|
||||||
private val clickCallback: (SearchClickCallback) -> Unit,
|
private val clickCallback: (SearchClickCallback) -> Unit,
|
||||||
private val moreInfoClickCallback: (HomeViewModel.ExpandableHomepageList) -> Unit,
|
private val moreInfoClickCallback: (HomeViewModel.ExpandableHomepageList) -> Unit,
|
||||||
private val expandCallback: ((String) -> Unit)? = null,
|
private val expandCallback: ((String) -> Unit)? = null,
|
||||||
) :
|
) :
|
||||||
RecyclerView.ViewHolder(itemView) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
val title: TextView = itemView.home_child_more_info
|
val title: TextView = binding.homeChildMoreInfo
|
||||||
private val recyclerView: RecyclerView = itemView.home_child_recyclerview
|
private val recyclerView: RecyclerView = binding.homeChildRecyclerview
|
||||||
|
|
||||||
fun update(expand: HomeViewModel.ExpandableHomepageList) {
|
fun update(expand: HomeViewModel.ExpandableHomepageList) {
|
||||||
val info = expand.list
|
val info = expand.list
|
||||||
|
|
|
@ -409,10 +409,7 @@ class HomeParentItemAdapterPreview(
|
||||||
// setPageTransformer(null)
|
// setPageTransformer(null)
|
||||||
|
|
||||||
if (adapter == null)
|
if (adapter == null)
|
||||||
adapter = HomeScrollAdapter(
|
adapter = HomeScrollAdapter()
|
||||||
if (isTvSettings()) R.layout.home_scroll_view_tv else R.layout.home_scroll_view,
|
|
||||||
if (isTvSettings()) true else null
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
previewAdapter = previewViewpager?.adapter as? HomeScrollAdapter?
|
previewAdapter = previewViewpager?.adapter as? HomeScrollAdapter?
|
||||||
// previewViewpager?.registerOnPageChangeCallback(previewCallback)
|
// previewViewpager?.registerOnPageChangeCallback(previewCallback)
|
||||||
|
|
|
@ -2,24 +2,18 @@ package com.lagradost.cloudstream3.ui.home
|
||||||
|
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.annotation.LayoutRes
|
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.viewbinding.ViewBinding
|
||||||
import com.lagradost.cloudstream3.LoadResponse
|
import com.lagradost.cloudstream3.LoadResponse
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.databinding.HomeScrollViewBinding
|
||||||
|
import com.lagradost.cloudstream3.databinding.HomeScrollViewTvBinding
|
||||||
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
||||||
import kotlinx.android.synthetic.main.home_scroll_view.view.home_scroll_preview
|
|
||||||
import kotlinx.android.synthetic.main.home_scroll_view.view.home_scroll_preview_tags
|
|
||||||
import kotlinx.android.synthetic.main.home_scroll_view.view.home_scroll_preview_title
|
|
||||||
|
|
||||||
|
class HomeScrollAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
class HomeScrollAdapter(
|
|
||||||
@LayoutRes val layout: Int = R.layout.home_scroll_view,
|
|
||||||
private val forceHorizontalPosters: Boolean? = null
|
|
||||||
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|
||||||
private var items: MutableList<LoadResponse> = mutableListOf()
|
private var items: MutableList<LoadResponse> = mutableListOf()
|
||||||
var hasMoreItems: Boolean = false
|
var hasMoreItems: Boolean = false
|
||||||
|
|
||||||
|
@ -45,9 +39,16 @@ class HomeScrollAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||||
|
val inflater = LayoutInflater.from(parent.context)
|
||||||
|
val binding = if(isTvSettings()) {
|
||||||
|
HomeScrollViewBinding.inflate(inflater,parent,false)
|
||||||
|
} else {
|
||||||
|
HomeScrollViewTvBinding.inflate(inflater,parent,false)
|
||||||
|
}
|
||||||
|
|
||||||
return CardViewHolder(
|
return CardViewHolder(
|
||||||
LayoutInflater.from(parent.context).inflate(layout, parent, false),
|
binding,
|
||||||
forceHorizontalPosters
|
//forceHorizontalPosters
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,22 +62,30 @@ class HomeScrollAdapter(
|
||||||
|
|
||||||
class CardViewHolder
|
class CardViewHolder
|
||||||
constructor(
|
constructor(
|
||||||
itemView: View,
|
val binding: ViewBinding,
|
||||||
private val forceHorizontalPosters: Boolean? = null
|
//private val forceHorizontalPosters: Boolean? = null
|
||||||
) :
|
) :
|
||||||
RecyclerView.ViewHolder(itemView) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(card: LoadResponse) {
|
fun bind(card: LoadResponse) {
|
||||||
card.apply {
|
val isHorizontal =
|
||||||
val isHorizontal =
|
binding is HomeScrollViewTvBinding || itemView.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||||
(forceHorizontalPosters == true) || ((forceHorizontalPosters != false) && itemView.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE)
|
|
||||||
|
|
||||||
val posterUrl = if (isHorizontal) backgroundPosterUrl ?: posterUrl else posterUrl
|
val posterUrl = if (isHorizontal) card.backgroundPosterUrl ?: card.posterUrl else card.posterUrl
|
||||||
?: backgroundPosterUrl
|
?: card.backgroundPosterUrl
|
||||||
itemView.home_scroll_preview_tags?.text = tags?.joinToString(" • ") ?: ""
|
|
||||||
itemView.home_scroll_preview_tags?.isGone = tags.isNullOrEmpty()
|
when(binding) {
|
||||||
itemView.home_scroll_preview?.setImage(posterUrl, posterHeaders)
|
is HomeScrollViewBinding -> {
|
||||||
itemView.home_scroll_preview_title?.text = name
|
binding.homeScrollPreview.setImage(posterUrl)
|
||||||
|
binding.homeScrollPreviewTags.apply {
|
||||||
|
text = card.tags?.joinToString(" • ") ?: ""
|
||||||
|
isGone = card.tags.isNullOrEmpty()
|
||||||
|
}
|
||||||
|
binding.homeScrollPreviewTitle.text = card.name
|
||||||
|
}
|
||||||
|
is HomeScrollViewTvBinding -> {
|
||||||
|
binding.homeScrollPreview.setImage(posterUrl)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ class PageAdapter(
|
||||||
binding.textRating.apply {
|
binding.textRating.apply {
|
||||||
setTextColor(ColorStateList.valueOf(fg))
|
setTextColor(ColorStateList.valueOf(fg))
|
||||||
}
|
}
|
||||||
binding.textRatingHolder.backgroundTintList = ColorStateList.valueOf(bg)
|
binding.textRating.backgroundTintList = ColorStateList.valueOf(bg)
|
||||||
binding.watchProgress.apply {
|
binding.watchProgress.apply {
|
||||||
progressTintList = ColorStateList.valueOf(fg)
|
progressTintList = ColorStateList.valueOf(fg)
|
||||||
progressBackgroundTintList = ColorStateList.valueOf(bg)
|
progressBackgroundTintList = ColorStateList.valueOf(bg)
|
||||||
|
@ -111,16 +111,6 @@ class PageAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.imageText.text = item.name
|
binding.imageText.text = item.name
|
||||||
|
|
||||||
val showRating = (item.personalRating ?: 0) != 0
|
|
||||||
binding.textRatingHolder.isVisible = showRating
|
|
||||||
if (showRating) {
|
|
||||||
// We want to show 8.5 but not 8.0 hence the replace
|
|
||||||
val rating = ((item.personalRating ?: 0).toDouble() / 10).toString()
|
|
||||||
.replace(".0", "")
|
|
||||||
|
|
||||||
binding.textRating.text = "★ $rating"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -64,7 +64,7 @@ class ViewpagerAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
|
setOnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
|
||||||
val diff = scrollY - oldScrollY
|
val diff = scrollY - oldScrollY
|
||||||
if (diff == 0) return@setOnScrollChangeListener
|
if (diff == 0) return@setOnScrollChangeListener
|
||||||
|
|
||||||
|
|
|
@ -16,22 +16,13 @@ import com.lagradost.cloudstream3.R
|
||||||
import com.lagradost.cloudstream3.SearchQuality
|
import com.lagradost.cloudstream3.SearchQuality
|
||||||
import com.lagradost.cloudstream3.SearchResponse
|
import com.lagradost.cloudstream3.SearchResponse
|
||||||
import com.lagradost.cloudstream3.isMovieType
|
import com.lagradost.cloudstream3.isMovieType
|
||||||
|
import com.lagradost.cloudstream3.syncproviders.SyncAPI
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.getNameFull
|
import com.lagradost.cloudstream3.utils.AppUtils.getNameFull
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
import com.lagradost.cloudstream3.utils.DataStoreHelper
|
||||||
import com.lagradost.cloudstream3.utils.DataStoreHelper.fixVisual
|
import com.lagradost.cloudstream3.utils.DataStoreHelper.fixVisual
|
||||||
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.background_card
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.imageText
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.imageView
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.search_item_download_play
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.text_flag
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.text_is_dub
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.text_is_sub
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.text_quality
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.title_shadow
|
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.watchProgress
|
|
||||||
|
|
||||||
object SearchResultBuilder {
|
object SearchResultBuilder {
|
||||||
private val showCache: MutableMap<String, Boolean> = mutableMapOf()
|
private val showCache: MutableMap<String, Boolean> = mutableMapOf()
|
||||||
|
@ -59,19 +50,21 @@ object SearchResultBuilder {
|
||||||
nextFocusDown: Int? = null,
|
nextFocusDown: Int? = null,
|
||||||
colorCallback : ((Palette) -> Unit)? = null
|
colorCallback : ((Palette) -> Unit)? = null
|
||||||
) {
|
) {
|
||||||
val cardView: ImageView = itemView.imageView
|
val cardView: ImageView = itemView.findViewById(R.id.imageView)
|
||||||
val cardText: TextView? = itemView.imageText
|
val cardText: TextView? = itemView.findViewById(R.id.imageText)
|
||||||
|
|
||||||
val textIsDub: TextView? = itemView.text_is_dub
|
val textIsDub: TextView? = itemView.findViewById(R.id.text_is_dub)
|
||||||
val textIsSub: TextView? = itemView.text_is_sub
|
val textIsSub: TextView? = itemView.findViewById(R.id.text_is_sub)
|
||||||
val textFlag: TextView? = itemView.text_flag
|
val textFlag: TextView? = itemView.findViewById(R.id.text_flag)
|
||||||
val textQuality: TextView? = itemView.text_quality
|
val rating: TextView? = itemView.findViewById(R.id.text_rating)
|
||||||
val shadow: View? = itemView.title_shadow
|
|
||||||
|
|
||||||
val bg: CardView = itemView.background_card
|
val textQuality: TextView? = itemView.findViewById(R.id.text_quality)
|
||||||
|
val shadow: View? = itemView.findViewById(R.id.title_shadow)
|
||||||
|
|
||||||
val bar: ProgressBar? = itemView.watchProgress
|
val bg: CardView = itemView.findViewById(R.id.background_card)
|
||||||
val playImg: ImageView? = itemView.search_item_download_play
|
|
||||||
|
val bar: ProgressBar? = itemView.findViewById(R.id.watchProgress)
|
||||||
|
val playImg: ImageView? = itemView.findViewById(R.id.search_item_download_play)
|
||||||
|
|
||||||
// Do logic
|
// Do logic
|
||||||
|
|
||||||
|
@ -80,12 +73,25 @@ object SearchResultBuilder {
|
||||||
textIsDub?.isVisible = false
|
textIsDub?.isVisible = false
|
||||||
textIsSub?.isVisible = false
|
textIsSub?.isVisible = false
|
||||||
textFlag?.isVisible = false
|
textFlag?.isVisible = false
|
||||||
|
rating?.isVisible = false
|
||||||
|
|
||||||
val showSub = showCache[textIsDub?.context?.getString(R.string.show_sub_key)] ?: false
|
val showSub = showCache[textIsDub?.context?.getString(R.string.show_sub_key)] ?: false
|
||||||
val showDub = showCache[textIsDub?.context?.getString(R.string.show_dub_key)] ?: false
|
val showDub = showCache[textIsDub?.context?.getString(R.string.show_dub_key)] ?: false
|
||||||
val showTitle = showCache[cardText?.context?.getString(R.string.show_title_key)] ?: false
|
val showTitle = showCache[cardText?.context?.getString(R.string.show_title_key)] ?: false
|
||||||
val showHd = showCache[textQuality?.context?.getString(R.string.show_hd_key)] ?: false
|
val showHd = showCache[textQuality?.context?.getString(R.string.show_hd_key)] ?: false
|
||||||
|
|
||||||
|
if(card is SyncAPI.LibraryItem) {
|
||||||
|
val showRating = (card.personalRating ?: 0) != 0
|
||||||
|
rating?.isVisible = showRating
|
||||||
|
if (showRating) {
|
||||||
|
// We want to show 8.5 but not 8.0 hence the replace
|
||||||
|
val ratingText = ((card.personalRating ?: 0).toDouble() / 10).toString()
|
||||||
|
.replace(".0", "")
|
||||||
|
|
||||||
|
rating?.text = ratingText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
shadow?.isVisible = showTitle
|
shadow?.isVisible = showTitle
|
||||||
|
|
||||||
when (card.quality) {
|
when (card.quality) {
|
||||||
|
|
|
@ -2,19 +2,28 @@ package com.lagradost.cloudstream3.utils
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.*
|
import android.widget.AbsListView
|
||||||
|
import android.widget.ArrayAdapter
|
||||||
|
import android.widget.EditText
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.LinearLayout
|
||||||
|
import android.widget.ListView
|
||||||
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.core.view.*
|
import androidx.core.view.isGone
|
||||||
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.core.view.marginLeft
|
||||||
|
import androidx.core.view.marginRight
|
||||||
|
import androidx.core.view.marginTop
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.lagradost.cloudstream3.R
|
import com.lagradost.cloudstream3.R
|
||||||
|
import com.lagradost.cloudstream3.databinding.BottomSelectionDialogBinding
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
|
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.popupMenuNoIconsAndNoStringRes
|
import com.lagradost.cloudstream3.utils.UIHelper.popupMenuNoIconsAndNoStringRes
|
||||||
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
||||||
import kotlinx.android.synthetic.main.add_account_input.*
|
|
||||||
import kotlinx.android.synthetic.main.add_account_input.text1
|
|
||||||
import kotlinx.android.synthetic.main.bottom_selection_dialog_direct.*
|
|
||||||
|
|
||||||
object SingleSelectionHelper {
|
object SingleSelectionHelper {
|
||||||
fun Activity?.showOptionSelectStringRes(
|
fun Activity?.showOptionSelectStringRes(
|
||||||
|
@ -82,6 +91,7 @@ object SingleSelectionHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity?.showDialog(
|
fun Activity?.showDialog(
|
||||||
|
binding: BottomSelectionDialogBinding,
|
||||||
dialog: Dialog,
|
dialog: Dialog,
|
||||||
items: List<String>,
|
items: List<String>,
|
||||||
selectedIndex: List<Int>,
|
selectedIndex: List<Int>,
|
||||||
|
@ -95,39 +105,39 @@ object SingleSelectionHelper {
|
||||||
if (this == null) return
|
if (this == null) return
|
||||||
|
|
||||||
val realShowApply = showApply || isMultiSelect
|
val realShowApply = showApply || isMultiSelect
|
||||||
val listView = dialog.listview1//.findViewById<ListView>(R.id.listview1)!!
|
val listView = binding.listview1//.findViewById<ListView>(R.id.listview1)!!
|
||||||
val textView = dialog.text1//.findViewById<TextView>(R.id.text1)!!
|
val textView = binding.text1//.findViewById<TextView>(R.id.text1)!!
|
||||||
val applyButton = dialog.apply_btt//.findViewById<TextView>(R.id.apply_btt)
|
val applyButton = binding.applyBtt//.findViewById<TextView>(R.id.apply_btt)
|
||||||
val cancelButton = dialog.cancel_btt//findViewById<TextView>(R.id.cancel_btt)
|
val cancelButton = binding.cancelBtt//findViewById<TextView>(R.id.cancel_btt)
|
||||||
val applyHolder =
|
val applyHolder =
|
||||||
dialog.apply_btt_holder//.findViewById<LinearLayout>(R.id.apply_btt_holder)
|
binding.applyBttHolder//.findViewById<LinearLayout>(R.id.apply_btt_holder)
|
||||||
|
|
||||||
applyHolder?.isVisible = realShowApply
|
applyHolder.isVisible = realShowApply
|
||||||
if (!realShowApply) {
|
if (!realShowApply) {
|
||||||
val params = listView.layoutParams as LinearLayout.LayoutParams
|
val params = listView.layoutParams as LinearLayout.LayoutParams
|
||||||
params.setMargins(listView.marginLeft, listView.marginTop, listView.marginRight, 0)
|
params.setMargins(listView.marginLeft, listView.marginTop, listView.marginRight, 0)
|
||||||
listView.layoutParams = params
|
listView.layoutParams = params
|
||||||
}
|
}
|
||||||
|
|
||||||
textView?.text = name
|
textView.text = name
|
||||||
textView?.isGone = name.isBlank()
|
textView.isGone = name.isBlank()
|
||||||
|
|
||||||
val arrayAdapter = ArrayAdapter<String>(this, itemLayout)
|
val arrayAdapter = ArrayAdapter<String>(this, itemLayout)
|
||||||
arrayAdapter.addAll(items)
|
arrayAdapter.addAll(items)
|
||||||
|
|
||||||
listView?.adapter = arrayAdapter
|
listView.adapter = arrayAdapter
|
||||||
if (isMultiSelect) {
|
if (isMultiSelect) {
|
||||||
listView?.choiceMode = AbsListView.CHOICE_MODE_MULTIPLE
|
listView.choiceMode = AbsListView.CHOICE_MODE_MULTIPLE
|
||||||
} else {
|
} else {
|
||||||
listView?.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
listView.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||||
}
|
}
|
||||||
|
|
||||||
for (select in selectedIndex) {
|
for (select in selectedIndex) {
|
||||||
listView?.setItemChecked(select, true)
|
listView.setItemChecked(select, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedIndex.minOrNull()?.let {
|
selectedIndex.minOrNull()?.let {
|
||||||
listView?.setSelection(it)
|
listView.setSelection(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
// var lastSelectedIndex = if(selectedIndex.isNotEmpty()) selectedIndex.first() else -1
|
// var lastSelectedIndex = if(selectedIndex.isNotEmpty()) selectedIndex.first() else -1
|
||||||
|
@ -136,7 +146,7 @@ object SingleSelectionHelper {
|
||||||
dismissCallback.invoke()
|
dismissCallback.invoke()
|
||||||
}
|
}
|
||||||
|
|
||||||
listView?.setOnItemClickListener { _, _, which, _ ->
|
listView.setOnItemClickListener { _, _, which, _ ->
|
||||||
// lastSelectedIndex = which
|
// lastSelectedIndex = which
|
||||||
if (realShowApply) {
|
if (realShowApply) {
|
||||||
if (!isMultiSelect) {
|
if (!isMultiSelect) {
|
||||||
|
@ -148,7 +158,7 @@ object SingleSelectionHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (realShowApply) {
|
if (realShowApply) {
|
||||||
applyButton?.setOnClickListener {
|
applyButton.setOnClickListener {
|
||||||
val list = ArrayList<Int>()
|
val list = ArrayList<Int>()
|
||||||
for (index in 0 until listView.count) {
|
for (index in 0 until listView.count) {
|
||||||
if (listView.checkedItemPositions[index])
|
if (listView.checkedItemPositions[index])
|
||||||
|
@ -157,7 +167,7 @@ object SingleSelectionHelper {
|
||||||
callback.invoke(list)
|
callback.invoke(list)
|
||||||
dialog.dismissSafe(this)
|
dialog.dismissSafe(this)
|
||||||
}
|
}
|
||||||
cancelButton?.setOnClickListener {
|
cancelButton.setOnClickListener {
|
||||||
dialog.dismissSafe(this)
|
dialog.dismissSafe(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,13 +223,26 @@ object SingleSelectionHelper {
|
||||||
) {
|
) {
|
||||||
if (this == null) return
|
if (this == null) return
|
||||||
|
|
||||||
|
val binding: BottomSelectionDialogBinding = BottomSelectionDialogBinding.inflate(
|
||||||
|
LayoutInflater.from(this)
|
||||||
|
)
|
||||||
val builder =
|
val builder =
|
||||||
AlertDialog.Builder(this, R.style.AlertDialogCustom)
|
AlertDialog.Builder(this, R.style.AlertDialogCustom)
|
||||||
.setView(R.layout.bottom_selection_dialog)
|
.setView(binding.root)
|
||||||
|
|
||||||
val dialog = builder.create()
|
val dialog = builder.create()
|
||||||
dialog.show()
|
dialog.show()
|
||||||
showDialog(dialog, items, selectedIndex, name, true, true, callback, dismissCallback)
|
showDialog(
|
||||||
|
binding,
|
||||||
|
dialog,
|
||||||
|
items,
|
||||||
|
selectedIndex,
|
||||||
|
name,
|
||||||
|
showApply = true,
|
||||||
|
isMultiSelect = true,
|
||||||
|
callback,
|
||||||
|
dismissCallback
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity?.showDialog(
|
fun Activity?.showDialog(
|
||||||
|
@ -232,13 +255,19 @@ object SingleSelectionHelper {
|
||||||
) {
|
) {
|
||||||
if (this == null) return
|
if (this == null) return
|
||||||
|
|
||||||
|
val binding: BottomSelectionDialogBinding = BottomSelectionDialogBinding.inflate(
|
||||||
|
LayoutInflater.from(this)
|
||||||
|
)
|
||||||
val builder =
|
val builder =
|
||||||
AlertDialog.Builder(this, R.style.AlertDialogCustom)
|
AlertDialog.Builder(this, R.style.AlertDialogCustom)
|
||||||
.setView(R.layout.bottom_selection_dialog)
|
.setView(binding.root)
|
||||||
|
|
||||||
val dialog = builder.create()
|
val dialog = builder.create()
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
|
|
||||||
showDialog(
|
showDialog(
|
||||||
|
binding,
|
||||||
dialog,
|
dialog,
|
||||||
items,
|
items,
|
||||||
listOf(selectedIndex),
|
listOf(selectedIndex),
|
||||||
|
@ -260,12 +289,18 @@ object SingleSelectionHelper {
|
||||||
callback: (Int) -> Unit,
|
callback: (Int) -> Unit,
|
||||||
) {
|
) {
|
||||||
if (this == null) return
|
if (this == null) return
|
||||||
|
|
||||||
|
val binding: BottomSelectionDialogBinding = BottomSelectionDialogBinding.inflate(
|
||||||
|
LayoutInflater.from(this)
|
||||||
|
)
|
||||||
|
|
||||||
val builder =
|
val builder =
|
||||||
BottomSheetDialog(this)
|
BottomSheetDialog(this)
|
||||||
builder.setContentView(R.layout.bottom_selection_dialog)
|
builder.setContentView(binding.root)
|
||||||
|
|
||||||
builder.show()
|
builder.show()
|
||||||
showDialog(
|
showDialog(
|
||||||
|
binding,
|
||||||
builder,
|
builder,
|
||||||
items,
|
items,
|
||||||
listOf(selectedIndex),
|
listOf(selectedIndex),
|
||||||
|
@ -285,13 +320,19 @@ object SingleSelectionHelper {
|
||||||
): BottomSheetDialog {
|
): BottomSheetDialog {
|
||||||
val builder =
|
val builder =
|
||||||
BottomSheetDialog(this)
|
BottomSheetDialog(this)
|
||||||
builder.setContentView(R.layout.bottom_selection_dialog_direct)
|
|
||||||
|
|
||||||
|
val binding: BottomSelectionDialogBinding = BottomSelectionDialogBinding.inflate(
|
||||||
|
LayoutInflater.from(this)
|
||||||
|
)
|
||||||
|
|
||||||
|
//builder.setContentView(R.layout.bottom_selection_dialog_direct)
|
||||||
|
builder.setContentView(binding.root)
|
||||||
builder.show()
|
builder.show()
|
||||||
showDialog(
|
showDialog(
|
||||||
|
binding,
|
||||||
builder,
|
builder,
|
||||||
items,
|
items,
|
||||||
listOf(),
|
emptyList(),
|
||||||
name,
|
name,
|
||||||
showApply = false,
|
showApply = false,
|
||||||
isMultiSelect = false,
|
isMultiSelect = false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/search_result_root"
|
android:id="@+id/search_result_root"
|
||||||
|
@ -75,6 +75,12 @@
|
||||||
style="@style/SubButton"
|
style="@style/SubButton"
|
||||||
android:layout_gravity="end" />
|
android:layout_gravity="end" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_rating"
|
||||||
|
style="@style/RatingButton"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
|
||||||
|
tools:text="7.7" />
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text_flag"
|
android:id="@+id/text_flag"
|
||||||
style="@style/SearchBox"
|
style="@style/SearchBox"
|
||||||
|
@ -85,6 +91,18 @@
|
||||||
tools:text="🇸🇪"
|
tools:text="🇸🇪"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<androidx.core.widget.ContentLoadingProgressBar
|
||||||
|
android:id="@+id/watchProgress"
|
||||||
|
style="@android:style/Widget.Material.ProgressBar.Horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="5dp"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:layout_marginBottom="-1.5dp"
|
||||||
|
android:progressBackgroundTint="?attr/colorPrimary"
|
||||||
|
android:progressTint="?attr/colorPrimary"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:progress="50"
|
||||||
|
tools:visibility="visible" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
</FrameLayout>
|
</LinearLayout>
|
|
@ -58,29 +58,12 @@
|
||||||
style="@style/SubButton"
|
style="@style/SubButton"
|
||||||
android:layout_gravity="end" />
|
android:layout_gravity="end" />
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
android:id="@+id/text_rating_holder"
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/text_rating"
|
||||||
android:layout_height="wrap_content"
|
style="@style/RatingButton"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_margin="2dp"
|
tools:text="7.7" />
|
||||||
android:backgroundTint="@color/ratingColorBg"
|
|
||||||
android:elevation="0dp"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:cardCornerRadius="@dimen/rounded_image_radius"
|
|
||||||
app:cardElevation="0dp"
|
|
||||||
tools:visibility="visible">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/text_rating"
|
|
||||||
style="@style/SearchBox"
|
|
||||||
android:layout_margin="0dp"
|
|
||||||
android:minWidth="40dp"
|
|
||||||
android:textColor="@color/ratingColor"
|
|
||||||
|
|
||||||
tools:text="★ 7.7" />
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text_flag"
|
android:id="@+id/text_flag"
|
||||||
|
@ -93,6 +76,15 @@
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:focusable="false"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:clickable="false"
|
||||||
|
android:focusableInTouchMode="false"
|
||||||
|
android:id="@+id/title_shadow"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<androidx.core.widget.ContentLoadingProgressBar
|
<androidx.core.widget.ContentLoadingProgressBar
|
||||||
android:id="@+id/watchProgress"
|
android:id="@+id/watchProgress"
|
||||||
|
|
|
@ -125,8 +125,13 @@
|
||||||
<item name="android:textColor">@color/subColorText</item>
|
<item name="android:textColor">@color/subColorText</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!--<style name="RatingButton" parent="@style/SearchBox">
|
||||||
|
<item name="android:background">@drawable/rating_bg_color</item>
|
||||||
|
<item name="android:textColor">@color/ratingColor</item>
|
||||||
|
</style>-->
|
||||||
|
|
||||||
<style name="RatingButton" parent="@style/SearchBox">
|
<style name="RatingButton" parent="@style/SearchBox">
|
||||||
<item name="android:minWidth">30dp</item>
|
<item name="android:minWidth">40dp</item>
|
||||||
<item name="android:background">@drawable/rating_bg_color</item>
|
<item name="android:background">@drawable/rating_bg_color</item>
|
||||||
<item name="drawableTint">@color/ratingColor</item>
|
<item name="drawableTint">@color/ratingColor</item>
|
||||||
<item name="android:textColor">@color/ratingColor</item>
|
<item name="android:textColor">@color/ratingColor</item>
|
||||||
|
|
Loading…
Reference in a new issue