Improve uploader UI and fix rollup platform dependency
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
<Grid Margin="24,32,24,24" RowDefinitions="Auto,*">
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal" Spacing="12" VerticalAlignment="Center">
|
||||
<Border Width="40" Height="40" Classes="card accent" VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||
<Image Source="avares://PhotoboothUploader/Assets/logo.png" Width="28" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
<Image Source="avares://AIStylegallery.PhotoboothUploader/Assets/logo.png" Width="28" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Border>
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock x:Name="TitleText"
|
||||
@@ -20,123 +20,180 @@
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Row="1" ColumnDefinitions="*,16,*">
|
||||
<StackPanel Grid.Column="0" Spacing="16" MaxWidth="420">
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Text="Zugangsdaten" FontWeight="SemiBold" />
|
||||
<TextBlock Text="Upload-URL" />
|
||||
<TextBox x:Name="ManualUploadUrlBox" Watermark="https://stylegallery.fotospiel.app/api/v1/photobooth/upload" />
|
||||
<TextBlock Text="Benutzername" />
|
||||
<TextBox x:Name="ManualUsernameBox" />
|
||||
<TextBlock Text="Passwort" />
|
||||
<TextBox x:Name="ManualPasswordBox" PasswordChar="•" />
|
||||
<TextBlock Text="Antwort-Format (optional)" />
|
||||
<ComboBox x:Name="ResponseFormatBox" SelectedIndex="0">
|
||||
<ComboBoxItem Content="Auto" />
|
||||
<ComboBoxItem Content="JSON" />
|
||||
<ComboBoxItem Content="XML" />
|
||||
</ComboBox>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="TestConnectionButton" Content="Verbindung testen" Click="TestConnectionButton_Click" Classes="secondary" />
|
||||
<Button x:Name="SaveAdvancedButton" Content="Speichern" Click="SaveAdvancedButton_Click" Classes="primary" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Upload-Ordner" FontWeight="SemiBold" />
|
||||
<TextBlock x:Name="FolderText" Text="Noch nicht ausgewählt." TextWrapping="Wrap" Classes="subtitle" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="DslrBoothPresetButton" Content="DSLrBooth" Click="DslrBoothPresetButton_Click" Classes="secondary" IsVisible="False" />
|
||||
<Button x:Name="SparkboothPresetButton" Content="Photobooth (Sparkbooth)" Click="SparkboothPresetButton_Click" Classes="secondary" IsVisible="False" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="PickFolderButton" Content="Ordner auswählen" Click="PickFolderButton_Click" Classes="primary" IsEnabled="False" />
|
||||
<Button x:Name="TestUploadButton" Content="Test-Upload senden" Click="TestUploadButton_Click" Classes="secondary" IsEnabled="False" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Upload-Optionen" FontWeight="SemiBold" />
|
||||
<TextBlock Text="Max. parallele Uploads" />
|
||||
<TextBox x:Name="MaxUploadsBox" Watermark="2" />
|
||||
<TextBlock Text="Upload-Tempo" />
|
||||
<ComboBox x:Name="UploadTempoBox" SelectedIndex="1">
|
||||
<ComboBoxItem Content="Schnell (ohne Pause)" />
|
||||
<ComboBoxItem Content="Normal" />
|
||||
<ComboBoxItem Content="Sanft (schont Netzwerk)" />
|
||||
</ComboBox>
|
||||
<TextBlock Text="Nur diese Dateien (optional)" />
|
||||
<TextBox x:Name="IncludePatternsBox" Watermark="*.jpg;*.jpeg;*.png" />
|
||||
<TextBlock Text="Dateien ausschliessen (optional)" />
|
||||
<TextBox x:Name="ExcludePatternsBox" Watermark="*_preview*;*.tmp" />
|
||||
<TextBlock Text="Profile" />
|
||||
<ComboBox x:Name="ProfilesBox" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="LoadProfileButton" Content="Profil laden" Click="LoadProfileButton_Click" Classes="secondary" />
|
||||
<Button x:Name="SaveProfileButton" Content="Profil speichern" Click="SaveProfileButton_Click" Classes="secondary" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<ToggleSwitch x:Name="QuietToggle" Content="Ruhiger Modus (nur Fehler anzeigen)" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="2" Spacing="16" MaxWidth="380" Margin="0,6,0,0">
|
||||
<Border Padding="14" Classes="card accent">
|
||||
<Grid Grid.Row="1" RowDefinitions="Auto,*">
|
||||
<Border Grid.Row="0" Padding="14" Classes="card accent" Margin="0,0,0,16">
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock Text="Status" FontWeight="SemiBold" />
|
||||
<TextBlock x:Name="StatusText" Text="Nicht verbunden." TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="LastUploadText" Text="Letzter Upload: —" />
|
||||
<TextBlock x:Name="QueueStatusText" Text="Warteschlange: 0 · Läuft: 0 · Fehlgeschlagen: 0" />
|
||||
<TextBlock x:Name="LiveStatusText" Text="Live: —" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock Text="Details" FontWeight="SemiBold" />
|
||||
<TextBlock x:Name="EventNameText" Text="Benutzername: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="BaseUrlText" Text="Basis-URL: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="UploadUrlText" Text="Upload-URL: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="VersionText" Text="App-Version: —" />
|
||||
<TextBlock x:Name="ConnectExpiryText" Text="Antwort-Format: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="FolderHealthText" Text="Ordner: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="DiskFreeText" Text="Freier Speicher: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="LastSeenText" Text="Letzte Datei: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="LastErrorText" Text="Letzter Fehler: —" TextWrapping="Wrap" />
|
||||
<Button x:Name="LogCopyButton" Content="Log kopieren" Click="LogCopyButton_Click" Classes="secondary" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Letzte Uploads" FontWeight="SemiBold" />
|
||||
<ItemsControl x:Name="RecentUploadsList" ItemsSource="{Binding RecentUploads}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Background="#14FFFFFF" Padding="10" CornerRadius="8" Margin="0,0,0,8">
|
||||
<Grid ColumnDefinitions="*,Auto" RowDefinitions="Auto,Auto">
|
||||
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding FileName}" />
|
||||
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding StatusLabel}" />
|
||||
<TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding UpdatedLabel}" Opacity="0.7" FontSize="11" />
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="RetryFailedButton" Content="Fehlgeschlagene erneut senden" Click="RetryFailedButton_Click" IsEnabled="False" Classes="secondary" />
|
||||
<Button x:Name="ClearFailedButton" Content="Fehlerliste leeren" Click="ClearFailedButton_Click" IsEnabled="False" Classes="secondary" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="12">
|
||||
<TextBlock x:Name="LastUploadText" Text="Letzter Upload: —" />
|
||||
<TextBlock x:Name="QueueStatusText" Text="Warteschlange: 0 · Läuft: 0 · Fehlgeschlagen: 0" />
|
||||
<TextBlock x:Name="LiveStatusText" Text="Live: —" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Button x:Name="StartUploadsButton" Content="Upload starten" Click="StartUploadsButton_Click" Classes="primary cta" />
|
||||
<Button x:Name="PauseUploadsButton" Content="Upload pausieren" Click="PauseUploadsButton_Click" Classes="secondary cta" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
<Grid x:Name="MainContentGrid" Grid.Row="1" ColumnDefinitions="*,16,*" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<StackPanel x:Name="LeftPanel" Grid.Column="0" Spacing="16" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<TabControl x:Name="MainTabs" VerticalAlignment="Stretch">
|
||||
<TabItem Header="Setup">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Spacing="16">
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Text="Zugangsdaten" FontWeight="SemiBold" />
|
||||
<TextBlock Text="Upload-URL" />
|
||||
<TextBox x:Name="ManualUploadUrlBox" Watermark="https://stylegallery.fotospiel.app/api/v1/photobooth/upload" />
|
||||
<TextBlock Text="Benutzername" />
|
||||
<TextBox x:Name="ManualUsernameBox" />
|
||||
<TextBlock Text="Passwort" />
|
||||
<TextBox x:Name="ManualPasswordBox" PasswordChar="•" />
|
||||
<TextBlock Text="Antwort-Format (optional)" />
|
||||
<ComboBox x:Name="ResponseFormatBox" SelectedIndex="0">
|
||||
<ComboBoxItem Content="Auto" />
|
||||
<ComboBoxItem Content="JSON" />
|
||||
<ComboBoxItem Content="XML" />
|
||||
</ComboBox>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="TestConnectionButton" Content="Verbindung testen" Click="TestConnectionButton_Click" Classes="secondary" />
|
||||
<Button x:Name="SaveAdvancedButton" Content="Speichern" Click="SaveAdvancedButton_Click" Classes="primary" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="Upload">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Spacing="16">
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Upload-Ordner" FontWeight="SemiBold" />
|
||||
<TextBlock x:Name="FolderText" Text="Noch nicht ausgewählt." TextWrapping="Wrap" Classes="subtitle" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="DslrBoothPresetButton" Content="DSLrBooth" Click="DslrBoothPresetButton_Click" Classes="secondary" IsVisible="False" />
|
||||
<Button x:Name="SparkboothPresetButton" Content="Photobooth (Sparkbooth)" Click="SparkboothPresetButton_Click" Classes="secondary" IsVisible="False" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="PickFolderButton" Content="Ordner auswählen" Click="PickFolderButton_Click" Classes="primary" IsEnabled="False" />
|
||||
<Button x:Name="TestUploadButton" Content="Test-Upload senden" Click="TestUploadButton_Click" Classes="secondary" IsEnabled="False" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="Erweitert">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Spacing="16">
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Upload-Optionen" FontWeight="SemiBold" />
|
||||
<TextBlock Text="Max. parallele Uploads" />
|
||||
<TextBox x:Name="MaxUploadsBox" Watermark="2" />
|
||||
<TextBlock Text="Upload-Tempo" />
|
||||
<ComboBox x:Name="UploadTempoBox" SelectedIndex="1">
|
||||
<ComboBoxItem Content="Schnell (ohne Pause)" />
|
||||
<ComboBoxItem Content="Normal" />
|
||||
<ComboBoxItem Content="Sanft (schont Netzwerk)" />
|
||||
</ComboBox>
|
||||
<TextBlock Text="Nur diese Dateien (optional)" />
|
||||
<TextBox x:Name="IncludePatternsBox" Watermark="*.jpg;*.jpeg;*.png" />
|
||||
<TextBlock Text="Dateien ausschliessen (optional)" />
|
||||
<TextBox x:Name="ExcludePatternsBox" Watermark="*_preview*;*.tmp" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Profile" FontWeight="SemiBold" />
|
||||
<ComboBox x:Name="ProfilesBox" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="LoadProfileButton" Content="Profil laden" Click="LoadProfileButton_Click" Classes="secondary" />
|
||||
<Button x:Name="SaveProfileButton" Content="Profil speichern" Click="SaveProfileButton_Click" Classes="secondary" />
|
||||
</StackPanel>
|
||||
<ToggleSwitch x:Name="QuietToggle" Content="Ruhiger Modus (nur Fehler anzeigen)" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="Logs">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Spacing="12">
|
||||
<TextBox x:Name="LogTextBox"
|
||||
AcceptsReturn="True"
|
||||
IsReadOnly="True"
|
||||
TextWrapping="Wrap"
|
||||
MinHeight="180"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto" />
|
||||
<Button x:Name="LogCopyButton" Content="Log kopieren" Click="LogCopyButton_Click" Classes="secondary" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel x:Name="RightPanel" Grid.Column="2" Spacing="16" Margin="0,6,0,0" HorizontalAlignment="Stretch">
|
||||
<Border x:Name="FirstRunCard" Padding="14" Classes="card">
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock Text="Erste Schritte" FontWeight="SemiBold" />
|
||||
<TextBlock x:Name="StepUploadUrlText" Text="1. Upload-URL speichern" />
|
||||
<TextBlock x:Name="StepFolderText" Text="2. Upload-Ordner wählen" />
|
||||
<TextBlock x:Name="StepReadyText" Text="3. Upload läuft" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Letzte Uploads" FontWeight="SemiBold" />
|
||||
<ItemsControl x:Name="RecentUploadsList" ItemsSource="{Binding RecentUploads}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border Background="#14FFFFFF" Padding="10" CornerRadius="8" Margin="0,0,0,8">
|
||||
<Grid ColumnDefinitions="*,Auto" RowDefinitions="Auto,Auto">
|
||||
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding FileName}" />
|
||||
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding StatusLabel}" />
|
||||
<TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding UpdatedLabel}" Opacity="0.7" FontSize="11" />
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Button x:Name="RetryFailedButton" Content="Fehlgeschlagene erneut senden" Click="RetryFailedButton_Click" IsEnabled="False" Classes="secondary" />
|
||||
<Button x:Name="ClearFailedButton" Content="Fehlerliste leeren" Click="ClearFailedButton_Click" IsEnabled="False" Classes="secondary" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="14" Classes="card">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Text="Diagnose" FontWeight="SemiBold" />
|
||||
<Expander Header="Details anzeigen">
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock x:Name="EventNameText" Text="Benutzername: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="BaseUrlText" Text="Basis-URL: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="UploadUrlText" Text="Upload-URL: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="VersionText" Text="App-Version: —" />
|
||||
<TextBlock x:Name="ConnectExpiryText" Text="Antwort-Format: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="FolderHealthText" Text="Ordner: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="DiskFreeText" Text="Freier Speicher: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="LastSeenText" Text="Letzte Datei: —" TextWrapping="Wrap" />
|
||||
<TextBlock x:Name="LastErrorText" Text="Letzter Fehler: —" TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
Reference in New Issue
Block a user