diff --git a/SmartAquaViewer/Classes/Constants.cs b/SmartAquaViewer/Classes/Constants.cs index f0184c7..d79958a 100644 --- a/SmartAquaViewer/Classes/Constants.cs +++ b/SmartAquaViewer/Classes/Constants.cs @@ -23,5 +23,10 @@ namespace SmartAquaViewer.Classes public const string DATA_FOLDER = "data_folder"; public const string REC_FOLDER = "REC"; } + + public class DataFiles + { + public const string CCTV_LIST = "cctvlist.json"; + } } } diff --git a/SmartAquaViewer/Classes/Utils.cs b/SmartAquaViewer/Classes/Utils.cs index c58fd38..dab97a0 100644 --- a/SmartAquaViewer/Classes/Utils.cs +++ b/SmartAquaViewer/Classes/Utils.cs @@ -75,6 +75,11 @@ namespace SmartAquaViewer.Classes return DataFilePath; } + public string GetDataFileContentPath(string filePath) + { + return Path.Combine(CurrentDirectory, DataFilePath, filePath); + } + public void CreateDirectory(string folderName) { string directoryPath = Path.Combine(Environment.CurrentDirectory, folderName); diff --git a/SmartAquaViewer/MainWindow.xaml.cs b/SmartAquaViewer/MainWindow.xaml.cs index ae96562..79cebc0 100644 --- a/SmartAquaViewer/MainWindow.xaml.cs +++ b/SmartAquaViewer/MainWindow.xaml.cs @@ -31,6 +31,8 @@ namespace SmartAquaViewer { ConfigData.Instance.LoadConfig(); CreateDirectories(); + + Datas.Instance.GetCCTVInfoListFromJson(); } private void CreateDirectories() diff --git a/SmartAquaViewer/Model/Datas.cs b/SmartAquaViewer/Model/Datas.cs index 8e446bf..d27c81e 100644 --- a/SmartAquaViewer/Model/Datas.cs +++ b/SmartAquaViewer/Model/Datas.cs @@ -2,10 +2,15 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; +using System.Diagnostics; +using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; +using System.Windows.Media.Media3D; +using Newtonsoft.Json; +using SmartAquaViewer.Classes; using SmartAquaViewer.DataAnalysis; using static MaterialDesignThemes.Wpf.Theme.ToolBar; @@ -41,9 +46,90 @@ namespace SmartAquaViewer.Model OnPropertyChanged(nameof(WaterQualityList)); } - public void SetCCTVInfoList() + public void GetCCTVInfoListFromJson() { - + string cctvListPath = Utils.Instance.GetDataFileContentPath(Constants.DataFiles.CCTV_LIST); + if (!File.Exists(cctvListPath)) + CreateAndSetMockUpCCTVInfoList(cctvListPath); + return; + + string jsonString = File.ReadAllText(cctvListPath); + var cctvInfoList = JsonConvert.DeserializeObject>(jsonString) ?? new List(); + + CctvInfoList = new ObservableCollection(cctvInfoList); + } + + public void CreateAndSetMockUpCCTVInfoList(string filePath) + { + CctvInfoList.Clear(); + + CctvInfoList = new ObservableCollection() + { + new() + { + DeviceId = "000001", + DeviceName = "CCTV 1", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-07", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000002", + DeviceName = "CCTV 2", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-08", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000003", + DeviceName = "CCTV 3", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-01", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000004", + DeviceName = "CCTV 4", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-02", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000005", + DeviceName = "CCTV 5", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-03", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000006", + DeviceName = "CCTV 6", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-04", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000007", + DeviceName = "CCTV 7", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-05", + Status = CCTVStatus.Disconnected + }, + new() + { + DeviceId = "000008", + DeviceName = "CCTV 8", + RtspUrl = "rtsp://210.217.121.58:8554/CAM-06", + Status = CCTVStatus.Disconnected + } + }; + + string updatedJson = JsonConvert.SerializeObject(CctvInfoList, Formatting.Indented); + File.WriteAllText(filePath, updatedJson); + } + + public ObservableCollection GetCCTVInfoList() + { + return CctvInfoList; } public event PropertyChangedEventHandler? PropertyChanged; diff --git a/SmartAquaViewer/SmartAquaViewer.csproj b/SmartAquaViewer/SmartAquaViewer.csproj index 8756b8e..7d30baa 100644 --- a/SmartAquaViewer/SmartAquaViewer.csproj +++ b/SmartAquaViewer/SmartAquaViewer.csproj @@ -55,7 +55,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/SmartAquaViewer/ViewModel/CCTVViewModel.cs b/SmartAquaViewer/ViewModel/CCTVViewModel.cs index d2de3d7..0d68f26 100644 --- a/SmartAquaViewer/ViewModel/CCTVViewModel.cs +++ b/SmartAquaViewer/ViewModel/CCTVViewModel.cs @@ -138,65 +138,7 @@ namespace SmartAquaViewer.ViewModel BtnVisibilityRight = Visibility.Collapsed; BtnVisibilityStop = Visibility.Collapsed; - CCTVInfoList = new ObservableCollection() - { - new() - { - DeviceId = "000001", - DeviceName = "CCTV 1", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-07", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000002", - DeviceName = "CCTV 2", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-08", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000003", - DeviceName = "CCTV 3", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-01", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000004", - DeviceName = "CCTV 4", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-02", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000005", - DeviceName = "CCTV 5", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-03", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000006", - DeviceName = "CCTV 6", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-04", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000007", - DeviceName = "CCTV 7", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-05", - Status = CCTVStatus.Disconnected - }, - new() - { - DeviceId = "000008", - DeviceName = "CCTV 8", - RtspUrl = "rtsp://210.217.121.58:8554/CAM-06", - Status = CCTVStatus.Disconnected - } - }; + CCTVInfoList = Datas.Instance.GetCCTVInfoList(); BuildPlayers(CCTVInfoList);