a502322188
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋. .claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
190 lines
14 KiB
XML
190 lines
14 KiB
XML
<UserControl x:Class="DiffuserSimulator.RoomPanel"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
|
<!-- 디퓨저 각실(방) 1개 패널 — 디자이너에서 이 레이아웃만 수정하면 5실에 모두 반영됨.
|
|
컨트롤 동작(이벤트)은 MainWindow.BuildRoomPanels 에서 연결한다. -->
|
|
<Border Background="{StaticResource SecondaryBgBrush}" CornerRadius="8" Padding="10" Margin="3">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel>
|
|
|
|
<!-- 헤더: 활성 체크 + 색상 + 이름 / 상태 -->
|
|
<Grid Margin="0,0,0,6">
|
|
<StackPanel Orientation="Horizontal">
|
|
<CheckBox x:Name="ChkEnabled" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<Ellipse x:Name="HdrColor" Width="8" Height="8" Fill="#7DCFFF"
|
|
Margin="0,0,5,0" VerticalAlignment="Center"/>
|
|
<TextBlock x:Name="HdrName" Text="거실" FontSize="14" FontWeight="Bold"
|
|
Foreground="{StaticResource TextPrimaryBrush}"/>
|
|
</StackPanel>
|
|
<TextBlock x:Name="TxtStatus" Text="대기" FontSize="10" HorizontalAlignment="Right"
|
|
VerticalAlignment="Center" Foreground="Gray"/>
|
|
</Grid>
|
|
|
|
<TextBlock x:Name="TxtRxCount" Text="수신: 0" FontSize="9"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,0,0,4"/>
|
|
<Separator Background="{StaticResource BorderBrush}" Margin="0,4,0,4"/>
|
|
|
|
<!-- 배기(RA) 디퓨저 -->
|
|
<Grid Margin="0,4,0,2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="배기 댐퍼(열림)" FontSize="11" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextPrimaryBrush}"/>
|
|
<ToggleButton x:Name="TglEA" Grid.Column="1" Style="{StaticResource ToggleSwitch}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="52"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock x:Name="TxtEALabel" Text="RA 각도" FontSize="10" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbEAAngle" Grid.Column="1" Text="0" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<!-- RA2 (거실2 = ID2 0x00) — 거실 전용. 힘펠 모드에서만 활성 -->
|
|
<Grid x:Name="GridEA2" Margin="0,0,0,3" Visibility="Collapsed">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="52"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="RA2 각도" FontSize="10" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbEAAngle2" Grid.Column="1" Text="0" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<CheckBox x:Name="ChkCloseRA" Content="RA 수동 닫기" FontSize="10"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,2"/>
|
|
|
|
<Separator Background="{StaticResource BorderBrush}" Margin="0,4,0,4"/>
|
|
|
|
<!-- 공기질 센서값 -->
|
|
<TextBlock Text="공기질 센서값" FontSize="11" FontWeight="SemiBold"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,4"/>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="PM2.5" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbPM25" Grid.Column="1" Text="25" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="PM10" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbPM10" Grid.Column="1" Text="30" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="CO₂" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbCO2" Grid.Column="1" Text="850" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="VOC" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbVOC" Grid.Column="1" Text="115" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="TVOC" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbTVOC" Grid.Column="1" Text="250" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="온도" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbTemp" Grid.Column="1" Text="25" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions><ColumnDefinition Width="52"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
|
<TextBlock Text="습도" FontSize="10" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbHumidity" Grid.Column="1" Text="50" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
|
|
<!-- 공기질 프리셋 (RbNoSensor=센서없음). GroupName 없이 부모 UniformGrid 단위로 그룹화 → 실별 독립 -->
|
|
<TextBlock Text="프리셋" FontSize="9" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,4"/>
|
|
<UniformGrid Columns="2" Margin="0,2,0,4">
|
|
<RadioButton x:Name="RbGood" Content="좋음" Foreground="DodgerBlue" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
<RadioButton x:Name="RbNormal" Content="보통" Foreground="LimeGreen" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2" IsChecked="True"/>
|
|
<RadioButton x:Name="RbBad" Content="나쁨" Foreground="Orange" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
<RadioButton x:Name="RbVeryBad" Content="매우나쁨" Foreground="OrangeRed" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
<RadioButton x:Name="RbWorst" Content="최악" Foreground="Red" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
<RadioButton x:Name="RbNoSensor" Content="센서없음" Foreground="Gray" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
</UniformGrid>
|
|
|
|
<!-- 프리셋모드 (센서값 밴드 선택). 기본 NORMAL -->
|
|
<TextBlock Text="프리셋모드" FontSize="9" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,4"/>
|
|
<UniformGrid Columns="2" Margin="0,2,0,4">
|
|
<RadioButton x:Name="RbEco" Content="ECO" Foreground="MediumAquamarine" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
<RadioButton x:Name="RbNorm" Content="NORMAL" Foreground="LimeGreen" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2" IsChecked="True"/>
|
|
<RadioButton x:Name="RbTurbo" Content="TURBO" Foreground="Orange" FontSize="10" FontWeight="SemiBold" Margin="0,0,0,2"/>
|
|
</UniformGrid>
|
|
|
|
<!-- LED -->
|
|
<Grid Margin="0,4,0,2">
|
|
<TextBlock Text="LED" FontSize="11" Foreground="{StaticResource TextPrimaryBrush}"/>
|
|
<TextBlock x:Name="TxtLedVal" Text="0 (OFF)" FontSize="11" FontWeight="Bold"
|
|
HorizontalAlignment="Right" Foreground="{StaticResource AccentYellowBrush}"/>
|
|
</Grid>
|
|
<Slider x:Name="SldLed" Minimum="0" Maximum="9" IsSnapToTickEnabled="True"
|
|
TickFrequency="1" TickPlacement="BottomRight" Value="0"/>
|
|
<CheckBox x:Name="ChkLedManual" Content="LED 디밍 수동 제어" FontSize="10"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,2"/>
|
|
|
|
<Separator Background="{StaticResource BorderBrush}" Margin="0,4,0,4"/>
|
|
|
|
<!-- 급기(SA) 디퓨저 -->
|
|
<Grid Margin="0,4,0,2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="급기 댐퍼(열림)" FontSize="11" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextPrimaryBrush}"/>
|
|
<ToggleButton x:Name="TglSA" Grid.Column="1" Style="{StaticResource ToggleSwitch}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,3">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="52"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock x:Name="TxtSALabel" Text="SA 각도" FontSize="10" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbSAAngle" Grid.Column="1" Text="0" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<!-- SA2 (거실2 = ID2 0x00) — 거실 전용 -->
|
|
<Grid x:Name="GridSA2" Margin="0,0,0,3" Visibility="Collapsed">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="52"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="SA2 각도" FontSize="10" VerticalAlignment="Center"
|
|
Foreground="{StaticResource TextSecondaryBrush}"/>
|
|
<TextBox x:Name="TbSAAngle2" Grid.Column="1" Text="0" FontSize="11" Padding="4,2"
|
|
Background="{StaticResource CardBgBrush}" Foreground="{StaticResource TextPrimaryBrush}"
|
|
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"/>
|
|
</Grid>
|
|
<CheckBox x:Name="ChkCloseSA" Content="SA 수동 닫기" FontSize="10"
|
|
Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,2"/>
|
|
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</UserControl>
|