aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-07-27 13:05:08 +0100
committerA Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2022-08-02 00:09:29 +0000
commitb8ec3199abebdfe170e4a5165ebe68d41af2f269 (patch)
treeabf2b71841277f4bd04fc254524b17cee3b06692 /ui
parenta0174e4f0bb43ffcb4c907dffced9e558a31d493 (diff)
Convert Acknowledgements to markdown and update GUI
Move Acknowledgements to a separate file to enable some code simplification and improve maintenance and discoverability for acknowlegements. Convert the Acknowledgements file to Github flavored markdown and display it in rich text using QTextBrowser. Add Acknowledgements.md to NSIS installer
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/about_dialog.cpp51
-rw-r--r--ui/qt/about_dialog.h5
-rw-r--r--ui/qt/about_dialog.ui10
3 files changed, 29 insertions, 37 deletions
diff --git a/ui/qt/about_dialog.cpp b/ui/qt/about_dialog.cpp
index 2fa0130a99..047611a6d7 100644
--- a/ui/qt/about_dialog.cpp
+++ b/ui/qt/about_dialog.cpp
@@ -63,11 +63,11 @@
#include <QMenu>
#include <QFileInfo>
#include <QMessageBox>
+#include <QPlainTextEdit>
AuthorListModel::AuthorListModel(QObject * parent) :
AStringListListModel(parent)
{
- bool readAck = false;
QFile f_authors;
f_authors.setFileName(get_datafile_path("AUTHORS-SHORT"));
@@ -80,27 +80,18 @@ AStringListListModel(parent)
#endif
QRegularExpression rx("(.*)[<(]([\\s'a-zA-Z0-9._%+-]+(\\[[Aa][Tt]\\])?[a-zA-Z0-9._%+-]+)[>)]");
- acknowledgement_.clear();
while (!ReadFile_authors.atEnd()) {
QString line = ReadFile_authors.readLine();
- if (! readAck && line.trimmed().length() == 0)
+ if (line.trimmed().length() == 0)
continue;
if (line.startsWith("------"))
continue;
- if (line.contains("Acknowledgements")) {
- readAck = true;
- continue;
- }
- else if (!readAck) {
- QRegularExpressionMatch match = rx.match(line);
- if (match.hasMatch())
- appendRow(QStringList() << match.captured(1).trimmed() << match.captured(2).trimmed());
+ QRegularExpressionMatch match = rx.match(line);
+ if (match.hasMatch()) {
+ appendRow(QStringList() << match.captured(1).trimmed() << match.captured(2).trimmed());
}
-
- if (readAck && (!line.isEmpty() || !acknowledgement_.isEmpty()))
- acknowledgement_.append(QString("%1\n").arg(line));
}
f_authors.close();
@@ -108,11 +99,6 @@ AStringListListModel(parent)
AuthorListModel::~AuthorListModel() { }
-QString AuthorListModel::acknowledgment() const
-{
- return acknowledgement_;
-}
-
QStringList AuthorListModel::headerColumns() const
{
return QStringList() << tr("Name") << tr("Email");
@@ -278,6 +264,7 @@ AboutDialog::AboutDialog(QWidget *parent) :
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose, true);
+ QFile f_acknowledgements;
QFile f_license;
AuthorListModel * authorModel = new AuthorListModel(this);
@@ -288,10 +275,6 @@ AboutDialog::AboutDialog(QWidget *parent) :
proxyAuthorModel->setColumnToFilter(1);
ui->tblAuthors->setModel(proxyAuthorModel);
ui->tblAuthors->setRootIsDecorated(false);
- ui->pte_Authors->clear();
- ui->pte_Authors->appendPlainText(authorModel->acknowledgment());
- ui->pte_Authors->moveCursor(QTextCursor::Start);
-
ui->tblAuthors->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->tblAuthors, &QTreeView::customContextMenuRequested, this, &AboutDialog::handleCopyMenu);
connect(ui->searchAuthors, &QLineEdit::textChanged, proxyAuthorModel, &AStringListListSortFilterProxyModel::setFilter);
@@ -375,6 +358,28 @@ AboutDialog::AboutDialog(QWidget *parent) :
connect(ui->tblShortcuts, &QTreeView::customContextMenuRequested, this, &AboutDialog::handleCopyMenu);
connect(ui->searchShortcuts, &QLineEdit::textChanged, shortcutProxyModel, &AStringListListSortFilterProxyModel::setFilter);
+ /* Acknowledgements */
+ f_acknowledgements.setFileName(get_datafile_path("Acknowledgements.md"));
+
+ f_acknowledgements.open(QFile::ReadOnly | QFile::Text);
+ QTextStream ReadFile_acks(&f_acknowledgements);
+
+ /* QTextBrowser markdown support added in 5.14. */
+#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
+ QTextBrowser *textBrowserAcks = new QTextBrowser();
+ textBrowserAcks->setMarkdown(ReadFile_acks.readAll());
+ textBrowserAcks->setReadOnly(true);
+ textBrowserAcks->setOpenExternalLinks(true);
+ textBrowserAcks->moveCursor(QTextCursor::Start);
+ ui->ackVerticalLayout->addWidget(textBrowserAcks);
+#else
+ QPlainTextEdit *pte = new QPlainTextEdit();
+ pte->setPlainText(ReadFile_acks.readAll());
+ pte->setReadOnly(true);
+ pte->moveCursor(QTextCursor::Start);
+ ui->ackVerticalLayout->addWidget(pte);
+#endif
+
/* License */
f_license.setFileName(get_datafile_path("gpl-2.0-standalone.html"));
diff --git a/ui/qt/about_dialog.h b/ui/qt/about_dialog.h
index 6ce3879a1b..ea5cfdd26b 100644
--- a/ui/qt/about_dialog.h
+++ b/ui/qt/about_dialog.h
@@ -33,14 +33,9 @@ public:
explicit AuthorListModel(QObject * parent = Q_NULLPTR);
virtual ~AuthorListModel();
- QString acknowledgment() const;
-
protected:
virtual QStringList headerColumns() const;
-private:
- QString acknowledgement_;
-
};
class PluginListModel : public AStringListListModel
diff --git a/ui/qt/about_dialog.ui b/ui/qt/about_dialog.ui
index bc73123443..5a0037bc18 100644
--- a/ui/qt/about_dialog.ui
+++ b/ui/qt/about_dialog.ui
@@ -261,15 +261,7 @@
<attribute name="title">
<string>Acknowledgments</string>
</attribute>
- <layout class="QVBoxLayout" name="verticalLayout_8">
- <item>
- <widget class="QPlainTextEdit" name="pte_Authors">
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
+ <layout class="QVBoxLayout" name="ackVerticalLayout"/>
</widget>
<widget class="QWidget" name="tab_license">
<attribute name="title">