diff options
author | João Valverde <j@v6e.pt> | 2022-07-27 13:05:08 +0100 |
---|---|---|
committer | A Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org> | 2022-08-02 00:09:29 +0000 |
commit | b8ec3199abebdfe170e4a5165ebe68d41af2f269 (patch) | |
tree | abf2b71841277f4bd04fc254524b17cee3b06692 /ui | |
parent | a0174e4f0bb43ffcb4c907dffced9e558a31d493 (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.cpp | 51 | ||||
-rw-r--r-- | ui/qt/about_dialog.h | 5 | ||||
-rw-r--r-- | ui/qt/about_dialog.ui | 10 |
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"> |