diff --git a/SmartAquaViewer/App.xaml b/SmartAquaViewer/App.xaml index af590e0..a067e94 100644 --- a/SmartAquaViewer/App.xaml +++ b/SmartAquaViewer/App.xaml @@ -2,13 +2,29 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:SmartAquaViewer" + xmlns:view="clr-namespace:SmartAquaViewer.View" + xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel" StartupUri="MainWindow.xaml"> + + + + + + + + + + + + + + diff --git a/SmartAquaViewer/MainWindow.xaml b/SmartAquaViewer/MainWindow.xaml index ed8fa39..d37aa6d 100644 --- a/SmartAquaViewer/MainWindow.xaml +++ b/SmartAquaViewer/MainWindow.xaml @@ -6,25 +6,48 @@ xmlns:local="clr-namespace:SmartAquaViewer" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:view="clr-namespace:SmartAquaViewer.View" + xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel" mc:Ignorable="d" Title="MainWindow" Height="1080" Width="1920" WindowStartupLocation="CenterScreen"> + + + + + - + - + - - + + + + + + + - + diff --git a/SmartAquaViewer/Reources/Generic.xaml b/SmartAquaViewer/Reources/Generic.xaml new file mode 100644 index 0000000..b35ade7 --- /dev/null +++ b/SmartAquaViewer/Reources/Generic.xaml @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/SmartAquaViewer/Reources/Images/ListImage.png b/SmartAquaViewer/Reources/Images/ListImage.png new file mode 100644 index 0000000..648d86c Binary files /dev/null and b/SmartAquaViewer/Reources/Images/ListImage.png differ diff --git a/SmartAquaViewer/SmartAquaViewer.csproj b/SmartAquaViewer/SmartAquaViewer.csproj index fc386e0..63f8823 100644 --- a/SmartAquaViewer/SmartAquaViewer.csproj +++ b/SmartAquaViewer/SmartAquaViewer.csproj @@ -9,9 +9,17 @@ AnyCPU;x64 + + + + + + + + diff --git a/SmartAquaViewer/View/CCTVView.xaml b/SmartAquaViewer/View/CCTVView.xaml new file mode 100644 index 0000000..269d9c1 --- /dev/null +++ b/SmartAquaViewer/View/CCTVView.xaml @@ -0,0 +1,16 @@ + + + + + diff --git a/SmartAquaViewer/View/CCTVView.xaml.cs b/SmartAquaViewer/View/CCTVView.xaml.cs new file mode 100644 index 0000000..fccdc06 --- /dev/null +++ b/SmartAquaViewer/View/CCTVView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SmartAquaViewer.View +{ + /// + /// CCTVView.xaml에 대한 상호 작용 논리 + /// + public partial class CCTVView : UserControl + { + public CCTVView() + { + InitializeComponent(); + } + } +} diff --git a/SmartAquaViewer/View/EnegyView.xaml b/SmartAquaViewer/View/EnegyView.xaml new file mode 100644 index 0000000..3c3af99 --- /dev/null +++ b/SmartAquaViewer/View/EnegyView.xaml @@ -0,0 +1,16 @@ + + + + + diff --git a/SmartAquaViewer/View/EnegyView.xaml.cs b/SmartAquaViewer/View/EnegyView.xaml.cs new file mode 100644 index 0000000..4da873d --- /dev/null +++ b/SmartAquaViewer/View/EnegyView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SmartAquaViewer.View +{ + /// + /// EnegyView.xaml에 대한 상호 작용 논리 + /// + public partial class EnegyView : UserControl + { + public EnegyView() + { + InitializeComponent(); + } + } +} diff --git a/SmartAquaViewer/View/FileListView.xaml b/SmartAquaViewer/View/FileListView.xaml index 0cb149c..4dce29a 100644 --- a/SmartAquaViewer/View/FileListView.xaml +++ b/SmartAquaViewer/View/FileListView.xaml @@ -7,32 +7,48 @@ xmlns:vm="clr-namespace:SmartAquaViewer.ViewModel" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" mc:Ignorable="d" - d:DesignHeight="1080" d:DesignWidth="300"> + d:DesignHeight="1040" d:DesignWidth="270"> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SmartAquaViewer/View/GreenHouseView.xaml b/SmartAquaViewer/View/GreenHouseView.xaml new file mode 100644 index 0000000..3e98376 --- /dev/null +++ b/SmartAquaViewer/View/GreenHouseView.xaml @@ -0,0 +1,16 @@ + + + + + diff --git a/SmartAquaViewer/View/GreenHouseView.xaml.cs b/SmartAquaViewer/View/GreenHouseView.xaml.cs new file mode 100644 index 0000000..8f558eb --- /dev/null +++ b/SmartAquaViewer/View/GreenHouseView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SmartAquaViewer.View +{ + /// + /// GreenHouseView.xaml에 대한 상호 작용 논리 + /// + public partial class GreenHouseView : UserControl + { + public GreenHouseView() + { + InitializeComponent(); + } + } +} diff --git a/SmartAquaViewer/View/MonitoringView.xaml b/SmartAquaViewer/View/MonitoringView.xaml new file mode 100644 index 0000000..52e27e7 --- /dev/null +++ b/SmartAquaViewer/View/MonitoringView.xaml @@ -0,0 +1,16 @@ + + + + + diff --git a/SmartAquaViewer/View/MonitoringView.xaml.cs b/SmartAquaViewer/View/MonitoringView.xaml.cs new file mode 100644 index 0000000..d63f58e --- /dev/null +++ b/SmartAquaViewer/View/MonitoringView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace SmartAquaViewer.View +{ + /// + /// MonitoringView.xaml에 대한 상호 작용 논리 + /// + public partial class MonitoringView : UserControl + { + public MonitoringView() + { + InitializeComponent(); + } + } +} diff --git a/SmartAquaViewer/ViewModel/CCTVViewModel.cs b/SmartAquaViewer/ViewModel/CCTVViewModel.cs new file mode 100644 index 0000000..607e8f1 --- /dev/null +++ b/SmartAquaViewer/ViewModel/CCTVViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace SmartAquaViewer.ViewModel +{ + public class CCTVViewModel : INotifyPropertyChanged + { + public CCTVViewModel() + { + + } + + public event PropertyChangedEventHandler? PropertyChanged; + private void OnPropertyChanged([CallerMemberName] string? name = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +} diff --git a/SmartAquaViewer/ViewModel/EnergyViewModel.cs b/SmartAquaViewer/ViewModel/EnergyViewModel.cs new file mode 100644 index 0000000..3ac2e56 --- /dev/null +++ b/SmartAquaViewer/ViewModel/EnergyViewModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace SmartAquaViewer.ViewModel +{ + public class EnergyViewModel : INotifyPropertyChanged + { + public EnergyViewModel() { } + + public event PropertyChangedEventHandler? PropertyChanged; + private void OnPropertyChanged([CallerMemberName] string? name = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +} diff --git a/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs b/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs new file mode 100644 index 0000000..8b25718 --- /dev/null +++ b/SmartAquaViewer/ViewModel/GreenHouseGasViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace SmartAquaViewer.ViewModel +{ + public class GreenHouseGasViewModel : INotifyPropertyChanged + { + public GreenHouseGasViewModel() + { + // Initialization logic for GreenHouseGasViewModel can go here + } + + public event PropertyChangedEventHandler? PropertyChanged; + private void OnPropertyChanged([CallerMemberName] string? name = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +} diff --git a/SmartAquaViewer/ViewModel/MainViewModel.cs b/SmartAquaViewer/ViewModel/MainViewModel.cs new file mode 100644 index 0000000..1532240 --- /dev/null +++ b/SmartAquaViewer/ViewModel/MainViewModel.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; +using SmartAquaViewer.Controls; + +namespace SmartAquaViewer.ViewModel +{ + public class MainViewModel : INotifyPropertyChanged + { + private object? _selectedViewModel; + public object? SelectedViewModel + { + get => _selectedViewModel; + set + { + if (_selectedViewModel != value) + { + _selectedViewModel = value; + OnPropertyChanged(nameof(SelectedViewModel)); + } + } + } + + public ICommand SwapViewCommand { get; } + + public MainViewModel() + { + SwapViewCommand = new RelayCommand(SwapView); + + SelectedViewModel = new MonitoringViewModel(); // Default view + } + + private void SwapView(object obj) + { + var tag = (string)obj; + + switch (tag) + { + case "monitoring": + SelectedViewModel = new MonitoringViewModel(); + break; + case "energy": + SelectedViewModel = new EnergyViewModel(); + break; + case "greenHouseGas": + SelectedViewModel = new GreenHouseGasViewModel(); + break; + case "cctv": + SelectedViewModel = new CCTVViewModel(); + break; + default: + throw new ArgumentException("Unknown view tag", nameof(obj)); + } + } + + public event PropertyChangedEventHandler? PropertyChanged; + private void OnPropertyChanged([CallerMemberName] string? name = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +} diff --git a/SmartAquaViewer/ViewModel/MonitoringViewModel.cs b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs new file mode 100644 index 0000000..af32925 --- /dev/null +++ b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace SmartAquaViewer.ViewModel +{ + public class MonitoringViewModel : INotifyPropertyChanged + { + public MonitoringViewModel() + { + // Initialization logic for MonitoringViewModel can go here + } + + public event PropertyChangedEventHandler? PropertyChanged; + private void OnPropertyChanged([CallerMemberName] string? name = null) + => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +}