summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagergui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/installer/packagemanagergui.cpp')
-rw-r--r--src/libs/installer/packagemanagergui.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index ffacbb6a2..3bcf4e5fc 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -1992,7 +1992,9 @@ void LicenseAgreementPage::entering()
packageManagerCore()->calculateComponentsToInstall();
foreach (QInstaller::Component *component, packageManagerCore()->orderedComponentsToInstall())
- addLicenseItem(component->licenses());
+ packageManagerCore()->addLicenseItem(component->licenses());
+
+ createLicenseWidgets();
const int licenseCount = m_licenseListWidget->count();
if (licenseCount > 0) {
@@ -2000,6 +2002,8 @@ void LicenseAgreementPage::entering()
m_licenseListWidget->setCurrentItem(m_licenseListWidget->item(0));
}
+ packageManagerCore()->clearLicenses();
+
updateUi();
}
@@ -2023,12 +2027,22 @@ void LicenseAgreementPage::currentItemChanged(QListWidgetItem *current)
m_textBrowser->setText(current->data(Qt::UserRole).toString());
}
-void LicenseAgreementPage::addLicenseItem(const QHash<QString, QPair<QString, QString> > &hash)
+void LicenseAgreementPage::createLicenseWidgets()
{
- for (QHash<QString, QPair<QString, QString> >::const_iterator it = hash.begin();
- it != hash.end(); ++it) {
- QListWidgetItem *item = new QListWidgetItem(it.key(), m_licenseListWidget);
- item->setData(Qt::UserRole, it.value().second);
+ QHash<QString, QMap<QString, QString>> priorityHash = packageManagerCore()->sortedLicenses();
+
+ QStringList priorities = priorityHash.keys();
+ priorities.sort();
+
+ for (int i = priorities.length() - 1; i >= 0; --i) {
+ QString priority = priorities.at(i);
+ QMap<QString, QString> licenses = priorityHash.value(priority);
+ QStringList licenseNames = licenses.keys();
+ licenseNames.sort(Qt::CaseInsensitive);
+ for (QString licenseName : licenseNames) {
+ QListWidgetItem *item = new QListWidgetItem(licenseName, m_licenseListWidget);
+ item->setData(Qt::UserRole, licenses.value(licenseName));
+ }
}
}