changed project data

https://github.com/JaneaSystems/PowerToys-DevProjects/issues/14
This commit is contained in:
seraphima
2024-07-04 16:00:24 +02:00
parent 6516af8a7a
commit 647ea2db1e
4 changed files with 132 additions and 113 deletions

View File

@@ -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<ProjectWrapper>
{
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<MonitorConfigurationWrapper> MonitorConfiguration { get; set; }
public List<ApplicationWrapper> Applications { get; set; }
}
}
}

View File

@@ -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<MonitorConfigurationWrapper> MonitorConfiguration { get; set; }
public List<ApplicationWrapper> Applications { get; set; }
}
public struct ProjectsListWrapper
{
public List<ProjectWrapper> Projects { get; set; }

View File

@@ -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);
}
}
}
}

View File

@@ -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<ProjectsData.ProjectWrapper>();
projectsWrapper.Projects = new List<ProjectData.ProjectWrapper>();
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<ProjectsData.ApplicationWrapper> { },
MonitorConfiguration = new List<ProjectsData.MonitorConfigurationWrapper> { },
Applications = new List<ProjectData.ApplicationWrapper> { },
MonitorConfiguration = new List<ProjectData.MonitorConfigurationWrapper> { },
};
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,