sub default changes

This commit is contained in:
tapframe 2025-10-12 11:21:51 +05:30
parent fb8b65e61b
commit 362000d6df
4 changed files with 35 additions and 52 deletions

View file

@ -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);
};

View file

@ -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);
};

View file

@ -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);

View file

@ -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';