chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋. .claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net10.0-windows</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>AirPlanner</RootNamespace>
|
||||
<AssemblyName>AirPlanner</AssemblyName>
|
||||
<StartupObject>AirPlanner.App</StartupObject>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<SelfContained>true</SelfContained>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,12 @@
|
||||
<Application x:Class="AirPlanner.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="Styles.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
@@ -0,0 +1,8 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<UserControl x:Class="AirPlanner.ControlView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
FontFamily="Malgun Gothic, Segoe UI" Background="#FFFFFF">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="210"/>
|
||||
<ColumnDefinition Width="160"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- 카테고리 -->
|
||||
<Border Grid.Column="0" Background="#F6F7F9" BorderBrush="{StaticResource CardBorder}" BorderThickness="0,0,1,0">
|
||||
<StackPanel Margin="0,28,0,0">
|
||||
<Button Style="{StaticResource ZoneBtn}" Content="시스템 에어컨"/>
|
||||
<Button Style="{StaticResource ZoneBtn}" Content="환기" Foreground="{StaticResource Ink}" FontWeight="Bold"/>
|
||||
<Button Style="{StaticResource ZoneBtn}" Content="대기전력콘센트"/>
|
||||
<Button Style="{StaticResource ZoneBtn}" Content="엘리베이터 호출"/>
|
||||
<Button Style="{StaticResource ZoneBtn}" Content="쿡탑"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- 구역 (클릭 → 우측 전환) -->
|
||||
<Border Grid.Column="1" Background="#F6F7F9" BorderBrush="{StaticResource CardBorder}" BorderThickness="0,0,1,0">
|
||||
<StackPanel Margin="0,28,0,0">
|
||||
<Button x:Name="zAll" Style="{StaticResource ZoneBtn}" Content="전체" Click="Zone_Click" Tag="전체"/>
|
||||
<Button x:Name="zLiving" Style="{StaticResource ZoneBtn}" Content="거실" Click="Zone_Click" Tag="거실"/>
|
||||
<Button x:Name="zR1" Style="{StaticResource ZoneBtn}" Content="침실1" Click="Zone_Click" Tag="침실1"/>
|
||||
<Button x:Name="zR2" Style="{StaticResource ZoneBtn}" Content="침실2" Click="Zone_Click" Tag="침실2"/>
|
||||
<Button x:Name="zR3" Style="{StaticResource ZoneBtn}" Content="침실3" Click="Zone_Click" Tag="침실3"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- 구역별 콘텐츠 -->
|
||||
<ContentControl x:Name="ZoneContent" Grid.Column="2"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,34 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class ControlView : UserControl
|
||||
{
|
||||
static readonly Brush Off = (Brush)new BrushConverter().ConvertFromString("#A6ABB6")!;
|
||||
static readonly Brush On = (Brush)new BrushConverter().ConvertFromString("#161616")!;
|
||||
|
||||
public ControlView()
|
||||
{
|
||||
InitializeComponent();
|
||||
ShowZone("전체", zAll);
|
||||
}
|
||||
|
||||
void Zone_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (sender is Button b && b.Tag is string zone) ShowZone(zone, b);
|
||||
}
|
||||
|
||||
void ShowZone(string zone, Button active)
|
||||
{
|
||||
ZoneContent.Content = zone == "전체" ? new VentAllView() : new RoomDetailView(zone);
|
||||
foreach (var b in new[] { zAll, zLiving, zR1, zR2, zR3 })
|
||||
{
|
||||
bool on = b == active;
|
||||
b.Foreground = on ? On : Off;
|
||||
b.FontWeight = on ? FontWeights.Bold : FontWeights.Normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
<UserControl x:Class="AirPlanner.HomeView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
FontFamily="Malgun Gothic, Segoe UI" Background="#FFFFFF">
|
||||
<Grid Margin="26,22,26,22">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="600"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- 좌: 환기 상태 -->
|
||||
<StackPanel Grid.Column="0">
|
||||
<TextBlock x:Name="txtClock" Text="10월 28일 (월) 오후 12시 37분" FontSize="16" Foreground="#6B7280"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,12,0,0">
|
||||
<Grid Width="34" Height="34" VerticalAlignment="Center" Margin="0,0,12,0">
|
||||
<Ellipse Fill="#141417"/>
|
||||
<TextBlock Text="⏻" FontFamily="Segoe UI Symbol" FontSize="17" Foreground="White"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<TextBlock x:Name="txtState" Text="자동운전 중입니다." FontSize="30" FontWeight="Bold" Foreground="{StaticResource Ink}" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 4실 원형 -->
|
||||
<UniformGrid Columns="2" Rows="2" Width="360" HorizontalAlignment="Left" Margin="40,22,0,0">
|
||||
<Grid Width="94" Height="94" Margin="0,0,0,18" HorizontalAlignment="Left">
|
||||
<Ellipse Width="94" Height="94" StrokeThickness="3.5" Stroke="#5FB236" Fill="Transparent"/>
|
||||
<TextBlock Text="거실" FontSize="17" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<Grid Width="94" Height="94" Margin="0,0,0,18" HorizontalAlignment="Left">
|
||||
<Ellipse Width="94" Height="94" StrokeThickness="3.5" Stroke="#5BB6E8" Fill="Transparent"/>
|
||||
<TextBlock Text="침실1" FontSize="17" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<Grid Width="94" Height="94" HorizontalAlignment="Left">
|
||||
<Ellipse Width="94" Height="94" StrokeThickness="3.5" Stroke="#EF5350" Fill="Transparent"/>
|
||||
<TextBlock Text="침실2" FontSize="17" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<Grid Width="94" Height="94" HorizontalAlignment="Left">
|
||||
<Ellipse Width="94" Height="94" StrokeThickness="3.5" Stroke="#F59E0B" Fill="Transparent"/>
|
||||
<TextBlock Text="침실3" FontSize="17" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</UniformGrid>
|
||||
|
||||
<!-- 제어 카드 -->
|
||||
<Border CornerRadius="14" Background="#FFFFFF" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5"
|
||||
Padding="22,18" Margin="0,16,0,0" HorizontalAlignment="Left" Width="560">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
|
||||
<!-- 좌: 4 토글 -->
|
||||
<StackPanel Grid.Column="0">
|
||||
<Grid Margin="0,0,0,12"><Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="자동운전" Style="{StaticResource ToggleLabel}"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}" IsChecked="True"/></Grid>
|
||||
<Grid Margin="0,0,0,12"><Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="스마트수면" Style="{StaticResource ToggleLabel}"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}"/></Grid>
|
||||
<Grid Margin="0,0,0,12"><Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="쾌적조리" Style="{StaticResource ToggleLabel}"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}" IsChecked="True"/></Grid>
|
||||
<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="100"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="안심회복" Style="{StaticResource ToggleLabel}"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}"/></Grid>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 우: 세그먼트 + 알약 + 제습기 연동 -->
|
||||
<StackPanel Grid.Column="1" Margin="20,0,0,0" VerticalAlignment="Center">
|
||||
<Border CornerRadius="9" Background="#EFEFF1" Padding="3" HorizontalAlignment="Left" Margin="0,0,0,12">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<RadioButton GroupName="seg" Style="{StaticResource Seg}" Content="Eco"/>
|
||||
<RadioButton GroupName="seg" Style="{StaticResource Seg}" Content="Normal" IsChecked="True"/>
|
||||
<RadioButton GroupName="seg" Style="{StaticResource Seg}" Content="Turbo"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,12">
|
||||
<Border CornerRadius="9" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="13,9" Margin="0,0,10,0">
|
||||
<StackPanel Orientation="Horizontal"><TextBlock Text="운전모드" Style="{StaticResource PillLabel}"/><TextBlock Text="청정환기" Style="{StaticResource PillValue}" Margin="8,0,0,0"/></StackPanel></Border>
|
||||
<Border CornerRadius="9" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="13,9">
|
||||
<StackPanel Orientation="Horizontal"><TextBlock Text="풍량" Style="{StaticResource PillLabel}"/><TextBlock Text="3단" Style="{StaticResource PillValue}" Margin="8,0,0,0"/></StackPanel></Border>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<TextBlock Text="제습기 연동" Style="{StaticResource ToggleLabel}" FontSize="15" Margin="0,0,12,0"/>
|
||||
<ToggleButton Style="{StaticResource Toggle}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 우: 스마트홈 카드 -->
|
||||
<UniformGrid Grid.Column="1" Columns="3" Rows="2" Margin="18,0,0,0">
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
|
||||
<Grid><TextBlock Text="기상정보" Style="{StaticResource CardTitle}"/><TextBlock Text="›" Style="{StaticResource CardArrow}"/></Grid>
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBlock Text="⛅" FontFamily="Segoe UI Emoji" FontSize="54" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="15°" FontSize="40" FontWeight="Bold" Foreground="{StaticResource Ink}" VerticalAlignment="Center" Margin="14,0,0,0"/>
|
||||
<TextBlock Text="11° / 23°" FontSize="15" Foreground="{StaticResource Ink2}" VerticalAlignment="Bottom" Margin="12,0,0,12"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid><TextBlock Text="엘리베이터 호출" Style="{StaticResource CardTitle}"/><TextBlock Text="›" Style="{StaticResource CardArrow}"/></Grid>
|
||||
<TextBlock Grid.Row="1" Text="7F" FontSize="20" Foreground="{StaticResource Ink2}" Margin="0,8,0,0"/>
|
||||
<Border Grid.Row="2" CornerRadius="8" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="0,10">
|
||||
<TextBlock Text="CALL" FontSize="15" Foreground="{StaticResource Ink2}" HorizontalAlignment="Center"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid><TextBlock Text="방문차량등록" Style="{StaticResource CardTitle}"/><TextBlock Text="›" Style="{StaticResource CardArrow}"/></Grid>
|
||||
<TextBlock Grid.Row="1" Text="총1대" FontSize="18" Foreground="{StaticResource Ink2}" Margin="0,8,0,0"/>
|
||||
<TextBlock Grid.Row="3" Foreground="{StaticResource Ink2}" FontSize="15">
|
||||
<Run Text="잔여마일리지"/><LineBreak/><Run Text="32시간 50분"/>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
|
||||
<Grid><TextBlock Text="주차위치" Style="{StaticResource CardTitle}"/><TextBlock Text="›" Style="{StaticResource CardArrow}"/></Grid>
|
||||
<StackPanel Grid.Row="1" Margin="0,10,0,0">
|
||||
<Grid Margin="0,0,0,6"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="B1-A01" FontSize="17" Foreground="{StaticResource Ink2}"/><TextBlock Grid.Column="1" Text="9401" FontSize="17" Foreground="{StaticResource Ink2}"/></Grid>
|
||||
<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="B2-C11" FontSize="17" Foreground="{StaticResource Ink2}"/><TextBlock Grid.Column="1" Text="3486" FontSize="17" Foreground="{StaticResource Ink2}"/></Grid>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
|
||||
<Grid><TextBlock Text="에너지사용량" Style="{StaticResource CardTitle}"/><TextBlock Text="›" Style="{StaticResource CardArrow}"/></Grid>
|
||||
<TextBlock Grid.Row="1" Text="전기 256kwh" FontSize="17" Foreground="{StaticResource Ink2}" Margin="0,10,0,0"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Style="{StaticResource HomeCard}">
|
||||
<TextBlock Text="+ 추가" FontSize="18" Foreground="{StaticResource Ink2}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
|
||||
</UniformGrid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class HomeView : UserControl
|
||||
{
|
||||
readonly DispatcherTimer _clock = new() { Interval = TimeSpan.FromSeconds(10) };
|
||||
|
||||
public HomeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
_clock.Tick += (_, _) => UpdateClock();
|
||||
_clock.Start();
|
||||
UpdateClock();
|
||||
Unloaded += (_, _) => _clock.Stop();
|
||||
}
|
||||
|
||||
void UpdateClock()
|
||||
{
|
||||
var n = DateTime.Now;
|
||||
string[] dow = { "일", "월", "화", "수", "목", "금", "토" };
|
||||
string ap = n.Hour < 12 ? "오전" : "오후";
|
||||
int h12 = n.Hour % 12; if (h12 == 0) h12 = 12;
|
||||
txtClock.Text = $"{n.Month}월 {n.Day}일 ({dow[(int)n.DayOfWeek]}) {ap} {h12}시 {n.Minute:00}분";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<Window x:Class="AirPlanner.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="AirPlanner — 에어플래너 (e편한세상)" Height="600" Width="1400"
|
||||
Background="#141417" FontFamily="Malgun Gothic, Segoe UI"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
|
||||
<Viewbox Stretch="Uniform">
|
||||
<Grid Width="1400" Height="560" Background="#FFFFFF">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="92"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- 좌측 네비게이션 (공유) -->
|
||||
<Border Grid.Column="0" Background="#141417">
|
||||
<StackPanel Margin="0,30,0,0">
|
||||
<Button x:Name="navHome" Style="{StaticResource NavBtn}" Content="홈" Click="Nav_Home"/>
|
||||
<Button x:Name="navCall" Style="{StaticResource NavBtn}" Content="통화" Click="Nav_Todo"/>
|
||||
<Button x:Name="navCtrl" Style="{StaticResource NavBtn}" Content="제어" Click="Nav_Control"/>
|
||||
<Button x:Name="navView" Style="{StaticResource NavBtn}" Content="조회" Click="Nav_Todo"/>
|
||||
<Button x:Name="navSet" Style="{StaticResource NavBtn}" Content="설정" Click="Nav_Todo"/>
|
||||
<Button x:Name="navAlarm" Style="{StaticResource NavBtn}" Click="Nav_Todo">
|
||||
<Grid>
|
||||
<TextBlock Text="알림" FontSize="18" Foreground="#7B8090"/>
|
||||
<Ellipse Width="6" Height="6" Fill="#EF4444" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,2,-8,0"/>
|
||||
</Grid>
|
||||
</Button>
|
||||
<Button x:Name="navEmer" Style="{StaticResource NavBtn}" Content="비상" Foreground="#EF4444" Click="Nav_Todo"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- 화면 영역 -->
|
||||
<ContentControl x:Name="MainContent" Grid.Column="1"/>
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
</Window>
|
||||
@@ -0,0 +1,37 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
static readonly Brush NavOff = (Brush)new BrushConverter().ConvertFromString("#7B8090")!;
|
||||
static readonly Brush NavOn = Brushes.White;
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
Show("home");
|
||||
}
|
||||
|
||||
void Show(string view)
|
||||
{
|
||||
if (view == "control") { MainContent.Content = new ControlView(); SetActive(navCtrl); }
|
||||
else { MainContent.Content = new HomeView(); SetActive(navHome); }
|
||||
}
|
||||
|
||||
void SetActive(Button active)
|
||||
{
|
||||
foreach (var b in new[] { navHome, navCall, navCtrl, navView, navSet })
|
||||
{
|
||||
b.Foreground = b == active ? NavOn : NavOff;
|
||||
b.FontWeight = b == active ? FontWeights.Bold : FontWeights.Normal;
|
||||
}
|
||||
}
|
||||
|
||||
void Nav_Home(object sender, RoutedEventArgs e) => Show("home");
|
||||
void Nav_Control(object sender, RoutedEventArgs e) => Show("control");
|
||||
void Nav_Todo(object sender, RoutedEventArgs e) { /* 통화/조회/설정/알림/비상 — 추후 구현 */ }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<UserControl x:Class="AirPlanner.RoomCard"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
FontFamily="Malgun Gothic, Segoe UI">
|
||||
<Border CornerRadius="12" Background="{StaticResource CardBg}"
|
||||
BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Margin="8" Padding="18,16">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 헤더 : 이름 + 공기질 원 -->
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock x:Name="NameText" Grid.Column="0" Text="거실" FontSize="20" FontWeight="Bold"
|
||||
Foreground="{StaticResource Ink}" VerticalAlignment="Center"/>
|
||||
<Grid Grid.Column="1" Width="64" Height="64">
|
||||
<Ellipse x:Name="AqRing" Width="64" Height="64" StrokeThickness="3.5" Stroke="{StaticResource AqGood}" Fill="Transparent"/>
|
||||
<TextBlock x:Name="AqText" Text="좋음" FontSize="13" FontWeight="SemiBold" Width="54" TextAlignment="Center" TextWrapping="Wrap"
|
||||
Foreground="{StaticResource AqGood}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<!-- 센서 4종 (글씨 검정) -->
|
||||
<StackPanel Grid.Row="1" Margin="2,14,0,0" VerticalAlignment="Top">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
|
||||
<TextBlock Text="•" Foreground="{StaticResource AqVeryBad}" FontSize="13" Margin="0,0,7,0"/>
|
||||
<TextBlock x:Name="S0" Text="초미세먼지: 좋음" FontSize="13.5" Foreground="{StaticResource Ink}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
|
||||
<TextBlock Text="•" Foreground="{StaticResource AqVeryBad}" FontSize="13" Margin="0,0,7,0"/>
|
||||
<TextBlock x:Name="S1" Text="미세먼지: 좋음" FontSize="13.5" Foreground="{StaticResource Ink}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
|
||||
<TextBlock Text="•" Foreground="{StaticResource AqVeryBad}" FontSize="13" Margin="0,0,7,0"/>
|
||||
<TextBlock x:Name="S2" Text="CO2: 좋음" FontSize="13.5" Foreground="{StaticResource Ink}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="•" Foreground="{StaticResource AqVeryBad}" FontSize="13" Margin="0,0,7,0"/>
|
||||
<TextBlock x:Name="S3" Text="VOCs: 좋음" FontSize="13.5" Foreground="{StaticResource Ink}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- ON / Standby / OFF -->
|
||||
<ToggleButton x:Name="OnBtn" Grid.Row="2" Style="{StaticResource BigToggleBtn}" Content="ON"
|
||||
Height="48" Margin="0,16,0,0"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class RoomCard : UserControl
|
||||
{
|
||||
public RoomCard()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
// 실명 / 공기질 텍스트·색 / 센서 4종 상태 / 버튼(ON·Standby·OFF, active=검정)
|
||||
public void Set(string name, string aqText, Brush aqColor,
|
||||
string pm25, string pm10, string co2, string voc,
|
||||
string btnText, bool btnActive)
|
||||
{
|
||||
NameText.Text = name;
|
||||
AqText.Text = aqText;
|
||||
AqText.Foreground = aqColor;
|
||||
AqRing.Stroke = aqColor;
|
||||
S0.Text = $"초미세먼지: {pm25}";
|
||||
S1.Text = $"미세먼지: {pm10}";
|
||||
S2.Text = $"CO2: {co2}";
|
||||
S3.Text = $"VOCs: {voc}";
|
||||
OnBtn.Content = btnText;
|
||||
OnBtn.IsChecked = btnActive; // true → 검정(ON/Standby)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<UserControl x:Class="AirPlanner.RoomDetailView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
FontFamily="Malgun Gothic, Segoe UI" Background="#FFFFFF">
|
||||
<Grid Margin="40,26,40,26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 상단 : 전원원형 + 운전모드/토글 -->
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Grid.Column="0" Width="200" Height="200" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
<Ellipse Fill="#141417"/>
|
||||
<TextBlock Text="⏻" FontFamily="Segoe UI Symbol" FontSize="86" Foreground="White"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<StackPanel Grid.Column="1" VerticalAlignment="Center" Margin="40,0,0,0">
|
||||
<TextBlock Text="청정환기" FontSize="24" FontWeight="Bold" Foreground="{StaticResource Ink}"/>
|
||||
<TextBlock Text="자동운전" FontSize="24" FontWeight="Bold" Foreground="{StaticResource Ink}" Margin="0,8,0,16"/>
|
||||
<!-- 실별 토글 — 코드에서 구성 -->
|
||||
<StackPanel x:Name="TogglePanel"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<!-- 하단 : 실내온습도 + 공기질 4종 (같은 줄) -->
|
||||
<Grid Grid.Row="1" Margin="0,18,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- 실내온도 / 실내습도 (크게) -->
|
||||
<StackPanel Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<TextBlock Text="실내온도" FontSize="17" Foreground="{StaticResource Ink2}" HorizontalAlignment="Center"/>
|
||||
<TextBlock Text="24°" FontSize="28" FontWeight="Bold" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,4,0,0"/>
|
||||
</StackPanel>
|
||||
<Border Width="1" Background="{StaticResource CardBorder}" Margin="26,4,26,4"/>
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<TextBlock Text="실내습도" FontSize="17" Foreground="{StaticResource Ink2}" HorizontalAlignment="Center"/>
|
||||
<TextBlock Text="24%" FontSize="28" FontWeight="Bold" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,4,0,0"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 공기질 4종 (모두 좋음) -->
|
||||
<UniformGrid Grid.Column="1" Columns="4" VerticalAlignment="Center">
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<Grid Width="64" Height="64" HorizontalAlignment="Center">
|
||||
<Ellipse Width="64" Height="64" StrokeThickness="3.5" Stroke="{StaticResource AqGood}" Fill="Transparent"/>
|
||||
<TextBlock Text="좋음" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource AqGood}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<TextBlock Text="초미세먼지" FontSize="13" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,8,0,0"/>
|
||||
</StackPanel>
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<Grid Width="64" Height="64" HorizontalAlignment="Center">
|
||||
<Ellipse Width="64" Height="64" StrokeThickness="3.5" Stroke="{StaticResource AqGood}" Fill="Transparent"/>
|
||||
<TextBlock Text="좋음" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource AqGood}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<TextBlock Text="미세먼지" FontSize="13" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,8,0,0"/>
|
||||
</StackPanel>
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<Grid Width="64" Height="64" HorizontalAlignment="Center">
|
||||
<Ellipse Width="64" Height="64" StrokeThickness="3.5" Stroke="{StaticResource AqGood}" Fill="Transparent"/>
|
||||
<TextBlock Text="좋음" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource AqGood}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<TextBlock Text="이산화탄소" FontSize="13" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,8,0,0"/>
|
||||
</StackPanel>
|
||||
<StackPanel HorizontalAlignment="Center">
|
||||
<Grid Width="64" Height="64" HorizontalAlignment="Center">
|
||||
<Ellipse Width="64" Height="64" StrokeThickness="3.5" Stroke="{StaticResource AqGood}" Fill="Transparent"/>
|
||||
<TextBlock Text="좋음" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource AqGood}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<TextBlock Text="휘발성" FontSize="13" Foreground="{StaticResource Ink}" HorizontalAlignment="Center" Margin="0,8,0,0"/>
|
||||
<TextBlock Text="유기 화합물" FontSize="13" Foreground="{StaticResource Ink}" HorizontalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</UniformGrid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,34 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class RoomDetailView : UserControl
|
||||
{
|
||||
// 거실 : 표시램프만
|
||||
// 침실1 : 안심회복 + 표시램프 + 제습기 연동 (안심회복은 침실1 전용)
|
||||
// 침실2·침실3 : 표시램프 + 제습기 연동
|
||||
public RoomDetailView(string roomName)
|
||||
{
|
||||
InitializeComponent();
|
||||
bool isBedroom = roomName != "거실";
|
||||
if (roomName == "침실1") TogglePanel.Children.Add(MakeRow("안심회복", false));
|
||||
TogglePanel.Children.Add(MakeRow("표시램프", true));
|
||||
if (isBedroom) TogglePanel.Children.Add(MakeRow("제습기 연동", false));
|
||||
}
|
||||
|
||||
FrameworkElement MakeRow(string label, bool on)
|
||||
{
|
||||
var sp = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(0, 0, 0, 12) };
|
||||
sp.Children.Add(new TextBlock
|
||||
{
|
||||
Text = label, FontSize = 18, VerticalAlignment = VerticalAlignment.Center,
|
||||
Foreground = (Brush)FindResource("Ink"), Margin = new Thickness(0, 0, 12, 0), MinWidth = 86
|
||||
});
|
||||
sp.Children.Add(new ToggleButton { Style = (Style)FindResource("Toggle"), IsChecked = on });
|
||||
return sp;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<!-- ===== 색상 ===== -->
|
||||
<Color x:Key="cBg">#FFFFFF</Color>
|
||||
<SolidColorBrush x:Key="Bg" Color="#FFFFFF"/>
|
||||
<SolidColorBrush x:Key="CardBg" Color="#FFFFFF"/>
|
||||
<SolidColorBrush x:Key="CardBorder" Color="#E5E7EB"/>
|
||||
<SolidColorBrush x:Key="Ink" Color="#161616"/>
|
||||
<SolidColorBrush x:Key="Ink2" Color="#6B7280"/>
|
||||
<SolidColorBrush x:Key="TrackOff" Color="#E3E5EA"/>
|
||||
<SolidColorBrush x:Key="ThumbBr" Color="#FFFFFF"/>
|
||||
<!-- 공기질 4단계 -->
|
||||
<SolidColorBrush x:Key="AqGood" Color="#3B82F6"/> <!-- 좋음 파랑 -->
|
||||
<SolidColorBrush x:Key="AqNormal" Color="#22C55E"/> <!-- 보통 초록 -->
|
||||
<SolidColorBrush x:Key="AqBad" Color="#F59E0B"/> <!-- 나쁨 주황 -->
|
||||
<SolidColorBrush x:Key="AqVeryBad" Color="#EF4444"/> <!-- 매우나쁨 빨강 -->
|
||||
|
||||
<!-- ===== iOS 스타일 토글 스위치 ===== -->
|
||||
<Style x:Key="Toggle" TargetType="ToggleButton">
|
||||
<Setter Property="Width" Value="50"/>
|
||||
<Setter Property="Height" Value="29"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ToggleButton">
|
||||
<Grid>
|
||||
<Border x:Name="track" CornerRadius="15" Background="{StaticResource TrackOff}"/>
|
||||
<Ellipse x:Name="thumb" Width="23" Height="23" Fill="{StaticResource ThumbBr}"
|
||||
HorizontalAlignment="Left" Margin="3,0,0,0">
|
||||
<Ellipse.Effect><DropShadowEffect BlurRadius="4" ShadowDepth="1" Opacity="0.25"/></Ellipse.Effect>
|
||||
</Ellipse>
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="track" Property="Background" Value="{StaticResource Ink}"/>
|
||||
<Setter TargetName="thumb" Property="HorizontalAlignment" Value="Right"/>
|
||||
<Setter TargetName="thumb" Property="Margin" Value="0,0,3,0"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Opacity" Value="0.35"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- 토글 행 라벨 -->
|
||||
<Style x:Key="ToggleLabel" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="17"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink}"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<!-- ===== 큰 ON/OFF 버튼 (전체/각실) ===== -->
|
||||
<Style x:Key="BigToggleBtn" TargetType="ToggleButton">
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="FontSize" Value="20"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink2}"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ToggleButton">
|
||||
<Border x:Name="b" CornerRadius="10" Background="{StaticResource CardBg}"
|
||||
BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="b" Property="Background" Value="{StaticResource Ink}"/>
|
||||
<Setter TargetName="b" Property="BorderBrush" Value="{StaticResource Ink}"/>
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- ===== 좌측 네비 버튼 ===== -->
|
||||
<Style x:Key="NavBtn" TargetType="Button">
|
||||
<Setter Property="Foreground" Value="#7B8090"/>
|
||||
<Setter Property="FontSize" Value="18"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Margin" Value="0,0,0,30"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="Transparent" Padding="0,2">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- ===== 카테고리/구역 리스트 버튼 ===== -->
|
||||
<Style x:Key="ZoneBtn" TargetType="Button">
|
||||
<Setter Property="Foreground" Value="#A6ABB6"/>
|
||||
<Setter Property="FontSize" Value="18"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Margin" Value="0,0,0,40"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="Transparent" Padding="0,2">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- ===== Eco/Normal/Turbo 세그먼트 (RadioButton) ===== -->
|
||||
<Style x:Key="Seg" TargetType="RadioButton">
|
||||
<Setter Property="Foreground" Value="#6B7280"/>
|
||||
<Setter Property="FontSize" Value="15"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Padding" Value="18,7"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="RadioButton">
|
||||
<Border x:Name="b" CornerRadius="7" Background="Transparent" Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="b" Property="Background" Value="White"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink}"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter TargetName="b" Property="Effect">
|
||||
<Setter.Value><DropShadowEffect BlurRadius="5" ShadowDepth="1" Opacity="0.18"/></Setter.Value>
|
||||
</Setter>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- ===== 스마트홈 카드 (홈 우측) ===== -->
|
||||
<Style x:Key="HomeCard" TargetType="Border">
|
||||
<Setter Property="CornerRadius" Value="14"/>
|
||||
<Setter Property="Background" Value="{StaticResource CardBg}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource CardBorder}"/>
|
||||
<Setter Property="BorderThickness" Value="1.5"/>
|
||||
<Setter Property="Padding" Value="18,14"/>
|
||||
<Setter Property="Margin" Value="8"/>
|
||||
</Style>
|
||||
<Style x:Key="CardTitle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="18"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink}"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Left"/>
|
||||
</Style>
|
||||
<Style x:Key="CardArrow" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="20"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink2}"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Right"/>
|
||||
<Setter Property="VerticalAlignment" Value="Top"/>
|
||||
</Style>
|
||||
|
||||
<!-- ===== 상태 알약 (운전모드/풍량) ===== -->
|
||||
<Style x:Key="PillLabel" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink2}"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
<Style x:Key="PillValue" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="15"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource Ink}"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="10,0,0,0"/>
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
@@ -0,0 +1,69 @@
|
||||
<UserControl x:Class="AirPlanner.VentAllView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:AirPlanner"
|
||||
FontFamily="Malgun Gothic, Segoe UI" Background="#FFFFFF">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" Padding="14,14,8,14">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- 전체 제어 카드 (2열 차지) -->
|
||||
<Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Style="{StaticResource HomeCard}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="전체" FontSize="20" FontWeight="Bold" Foreground="{StaticResource Ink}" VerticalAlignment="Top" Margin="0,2,0,0"/>
|
||||
|
||||
<!-- 토글 4 -->
|
||||
<StackPanel Grid.Column="1" HorizontalAlignment="Center">
|
||||
<Grid Margin="0,0,0,11"><Grid.ColumnDefinitions><ColumnDefinition Width="92"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="자동운전" Style="{StaticResource ToggleLabel}" FontSize="15"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}" IsChecked="True"/></Grid>
|
||||
<Grid Margin="0,0,0,11"><Grid.ColumnDefinitions><ColumnDefinition Width="92"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="스마트수면" Style="{StaticResource ToggleLabel}" FontSize="15"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}"/></Grid>
|
||||
<Grid Margin="0,0,0,11"><Grid.ColumnDefinitions><ColumnDefinition Width="92"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="쾌적조리" Style="{StaticResource ToggleLabel}" FontSize="15"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}" IsChecked="True"/></Grid>
|
||||
<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="92"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<TextBlock Text="안심회복" Style="{StaticResource ToggleLabel}" FontSize="15"/>
|
||||
<ToggleButton Grid.Column="1" Style="{StaticResource Toggle}"/></Grid>
|
||||
</StackPanel>
|
||||
|
||||
<!-- 알약 3 (자동운전/운전모드/풍량) -->
|
||||
<StackPanel Grid.Column="2" VerticalAlignment="Center" Margin="14,0,0,0">
|
||||
<Border CornerRadius="9" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="13,9" Margin="0,0,0,9">
|
||||
<StackPanel Orientation="Horizontal"><TextBlock Text="자동운전" Style="{StaticResource PillLabel}"/><TextBlock Text="Normal" Style="{StaticResource PillValue}" Margin="8,0,0,0"/></StackPanel></Border>
|
||||
<Border CornerRadius="9" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="13,9" Margin="0,0,0,9">
|
||||
<StackPanel Orientation="Horizontal"><TextBlock Text="운전모드" Style="{StaticResource PillLabel}"/><TextBlock Text="청정환기" Style="{StaticResource PillValue}" Margin="8,0,0,0"/></StackPanel></Border>
|
||||
<Border CornerRadius="9" BorderBrush="{StaticResource CardBorder}" BorderThickness="1.5" Padding="13,9">
|
||||
<StackPanel Orientation="Horizontal"><TextBlock Text="풍량" Style="{StaticResource PillLabel}"/><TextBlock Text="3단" Style="{StaticResource PillValue}" Margin="8,0,0,0"/></StackPanel></Border>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<!-- 하단 : ON + 제습기 연동 -->
|
||||
<Grid Grid.Row="1" Margin="0,16,0,0">
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
|
||||
<ToggleButton Grid.Column="0" Style="{StaticResource BigToggleBtn}" Content="ON" IsChecked="True" Height="46" Margin="0,0,16,0"/>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBlock Text="제습기 연동" Style="{StaticResource ToggleLabel}" FontSize="15" Margin="0,0,12,0"/>
|
||||
<ToggleButton Style="{StaticResource Toggle}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<local:RoomCard x:Name="cLiving" Grid.Row="0" Grid.Column="2"/>
|
||||
<local:RoomCard x:Name="cR1" Grid.Row="1" Grid.Column="0"/>
|
||||
<local:RoomCard x:Name="cR2" Grid.Row="1" Grid.Column="1"/>
|
||||
<local:RoomCard x:Name="cR3" Grid.Row="1" Grid.Column="2"/>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,22 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace AirPlanner
|
||||
{
|
||||
public partial class VentAllView : UserControl
|
||||
{
|
||||
public VentAllView()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += (_, _) =>
|
||||
{
|
||||
cLiving.Set("거실", "좋음", Aq("AqGood"), "좋음", "좋음", "좋음", "좋음", "Standby", true);
|
||||
cR1.Set("침실1", "좋음", Aq("AqGood"), "좋음", "좋음", "좋음", "좋음", "Standby", true);
|
||||
cR2.Set("침실2", "보통", Aq("AqNormal"), "좋음", "좋음", "보통", "보통", "ON", true);
|
||||
cR3.Set("침실3", "나쁨", Aq("AqBad"), "좋음", "좋음", "보통", "나쁨", "ON", true);
|
||||
};
|
||||
}
|
||||
|
||||
Brush Aq(string key) => (Brush)FindResource(key);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user