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.Package/QtMsBuild/QtModulesEditor.cs |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/QtVsTools.Package/QtMsBuild/QtModulesEditor.cs b/QtVsTools.Package/QtMsBuild/QtModulesEditor.cs
index 8fbd145..e05e4ce 100644
--- a/QtVsTools.Package/QtMsBuild/QtModulesEditor.cs
+++ b/QtVsTools.Package/QtMsBuild/QtModulesEditor.cs
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2021 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.
@@ -28,15 +28,15 @@
 
 using Microsoft.VisualStudio.ProjectSystem;
 using Microsoft.VisualStudio.ProjectSystem.Properties;
-using Microsoft.Internal.VisualStudio.PlatformUI;
 using System;
+using System.Collections.Generic;
 using System.ComponentModel.Composition;
 using System.Linq;
 using System.Threading.Tasks;
 
 namespace QtVsTools.QtMsBuild
 {
-    using QtVsTools.Core;
+    using Core;
 
     [Export(typeof(IPropertyPageUIValueEditor))]
     [ExportMetadata("Name", "QtModulesEditor")]
@@ -50,7 +50,15 @@
         {
             await Task.Yield();
 
-            var modules = QtModules.Instance.GetAvailableModules()
+            var qtSettings = ruleProperty.ContainingRule;
+            var qtVersion = await qtSettings.GetPropertyValueAsync("QtInstall");
+
+            var vm = QtVersionManager.The();
+            var versionInfo = vm.GetVersionInfo(qtVersion);
+            if (versionInfo == null)
+                versionInfo = vm.GetVersionInfo(vm.GetDefaultVersion());
+
+            var modules = QtModules.Instance.GetAvailableModules(versionInfo.qtMajor)
                 .Where(x => !string.IsNullOrEmpty(x.proVarQT))
                 .Select(x => new QtModulesPopup.Module
                 {
@@ -61,24 +69,28 @@
                 })
                 .ToList();
 
-            var allQT = modules.SelectMany(x => x.QT).ToHashSet();
-            var selectedQT = currentValue.ToString().Split(';').ToHashSet();
-            var extraQT = selectedQT.Except(allQT);
+            HashSet<string> selectedQt = null;
+            IEnumerable<string> extraQt = null;
+            if (currentValue != null) {
+                var allQt = modules.SelectMany(x => x.QT).ToHashSet();
+                selectedQt = currentValue.ToString().Split(';').ToHashSet();
+                extraQt = selectedQt.Except(allQt);
 
-            foreach (var module in modules)
-                module.IsSelected = module.QT.Intersect(selectedQT).Count() == module.QT.Count;
+                foreach (var module in modules)
+                    module.IsSelected = module.QT.Intersect(selectedQt).Count() == module.QT.Count;
+            }
 
             var popup = new QtModulesPopup();
-            popup.SetModules(modules);
+            popup.SetModules(modules.OrderBy(module => module.Name));
 
             if (popup.ShowModal().GetValueOrDefault()) {
-                selectedQT = modules
+                selectedQt = modules
                     .Where(x => x.IsSelected)
                     .SelectMany(x => x.QT)
-                    .Union(extraQT)
+                    .Union(extraQt ?? Enumerable.Empty<string>())
                     .ToHashSet();
             }
-            return string.Join(";", selectedQT);
+            return selectedQt == null ? "" : string.Join(";", selectedQt);
         }
     }
 }

--
Gitblit v1.9.1