releases/VideoDownloader.Avalonia/MainWindow.axaml

63 lines
3.3 KiB
XML

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:CompileBindings="False"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="520"
x:Class="VideoDownloader.Avalonia.MainWindow"
Title="VideoDownloader (Avalonia · 크로스플랫폼 셸)"
Width="640" Height="520"
WindowStartupLocation="CenterScreen">
<!-- DataContext 는 MainWindow 생성자에서 코드비하인드로 설정(MainViewModel). -->
<Border Background="#1B1C24" Padding="24">
<Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,*">
<!-- 헤더 -->
<StackPanel Grid.Row="0" Margin="0,0,0,16">
<TextBlock Text="VideoDownloader" FontSize="22" FontWeight="SemiBold" Foreground="#E6E6EC"/>
<TextBlock Text="Avalonia 크로스플랫폼 셸 — Core 엔진 재사용 (HLS · DASH · yt-dlp 소셜 · 직링크)"
FontSize="12" Foreground="#8A8B95" Margin="0,4,0,0"/>
</StackPanel>
<!-- URL 입력 -->
<TextBox Grid.Row="1" x:Name="UrlBox"
Text="{Binding Url, UpdateSourceTrigger=PropertyChanged}"
PlaceholderText="영상 URL 붙여넣기 (YouTube/Instagram/X · m3u8 · mpd · mp4)"
Background="#26272F" Foreground="#E6E6EC"
BorderBrush="#3A3B45" BorderThickness="1" Padding="10,8" CornerRadius="8"/>
<!-- 버튼 -->
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,12,0,12" Spacing="8">
<Button Content="받기" Command="{Binding DownloadCommand}"
Background="#5B8DEF" Foreground="White" Padding="24,8" CornerRadius="8" FontWeight="SemiBold"/>
<Button Content="취소" Command="{Binding CancelCommand}"
Background="#3A3B45" Foreground="#E6E6EC" Padding="18,8" CornerRadius="8"/>
</StackPanel>
<!-- 진행률 -->
<ProgressBar Grid.Row="3" Value="{Binding Progress}" Maximum="100"
MinHeight="6" CornerRadius="3" Foreground="#5B8DEF" Background="#26272F" Margin="0,0,0,8"/>
<!-- 상태/결과 -->
<StackPanel Grid.Row="4" Margin="0,0,0,12">
<TextBlock Text="{Binding Status}" Foreground="#B9BAC4" FontSize="13"/>
<TextBlock Text="{Binding Result}" Foreground="#7FD1A0" FontSize="13" TextWrapping="Wrap" Margin="0,6,0,0"/>
</StackPanel>
<!-- 로그 -->
<Border Grid.Row="5" Background="#202127" CornerRadius="8" Padding="12">
<ScrollViewer>
<ItemsControl ItemsSource="{Binding Log}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Foreground="#8A8B95" FontSize="11" Margin="0,2"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Border>
</Grid>
</Border>
</Window>