mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
subs settings not working :(
This commit is contained in:
parent
e59b26cb0e
commit
0ec5d166df
16 changed files with 665 additions and 200 deletions
|
@ -91,4 +91,7 @@ dependencies {
|
|||
annotationProcessor "com.google.auto.service:auto-service:1.0"
|
||||
//or for kotlin sources (requires kapt gradle plugin):
|
||||
kapt "com.google.auto.service:auto-service:1.0"
|
||||
|
||||
// subtitle color picker
|
||||
implementation 'com.jaredrummler:colorpicker:1.1.0'
|
||||
}
|
|
@ -13,6 +13,7 @@ import androidx.navigation.NavOptions
|
|||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import com.google.android.gms.cast.framework.CastButtonFactory
|
||||
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
|
||||
import com.lagradost.cloudstream3.APIHolder.apis
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.checkWrite
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.getResourceColor
|
||||
|
@ -46,21 +47,23 @@ const val VLC_EXTRA_POSITION_OUT = "extra_position"
|
|||
const val VLC_EXTRA_DURATION_OUT = "extra_duration"
|
||||
const val VLC_LAST_ID_KEY = "vlc_last_open_id"
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
/*, ViewModelStoreOwner {
|
||||
private val appViewModelStore: ViewModelStore by lazy {
|
||||
ViewModelStore()
|
||||
class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||
override fun onColorSelected(dialogId: Int, color: Int) {
|
||||
onColorSelectedEvent.invoke(Pair(dialogId, color))
|
||||
}
|
||||
|
||||
override fun onDialogDismissed(dialogId: Int) {
|
||||
onDialogDismissedEvent.invoke(dialogId)
|
||||
}
|
||||
|
||||
override fun getViewModelStore(): ViewModelStore {
|
||||
return appViewModelStore
|
||||
}*/
|
||||
companion object {
|
||||
var canEnterPipMode: Boolean = false
|
||||
var canShowPipMode: Boolean = false
|
||||
var isInPIPMode: Boolean = false
|
||||
|
||||
val backEvent = Event<Boolean>()
|
||||
val onColorSelectedEvent = Event<Pair<Int, Int>>()
|
||||
val onDialogDismissedEvent = Event<Int>()
|
||||
lateinit var navOptions: NavOptions
|
||||
}
|
||||
|
||||
|
@ -288,4 +291,5 @@ class MainActivity : AppCompatActivity() {
|
|||
}*/
|
||||
handleAppIntent(intent)
|
||||
}
|
||||
|
||||
}
|
|
@ -65,6 +65,10 @@ import com.lagradost.cloudstream3.mvvm.observe
|
|||
import com.lagradost.cloudstream3.mvvm.observeDirectly
|
||||
import com.lagradost.cloudstream3.ui.result.ResultEpisode
|
||||
import com.lagradost.cloudstream3.ui.result.ResultViewModel
|
||||
import com.lagradost.cloudstream3.ui.subtitles.SaveCaptionStyle
|
||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment.Companion.fromSaveToStyle
|
||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment.Companion.getCurrentSavedStyle
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.getFocusRequest
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.getVideoContentUri
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable
|
||||
|
@ -75,6 +79,7 @@ import com.lagradost.cloudstream3.utils.DataStore.getKey
|
|||
import com.lagradost.cloudstream3.utils.DataStore.setKey
|
||||
import com.lagradost.cloudstream3.utils.DataStoreHelper.setViewPos
|
||||
import com.lagradost.cloudstream3.utils.ExtractorLink
|
||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.getNavigationBarHeight
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.getStatusBarHeight
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
|
||||
|
@ -145,6 +150,9 @@ data class UriData(
|
|||
|
||||
// YE, I KNOW, THIS COULD BE HANDLED A LOT BETTER
|
||||
class PlayerFragment : Fragment() {
|
||||
private lateinit var subStyle: SaveCaptionStyle
|
||||
private var subView: SubtitleView? = null
|
||||
|
||||
private var isCurrentlyPlaying: Boolean = false
|
||||
private val mapper = JsonMapper.builder().addModule(KotlinModule())
|
||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build()
|
||||
|
@ -788,18 +796,19 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
//endregion
|
||||
|
||||
private fun onSubStyleChanged(style : SaveCaptionStyle) {
|
||||
subView?.setStyle(fromSaveToStyle(subStyle))
|
||||
subView?.translationY = -subStyle.elevation.toPx.toFloat()
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
val subs = player_view.findViewById<SubtitleView>(R.id.exo_subtitles)
|
||||
subs.setStyle(
|
||||
CaptionStyleCompat(
|
||||
Color.WHITE, Color.TRANSPARENT, Color.TRANSPARENT, CaptionStyleCompat.EDGE_TYPE_OUTLINE, Color.BLACK,
|
||||
Typeface.SANS_SERIF
|
||||
)
|
||||
)
|
||||
subs.translationY = -10.toPx.toFloat()
|
||||
subView = player_view.findViewById(R.id.exo_subtitles)
|
||||
subStyle = context?.getCurrentSavedStyle()!!
|
||||
onSubStyleChanged(subStyle)
|
||||
SubtitlesFragment.applyStyleEvent += ::onSubStyleChanged
|
||||
|
||||
settingsManager = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
swipeEnabled = settingsManager.getBoolean("swipe_enabled", true)
|
||||
|
@ -1115,64 +1124,19 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
playback_speed_btt.visibility = if (playBackSpeedEnabled) VISIBLE else GONE
|
||||
playback_speed_btt.setOnClickListener {
|
||||
lateinit var dialog: AlertDialog
|
||||
// Lmao kind bad
|
||||
val speedsText = listOf("0.5x", "0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x")
|
||||
val speedsNumbers = listOf(0.5f, 0.75f, 1f, 1.25f, 1.5f, 1.75f, 2f)
|
||||
val builder =
|
||||
AlertDialog.Builder(requireContext(), R.style.AlertDialogCustom).setView(R.layout.player_select_speed)
|
||||
|
||||
val speedDialog = builder.create()
|
||||
speedDialog.show()
|
||||
|
||||
val speedList = speedDialog.findViewById<ListView>(R.id.sort_speed)!!
|
||||
// val applyButton = speedDialog.findViewById<MaterialButton>(R.id.pick_source_apply)!!
|
||||
// val cancelButton = speedDialog.findViewById<MaterialButton>(R.id.pick_source_cancel)!!
|
||||
|
||||
val arrayAdapter = ArrayAdapter<String>(view.context, R.layout.sort_bottom_single_choice)
|
||||
arrayAdapter.addAll(speedsText)
|
||||
|
||||
speedList.adapter = arrayAdapter
|
||||
speedList.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||
|
||||
val speedIndex = speedsNumbers.indexOf(playbackSpeed)
|
||||
|
||||
speedList.setSelection(speedIndex)
|
||||
speedList.setItemChecked(speedIndex, true)
|
||||
|
||||
speedList.setOnItemClickListener { _, _, which, _ ->
|
||||
playbackSpeed = speedsNumbers[which]
|
||||
context?.showDialog(speedsText,speedIndex,"Player Speed", false) { index ->
|
||||
playbackSpeed = speedsNumbers[index]
|
||||
requireContext().setKey(PLAYBACK_SPEED_KEY, playbackSpeed)
|
||||
val param = PlaybackParameters(playbackSpeed)
|
||||
exoPlayer.playbackParameters = param
|
||||
player_speed_text.text = "Speed (${playbackSpeed}x)".replace(".0x", "x")
|
||||
|
||||
speedDialog.dismiss()
|
||||
activity?.hideSystemUI()
|
||||
}
|
||||
|
||||
/*
|
||||
builder.setTitle("Pick playback speed")
|
||||
builder.setOnDismissListener {
|
||||
activity?.hideSystemUI()
|
||||
}
|
||||
builder.setSingleChoiceItems(speedsText, speedsNumbers.indexOf(playbackSpeed)) { _, which ->
|
||||
|
||||
//val speed = speedsText[which]
|
||||
//Toast.makeText(requireContext(), "$speed selected.", Toast.LENGTH_SHORT).show()
|
||||
|
||||
playbackSpeed = speedsNumbers[which]
|
||||
requireContext().setKey(PLAYBACK_SPEED_KEY, playbackSpeed)
|
||||
val param = PlaybackParameters(playbackSpeed)
|
||||
exoPlayer.playbackParameters = param
|
||||
player_speed_text.text = "Speed (${playbackSpeed}x)".replace(".0x", "x")
|
||||
|
||||
dialog.dismiss()
|
||||
activity?.hideSystemUI()
|
||||
}
|
||||
|
||||
dialog = builder.create()
|
||||
dialog.show()*/
|
||||
}
|
||||
|
||||
sources_btt.setOnClickListener {
|
||||
|
@ -1191,8 +1155,13 @@ class PlayerFragment : Fragment() {
|
|||
// bottomSheetDialog.setContentView(R.layout.sort_bottom_sheet)
|
||||
val providerList = sourceDialog.findViewById<ListView>(R.id.sort_providers)!!
|
||||
val subtitleList = sourceDialog.findViewById<ListView>(R.id.sort_subtitles)!!
|
||||
val applyButton = sourceDialog.findViewById<MaterialButton>(R.id.pick_source_apply)!!
|
||||
val cancelButton = sourceDialog.findViewById<MaterialButton>(R.id.pick_source_cancel)!!
|
||||
val applyButton = sourceDialog.findViewById<MaterialButton>(R.id.apply_btt)!!
|
||||
val cancelButton = sourceDialog.findViewById<MaterialButton>(R.id.cancel_btt)!!
|
||||
val subsSettings = sourceDialog.findViewById<ImageView>(R.id.subs_settings)!!
|
||||
|
||||
subsSettings.setOnClickListener {
|
||||
SubtitlesFragment.push(activity)
|
||||
}
|
||||
|
||||
val startSource = sources.indexOf(getCurrentUrl())
|
||||
var sourceIndex = startSource
|
||||
|
@ -1450,6 +1419,7 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
override fun onDestroy() {
|
||||
savePos()
|
||||
SubtitlesFragment.applyStyleEvent -= ::onSubStyleChanged
|
||||
|
||||
super.onDestroy()
|
||||
canEnterPipMode = false
|
||||
|
|
|
@ -330,9 +330,7 @@ class ResultFragment : Fragment() {
|
|||
return true
|
||||
}
|
||||
|
||||
val skipLoading = if (apiName != null) {
|
||||
getApiFromName(apiName).instantLinkLoading
|
||||
} else false
|
||||
val skipLoading = getApiFromName(apiName).instantLinkLoading
|
||||
|
||||
var loadingDialog: AlertDialog? = null
|
||||
val currentLoad = currentLoadingCount
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
|||
import com.lagradost.cloudstream3.utils.UIHelper.getGridIsCompact
|
||||
import com.lagradost.cloudstream3.mvvm.Resource
|
||||
import com.lagradost.cloudstream3.mvvm.observe
|
||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
|
||||
import kotlinx.android.synthetic.main.fragment_search.*
|
||||
|
||||
|
@ -171,8 +172,8 @@ class SearchFragment : Fragment() {
|
|||
}, 200)
|
||||
}
|
||||
}
|
||||
main_search.onActionViewExpanded()
|
||||
|
||||
// main_search.onActionViewExpanded()
|
||||
SubtitlesFragment.push(activity)
|
||||
//searchViewModel.search("iron man")
|
||||
//(activity as AppCompatActivity).loadResult("https://shiro.is/overlord-dubbed", "overlord-dubbed", "Shiro")
|
||||
/*
|
||||
|
@ -184,4 +185,5 @@ class SearchFragment : Fragment() {
|
|||
.add(R.id.homeRoot, PlayerFragment.newInstance(PlayerData(0, null,0)))
|
||||
.commit()*/
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,263 @@
|
|||
package com.lagradost.cloudstream3.ui.subtitles
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.os.Bundle
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import com.google.android.exoplayer2.text.Cue
|
||||
import com.google.android.exoplayer2.ui.CaptionStyleCompat
|
||||
import com.jaredrummler.android.colorpicker.ColorPickerDialog
|
||||
import com.lagradost.cloudstream3.MainActivity
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.utils.DataStore.getKey
|
||||
import com.lagradost.cloudstream3.utils.DataStore.setKey
|
||||
import com.lagradost.cloudstream3.utils.Event
|
||||
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.popCurrentPage
|
||||
import kotlinx.android.synthetic.main.subtitle_settings.*
|
||||
|
||||
const val SUBTITLE_KEY = "subtitle_settings"
|
||||
|
||||
data class SaveCaptionStyle(
|
||||
var foregroundColor: Int,
|
||||
var backgroundColor: Int,
|
||||
var windowColor: Int,
|
||||
@CaptionStyleCompat.EdgeType
|
||||
var edgeType: Int,
|
||||
var edgeColor: Int,
|
||||
var typeface: String?,
|
||||
/**in dp**/
|
||||
var elevation: Int,
|
||||
)
|
||||
|
||||
class SubtitlesFragment : Fragment() {
|
||||
companion object {
|
||||
val applyStyleEvent = Event<SaveCaptionStyle>()
|
||||
|
||||
fun fromSaveToStyle(data: SaveCaptionStyle): CaptionStyleCompat {
|
||||
return CaptionStyleCompat(
|
||||
data.foregroundColor, data.backgroundColor, data.windowColor, data.edgeType, data.edgeColor,
|
||||
Typeface.SANS_SERIF
|
||||
)
|
||||
}
|
||||
|
||||
fun push(activity: Activity?) {
|
||||
(activity as FragmentActivity?)?.supportFragmentManager?.beginTransaction()
|
||||
?.setCustomAnimations(
|
||||
R.anim.enter_anim,
|
||||
R.anim.exit_anim,
|
||||
R.anim.pop_enter,
|
||||
R.anim.pop_exit
|
||||
)
|
||||
?.add(
|
||||
R.id.homeRoot,
|
||||
SubtitlesFragment()
|
||||
)
|
||||
?.commit()
|
||||
}
|
||||
|
||||
private fun getDefColor(id: Int): Int {
|
||||
return when (id) {
|
||||
0 -> Color.WHITE
|
||||
1 -> Color.BLACK
|
||||
2 -> Color.TRANSPARENT
|
||||
3 -> Color.TRANSPARENT
|
||||
else -> Color.TRANSPARENT
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.saveStyle(style: SaveCaptionStyle) {
|
||||
this.setKey(SUBTITLE_KEY, style)
|
||||
}
|
||||
|
||||
fun Context.getCurrentSavedStyle(): SaveCaptionStyle {
|
||||
return this.getKey(SUBTITLE_KEY) ?: SaveCaptionStyle(
|
||||
getDefColor(0),
|
||||
getDefColor(2),
|
||||
getDefColor(3),
|
||||
CaptionStyleCompat.EDGE_TYPE_OUTLINE,
|
||||
getDefColor(1),
|
||||
null,
|
||||
0,
|
||||
)
|
||||
}
|
||||
|
||||
private fun Context.getCurrentStyle(): CaptionStyleCompat {
|
||||
return fromSaveToStyle(getCurrentSavedStyle())
|
||||
}
|
||||
|
||||
private fun getPixels(unit: Int, size: Float): Int {
|
||||
val metrics: DisplayMetrics = Resources.getSystem().displayMetrics
|
||||
return TypedValue.applyDimension(unit, size, metrics).toInt()
|
||||
}
|
||||
}
|
||||
|
||||
private fun onColorSelected(stuff: Pair<Int, Int>) {
|
||||
setColor(stuff.first, stuff.second)
|
||||
}
|
||||
|
||||
private fun setColor(id: Int, color: Int?) {
|
||||
val realColor = color ?: getDefColor(id)
|
||||
when (id) {
|
||||
0 -> state.foregroundColor = realColor
|
||||
1 -> state.edgeColor = realColor
|
||||
2 -> state.backgroundColor = realColor
|
||||
3 -> state.windowColor = realColor
|
||||
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
updateState()
|
||||
}
|
||||
|
||||
fun updateState() {
|
||||
subtitle_text?.setStyle(fromSaveToStyle(state))
|
||||
}
|
||||
|
||||
private fun getColor(id: Int): Int {
|
||||
val color = when (id) {
|
||||
0 -> state.foregroundColor
|
||||
1 -> state.edgeColor
|
||||
2 -> state.backgroundColor
|
||||
3 -> state.windowColor
|
||||
|
||||
else -> Color.TRANSPARENT
|
||||
}
|
||||
|
||||
return if (color == Color.TRANSPARENT) Color.BLACK else color
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?,
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.subtitle_settings, container, false)
|
||||
}
|
||||
|
||||
lateinit var state: SaveCaptionStyle
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
MainActivity.onColorSelectedEvent -= ::onColorSelected
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
MainActivity.onColorSelectedEvent += ::onColorSelected
|
||||
|
||||
context?.fixPaddingStatusbar(subs_root)
|
||||
|
||||
state = requireContext().getCurrentSavedStyle()
|
||||
updateState()
|
||||
|
||||
fun View.setup(id: Int) {
|
||||
this.setOnClickListener {
|
||||
activity?.let {
|
||||
ColorPickerDialog.newBuilder()
|
||||
.setDialogId(id)
|
||||
.setColor(getColor(id))
|
||||
.show(it)
|
||||
}
|
||||
}
|
||||
|
||||
this.setOnLongClickListener {
|
||||
setColor(id, null)
|
||||
Toast.makeText(it.context, R.string.subs_default_reset_toast, Toast.LENGTH_SHORT).show()
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
}
|
||||
|
||||
subs_text_color.setup(0)
|
||||
subs_outline_color.setup(1)
|
||||
subs_background_color.setup(2)
|
||||
subs_window_color.setup(3)
|
||||
|
||||
subs_subtitle_elevation.setOnClickListener { textView ->
|
||||
val elevationTypes = listOf(
|
||||
Pair(0, "None"),
|
||||
Pair(10, "10"),
|
||||
Pair(20, "20"),
|
||||
Pair(30, "30"),
|
||||
Pair(40, "40"),
|
||||
)
|
||||
|
||||
textView.context.showBottomDialog(
|
||||
elevationTypes.map { it.second },
|
||||
elevationTypes.map { it.first }.indexOf(state.elevation),
|
||||
(textView as TextView).text.toString(),
|
||||
false
|
||||
) { index ->
|
||||
state.elevation = elevationTypes.map { it.first }[index]
|
||||
updateState()
|
||||
}
|
||||
}
|
||||
|
||||
subs_subtitle_elevation.setOnLongClickListener {
|
||||
state.elevation = 0
|
||||
updateState()
|
||||
Toast.makeText(it.context, R.string.subs_default_reset_toast, Toast.LENGTH_SHORT).show()
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
|
||||
subs_edge_type.setOnClickListener { textView ->
|
||||
val edgeTypes = listOf(
|
||||
Pair(CaptionStyleCompat.EDGE_TYPE_NONE, "None"),
|
||||
Pair(CaptionStyleCompat.EDGE_TYPE_OUTLINE, "Outline"),
|
||||
Pair(CaptionStyleCompat.EDGE_TYPE_DEPRESSED, "Depressed"),
|
||||
Pair(CaptionStyleCompat.EDGE_TYPE_DROP_SHADOW, "Shadow"),
|
||||
Pair(CaptionStyleCompat.EDGE_TYPE_RAISED, "Raised"),
|
||||
)
|
||||
|
||||
textView.context.showBottomDialog(
|
||||
edgeTypes.map { it.second },
|
||||
edgeTypes.map { it.first }.indexOf(state.edgeType),
|
||||
(textView as TextView).text.toString(),
|
||||
false
|
||||
) { index ->
|
||||
state.edgeType = edgeTypes.map { it.first }[index]
|
||||
updateState()
|
||||
}
|
||||
}
|
||||
|
||||
subs_edge_type.setOnLongClickListener {
|
||||
state.edgeType = CaptionStyleCompat.EDGE_TYPE_OUTLINE
|
||||
updateState()
|
||||
Toast.makeText(it.context, R.string.subs_default_reset_toast, Toast.LENGTH_SHORT).show()
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
|
||||
cancel_btt.setOnClickListener {
|
||||
activity?.popCurrentPage()
|
||||
}
|
||||
|
||||
apply_btt.setOnClickListener {
|
||||
applyStyleEvent.invoke(state)
|
||||
fromSaveToStyle(state)
|
||||
activity?.popCurrentPage()
|
||||
}
|
||||
|
||||
subtitle_text.setCues(
|
||||
listOf(
|
||||
Cue.Builder()
|
||||
.setTextSize(
|
||||
getPixels(TypedValue.COMPLEX_UNIT_SP, 25.0f).toFloat(),
|
||||
Cue.TEXT_SIZE_TYPE_ABSOLUTE
|
||||
)
|
||||
.setText("The quick brown fox jumps over the lazy dog").build()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
package com.lagradost.cloudstream3.utils
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.marginLeft
|
||||
import androidx.core.view.marginRight
|
||||
import androidx.core.view.marginTop
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.lagradost.cloudstream3.R
|
||||
|
||||
object SingleSelectionHelper {
|
||||
fun Context.showDialog(
|
||||
dialog: Dialog,
|
||||
items: List<String>,
|
||||
selectedIndex: Int,
|
||||
name: String,
|
||||
showApply: Boolean,
|
||||
callback: (Int) -> Unit
|
||||
) {
|
||||
val listView = dialog.findViewById<ListView>(R.id.listview1)!!
|
||||
val textView = dialog.findViewById<TextView>(R.id.text1)!!
|
||||
val applyButton = dialog.findViewById<TextView>(R.id.apply_btt)!!
|
||||
val cancelButton = dialog.findViewById<TextView>(R.id.cancel_btt)!!
|
||||
val applyHolder = dialog.findViewById<LinearLayout>(R.id.apply_btt_holder)!!
|
||||
|
||||
applyHolder.visibility = if (showApply) View.VISIBLE else View.GONE
|
||||
if (!showApply) {
|
||||
val params = listView.layoutParams as LinearLayout.LayoutParams
|
||||
params.setMargins(listView.marginLeft, listView.marginTop, listView.marginRight, 0)
|
||||
listView.layoutParams = params
|
||||
}
|
||||
|
||||
textView.text = name
|
||||
|
||||
val arrayAdapter = ArrayAdapter<String>(this, R.layout.sort_bottom_single_choice)
|
||||
arrayAdapter.addAll(items)
|
||||
|
||||
listView.adapter = arrayAdapter
|
||||
listView.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||
|
||||
listView.setSelection(selectedIndex)
|
||||
listView.setItemChecked(selectedIndex, true)
|
||||
|
||||
var currentIndex = selectedIndex
|
||||
|
||||
listView.setOnItemClickListener { _, _, which, _ ->
|
||||
if (showApply) {
|
||||
currentIndex = which
|
||||
listView.setItemChecked(which, true)
|
||||
} else {
|
||||
callback.invoke(which)
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
if (showApply) {
|
||||
applyButton.setOnClickListener {
|
||||
callback.invoke(currentIndex)
|
||||
dialog.dismiss()
|
||||
}
|
||||
cancelButton.setOnClickListener {
|
||||
dialog.dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.showDialog(
|
||||
items: List<String>,
|
||||
selectedIndex: Int,
|
||||
name: String,
|
||||
showApply: Boolean,
|
||||
callback: (Int) -> Unit
|
||||
) {
|
||||
val builder =
|
||||
AlertDialog.Builder(this, R.style.AlertDialogCustom).setView(R.layout.bottom_selection_dialog)
|
||||
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
showDialog(dialog, items, selectedIndex, name, showApply, callback)
|
||||
}
|
||||
|
||||
fun Context.showBottomDialog(
|
||||
items: List<String>,
|
||||
selectedIndex: Int,
|
||||
name: String,
|
||||
showApply: Boolean,
|
||||
callback: (Int) -> Unit
|
||||
) {
|
||||
val builder =
|
||||
BottomSheetDialog(this)
|
||||
builder.setContentView(R.layout.bottom_selection_dialog)
|
||||
|
||||
builder.show()
|
||||
showDialog(builder, items, selectedIndex, name, showApply, callback)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:startColor="#FFF"
|
||||
android:endColor="#000"
|
||||
android:angle="0"/>
|
||||
</shape>
|
|
@ -15,7 +15,7 @@
|
|||
android:id="@+id/nav_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/darkBackground"
|
||||
android:background="?attr/darkBackground"
|
||||
app:itemRippleColor="@color/colorRipple"
|
||||
app:labelVisibilityMode="labeled"
|
||||
|
||||
|
|
58
app/src/main/res/layout/bottom_selection_dialog.xml
Normal file
58
app/src/main/res/layout/bottom_selection_dialog.xml
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/bitDarkerGrayBackground"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text1"
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textStyle="bold"
|
||||
android:textSize="20sp"
|
||||
android:textColor="?attr/textColor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
tools:text="Test"
|
||||
android:layout_height="wrap_content">
|
||||
</TextView>
|
||||
<ListView
|
||||
android:id="@+id/listview1"
|
||||
android:layout_marginTop="-10dp"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:paddingTop="10dp"
|
||||
tools:listitem="@layout/sort_bottom_single_choice"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/apply_btt_holder"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="bottom"
|
||||
android:gravity="bottom|end"
|
||||
android:layout_marginTop="-60dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/WhiteButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/sort_apply"
|
||||
android:id="@+id/apply_btt"
|
||||
android:layout_width="wrap_content"
|
||||
/>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/BlackButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/sort_cancel"
|
||||
android:id="@+id/cancel_btt"
|
||||
android:layout_width="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -26,49 +26,22 @@
|
|||
android:layout_height="wrap_content">
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="50dp"
|
||||
android:layout_margin="5dp"
|
||||
|
||||
android:visibility="visible"
|
||||
android:textStyle="bold"
|
||||
app:rippleColor="?attr/grayBackground"
|
||||
android:textColor="?attr/grayBackground"
|
||||
app:iconTint="?attr/grayBackground"
|
||||
android:textAllCaps="false"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/grayBackground"
|
||||
app:backgroundTint="?attr/textColor"
|
||||
style="@style/WhiteButton"
|
||||
|
||||
app:icon="@drawable/ic_baseline_autorenew_24"
|
||||
app:iconSize="20dp"
|
||||
android:text="@string/reload_error"
|
||||
android:id="@+id/home_reload_connectionerror"
|
||||
android:textSize="15sp"
|
||||
app:cornerRadius="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:minWidth="200dp"
|
||||
>
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="50dp"
|
||||
android:layout_margin="5dp"
|
||||
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/textColor"
|
||||
android:backgroundTint="?attr/grayBackground"
|
||||
app:rippleColor="?attr/textColor"
|
||||
android:textColor="?attr/textColor"
|
||||
app:iconTint="?attr/textColor"
|
||||
android:textAllCaps="false"
|
||||
android:textStyle="bold"
|
||||
style="@style/BlackButton"
|
||||
|
||||
app:icon="@drawable/ic_baseline_public_24"
|
||||
app:iconSize="20dp"
|
||||
android:text="@string/result_open_in_browser"
|
||||
android:id="@+id/home_reload_connection_open_in_browser"
|
||||
android:textSize="15sp"
|
||||
app:cornerRadius="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:minWidth="200dp"
|
||||
>
|
||||
|
@ -147,48 +120,26 @@
|
|||
android:contentDescription="@string/home_next_random">
|
||||
</ImageView>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_margin="5dp"
|
||||
style="@style/WhiteButton"
|
||||
android:visibility="visible"
|
||||
android:layout_gravity="center"
|
||||
app:cornerRadius="4dp"
|
||||
android:id="@+id/home_main_play"
|
||||
android:text="@string/home_play"
|
||||
android:textStyle="bold"
|
||||
|
||||
app:rippleColor="?attr/grayBackground"
|
||||
android:textColor="?attr/grayBackground"
|
||||
app:iconTint="?attr/grayBackground"
|
||||
android:textAllCaps="false"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/grayBackground"
|
||||
app:backgroundTint="?attr/textColor"
|
||||
app:icon="@drawable/ic_baseline_play_arrow_24"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="50dp">
|
||||
android:layout_width="120dp">
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:layout_margin="5dp"
|
||||
style="@style/BlackButton"
|
||||
android:visibility="visible"
|
||||
android:layout_gravity="center"
|
||||
app:cornerRadius="4dp"
|
||||
android:text="@string/home_info"
|
||||
app:icon="@drawable/ic_outline_info_24"
|
||||
android:textStyle="bold"
|
||||
|
||||
android:id="@+id/home_main_info"
|
||||
app:rippleColor="?attr/textColor"
|
||||
android:textColor="?attr/textColor"
|
||||
app:iconTint="?attr/textColor"
|
||||
android:textAllCaps="false"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:backgroundTint="?attr/grayBackground"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/textColor"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="50dp">
|
||||
android:layout_width="120dp">
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
|
|
|
@ -306,46 +306,26 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/WhiteButton"
|
||||
android:visibility="visible"
|
||||
android:layout_gravity="center_vertical"
|
||||
app:cornerRadius="4dp"
|
||||
android:id="@+id/result_play_movie"
|
||||
android:text="@string/play_movie_button"
|
||||
android:textStyle="bold"
|
||||
|
||||
app:rippleColor="?attr/grayBackground"
|
||||
android:textColor="?attr/grayBackground"
|
||||
app:iconTint="?attr/grayBackground"
|
||||
android:textAllCaps="false"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/grayBackground"
|
||||
app:backgroundTint="?attr/textColor"
|
||||
app:icon="@drawable/ic_baseline_play_arrow_24"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp">
|
||||
android:layout_width="match_parent">
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/BlackButton"
|
||||
android:visibility="visible"
|
||||
android:layout_gravity="center_vertical"
|
||||
app:cornerRadius="4dp"
|
||||
tools:text="Downloading"
|
||||
tools:icon="@drawable/netflix_download"
|
||||
android:textStyle="bold"
|
||||
|
||||
android:id="@+id/result_download_movie"
|
||||
app:rippleColor="?attr/textColor"
|
||||
android:textColor="?attr/textColor"
|
||||
app:iconTint="?attr/textColor"
|
||||
android:textAllCaps="false"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:backgroundTint="?attr/grayBackground"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/textColor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp">
|
||||
android:layout_width="match_parent">
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
|
||||
<androidx.core.widget.ContentLoadingProgressBar
|
||||
|
|
|
@ -48,6 +48,10 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_weight="50">
|
||||
<FrameLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
|
@ -61,6 +65,21 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
</TextView>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/subs_settings"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_gravity="end"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
|
||||
android:src="@drawable/ic_outline_settings_24"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@string/home_change_provider">
|
||||
</ImageView>
|
||||
</FrameLayout>
|
||||
|
||||
<ListView
|
||||
android:layout_marginTop="-10dp"
|
||||
android:paddingTop="10dp"
|
||||
|
@ -83,49 +102,18 @@
|
|||
android:layout_height="60dp">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/WhiteButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_height="50dp"
|
||||
android:layout_margin="5dp"
|
||||
|
||||
android:visibility="visible"
|
||||
android:textStyle="bold"
|
||||
app:rippleColor="?attr/grayBackground"
|
||||
android:textColor="?attr/grayBackground"
|
||||
app:iconTint="?attr/grayBackground"
|
||||
android:textAllCaps="false"
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/grayBackground"
|
||||
app:backgroundTint="?attr/textColor"
|
||||
|
||||
app:iconSize="20dp"
|
||||
android:text="@string/sort_apply"
|
||||
android:id="@+id/pick_source_apply"
|
||||
android:textSize="15sp"
|
||||
app:cornerRadius="5dp"
|
||||
android:id="@+id/apply_btt"
|
||||
android:layout_width="wrap_content"
|
||||
>
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
/>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/BlackButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_height="50dp"
|
||||
android:layout_margin="5dp"
|
||||
|
||||
app:iconGravity="textStart"
|
||||
app:strokeColor="?attr/textColor"
|
||||
android:backgroundTint="?attr/grayBackground"
|
||||
app:rippleColor="?attr/textColor"
|
||||
android:textColor="?attr/textColor"
|
||||
app:iconTint="?attr/textColor"
|
||||
android:textAllCaps="false"
|
||||
android:textStyle="bold"
|
||||
|
||||
app:iconSize="20dp"
|
||||
android:text="@string/sort_cancel"
|
||||
android:id="@+id/pick_source_cancel"
|
||||
android:textSize="15sp"
|
||||
app:cornerRadius="5dp"
|
||||
android:id="@+id/cancel_btt"
|
||||
android:layout_width="wrap_content"
|
||||
>
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
92
app/src/main/res/layout/subtitle_settings.xml
Normal file
92
app/src/main/res/layout/subtitle_settings.xml
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/subs_root"
|
||||
android:background="?attr/bitDarkerGrayBackground"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/subtitles_settings"
|
||||
android:textSize="20sp"
|
||||
android:textColor="?attr/textColor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_height="wrap_content">
|
||||
</TextView>
|
||||
|
||||
<com.google.android.exoplayer2.ui.SubtitleView
|
||||
android:id="@+id/subtitle_text"
|
||||
android:background="@drawable/subtitles_background_gradient"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:foregroundGravity="center"
|
||||
android:layout_height="75sp">
|
||||
</com.google.android.exoplayer2.ui.SubtitleView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subs_text_color"
|
||||
android:text="@string/subs_text_color"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/subs_outline_color"
|
||||
android:text="@string/subs_outline_color"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/subs_background_color"
|
||||
android:text="@string/subs_background_color"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/subs_window_color"
|
||||
android:text="@string/subs_window_color"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/subs_edge_type"
|
||||
android:text="@string/subs_edge_type"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/subs_subtitle_elevation"
|
||||
android:text="@string/subs_subtitle_elevation"
|
||||
style="@style/SettingsItem"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="bottom"
|
||||
android:gravity="bottom|end"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/WhiteButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:visibility="visible"
|
||||
android:text="@string/sort_apply"
|
||||
android:id="@+id/apply_btt"
|
||||
android:layout_width="wrap_content"
|
||||
/>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/BlackButton"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/sort_cancel"
|
||||
android:id="@+id/cancel_btt"
|
||||
android:layout_width="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
|
@ -70,4 +70,12 @@
|
|||
<string name="sort_apply">Apply</string>
|
||||
<string name="sort_cancel">Cancel</string>
|
||||
<string name="player_speed">Player Speed</string>
|
||||
<string name="subtitles_settings">Subtitle Settings</string>
|
||||
<string name="subs_text_color">Text Color</string>
|
||||
<string name="subs_outline_color">Outline Color</string>
|
||||
<string name="subs_background_color">Background Color</string>
|
||||
<string name="subs_window_color">Window Color</string>
|
||||
<string name="subs_edge_type">Edge Type</string>
|
||||
<string name="subs_subtitle_elevation">Subtitle Elevation</string>
|
||||
<string name="subs_default_reset_toast">Reset to default value</string>
|
||||
</resources>
|
|
@ -132,6 +132,48 @@
|
|||
<item name="android:backgroundTint">?attr/bitDarkerGrayBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="SettingsItem">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">50sp</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:paddingStart">20dp</item>
|
||||
<item name="android:paddingEnd">20dp</item>
|
||||
<item name="android:selectAllOnFocus">true</item>
|
||||
<item name="android:background">@color/transparent</item>
|
||||
<item name="android:textColor">?attr/textColor</item>
|
||||
<item name="android:foreground">?attr/selectableItemBackgroundBorderless</item>
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceListItemSmall</item>
|
||||
<item name="drawableEndCompat">@drawable/ic_baseline_keyboard_arrow_right_24</item>
|
||||
</style>
|
||||
|
||||
<style name="NiceButton">
|
||||
<item name="android:layout_marginStart">5dp</item>
|
||||
<item name="android:layout_marginEnd">5dp</item>
|
||||
<item name="android:layout_height">50dp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="android:textAllCaps">false</item>
|
||||
<item name="iconGravity">textStart</item>
|
||||
<item name="iconSize">20dp</item>
|
||||
<item name="cornerRadius">4dp</item>
|
||||
<item name="android:textSize">15sp</item>
|
||||
</style>
|
||||
|
||||
<style name="WhiteButton" parent="NiceButton">
|
||||
<item name="strokeColor">?attr/grayBackground</item>
|
||||
<item name="backgroundTint">?attr/textColor</item>
|
||||
<item name="iconTint">?attr/grayBackground</item>
|
||||
<item name="android:textColor">?attr/grayBackground</item>
|
||||
<item name="rippleColor">?attr/grayBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="BlackButton" parent="NiceButton">
|
||||
<item name="strokeColor">?attr/textColor</item>
|
||||
<item name="backgroundTint">?attr/grayBackground</item>
|
||||
<item name="iconTint">?attr/textColor</item>
|
||||
<item name="android:textColor">?attr/textColor</item>
|
||||
<item name="rippleColor">?attr/textColor</item>
|
||||
</style>
|
||||
|
||||
<!-- CHROMECAST -->
|
||||
<style name="CustomCastExpandedController" parent="CastExpandedController">
|
||||
<item name="castControlButtons">
|
||||
|
@ -139,7 +181,8 @@
|
|||
</item>
|
||||
<item name="castButtonColor">@null</item>
|
||||
<item name="castSeekBarProgressAndThumbColor">@color/white</item> <!--@color/white ?attr/colorPrimary-->
|
||||
<item name="castSeekBarSecondaryProgressColor">?attr/darkBackground</item> <!--CHECK ?attr/darkBackground ?attr/colorPrimary-->
|
||||
<item name="castSeekBarSecondaryProgressColor">?attr/darkBackground
|
||||
</item> <!--CHECK ?attr/darkBackground ?attr/colorPrimary-->
|
||||
<item name="castBackground">?attr/colorPrimary</item>
|
||||
<item name="castProgressBarColor">?attr/colorPrimary</item>
|
||||
<item name="castPlayButtonDrawable">@drawable/ic_baseline_play_arrow_24</item>
|
||||
|
|
Loading…
Reference in a new issue