Verbesserungen: Admin-Passwort Hinweis, Mobile Skalierung in PreviewScreen, Rahmen-Menü Toggle, Footer Layout Fix

This commit is contained in:
2026-07-04 19:56:50 +02:00
parent 4be915ef90
commit 715b2679f1
3 changed files with 34 additions and 21 deletions
+20 -18
View File
@@ -63,6 +63,7 @@ export default function PreviewScreen({
const { width, height } = useWindowDimensions();
const isPortrait = height > width;
const isSmallDevice = width < 768;
const [activeUris, setActiveUris] = useState<string[]>([]);
@@ -117,6 +118,7 @@ export default function PreviewScreen({
};
}, []);
const [showStickerTray, setShowStickerTray] = useState<boolean>(false);
const [showFrameTray, setShowFrameTray] = useState<boolean>(false);
React.useEffect(() => {
logger.log(`PreviewScreen mounted with ${photoUris.length} photos.`);
@@ -537,10 +539,10 @@ export default function PreviewScreen({
{/* Right panel: Controls */}
<ScrollView
style={[styles.controlPanel, { flex: isPortrait ? 1 : 0.8 }]}
style={[styles.controlPanel, { flex: isPortrait ? 1 : 0.8, padding: isSmallDevice ? THEME.spacing.md : THEME.spacing.xl }]}
contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}
>
<Text style={styles.header}>{eventText}</Text>
<Text style={[styles.header, isSmallDevice && { fontSize: 18, marginBottom: THEME.spacing.sm }]}>{eventText}</Text>
{/* Thumbnail Reel for Photo Selection */}
{photoUris.length > 1 && (
@@ -581,8 +583,12 @@ export default function PreviewScreen({
{/* Editing Tools Row */}
<View style={styles.editToolsRow}>
<TouchableOpacity
style={[styles.editToolBtn, showStickerTray && styles.editToolBtnActive]}
onPress={() => { logger.log(`Action: Toggled sticker tray ${!showStickerTray}`); setShowStickerTray(!showStickerTray); }}
style={[styles.editToolBtn, isSmallDevice && { paddingVertical: 8, paddingHorizontal: 12 }, showStickerTray && styles.editToolBtnActive]}
onPress={() => {
logger.log(`Action: Toggled sticker tray ${!showStickerTray}`);
setShowStickerTray(!showStickerTray);
if (!showStickerTray) setShowFrameTray(false);
}}
>
<FontAwesomeIcon
icon={faFaceGrinStars}
@@ -596,23 +602,19 @@ export default function PreviewScreen({
{frameMode === 'available' && (
<TouchableOpacity
style={[styles.editToolBtn, selectedFrameId !== null && styles.editToolBtnActive]}
style={[styles.editToolBtn, isSmallDevice && { paddingVertical: 8, paddingHorizontal: 12 }, showFrameTray && styles.editToolBtnActive]}
onPress={() => {
if (selectedFrameId !== null) {
logger.log('Action: Removed frame');
setSelectedFrameId(null);
} else {
logger.log('Action: Toggled frame selection');
}
// FramePicker is shown below
logger.log(`Action: Toggled frame tray ${!showFrameTray}`);
setShowFrameTray(!showFrameTray);
if (!showFrameTray) setShowStickerTray(false);
}}
>
<FontAwesomeIcon
icon={faBorderAll}
size={22}
color={selectedFrameId !== null ? THEME.colors.text : THEME.colors.accent}
color={showFrameTray ? THEME.colors.text : THEME.colors.accent}
/>
<Text style={[styles.editToolText, selectedFrameId !== null && styles.editToolTextActive]}>
<Text style={[styles.editToolText, showFrameTray && styles.editToolTextActive]}>
Rahmen
</Text>
</TouchableOpacity>
@@ -620,7 +622,7 @@ export default function PreviewScreen({
</View>
{/* Frame Picker (when mode = available) */}
{frameMode === 'available' && (
{frameMode === 'available' && showFrameTray && (
<FramePicker
selectedFrameId={selectedFrameId}
onSelectFrame={(id) => {
@@ -633,12 +635,12 @@ export default function PreviewScreen({
{/* Action Buttons */}
<View style={styles.actions}>
<TouchableOpacity style={[styles.actionBtn, styles.printBtn, isProcessing && styles.btnDisabled]} onPress={handlePrint} activeOpacity={0.8} disabled={isProcessing}>
<TouchableOpacity style={[styles.actionBtn, styles.printBtn, isProcessing && styles.btnDisabled, isSmallDevice && { marginBottom: THEME.spacing.sm }]} onPress={handlePrint} activeOpacity={0.8} disabled={isProcessing}>
<LinearGradient
colors={THEME.gradient.primary}
start={{ x: 0, y: 0.5 }}
end={{ x: 1, y: 0.5 }}
style={styles.printGradient}
style={[styles.printGradient, isSmallDevice && { paddingVertical: THEME.spacing.sm }]}
>
<FontAwesomeIcon icon={faPrint} size={18} color={THEME.colors.text} style={{ marginRight: 8 }} />
<Text style={styles.actionBtnText}>JETZT DRUCKEN</Text>
@@ -648,7 +650,7 @@ export default function PreviewScreen({
{photoUris.length < 4 && (
<TouchableOpacity style={[styles.actionBtn, styles.addBtn, isProcessing && styles.btnDisabled]} onPress={onAddAnother} disabled={isProcessing}>
<TouchableOpacity style={[styles.actionBtn, styles.addBtn, isProcessing && styles.btnDisabled, isSmallDevice && { paddingVertical: THEME.spacing.sm, marginBottom: THEME.spacing.sm }]} onPress={onAddAnother} disabled={isProcessing}>
<FontAwesomeIcon icon={faPlus} size={16} color={THEME.colors.text} style={{ marginRight: 8 }} />
<Text style={styles.actionBtnText}>Weiteres Foto aufnehmen</Text>
</TouchableOpacity>