Baseline: WPF/Avalonia/Cli/Core + plans (BROWSER_FEATURES_PLAN v2, MOBILE_PLAN v1)
This commit is contained in:
commit
21b7c4d8bd
60 changed files with 6581 additions and 0 deletions
63
VideoDownloader.Avalonia/MainWindow.axaml
Normal file
63
VideoDownloader.Avalonia/MainWindow.axaml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue