diff options
Diffstat (limited to 'src/plugins/help/docsettingspage.cpp')
-rw-r--r-- | src/plugins/help/docsettingspage.cpp | 135 |
1 files changed, 72 insertions, 63 deletions
diff --git a/src/plugins/help/docsettingspage.cpp b/src/plugins/help/docsettingspage.cpp index dca464a462..86cf3b6515 100644 --- a/src/plugins/help/docsettingspage.cpp +++ b/src/plugins/help/docsettingspage.cpp @@ -58,15 +58,6 @@ public: static bool operator<(const DocEntry &d1, const DocEntry &d2) { return d1.name < d2.name; } -static DocEntry createEntry(const QString &nameSpace, const QString &fileName, bool userManaged) -{ - DocEntry result; - result.name = userManaged ? nameSpace : DocSettingsPage::tr("%1 (auto-detected)").arg(nameSpace); - result.fileName = fileName; - result.nameSpace = nameSpace; - return result; -} - class DocModel : public QAbstractListModel { public: @@ -87,6 +78,46 @@ private: DocEntries m_docEntries; }; +class DocSettingsPageWidget : public Core::IOptionsPageWidget +{ + Q_DECLARE_TR_FUNCTIONS(Help::DocSettingsPageWidget) + +public: + DocSettingsPageWidget(); + +private: + void apply() final; + + void addDocumentation(); + + bool eventFilter(QObject *object, QEvent *event) final; + void removeDocumentation(const QList<QModelIndex> &items); + + QList<QModelIndex> currentSelection() const; + + Ui::DocSettingsPage m_ui; + + QString m_recentDialogPath; + + using NameSpaceToPathHash = QHash<QString, QString>; + NameSpaceToPathHash m_filesToRegister; + QHash<QString, bool> m_filesToRegisterUserManaged; + NameSpaceToPathHash m_filesToUnregister; + + QSortFilterProxyModel m_proxyModel; + DocModel m_model; +}; + +static DocEntry createEntry(const QString &nameSpace, const QString &fileName, bool userManaged) +{ + DocEntry result; + result.name = userManaged ? nameSpace + : DocSettingsPageWidget::tr("%1 (auto-detected)").arg(nameSpace); + result.fileName = fileName; + result.nameSpace = nameSpace; + return result; +} + QVariant DocModel::data(const QModelIndex &index, int role) const { QVariant result; @@ -129,65 +160,43 @@ void DocModel::removeAt(int row) using namespace Help::Internal; -class DocSettingsPageWidget : public Core::IOptionsPageWidget +DocSettingsPageWidget::DocSettingsPageWidget() { - Q_DECLARE_TR_FUNCTIONS(Help::DocSettingsPage) + m_ui.setupUi(this); -public: - DocSettingsPageWidget() - { - m_ui.setupUi(this); - - const QStringList nameSpaces = HelpManager::registeredNamespaces(); - const QSet<QString> userDocumentationPaths = HelpManager::userDocumentationPaths(); - - DocModel::DocEntries entries; - entries.reserve(nameSpaces.size()); - for (const QString &nameSpace : nameSpaces) { - const QString filePath = HelpManager::fileFromNamespace(nameSpace); - bool user = userDocumentationPaths.contains(filePath); - entries.append(createEntry(nameSpace, filePath, user)); - m_filesToRegister.insert(nameSpace, filePath); - m_filesToRegisterUserManaged.insert(nameSpace, user); - } - std::stable_sort(entries.begin(), entries.end()); - m_model.setEntries(entries); + const QStringList nameSpaces = HelpManager::registeredNamespaces(); + const QSet<QString> userDocumentationPaths = HelpManager::userDocumentationPaths(); - m_proxyModel.setSourceModel(&m_model); - m_ui.docsListView->setModel(&m_proxyModel); - m_ui.filterLineEdit->setFiltering(true); - connect(m_ui.filterLineEdit, &QLineEdit::textChanged, - &m_proxyModel, &QSortFilterProxyModel::setFilterFixedString); - - connect(m_ui.addButton, &QAbstractButton::clicked, this, &DocSettingsPageWidget::addDocumentation); - connect(m_ui.removeButton, &QAbstractButton::clicked, this, - [this] () { removeDocumentation(currentSelection()); }); - - m_ui.docsListView->installEventFilter(this); + DocModel::DocEntries entries; + entries.reserve(nameSpaces.size()); + for (const QString &nameSpace : nameSpaces) { + const QString filePath = HelpManager::fileFromNamespace(nameSpace); + bool user = userDocumentationPaths.contains(filePath); + entries.append(createEntry(nameSpace, filePath, user)); + m_filesToRegister.insert(nameSpace, filePath); + m_filesToRegisterUserManaged.insert(nameSpace, user); } + std::stable_sort(entries.begin(), entries.end()); + m_model.setEntries(entries); + + m_proxyModel.setSourceModel(&m_model); + m_ui.docsListView->setModel(&m_proxyModel); + m_ui.filterLineEdit->setFiltering(true); + connect(m_ui.filterLineEdit, + &QLineEdit::textChanged, + &m_proxyModel, + &QSortFilterProxyModel::setFilterFixedString); + + connect(m_ui.addButton, + &QAbstractButton::clicked, + this, + &DocSettingsPageWidget::addDocumentation); + connect(m_ui.removeButton, &QAbstractButton::clicked, this, [this]() { + removeDocumentation(currentSelection()); + }); -private: - void apply() final; - - void addDocumentation(); - - bool eventFilter(QObject *object, QEvent *event) final; - void removeDocumentation(const QList<QModelIndex> &items); - - QList<QModelIndex> currentSelection() const; - - Ui::DocSettingsPage m_ui; - - QString m_recentDialogPath; - - using NameSpaceToPathHash = QHash<QString, QString>; - NameSpaceToPathHash m_filesToRegister; - QHash<QString, bool> m_filesToRegisterUserManaged; - NameSpaceToPathHash m_filesToUnregister; - - QSortFilterProxyModel m_proxyModel; - DocModel m_model; -}; + m_ui.docsListView->installEventFilter(this); +} void DocSettingsPageWidget::addDocumentation() { |