From 647ea2db1e1615940246e4c7c3245fedd70d4e4d Mon Sep 17 00:00:00 2001 From: seraphima Date: Thu, 4 Jul 2024 16:00:24 +0200 Subject: [PATCH] changed project data https://github.com/JaneaSystems/PowerToys-DevProjects/issues/14 --- .../ProjectsEditor/Data/ProjectData.cs | 88 +++++++++++++++++++ .../ProjectsEditor/Data/ProjectsData.cs | 76 +--------------- .../ProjectsEditor/Data/TempProjectData.cs | 27 ++++++ .../ProjectsEditor/Utils/ProjectsEditorIO.cs | 54 ++++-------- 4 files changed, 132 insertions(+), 113 deletions(-) create mode 100644 src/modules/Projects/ProjectsEditor/Data/ProjectData.cs create mode 100644 src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs diff --git a/src/modules/Projects/ProjectsEditor/Data/ProjectData.cs b/src/modules/Projects/ProjectsEditor/Data/ProjectData.cs new file mode 100644 index 0000000000..e1c52ffdd0 --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/Data/ProjectData.cs @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using Projects.Data; +using static ProjectsEditor.Data.ProjectData; + +namespace ProjectsEditor.Data +{ + public class ProjectData : ProjectsEditorData + { + public struct ApplicationWrapper + { + public struct WindowPositionWrapper + { + public int X { get; set; } + + public int Y { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + } + + public string Application { get; set; } + + public string ApplicationPath { get; set; } + + public string Title { get; set; } + + public string PackageFullName { get; set; } + + public string CommandLineArguments { get; set; } + + public bool Minimized { get; set; } + + public bool Maximized { get; set; } + + public WindowPositionWrapper Position { get; set; } + + public int Monitor { get; set; } + } + + public struct MonitorConfigurationWrapper + { + public struct MonitorRectWrapper + { + public int Top { get; set; } + + public int Left { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + } + + public string Id { get; set; } + + public string InstanceId { get; set; } + + public int MonitorNumber { get; set; } + + public int Dpi { get; set; } + + public MonitorRectWrapper MonitorRectDpiAware { get; set; } + + public MonitorRectWrapper MonitorRectDpiUnaware { get; set; } + } + + public struct ProjectWrapper + { + public string Id { get; set; } + + public string Name { get; set; } + + public long CreationTime { get; set; } + + public long LastLaunchedTime { get; set; } + + public bool IsShortcutNeeded { get; set; } + + public List MonitorConfiguration { get; set; } + + public List Applications { get; set; } + } + } +} diff --git a/src/modules/Projects/ProjectsEditor/Data/ProjectsData.cs b/src/modules/Projects/ProjectsEditor/Data/ProjectsData.cs index e5937ca45f..603c9c41e7 100644 --- a/src/modules/Projects/ProjectsEditor/Data/ProjectsData.cs +++ b/src/modules/Projects/ProjectsEditor/Data/ProjectsData.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using Projects.Data; using ProjectsEditor.Utils; +using static ProjectsEditor.Data.ProjectData; using static ProjectsEditor.Data.ProjectsData; namespace ProjectsEditor.Data @@ -19,81 +20,6 @@ namespace ProjectsEditor.Data } } - public struct ApplicationWrapper - { - public struct WindowPositionWrapper - { - public int X { get; set; } - - public int Y { get; set; } - - public int Width { get; set; } - - public int Height { get; set; } - } - - public string Application { get; set; } - - public string ApplicationPath { get; set; } - - public string Title { get; set; } - - public string PackageFullName { get; set; } - - public string CommandLineArguments { get; set; } - - public bool Minimized { get; set; } - - public bool Maximized { get; set; } - - public WindowPositionWrapper Position { get; set; } - - public int Monitor { get; set; } - } - - public struct MonitorConfigurationWrapper - { - public struct MonitorRectWrapper - { - public int Top { get; set; } - - public int Left { get; set; } - - public int Width { get; set; } - - public int Height { get; set; } - } - - public string Id { get; set; } - - public string InstanceId { get; set; } - - public int MonitorNumber { get; set; } - - public int Dpi { get; set; } - - public MonitorRectWrapper MonitorRectDpiAware { get; set; } - - public MonitorRectWrapper MonitorRectDpiUnaware { get; set; } - } - - public struct ProjectWrapper - { - public string Id { get; set; } - - public string Name { get; set; } - - public long CreationTime { get; set; } - - public long LastLaunchedTime { get; set; } - - public bool IsShortcutNeeded { get; set; } - - public List MonitorConfiguration { get; set; } - - public List Applications { get; set; } - } - public struct ProjectsListWrapper { public List Projects { get; set; } diff --git a/src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs b/src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs new file mode 100644 index 0000000000..d39c911c0e --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using ProjectsEditor.Utils; + +namespace ProjectsEditor.Data +{ + public class TempProjectData : ProjectData + { + public string File + { + get + { + return FolderUtils.DataFolder() + "\\temp-project.json"; + } + } + + public void DeleteTempFile() + { + if (System.IO.File.Exists(File)) + { + System.IO.File.Delete(File); + } + } + } +} diff --git a/src/modules/Projects/ProjectsEditor/Utils/ProjectsEditorIO.cs b/src/modules/Projects/ProjectsEditor/Utils/ProjectsEditorIO.cs index 7ff4bbdf40..11c25a323d 100644 --- a/src/modules/Projects/ProjectsEditor/Utils/ProjectsEditorIO.cs +++ b/src/modules/Projects/ProjectsEditor/Utils/ProjectsEditorIO.cs @@ -46,24 +46,20 @@ namespace ProjectsEditor.Utils } } - public ParsingResult ParseProject(string fileName, out Project project) + public ParsingResult ParseTempProject(out Project project) { project = null; try { - ProjectsData parser = new ProjectsData(); - if (!File.Exists(fileName)) + TempProjectData parser = new TempProjectData(); + if (!File.Exists(parser.File)) { Logger.LogWarning($"ParseProject method. Projects storage file not found: {parser.File}"); - return new ParsingResult(true); + return new ParsingResult(false); } - ProjectsData.ProjectsListWrapper projects = parser.Read(fileName); - if (!ExtractProject(projects, out project)) - { - Logger.LogWarning($"ParseProject method. Projects storage file content could not be set. Reason: {Properties.Resources.Error_Parsing_Message}"); - return new ParsingResult(false, ProjectsEditor.Properties.Resources.Error_Parsing_Message); - } + project = GetProjectFromWrapper(parser.Read(parser.File)); + parser.DeleteTempFile(); return new ParsingResult(true); } @@ -74,25 +70,7 @@ namespace ProjectsEditor.Utils } } - private bool ExtractProject(ProjectsData.ProjectsListWrapper projects, out Project project) - { - project = null; - if (projects.Projects == null) - { - return false; - } - - if (projects.Projects.Count != 1) - { - return false; - } - - ProjectsData.ProjectWrapper projectWrapper = projects.Projects[0]; - project = GetProjectFromWrapper(projectWrapper); - return true; - } - - private Project GetProjectFromWrapper(ProjectsData.ProjectWrapper project) + private Project GetProjectFromWrapper(ProjectData.ProjectWrapper project) { Project newProject = new Project() { @@ -144,24 +122,24 @@ namespace ProjectsEditor.Utils { ProjectsData serializer = new ProjectsData(); ProjectsData.ProjectsListWrapper projectsWrapper = new ProjectsData.ProjectsListWrapper { }; - projectsWrapper.Projects = new List(); + projectsWrapper.Projects = new List(); foreach (Project project in projects) { - ProjectsData.ProjectWrapper wrapper = new ProjectsData.ProjectWrapper + ProjectData.ProjectWrapper wrapper = new ProjectData.ProjectWrapper { Id = project.Id, Name = project.Name, CreationTime = project.CreationTime, IsShortcutNeeded = project.IsShortcutNeeded, LastLaunchedTime = project.LastLaunchedTime, - Applications = new List { }, - MonitorConfiguration = new List { }, + Applications = new List { }, + MonitorConfiguration = new List { }, }; foreach (var app in project.Applications) { - wrapper.Applications.Add(new ProjectsData.ApplicationWrapper + wrapper.Applications.Add(new ProjectData.ApplicationWrapper { Application = app.AppName, ApplicationPath = app.AppPath, @@ -170,7 +148,7 @@ namespace ProjectsEditor.Utils CommandLineArguments = app.CommandLineArguments, Maximized = app.Maximized, Minimized = app.Minimized, - Position = new ProjectsData.ApplicationWrapper.WindowPositionWrapper + Position = new ProjectData.ApplicationWrapper.WindowPositionWrapper { X = app.Position.X, Y = app.Position.Y, @@ -183,20 +161,20 @@ namespace ProjectsEditor.Utils foreach (var monitor in project.Monitors) { - wrapper.MonitorConfiguration.Add(new ProjectsData.MonitorConfigurationWrapper + wrapper.MonitorConfiguration.Add(new ProjectData.MonitorConfigurationWrapper { Id = monitor.MonitorName, InstanceId = monitor.MonitorInstanceId, MonitorNumber = monitor.MonitorNumber, Dpi = monitor.Dpi, - MonitorRectDpiAware = new ProjectsData.MonitorConfigurationWrapper.MonitorRectWrapper + MonitorRectDpiAware = new ProjectData.MonitorConfigurationWrapper.MonitorRectWrapper { Left = (int)monitor.MonitorDpiAwareBounds.Left, Top = (int)monitor.MonitorDpiAwareBounds.Top, Width = (int)monitor.MonitorDpiAwareBounds.Width, Height = (int)monitor.MonitorDpiAwareBounds.Height, }, - MonitorRectDpiUnaware = new ProjectsData.MonitorConfigurationWrapper.MonitorRectWrapper + MonitorRectDpiUnaware = new ProjectData.MonitorConfigurationWrapper.MonitorRectWrapper { Left = (int)monitor.MonitorDpiUnawareBounds.Left, Top = (int)monitor.MonitorDpiUnawareBounds.Top,