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:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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