Transform doc.qt.io/qt-creator links to internal qthelp links, for links

that are found locally in the documentation. That opens such links in Qt
Creator, instead of in the web, if possible.

Change-Id: I2270c6947db22f4aeb4968bf5b7245de57521c92
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Eike Ziller
2022-11-24 10:57:55 +01:00
parent 7a2901d502
commit 2ff5f18bff

View File

@@ -11,6 +11,7 @@
#include "externaltoolmanager.h"
#include "fancytabwidget.h"
#include "generalsettings.h"
#include "helpmanager.h"
#include "icore.h"
#include "idocumentfactory.h"
#include "jsexpander.h"
@@ -1516,8 +1517,17 @@ void MainWindow::changeLog()
return;
const FilePath file = versionedFiles.at(index).second;
QString contents = QString::fromUtf8(file.fileContents().value_or(QByteArray()));
contents.replace(QRegularExpression("(QT(CREATOR)?BUG-[0-9]+)"),
"[\\1](https://bugreports.qt.io/browse/\\1)");
static const QRegularExpression bugexpr("(QT(CREATOR)?BUG-[0-9]+)");
contents.replace(bugexpr, "[\\1](https://bugreports.qt.io/browse/\\1)");
static const QRegularExpression docexpr("https://doc[.]qt[.]io/qtcreator/([.a-zA-Z/_-]*)");
QList<QRegularExpressionMatch> matches;
for (const QRegularExpressionMatch &m : docexpr.globalMatch(contents))
matches.append(m);
Utils::reverseForeach(matches, [&contents](const QRegularExpressionMatch &match) {
const QString qthelpUrl = "qthelp://org.qt-project.qtcreator/doc/" + match.captured(1);
if (!HelpManager::fileData(qthelpUrl).isEmpty())
contents.replace(match.capturedStart(), match.capturedLength(), qthelpUrl);
});
textEdit->setMarkdown(contents);
};
connect(versionCombo, &QComboBox::currentIndexChanged, textEdit, showLog);