mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
sub default changes
This commit is contained in:
parent
fb8b65e61b
commit
362000d6df
4 changed files with 35 additions and 52 deletions
|
|
@ -401,7 +401,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
const [currentSubtitle, setCurrentSubtitle] = useState<string>('');
|
||||
const [customSubtitleVersion, setCustomSubtitleVersion] = useState<number>(0);
|
||||
const [subtitleSize, setSubtitleSize] = useState<number>(DEFAULT_SUBTITLE_SIZE);
|
||||
const [subtitleBackground, setSubtitleBackground] = useState<boolean>(true);
|
||||
const [subtitleBackground, setSubtitleBackground] = useState<boolean>(false);
|
||||
// iOS seeking helpers
|
||||
const iosWasPausedDuringSeekRef = useRef<boolean | null>(null);
|
||||
const wasPlayingBeforeDragRef = useRef<boolean>(false);
|
||||
|
|
@ -409,11 +409,11 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
const [subtitleTextColor, setSubtitleTextColor] = useState<string>('#FFFFFF');
|
||||
const [subtitleBgOpacity, setSubtitleBgOpacity] = useState<number>(0.7);
|
||||
const [subtitleTextShadow, setSubtitleTextShadow] = useState<boolean>(true);
|
||||
const [subtitleOutline, setSubtitleOutline] = useState<boolean>(false);
|
||||
const [subtitleOutline, setSubtitleOutline] = useState<boolean>(true);
|
||||
const [subtitleOutlineColor, setSubtitleOutlineColor] = useState<string>('#000000');
|
||||
const [subtitleOutlineWidth, setSubtitleOutlineWidth] = useState<number>(2);
|
||||
const [subtitleOutlineWidth, setSubtitleOutlineWidth] = useState<number>(4);
|
||||
const [subtitleAlign, setSubtitleAlign] = useState<'center' | 'left' | 'right'>('center');
|
||||
const [subtitleBottomOffset, setSubtitleBottomOffset] = useState<number>(20);
|
||||
const [subtitleBottomOffset, setSubtitleBottomOffset] = useState<number>(10);
|
||||
const [subtitleLetterSpacing, setSubtitleLetterSpacing] = useState<number>(0);
|
||||
const [subtitleLineHeightMultiplier, setSubtitleLineHeightMultiplier] = useState<number>(1.2);
|
||||
const [subtitleOffsetSec, setSubtitleOffsetSec] = useState<number>(0);
|
||||
|
|
@ -2309,9 +2309,14 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
} catch {}
|
||||
}
|
||||
try { await AsyncStorage.removeItem(SUBTITLE_SIZE_KEY); } catch {}
|
||||
return;
|
||||
}
|
||||
// If no saved settings, use default
|
||||
setSubtitleSize(DEFAULT_SUBTITLE_SIZE);
|
||||
} catch (error) {
|
||||
logger.error('[AndroidVideoPlayer] Error loading subtitle size:', error);
|
||||
// Fallback to default on error
|
||||
setSubtitleSize(DEFAULT_SUBTITLE_SIZE);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -2950,7 +2955,7 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
]);
|
||||
|
||||
const increaseSubtitleSize = () => {
|
||||
const newSize = Math.min(subtitleSize + 2, 32);
|
||||
const newSize = Math.min(subtitleSize + 2, 80);
|
||||
saveSubtitleSize(newSize);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -159,16 +159,16 @@ const KSPlayerCore: React.FC = () => {
|
|||
const [customSubtitles, setCustomSubtitles] = useState<SubtitleCue[]>([]);
|
||||
const [currentSubtitle, setCurrentSubtitle] = useState<string>('');
|
||||
const [subtitleSize, setSubtitleSize] = useState<number>(DEFAULT_SUBTITLE_SIZE);
|
||||
const [subtitleBackground, setSubtitleBackground] = useState<boolean>(true);
|
||||
const [subtitleBackground, setSubtitleBackground] = useState<boolean>(false);
|
||||
// External subtitle customization
|
||||
const [subtitleTextColor, setSubtitleTextColor] = useState<string>('#FFFFFF');
|
||||
const [subtitleBgOpacity, setSubtitleBgOpacity] = useState<number>(0.7);
|
||||
const [subtitleTextShadow, setSubtitleTextShadow] = useState<boolean>(true);
|
||||
const [subtitleOutline, setSubtitleOutline] = useState<boolean>(false);
|
||||
const [subtitleOutline, setSubtitleOutline] = useState<boolean>(true);
|
||||
const [subtitleOutlineColor, setSubtitleOutlineColor] = useState<string>('#000000');
|
||||
const [subtitleOutlineWidth, setSubtitleOutlineWidth] = useState<number>(2);
|
||||
const [subtitleOutlineWidth, setSubtitleOutlineWidth] = useState<number>(4);
|
||||
const [subtitleAlign, setSubtitleAlign] = useState<'center' | 'left' | 'right'>('center');
|
||||
const [subtitleBottomOffset, setSubtitleBottomOffset] = useState<number>(20);
|
||||
const [subtitleBottomOffset, setSubtitleBottomOffset] = useState<number>(10);
|
||||
const [subtitleLetterSpacing, setSubtitleLetterSpacing] = useState<number>(0);
|
||||
const [subtitleLineHeightMultiplier, setSubtitleLineHeightMultiplier] = useState<number>(1.2);
|
||||
const [subtitleOffsetSec, setSubtitleOffsetSec] = useState<number>(0);
|
||||
|
|
@ -1694,9 +1694,14 @@ const KSPlayerCore: React.FC = () => {
|
|||
} catch {}
|
||||
}
|
||||
try { await AsyncStorage.removeItem(SUBTITLE_SIZE_KEY); } catch {}
|
||||
return;
|
||||
}
|
||||
// If no saved settings, use default
|
||||
setSubtitleSize(DEFAULT_SUBTITLE_SIZE);
|
||||
} catch (error) {
|
||||
logger.error('[VideoPlayer] Error loading subtitle size:', error);
|
||||
// Fallback to default on error
|
||||
setSubtitleSize(DEFAULT_SUBTITLE_SIZE);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -2260,7 +2265,7 @@ const KSPlayerCore: React.FC = () => {
|
|||
}, [selectedAudioTrack, ksAudioTracks]);
|
||||
|
||||
const increaseSubtitleSize = () => {
|
||||
const newSize = Math.min(subtitleSize + 2, 32);
|
||||
const newSize = Math.min(subtitleSize + 2, 80);
|
||||
saveSubtitleSize(newSize);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -599,11 +599,11 @@ export const SubtitleModals: React.FC<SubtitleModalsProps> = ({
|
|||
setSubtitleTextColor('#FFFFFF');
|
||||
setSubtitleBgOpacity(0.7);
|
||||
setSubtitleTextShadow(true);
|
||||
setSubtitleOutline(false);
|
||||
setSubtitleOutline(true);
|
||||
setSubtitleOutlineColor('#000000');
|
||||
setSubtitleOutlineWidth(2);
|
||||
setSubtitleOutlineWidth(4);
|
||||
setSubtitleAlign('center');
|
||||
setSubtitleBottomOffset(20);
|
||||
setSubtitleBottomOffset(10);
|
||||
setSubtitleLetterSpacing(0);
|
||||
setSubtitleLineHeightMultiplier(1.2);
|
||||
}}
|
||||
|
|
@ -616,7 +616,7 @@ export const SubtitleModals: React.FC<SubtitleModalsProps> = ({
|
|||
setSubtitleTextColor('#FFD700');
|
||||
setSubtitleOutline(true);
|
||||
setSubtitleOutlineColor('#000000');
|
||||
setSubtitleOutlineWidth(2);
|
||||
setSubtitleOutlineWidth(4);
|
||||
setSubtitleBgOpacity(0.3);
|
||||
setSubtitleTextShadow(false);
|
||||
}}
|
||||
|
|
@ -643,7 +643,7 @@ export const SubtitleModals: React.FC<SubtitleModalsProps> = ({
|
|||
setSubtitleTextColor('#FFFFFF');
|
||||
setSubtitleBgOpacity(0.6);
|
||||
setSubtitleTextShadow(true);
|
||||
setSubtitleOutline(false);
|
||||
setSubtitleOutline(true);
|
||||
setSubtitleAlign('center');
|
||||
setSubtitleLineHeightMultiplier(1.3);
|
||||
}}
|
||||
|
|
@ -765,39 +765,12 @@ export const SubtitleModals: React.FC<SubtitleModalsProps> = ({
|
|||
</View>
|
||||
</View>
|
||||
|
||||
{/* Shadow & Outline */}
|
||||
<View style={{ flexDirection: isCompact ? 'column' : 'row', justifyContent: 'space-between', gap: 12 }}>
|
||||
{/* Shadow */}
|
||||
<View style={{ flex: 1, gap: 8 }}>
|
||||
<Text style={{ color: 'white', fontWeight: '600' }}>Text Shadow</Text>
|
||||
<TouchableOpacity onPress={() => setSubtitleTextShadow(!subtitleTextShadow)} style={{ paddingHorizontal: 10, paddingVertical: 8, borderRadius: 10, backgroundColor: subtitleTextShadow ? 'rgba(255,255,255,0.18)' : 'rgba(255,255,255,0.08)', borderWidth: 1, borderColor: 'rgba(255,255,255,0.15)', alignItems: 'center' }}>
|
||||
<Text style={{ color: '#fff', fontWeight: '700' }}>{subtitleTextShadow ? 'On' : 'Off'}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
{/* Outline */}
|
||||
<View style={{ flex: 1, gap: 8 }}>
|
||||
<Text style={{ color: 'white', fontWeight: '600' }}>Outline</Text>
|
||||
<TouchableOpacity onPress={() => {
|
||||
const next = !subtitleOutline;
|
||||
setSubtitleOutline(next);
|
||||
if (next) {
|
||||
// Apply sensible defaults when enabling outline unless user already set larger values
|
||||
if (subtitleSize < 24) {
|
||||
// increase by calling increase handler enough times or provide a direct setter via size controls
|
||||
// We only have +/- handlers here, so set via stepping until >= 24
|
||||
const steps = Math.ceil((24 - subtitleSize) / 1); // size is integer steps
|
||||
for (let i = 0; i < steps; i++) {
|
||||
increaseSubtitleSize();
|
||||
}
|
||||
}
|
||||
if (subtitleBottomOffset < 40) {
|
||||
setSubtitleBottomOffset(40);
|
||||
}
|
||||
}
|
||||
}} style={{ paddingHorizontal: 10, paddingVertical: 8, borderRadius: 10, backgroundColor: subtitleOutline ? 'rgba(255,255,255,0.18)' : 'rgba(255,255,255,0.08)', borderWidth: 1, borderColor: 'rgba(255,255,255,0.15)', alignItems: 'center' }}>
|
||||
<Text style={{ color: '#fff', fontWeight: '700' }}>{subtitleOutline ? 'On' : 'Off'}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
{/* Shadow */}
|
||||
<View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
|
||||
<Text style={{ color: 'white', fontWeight: '600' }}>Text Shadow</Text>
|
||||
<TouchableOpacity onPress={() => setSubtitleTextShadow(!subtitleTextShadow)} style={{ paddingHorizontal: 10, paddingVertical: 8, borderRadius: 10, backgroundColor: subtitleTextShadow ? 'rgba(255,255,255,0.18)' : 'rgba(255,255,255,0.08)', borderWidth: 1, borderColor: 'rgba(255,255,255,0.15)', alignItems: 'center' }}>
|
||||
<Text style={{ color: '#fff', fontWeight: '700' }}>{subtitleTextShadow ? 'On' : 'Off'}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
{/* Outline color & width */}
|
||||
<View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
|
||||
|
|
@ -881,11 +854,11 @@ export const SubtitleModals: React.FC<SubtitleModalsProps> = ({
|
|||
setSubtitleTextColor('#FFFFFF');
|
||||
setSubtitleBgOpacity(0.7);
|
||||
setSubtitleTextShadow(true);
|
||||
setSubtitleOutline(false);
|
||||
setSubtitleOutline(true);
|
||||
setSubtitleOutlineColor('#000000');
|
||||
setSubtitleOutlineWidth(2);
|
||||
setSubtitleOutlineWidth(4);
|
||||
setSubtitleAlign('center');
|
||||
setSubtitleBottomOffset(20);
|
||||
setSubtitleBottomOffset(10);
|
||||
setSubtitleLetterSpacing(0);
|
||||
setSubtitleLineHeightMultiplier(1.2);
|
||||
setSubtitleOffsetSec(0);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ export const RESUME_PREF = {
|
|||
};
|
||||
|
||||
export const SUBTITLE_SIZE_KEY = '@subtitle_size_preference';
|
||||
export const DEFAULT_SUBTITLE_SIZE = 16;
|
||||
export const DEFAULT_SUBTITLE_SIZE = 50;
|
||||
|
||||
// Define the TrackPreferenceType for audio/text tracks
|
||||
export type TrackPreferenceType = 'system' | 'disabled' | 'title' | 'language' | 'index';
|
||||
|
|
|
|||
Loading…
Reference in a new issue