From bf27a46ee888d0f09066c4be683f343b9d85a7f9 Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Thu, 22 Dec 2022 11:19:29 +0200 Subject: Optimize tooltip and description setting Tooltip and description texts were set every time any component data was updated. Fixed so that the texts are altered only when needed. Task-number: QTIFW-2805 Change-Id: Ic75a17d4b88d0f3b1658d9ec187284d4604f9f45 Reviewed-by: Qt CI Bot Reviewed-by: Arttu Tarkiainen --- src/libs/installer/component.cpp | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp index 714f3c70f..914164571 100644 --- a/src/libs/installer/component.cpp +++ b/src/libs/installer/component.cpp @@ -1198,6 +1198,10 @@ void Component::markComponentUnstable(Component::UnstableError error, const QStr setValue(scUnstable, scTrue); QMetaEnum metaEnum = QMetaEnum::fromType(); emit packageManagerCore()->unstableComponentFound(QLatin1String(metaEnum.valueToKey(error)), errorMessage, this->name()); + + // Update the description and tooltip texts to contain + // information about the unstable error. + updateModelData(scDescription, QString()); } QJSValue Component::callScriptMethod(const QString &methodName, const QJSValueList &arguments) const @@ -1738,24 +1742,26 @@ void Component::updateModelData(const QString &key, const QString &data) setData(humanReadableSize(size), UncompressedSize); } - QString tooltipText; - const QString &updateInfo = d->m_vars.value(scUpdateText); - if (!d->m_core->isUpdater() || updateInfo.isEmpty()) { - tooltipText = QString::fromLatin1("%1").arg(d->m_vars.value(scDescription)); - } else { - tooltipText = d->m_vars.value(scDescription) + QLatin1String("

") - + tr("Update Info: ") + updateInfo; - } - if (isUnstable()) { - tooltipText += QLatin1String("
") + tr("There was an error loading the selected component. " + if (key == scUpdateText || key == scDescription) { + QString tooltipText; + const QString &updateInfo = d->m_vars.value(scUpdateText); + if (!d->m_core->isUpdater() || updateInfo.isEmpty()) { + tooltipText = QString::fromLatin1("%1").arg(d->m_vars.value(scDescription)); + } else { + tooltipText = d->m_vars.value(scDescription) + QLatin1String("

") + + tr("Update Info: ") + updateInfo; + } + if (isUnstable()) { + tooltipText += QLatin1String("
") + tr("There was an error loading the selected component. " "This component cannot be installed."); - } - static const QRegularExpression externalLinkRegexp(QLatin1String("{external-link}='(.*?)'")); - static const QLatin1String externalLinkElement(QLatin1String("\\1")); - // replace {external-link}='' fields in component description with proper link tags - tooltipText.replace(externalLinkRegexp, externalLinkElement); + } + static const QRegularExpression externalLinkRegexp(QLatin1String("{external-link}='(.*?)'")); + static const QLatin1String externalLinkElement(QLatin1String("\\1")); + // replace {external-link}='' fields in component description with proper link tags + tooltipText.replace(externalLinkRegexp, externalLinkElement); - setData(tooltipText, Qt::ToolTipRole); + setData(tooltipText, Qt::ToolTipRole); + } } /*! -- cgit v1.2.3