From ca47896204482bf4a6979e3838bf7f09f61cebeb Mon Sep 17 00:00:00 2001
From: giy <giy@omp-system.ru>
Date: Fri, 02 Sep 2022 14:16:56 +0300
Subject: [PATCH] Обновление до версии 2.9.0
---
QtVsTools.Core/QtModules.cs | 66 +++++++++++++++++++++-----------
1 files changed, 43 insertions(+), 23 deletions(-)
diff --git a/QtVsTools.Core/QtModules.cs b/QtVsTools.Core/QtModules.cs
index 0b1bdde..8634ece 100644
--- a/QtVsTools.Core/QtModules.cs
+++ b/QtVsTools.Core/QtModules.cs
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt VS Tools.
@@ -38,37 +38,58 @@
{
public class QtModules
{
- private static QtModules instance = new QtModules();
- private readonly Dictionary<int, QtModule> modules = new Dictionary<int, QtModule>();
+ public static QtModules Instance { get; } = new QtModules();
- public static QtModules Instance
- {
- get { return instance; }
- }
+ private List<QtModule> qt5list = null, qt6list = null;
+ private readonly Dictionary<int, QtModule> qt5modules = new Dictionary<int, QtModule>();
+ private readonly Dictionary<int, QtModule> qt6modules = new Dictionary<int, QtModule>();
- public QtModule Module(int id)
+ public QtModule Module(int id, uint major)
{
- QtModule module;
- modules.TryGetValue(id, out module);
+ QtModule module = null;
+ if (major < 6)
+ qt5modules.TryGetValue(id, out module);
+ if (major == 6)
+ qt6modules.TryGetValue(id, out module);
+ if (major > 6)
+ throw new QtVSException("Unsupported Qt version.");
return module;
}
- public List<QtModule> GetAvailableModules()
+ public List<QtModule> GetAvailableModules(uint major)
{
- var lst = new List<QtModule>(modules.Count);
- foreach (var entry in modules)
- lst.Add(entry.Value);
- return lst;
+ if (major < 6) {
+ if (qt5list == null) {
+ qt5list = new List<QtModule>(qt5modules.Count);
+ foreach (var entry in qt5modules)
+ qt5list.Add(entry.Value);
+ }
+ return qt5list;
+ }
+ if (major == 6) {
+ if (qt6list == null) {
+ qt6list = new List<QtModule>(qt6modules.Count);
+ foreach (var entry in qt6modules)
+ qt6list.Add(entry.Value);
+ }
+ return qt6list;
+ }
+ if (major > 6)
+ throw new QtVSException("Unsupported Qt version.");
+ return null;
}
private QtModules()
{
- var uri = new Uri(
- System.Reflection.Assembly.GetExecutingAssembly().EscapedCodeBase);
- var pkgInstallPath = Path.GetDirectoryName(
- Uri.UnescapeDataString(uri.AbsolutePath)) + @"\";
+ var uri = new Uri(System.Reflection.Assembly.GetExecutingAssembly().EscapedCodeBase);
+ var pkgInstallPath = Path.GetDirectoryName(Uri.UnescapeDataString(uri.AbsolutePath));
- var modulesFile = Path.Combine(pkgInstallPath, "qtmodules.xml");
+ FillModules(Path.Combine(pkgInstallPath, "qtmodules.xml"), "5", ref qt5modules);
+ FillModules(Path.Combine(pkgInstallPath, "qt6modules.xml"), "6", ref qt6modules);
+ }
+
+ private void FillModules(string modulesFile, string major, ref Dictionary<int, QtModule> dict)
+ {
if (!File.Exists(modulesFile))
return;
@@ -85,11 +106,10 @@
foreach (var xModule in xml.Elements("QtVsTools").Elements("Module")) {
int id = (int)xModule.Attribute("Id");
- QtModule module = new QtModule(id);
+ QtModule module = new QtModule(id, major);
module.Name = (string)xModule.Element("Name");
module.Selectable = ((string)xModule.Element("Selectable") == "true");
module.LibraryPrefix = (string)xModule.Element("LibraryPrefix");
- module.HasDLL = ((string)xModule.Element("HasDLL") == "true");
module.proVarQT = (string)xModule.Element("proVarQT");
module.proVarCONFIG = (string)xModule.Element("proVarCONFIG");
module.IncludePath = xModule.Elements("IncludePath")
@@ -106,7 +126,7 @@
Messages.Print("\r\nCritical error: incorrect format of qtmodules.xml");
throw new QtVSException("qtmodules.xml");
}
- modules.Add(id, module);
+ dict.Add(id, module);
}
}
}
--
Gitblit v1.9.1