diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2023-07-18 08:56:51 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-07-24 07:10:35 +0000 |
commit | 2b5bacc61aeb5e3ba244ce0dbdc251f148740c7b (patch) | |
tree | 5705650b1479d93bc653171a3f6ac04b17ed7c3c | |
parent | 341ac81dc6927b30a3fb941de642a9ef86018644 (diff) |
SimpleTextViewer: Revamp the example
Fix const correctness.
Fix code formatting.
Fix error message on crash.
Use initializer lists in c'tors.
Limit the start assistant timeout to 3 seconds, like it's done for
termination.
Change-Id: Idfafa35834fba725b03d80e6252be8ac3eaf489f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit cbcd71aeac7c092c52de3d55f0f303d1cf4cab65)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
7 files changed, 39 insertions, 56 deletions
diff --git a/examples/assistant/simpletextviewer/assistant.cpp b/examples/assistant/simpletextviewer/assistant.cpp index 69e9b2d06..5b6b0bba4 100644 --- a/examples/assistant/simpletextviewer/assistant.cpp +++ b/examples/assistant/simpletextviewer/assistant.cpp @@ -10,8 +10,6 @@ #include <QMessageBox> #include <QStandardPaths> -Assistant::Assistant() = default; - //! [0] Assistant::~Assistant() { @@ -36,7 +34,7 @@ void Assistant::showDocumentation(const QString &page) } //! [1] -QString documentationDirectory() +static QString documentationDirectory() { QStringList paths; #ifdef SRCDIR @@ -50,18 +48,18 @@ QString documentationDirectory() if (QFileInfo::exists(path)) return path; } - return QString(); + return {}; } //! [2] bool Assistant::startAssistant() { if (m_process.isNull()) { - m_process.reset(new QProcess()); + m_process.reset(new QProcess); QObject::connect(m_process.data(), &QProcess::finished, m_process.data(), [this](int exitCode, QProcess::ExitStatus status) { - this->finished(exitCode, status); - }); + finished(exitCode, status); + }); } if (m_process->state() != QProcess::Running) { @@ -78,15 +76,15 @@ bool Assistant::startAssistant() return false; } - QStringList args{QLatin1String("-collectionFile"), - collectionDirectory + QLatin1String("/simpletextviewer.qhc"), - QLatin1String("-enableRemoteControl")}; + const QStringList args{QLatin1String("-collectionFile"), + collectionDirectory + QLatin1String("/simpletextviewer.qhc"), + QLatin1String("-enableRemoteControl")}; m_process->start(app, args); - if (!m_process->waitForStarted()) { + if (!m_process->waitForStarted(3000)) { showError(tr("Unable to launch Qt Assistant (%1): %2") - .arg(QDir::toNativeSeparators(app), m_process->errorString())); + .arg(QDir::toNativeSeparators(app), m_process->errorString())); return false; } } @@ -96,16 +94,14 @@ bool Assistant::startAssistant() void Assistant::showError(const QString &message) { - QMessageBox::critical(QApplication::activeWindow(), - tr("Simple Text Viewer"), message); + QMessageBox::critical(QApplication::activeWindow(), tr("Simple Text Viewer"), message); } void Assistant::finished(int exitCode, QProcess::ExitStatus status) { const QString stdErr = QString::fromLocal8Bit(m_process->readAllStandardError()); - if (status != QProcess::NormalExit) { - showError(tr("Assistant crashed: ").arg(stdErr)); - } else if (exitCode != 0) { + if (status != QProcess::NormalExit) + showError(tr("Assistant crashed: %1").arg(stdErr)); + else if (exitCode != 0) showError(tr("Assistant exited with %1: %2").arg(exitCode).arg(stdErr)); - } } diff --git a/examples/assistant/simpletextviewer/assistant.h b/examples/assistant/simpletextviewer/assistant.h index 9c881f93c..1cbc8b9e2 100644 --- a/examples/assistant/simpletextviewer/assistant.h +++ b/examples/assistant/simpletextviewer/assistant.h @@ -9,13 +9,11 @@ #include <QScopedPointer> #include <QString> - class Assistant { Q_DECLARE_TR_FUNCTIONS(Assistant) public: - Assistant(); ~Assistant(); void showDocumentation(const QString &file); diff --git a/examples/assistant/simpletextviewer/findfiledialog.cpp b/examples/assistant/simpletextviewer/findfiledialog.cpp index 78087a3e0..7dccfb074 100644 --- a/examples/assistant/simpletextviewer/findfiledialog.cpp +++ b/examples/assistant/simpletextviewer/findfiledialog.cpp @@ -20,9 +20,9 @@ //! [0] FindFileDialog::FindFileDialog(TextEdit *editor, Assistant *assistant) : QDialog(editor) + , currentEditor(editor) + , currentAssistant(assistant) { - currentAssistant = assistant; - currentEditor = editor; //! [0] createButtons(); @@ -42,8 +42,8 @@ FindFileDialog::FindFileDialog(TextEdit *editor, Assistant *assistant) void FindFileDialog::browse() { - QString currentDirectory = directoryComboBox->currentText(); - QString newDirectory = QFileDialog::getExistingDirectory(this, + const QString currentDirectory = directoryComboBox->currentText(); + const QString newDirectory = QFileDialog::getExistingDirectory(this, tr("Select Directory"), currentDirectory); if (!newDirectory.isEmpty()) { directoryComboBox->addItem(QDir::toNativeSeparators(newDirectory)); @@ -61,12 +61,12 @@ void FindFileDialog::help() void FindFileDialog::openFile() { - auto item = foundFilesTree->currentItem(); + QTreeWidgetItem *item = foundFilesTree->currentItem(); if (!item) return; - QString fileName = item->text(0); - QString path = QDir(directoryComboBox->currentText()).filePath(fileName); + const QString fileName = item->text(0); + const QString path = QDir(directoryComboBox->currentText()).filePath(fileName); currentEditor->setContents(path); close(); @@ -75,8 +75,7 @@ void FindFileDialog::openFile() void FindFileDialog::update() { findFiles(); - buttonBox->button(QDialogButtonBox::Open)->setEnabled( - foundFilesTree->topLevelItemCount() > 0); + buttonBox->button(QDialogButtonBox::Open)->setEnabled(foundFilesTree->topLevelItemCount() > 0); } void FindFileDialog::findFiles() @@ -84,9 +83,9 @@ void FindFileDialog::findFiles() QString wildCard = fileNameComboBox->currentText(); if (!wildCard.endsWith('*')) wildCard += '*'; - QRegularExpression filePattern(QRegularExpression::wildcardToRegularExpression(wildCard)); + const QRegularExpression filePattern(QRegularExpression::wildcardToRegularExpression(wildCard)); - QDir directory(directoryComboBox->currentText()); + const QDir directory(directoryComboBox->currentText()); const QStringList allFiles = directory.entryList(QDir::Files | QDir::NoSymLinks); QStringList matchingFiles; @@ -102,10 +101,8 @@ void FindFileDialog::showFiles(const QStringList &files) { foundFilesTree->clear(); - for (int i = 0; i < files.count(); ++i) { - QTreeWidgetItem *item = new QTreeWidgetItem(foundFilesTree); - item->setText(0, files[i]); - } + for (const QString &file : files) + new QTreeWidgetItem(foundFilesTree, {file}); if (files.count() > 0) foundFilesTree->setCurrentItem(foundFilesTree->topLevelItem(0)); @@ -131,19 +128,14 @@ void FindFileDialog::createComboBoxes() fileNameComboBox = new QComboBox; fileNameComboBox->setEditable(true); - fileNameComboBox->setSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Preferred); + fileNameComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); directoryComboBox->setMinimumContentsLength(30); - directoryComboBox->setSizeAdjustPolicy( - QComboBox::AdjustToContents); - directoryComboBox->setSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Preferred); - - connect(fileNameComboBox, &QComboBox::editTextChanged, - this, &FindFileDialog::update); - connect(directoryComboBox, &QComboBox::currentTextChanged, - this, &FindFileDialog::update); + directoryComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); + directoryComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + connect(fileNameComboBox, &QComboBox::editTextChanged, this, &FindFileDialog::update); + connect(directoryComboBox, &QComboBox::currentTextChanged, this, &FindFileDialog::update); } void FindFileDialog::createFilesTree() @@ -154,8 +146,7 @@ void FindFileDialog::createFilesTree() foundFilesTree->setRootIsDecorated(false); foundFilesTree->setSelectionMode(QAbstractItemView::SingleSelection); - connect(foundFilesTree, &QTreeWidget::itemActivated, - this, &FindFileDialog::openFile); + connect(foundFilesTree, &QTreeWidget::itemActivated, this, &FindFileDialog::openFile); } void FindFileDialog::createLabels() diff --git a/examples/assistant/simpletextviewer/findfiledialog.h b/examples/assistant/simpletextviewer/findfiledialog.h index 6dcd15d9b..7e77938dd 100644 --- a/examples/assistant/simpletextviewer/findfiledialog.h +++ b/examples/assistant/simpletextviewer/findfiledialog.h @@ -12,7 +12,6 @@ class QDialogButtonBox; class QLabel; class QToolButton; class QTreeWidget; -class QTreeWidgetItem; QT_END_NAMESPACE class Assistant; @@ -42,8 +41,8 @@ private: void createLabels(); void createLayout(); - Assistant *currentAssistant; TextEdit *currentEditor; + Assistant *currentAssistant; QTreeWidget *foundFilesTree; QComboBox *directoryComboBox; diff --git a/examples/assistant/simpletextviewer/mainwindow.cpp b/examples/assistant/simpletextviewer/mainwindow.cpp index 321e46ddd..3709ae7df 100644 --- a/examples/assistant/simpletextviewer/mainwindow.cpp +++ b/examples/assistant/simpletextviewer/mainwindow.cpp @@ -15,10 +15,10 @@ // ![0] MainWindow::MainWindow() + : textViewer(new TextEdit) + , assistant(new Assistant) { - assistant = new Assistant; // ![0] - textViewer = new TextEdit; textViewer->setContents(QLibraryInfo::path(QLibraryInfo::ExamplesPath) + QLatin1String("/assistant/simpletextviewer/documentation/intro.html")); setCentralWidget(textViewer); @@ -103,7 +103,6 @@ void MainWindow::createMenus() helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); - menuBar()->addMenu(fileMenu); menuBar()->addMenu(helpMenu); } diff --git a/examples/assistant/simpletextviewer/mainwindow.h b/examples/assistant/simpletextviewer/mainwindow.h index 81a5dd10e..59b5472f0 100644 --- a/examples/assistant/simpletextviewer/mainwindow.h +++ b/examples/assistant/simpletextviewer/mainwindow.h @@ -33,8 +33,8 @@ private: void createActions(); void createMenus(); - Assistant *assistant; TextEdit *textViewer; + Assistant *assistant; QMenu *fileMenu; QMenu *helpMenu; diff --git a/examples/assistant/simpletextviewer/textedit.cpp b/examples/assistant/simpletextviewer/textedit.cpp index 4a1f7159f..2f52f73a1 100644 --- a/examples/assistant/simpletextviewer/textedit.cpp +++ b/examples/assistant/simpletextviewer/textedit.cpp @@ -14,11 +14,11 @@ TextEdit::TextEdit(QWidget *parent) void TextEdit::setContents(const QString &fileName) { - QFileInfo fi(fileName); + const QFileInfo fi(fileName); srcUrl = QUrl::fromLocalFile(fi.absoluteFilePath()); QFile file(fileName); if (file.open(QIODevice::ReadOnly)) { - QString data(file.readAll()); + const QString data(QString::fromUtf8(file.readAll())); if (fileName.endsWith(".html")) setHtml(data); else |