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