63 lines
3.3 KiB
XML
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>
|