diff --git a/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt b/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt index 12ab1fb7e1..580dcb892c 100644 --- a/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt +++ b/app/src/main/java/org/jellyfin/androidtv/preference/UserPreferences.kt @@ -84,6 +84,11 @@ class UserPreferences(context: Context) : SharedPreferenceStore( */ var resumeSubtractDuration = stringPreference("pref_resume_preroll", "0") + /** + * Duration in seconds to subtract from resume time + */ + var subtitleFGColor = stringPreference("subtitleFGColor", "#ffffffff") + /** * Enable cinema mode */ diff --git a/app/src/main/java/org/jellyfin/androidtv/ui/preference/custom/RichListDialogFragment.kt b/app/src/main/java/org/jellyfin/androidtv/ui/preference/custom/RichListDialogFragment.kt index 1c5007f3ec..178289d117 100644 --- a/app/src/main/java/org/jellyfin/androidtv/ui/preference/custom/RichListDialogFragment.kt +++ b/app/src/main/java/org/jellyfin/androidtv/ui/preference/custom/RichListDialogFragment.kt @@ -1,10 +1,12 @@ package org.jellyfin.androidtv.ui.preference.custom import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Checkable +import android.widget.RadioButton import android.widget.TextView import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isVisible @@ -15,6 +17,8 @@ import androidx.recyclerview.widget.RecyclerView import org.jellyfin.androidtv.R import org.jellyfin.androidtv.databinding.PreferenceRichListBinding + + class RichListDialogFragment : LeanbackPreferenceDialogFragmentCompat() { companion object { fun newInstance(key: String) = RichListDialogFragment().apply { @@ -53,6 +57,8 @@ class RichListDialogFragment : LeanbackPreferenceDialogFragmentCompat() { val styledInflater = inflater.cloneInContext(styledContext) binding = PreferenceRichListBinding.inflate(styledInflater, container, false) + + //Log.d("CUSTOMRYAN",button?.) // Dialog binding.decorTitle.text = preference.dialogTitle @@ -112,6 +118,7 @@ class RichListDialogFragment : LeanbackPreferenceDialogFragmentCompat() { holder as OptionViewHolder holder.button.isChecked = item.key == selectedValue + holder.button_fg.background=resources.getColor(R.color.subtitles_white) holder.title.text = item.title holder.summary.text = item.summary holder.summary.isVisible = item.summary?.isNotBlank() == true @@ -146,6 +153,7 @@ class RichListDialogFragment : LeanbackPreferenceDialogFragmentCompat() { private val clickListener: (viewHolder: OptionViewHolder) -> Unit ) : RecyclerView.ViewHolder(view), View.OnClickListener { val button = view.findViewById(R.id.button) as Checkable + val button_fg = view.findViewById(R.id.button) val title = view.findViewById(R.id.title) val summary = view.findViewById(R.id.summary) val container = view.findViewById(R.id.container).also { diff --git a/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt b/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt index 79c272c619..e3b092bfae 100644 --- a/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt +++ b/app/src/main/java/org/jellyfin/androidtv/ui/preference/screen/PlaybackPreferencesScreen.kt @@ -2,6 +2,7 @@ package org.jellyfin.androidtv.ui.preference.screen import android.app.AlertDialog import org.jellyfin.androidtv.R +import org.jellyfin.androidtv.auth.store.AuthenticationPreferences import org.jellyfin.androidtv.preference.UserPreferences import org.jellyfin.androidtv.preference.constant.AudioBehavior import org.jellyfin.androidtv.preference.constant.NEXTUP_TIMER_DISABLED @@ -70,6 +71,15 @@ class PlaybackPreferencesScreen : OptionsFragment() { } bind(userPreferences, UserPreferences.resumeSubtractDuration) } + @Suppress("MagicNumber") + list { + setTitle(R.string.lbl_subtitle_fg) + val subtitlecolorskeys = context.resources.getStringArray(R.array.pref_subtitle_color_keys) + val subtitlecolorsvalues = context.resources.getIntArray(R.array.pref_subtitle_color_values).map{ "#"+Integer.toHexString(it)}.toTypedArray() + entries = subtitlecolorsvalues.zip(subtitlecolorskeys).toMap() + bind(userPreferences, UserPreferences.subtitleFGColor) + + } checkbox { setTitle(R.string.lbl_tv_queuing) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3ea132e1fd..82e7af4b09 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -237,6 +237,7 @@ Last Played Channel Number Resume pre-roll + Subtitle Foreground Color Resume from %1$s More Like This Previous Episode @@ -444,6 +445,14 @@ Media Enable background Show a black background behind the subtitles + White + Black + Red + Green + Blue + Yellow + Pink + Cyan Text size Unable to connect Server software is incompatible diff --git a/app/src/main/res/values/subtitle_colors.xml b/app/src/main/res/values/subtitle_colors.xml new file mode 100644 index 0000000000..1c09fd1b71 --- /dev/null +++ b/app/src/main/res/values/subtitle_colors.xml @@ -0,0 +1,33 @@ + + + + #FFFFFF + #000000 + #C80000 + #00C800 + #0000C8 + #EEDC00 + #D60080 + #009FDA + + @string/pref_subtitles_color_white + @string/pref_subtitles_color_black + @string/pref_subtitles_color_red + @string/pref_subtitles_color_green + @string/pref_subtitles_color_blue + @string/pref_subtitles_color_yellow + @string/pref_subtitles_color_pink + @string/pref_subtitles_color_cyan + + + @color/subtitles_white + @color/subtitles_black + @color/subtitles_red + @color/subtitles_green + @color/subtitles_blue + @color/subtitles_yellow + @color/subtitles_pink + @color/subtitles_cyan + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 012d6d9044..8049c684f0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=cb87f222c5585bd46838ad4db78463a5c5f3d336e5e2b98dc7c0c586527351c2 distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists