From 897294fdfcf20b1eac9ab7231e78a9da6981e237 Mon Sep 17 00:00:00 2001 From: tapframe Date: Tue, 8 Jul 2025 15:51:51 +0530 Subject: [PATCH] Add subtitle background toggle functionality in AndroidVideoPlayer and SubtitleModals, enhancing user control over subtitle appearance. Update CustomSubtitles to reflect background setting. --- src/components/player/AndroidVideoPlayer.tsx | 8 +++ .../player/modals/SubtitleModals.tsx | 55 +++++++++++++++++++ .../player/subtitles/CustomSubtitles.tsx | 9 ++- src/components/player/utils/playerStyles.ts | 1 - 4 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src/components/player/AndroidVideoPlayer.tsx b/src/components/player/AndroidVideoPlayer.tsx index e95fafb88..be64877f3 100644 --- a/src/components/player/AndroidVideoPlayer.tsx +++ b/src/components/player/AndroidVideoPlayer.tsx @@ -145,6 +145,7 @@ const AndroidVideoPlayer: React.FC = () => { const [customSubtitles, setCustomSubtitles] = useState([]); const [currentSubtitle, setCurrentSubtitle] = useState(''); const [subtitleSize, setSubtitleSize] = useState(DEFAULT_SUBTITLE_SIZE); + const [subtitleBackground, setSubtitleBackground] = useState(true); const [useCustomSubtitles, setUseCustomSubtitles] = useState(false); const [isLoadingSubtitles, setIsLoadingSubtitles] = useState(false); const [availableSubtitles, setAvailableSubtitles] = useState([]); @@ -895,6 +896,10 @@ const AndroidVideoPlayer: React.FC = () => { saveSubtitleSize(newSize); }; + const toggleSubtitleBackground = () => { + setSubtitleBackground(!subtitleBackground); + }; + useEffect(() => { if (pendingSeek && isPlayerReady && isVideoLoaded && duration > 0) { logger.log(`[AndroidVideoPlayer] Player ready after source change, seeking to position: ${pendingSeek.position}s out of ${duration}s total`); @@ -1196,6 +1201,7 @@ const AndroidVideoPlayer: React.FC = () => { useCustomSubtitles={useCustomSubtitles} currentSubtitle={currentSubtitle} subtitleSize={subtitleSize} + subtitleBackground={subtitleBackground} zoomScale={zoomScale} /> @@ -1232,11 +1238,13 @@ const AndroidVideoPlayer: React.FC = () => { selectedTextTrack={selectedTextTrack} useCustomSubtitles={useCustomSubtitles} subtitleSize={subtitleSize} + subtitleBackground={subtitleBackground} fetchAvailableSubtitles={fetchAvailableSubtitles} loadWyzieSubtitle={loadWyzieSubtitle} selectTextTrack={selectTextTrack} increaseSubtitleSize={increaseSubtitleSize} decreaseSubtitleSize={decreaseSubtitleSize} + toggleSubtitleBackground={toggleSubtitleBackground} /> void; loadWyzieSubtitle: (subtitle: WyzieSubtitle) => void; selectTextTrack: (trackId: number) => void; increaseSubtitleSize: () => void; decreaseSubtitleSize: () => void; + toggleSubtitleBackground: () => void; } const { width, height } = Dimensions.get('window'); @@ -47,11 +49,13 @@ export const SubtitleModals: React.FC = ({ selectedTextTrack, useCustomSubtitles, subtitleSize, + subtitleBackground, fetchAvailableSubtitles, loadWyzieSubtitle, selectTextTrack, increaseSubtitleSize, decreaseSubtitleSize, + toggleSubtitleBackground, }) => { // Track which specific online subtitle is currently loaded const [selectedOnlineSubtitleId, setSelectedOnlineSubtitleId] = React.useState(null); @@ -224,6 +228,57 @@ export const SubtitleModals: React.FC = ({ + {/* Background Toggle Section */} + + + Background + + + + + Show Background + + + + + + + + {/* Built-in Subtitles */} {vlcTextTracks.length > 0 && ( diff --git a/src/components/player/subtitles/CustomSubtitles.tsx b/src/components/player/subtitles/CustomSubtitles.tsx index dc0c23948..38338769d 100644 --- a/src/components/player/subtitles/CustomSubtitles.tsx +++ b/src/components/player/subtitles/CustomSubtitles.tsx @@ -6,6 +6,7 @@ interface CustomSubtitlesProps { useCustomSubtitles: boolean; currentSubtitle: string; subtitleSize: number; + subtitleBackground: boolean; zoomScale?: number; // current video zoom scale; defaults to 1 } @@ -13,6 +14,7 @@ export const CustomSubtitles: React.FC = ({ useCustomSubtitles, currentSubtitle, subtitleSize, + subtitleBackground, zoomScale = 1, }) => { if (!useCustomSubtitles || !currentSubtitle) return null; @@ -23,7 +25,12 @@ export const CustomSubtitles: React.FC = ({ style={styles.customSubtitleContainer} pointerEvents="none" > - +