mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-15 19:27:56 +01:00
changed project data
https://github.com/JaneaSystems/PowerToys-DevProjects/issues/14
This commit is contained in:
88
src/modules/Projects/ProjectsEditor/Data/ProjectData.cs
Normal file
88
src/modules/Projects/ProjectsEditor/Data/ProjectData.cs
Normal 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; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Projects.Data;
|
using Projects.Data;
|
||||||
using ProjectsEditor.Utils;
|
using ProjectsEditor.Utils;
|
||||||
|
using static ProjectsEditor.Data.ProjectData;
|
||||||
using static ProjectsEditor.Data.ProjectsData;
|
using static ProjectsEditor.Data.ProjectsData;
|
||||||
|
|
||||||
namespace ProjectsEditor.Data
|
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 struct ProjectsListWrapper
|
||||||
{
|
{
|
||||||
public List<ProjectWrapper> Projects { get; set; }
|
public List<ProjectWrapper> Projects { get; set; }
|
||||||
|
|||||||
27
src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs
Normal file
27
src/modules/Projects/ProjectsEditor/Data/TempProjectData.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -46,24 +46,20 @@ namespace ProjectsEditor.Utils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParsingResult ParseProject(string fileName, out Project project)
|
public ParsingResult ParseTempProject(out Project project)
|
||||||
{
|
{
|
||||||
project = null;
|
project = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ProjectsData parser = new ProjectsData();
|
TempProjectData parser = new TempProjectData();
|
||||||
if (!File.Exists(fileName))
|
if (!File.Exists(parser.File))
|
||||||
{
|
{
|
||||||
Logger.LogWarning($"ParseProject method. Projects storage file not found: {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);
|
project = GetProjectFromWrapper(parser.Read(parser.File));
|
||||||
if (!ExtractProject(projects, out project))
|
parser.DeleteTempFile();
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ParsingResult(true);
|
return new ParsingResult(true);
|
||||||
}
|
}
|
||||||
@@ -74,25 +70,7 @@ namespace ProjectsEditor.Utils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ExtractProject(ProjectsData.ProjectsListWrapper projects, out Project project)
|
private Project GetProjectFromWrapper(ProjectData.ProjectWrapper 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)
|
|
||||||
{
|
{
|
||||||
Project newProject = new Project()
|
Project newProject = new Project()
|
||||||
{
|
{
|
||||||
@@ -144,24 +122,24 @@ namespace ProjectsEditor.Utils
|
|||||||
{
|
{
|
||||||
ProjectsData serializer = new ProjectsData();
|
ProjectsData serializer = new ProjectsData();
|
||||||
ProjectsData.ProjectsListWrapper projectsWrapper = new ProjectsData.ProjectsListWrapper { };
|
ProjectsData.ProjectsListWrapper projectsWrapper = new ProjectsData.ProjectsListWrapper { };
|
||||||
projectsWrapper.Projects = new List<ProjectsData.ProjectWrapper>();
|
projectsWrapper.Projects = new List<ProjectData.ProjectWrapper>();
|
||||||
|
|
||||||
foreach (Project project in projects)
|
foreach (Project project in projects)
|
||||||
{
|
{
|
||||||
ProjectsData.ProjectWrapper wrapper = new ProjectsData.ProjectWrapper
|
ProjectData.ProjectWrapper wrapper = new ProjectData.ProjectWrapper
|
||||||
{
|
{
|
||||||
Id = project.Id,
|
Id = project.Id,
|
||||||
Name = project.Name,
|
Name = project.Name,
|
||||||
CreationTime = project.CreationTime,
|
CreationTime = project.CreationTime,
|
||||||
IsShortcutNeeded = project.IsShortcutNeeded,
|
IsShortcutNeeded = project.IsShortcutNeeded,
|
||||||
LastLaunchedTime = project.LastLaunchedTime,
|
LastLaunchedTime = project.LastLaunchedTime,
|
||||||
Applications = new List<ProjectsData.ApplicationWrapper> { },
|
Applications = new List<ProjectData.ApplicationWrapper> { },
|
||||||
MonitorConfiguration = new List<ProjectsData.MonitorConfigurationWrapper> { },
|
MonitorConfiguration = new List<ProjectData.MonitorConfigurationWrapper> { },
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var app in project.Applications)
|
foreach (var app in project.Applications)
|
||||||
{
|
{
|
||||||
wrapper.Applications.Add(new ProjectsData.ApplicationWrapper
|
wrapper.Applications.Add(new ProjectData.ApplicationWrapper
|
||||||
{
|
{
|
||||||
Application = app.AppName,
|
Application = app.AppName,
|
||||||
ApplicationPath = app.AppPath,
|
ApplicationPath = app.AppPath,
|
||||||
@@ -170,7 +148,7 @@ namespace ProjectsEditor.Utils
|
|||||||
CommandLineArguments = app.CommandLineArguments,
|
CommandLineArguments = app.CommandLineArguments,
|
||||||
Maximized = app.Maximized,
|
Maximized = app.Maximized,
|
||||||
Minimized = app.Minimized,
|
Minimized = app.Minimized,
|
||||||
Position = new ProjectsData.ApplicationWrapper.WindowPositionWrapper
|
Position = new ProjectData.ApplicationWrapper.WindowPositionWrapper
|
||||||
{
|
{
|
||||||
X = app.Position.X,
|
X = app.Position.X,
|
||||||
Y = app.Position.Y,
|
Y = app.Position.Y,
|
||||||
@@ -183,20 +161,20 @@ namespace ProjectsEditor.Utils
|
|||||||
|
|
||||||
foreach (var monitor in project.Monitors)
|
foreach (var monitor in project.Monitors)
|
||||||
{
|
{
|
||||||
wrapper.MonitorConfiguration.Add(new ProjectsData.MonitorConfigurationWrapper
|
wrapper.MonitorConfiguration.Add(new ProjectData.MonitorConfigurationWrapper
|
||||||
{
|
{
|
||||||
Id = monitor.MonitorName,
|
Id = monitor.MonitorName,
|
||||||
InstanceId = monitor.MonitorInstanceId,
|
InstanceId = monitor.MonitorInstanceId,
|
||||||
MonitorNumber = monitor.MonitorNumber,
|
MonitorNumber = monitor.MonitorNumber,
|
||||||
Dpi = monitor.Dpi,
|
Dpi = monitor.Dpi,
|
||||||
MonitorRectDpiAware = new ProjectsData.MonitorConfigurationWrapper.MonitorRectWrapper
|
MonitorRectDpiAware = new ProjectData.MonitorConfigurationWrapper.MonitorRectWrapper
|
||||||
{
|
{
|
||||||
Left = (int)monitor.MonitorDpiAwareBounds.Left,
|
Left = (int)monitor.MonitorDpiAwareBounds.Left,
|
||||||
Top = (int)monitor.MonitorDpiAwareBounds.Top,
|
Top = (int)monitor.MonitorDpiAwareBounds.Top,
|
||||||
Width = (int)monitor.MonitorDpiAwareBounds.Width,
|
Width = (int)monitor.MonitorDpiAwareBounds.Width,
|
||||||
Height = (int)monitor.MonitorDpiAwareBounds.Height,
|
Height = (int)monitor.MonitorDpiAwareBounds.Height,
|
||||||
},
|
},
|
||||||
MonitorRectDpiUnaware = new ProjectsData.MonitorConfigurationWrapper.MonitorRectWrapper
|
MonitorRectDpiUnaware = new ProjectData.MonitorConfigurationWrapper.MonitorRectWrapper
|
||||||
{
|
{
|
||||||
Left = (int)monitor.MonitorDpiUnawareBounds.Left,
|
Left = (int)monitor.MonitorDpiUnawareBounds.Left,
|
||||||
Top = (int)monitor.MonitorDpiUnawareBounds.Top,
|
Top = (int)monitor.MonitorDpiUnawareBounds.Top,
|
||||||
|
|||||||
Reference in New Issue
Block a user