diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-02-18 17:29:43 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-03-01 09:21:24 +0000 |
commit | d0ac28e41b53f69a7d9fe89994a04fcb436c6e99 (patch) | |
tree | de76e57d194d21adf8ca40845f3393cde318e065 | |
parent | e1f65ee2174fa54d3a1d5f40c2a3c5831ba96f1b (diff) | |
download | qttools-d0ac28e41b53f69a7d9fe89994a04fcb436c6e99.tar.gz |
Enhance filtering by documentation version number
Make it possible to filter the documentation
by version number. This easily allows for
showing the docs for one or more specified
versions inside a custom filter.
Task-number: QTCREATORBUG-19724
Task-number: QTCREATORBUG-7301
Change-Id: Ia0bc63666ab8152e43ffb6a6b6b99610e30575f7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r-- | src/assistant/assistant/assistant_images.qrc | 4 | ||||
-rw-r--r-- | src/assistant/assistant/images/mac/minus.png | bin | 0 -> 488 bytes | |||
-rw-r--r-- | src/assistant/assistant/images/mac/plus.png | bin | 0 -> 810 bytes | |||
-rw-r--r-- | src/assistant/assistant/images/win/minus.png | bin | 0 -> 429 bytes | |||
-rw-r--r-- | src/assistant/assistant/images/win/plus.png | bin | 0 -> 709 bytes | |||
-rw-r--r-- | src/assistant/assistant/preferencesdialog.cpp | 84 | ||||
-rw-r--r-- | src/assistant/assistant/preferencesdialog.h | 11 | ||||
-rw-r--r-- | src/assistant/assistant/preferencesdialog.ui | 30 | ||||
-rw-r--r-- | src/assistant/help/qhelpcollectionhandler.cpp | 98 | ||||
-rw-r--r-- | src/assistant/help/qhelpcollectionhandler_p.h | 2 | ||||
-rw-r--r-- | src/assistant/help/qhelpfilterdata.cpp | 33 | ||||
-rw-r--r-- | src/assistant/help/qhelpfilterdata.h | 3 | ||||
-rw-r--r-- | src/assistant/help/qhelpfilterengine.cpp | 11 | ||||
-rw-r--r-- | src/assistant/help/qhelpfilterengine.h | 1 |
14 files changed, 239 insertions, 38 deletions
diff --git a/src/assistant/assistant/assistant_images.qrc b/src/assistant/assistant/assistant_images.qrc index 948de970f..e55b6b27e 100644 --- a/src/assistant/assistant/assistant_images.qrc +++ b/src/assistant/assistant/assistant_images.qrc @@ -10,7 +10,9 @@ <file>images/mac/editcopy.png</file> <file>images/mac/find.png</file> <file>images/mac/home.png</file> + <file>images/mac/minus.png</file> <file>images/mac/next.png</file> + <file>images/mac/plus.png</file> <file>images/mac/previous.png</file> <file>images/mac/print.png</file> <file>images/mac/synctoc.png</file> @@ -23,7 +25,9 @@ <file>images/win/editcopy.png</file> <file>images/win/find.png</file> <file>images/win/home.png</file> + <file>images/win/minus.png</file> <file>images/win/next.png</file> + <file>images/win/plus.png</file> <file>images/win/previous.png</file> <file>images/win/print.png</file> <file>images/win/synctoc.png</file> diff --git a/src/assistant/assistant/images/mac/minus.png b/src/assistant/assistant/images/mac/minus.png Binary files differnew file mode 100644 index 000000000..8d2eaed52 --- /dev/null +++ b/src/assistant/assistant/images/mac/minus.png diff --git a/src/assistant/assistant/images/mac/plus.png b/src/assistant/assistant/images/mac/plus.png Binary files differnew file mode 100644 index 000000000..1ee45423e --- /dev/null +++ b/src/assistant/assistant/images/mac/plus.png diff --git a/src/assistant/assistant/images/win/minus.png b/src/assistant/assistant/images/win/minus.png Binary files differnew file mode 100644 index 000000000..c0dc274bb --- /dev/null +++ b/src/assistant/assistant/images/win/minus.png diff --git a/src/assistant/assistant/images/win/plus.png b/src/assistant/assistant/images/win/plus.png Binary files differnew file mode 100644 index 000000000..ecf058941 --- /dev/null +++ b/src/assistant/assistant/images/win/plus.png diff --git a/src/assistant/assistant/preferencesdialog.cpp b/src/assistant/assistant/preferencesdialog.cpp index 803bc61ed..967dfba32 100644 --- a/src/assistant/assistant/preferencesdialog.cpp +++ b/src/assistant/assistant/preferencesdialog.cpp @@ -57,6 +57,16 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) { m_ui.setupUi(this); + QString resourcePath = QLatin1String(":/qt-project.org/assistant/images/"); +#ifdef Q_OS_MACOS + resourcePath.append(QLatin1String("mac")); +#else + resourcePath.append(QLatin1String("win")); +#endif + + m_ui.filterAddButton->setIcon(QIcon(resourcePath + QLatin1String("/plus.png"))); + m_ui.filterRemoveButton->setIcon(QIcon(resourcePath + QLatin1String("/minus.png"))); + // TODO: filter docs via lineedit connect(m_ui.buttonBox->button(QDialogButtonBox::Ok), &QAbstractButton::clicked, @@ -85,6 +95,8 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) } else { connect(m_ui.componentWidget, &OptionsWidget::optionSelectionChanged, this, &PreferencesDialog::componentsChanged); + connect(m_ui.versionWidget, &OptionsWidget::optionSelectionChanged, + this, &PreferencesDialog::versionsChanged); connect(m_ui.filterWidget, &QListWidget::currentItemChanged, this, &PreferencesDialog::filterSelected); connect(m_ui.filterWidget, &QListWidget::itemDoubleClicked, @@ -138,6 +150,7 @@ FilterSetup PreferencesDialog::readOriginalSetup() const FilterSetup filterSetup; filterSetup.m_namespaceToComponent = helpEngine.filterEngine()->namespaceToComponent(); + filterSetup.m_namespaceToVersion = helpEngine.filterEngine()->namespaceToVersion(); for (auto it = filterSetup.m_namespaceToComponent.constBegin(); it != filterSetup.m_namespaceToComponent.constEnd(); ++it) { const QString namespaceName = it.key(); @@ -146,9 +159,16 @@ FilterSetup PreferencesDialog::readOriginalSetup() const filterSetup.m_fileNameToNamespace.insert(namespaceFileName, namespaceName); filterSetup.m_componentToNamespace[it.value()].append(namespaceName); } + for (auto it = filterSetup.m_namespaceToVersion.constBegin(); + it != filterSetup.m_namespaceToVersion.constEnd(); ++it) { + filterSetup.m_versionToNamespace[it.value()].append(it.key()); + } + const QStringList allFilters = helpEngine.filterEngine()->filters(); for (const QString &filter : allFilters) - filterSetup.m_filterToComponents.insert(filter, helpEngine.filterEngine()->filterData(filter).components()); + filterSetup.m_filterToData.insert(filter, helpEngine.filterEngine()->filterData(filter)); + + filterSetup.m_currentFilter = helpEngine.filterEngine()->activeFilter(); return filterSetup; } @@ -164,16 +184,19 @@ void PreferencesDialog::updateFilterPage() if (m_hideFiltersTab) return; - const QString ¤tFilter = m_itemToFilter.value(m_ui.filterWidget->currentItem()); + QString currentFilter = m_itemToFilter.value(m_ui.filterWidget->currentItem()); + if (currentFilter.isEmpty()) + currentFilter = m_currentSetup.m_currentFilter; m_currentSetup = m_originalSetup; m_ui.filterWidget->clear(); m_ui.componentWidget->clear(); + m_ui.versionWidget->clear(); m_itemToFilter.clear(); m_filterToItem.clear(); - for (const QString &filterName : m_currentSetup.m_filterToComponents.keys()) { + for (const QString &filterName : m_currentSetup.m_filterToData.keys()) { QListWidgetItem *item = new QListWidgetItem(filterName); m_ui.filterWidget->addItem(item); m_itemToFilter.insert(item, filterName); @@ -197,11 +220,14 @@ void PreferencesDialog::updateCurrentFilter() const bool filterSelected = !currentFilter.isEmpty(); m_ui.componentWidget->setEnabled(filterSelected); + m_ui.versionWidget->setEnabled(filterSelected); m_ui.filterRenameButton->setEnabled(filterSelected); m_ui.filterRemoveButton->setEnabled(filterSelected); m_ui.componentWidget->setOptions(m_currentSetup.m_componentToNamespace.keys(), - m_currentSetup.m_filterToComponents.value(currentFilter)); + m_currentSetup.m_filterToData.value(currentFilter).components()); + m_ui.versionWidget->setOptions(m_currentSetup.m_versionToNamespace.keys(), + m_currentSetup.m_filterToData.value(currentFilter).versions()); } void PreferencesDialog::updateDocumentationPage() @@ -234,7 +260,16 @@ void PreferencesDialog::componentsChanged(const QStringList &components) if (currentFilter.isEmpty()) return; - m_currentSetup.m_filterToComponents[currentFilter] = components; + m_currentSetup.m_filterToData[currentFilter].setComponents(components); +} + +void PreferencesDialog::versionsChanged(const QStringList &versions) +{ + const QString ¤tFilter = m_itemToFilter.value(m_ui.filterWidget->currentItem()); + if (currentFilter.isEmpty()) + return; + + m_currentSetup.m_filterToData[currentFilter].setVersions(versions); } QString PreferencesDialog::suggestedNewFilterName(const QString &initialFilterName) const @@ -284,7 +319,7 @@ void PreferencesDialog::addFilterClicked() if (newFilterName.isEmpty()) return; - addFilter(newFilterName, QStringList()); + addFilter(newFilterName); } void PreferencesDialog::renameFilterClicked() @@ -297,9 +332,9 @@ void PreferencesDialog::renameFilterClicked() if (newFilterName.isEmpty()) return; - const QStringList oldComponents = m_currentSetup.m_filterToComponents.value(currentFilter); + const QHelpFilterData oldFilterData = m_currentSetup.m_filterToData.value(currentFilter); removeFilter(currentFilter); - addFilter(newFilterName, oldComponents); + addFilter(newFilterName, oldFilterData); } void PreferencesDialog::removeFilterClicked() @@ -319,10 +354,11 @@ void PreferencesDialog::removeFilterClicked() removeFilter(currentFilter); } -void PreferencesDialog::addFilter(const QString &filterName, const QStringList &components) +void PreferencesDialog::addFilter(const QString &filterName, + const QHelpFilterData &filterData) { QListWidgetItem *item = new QListWidgetItem(filterName); - m_currentSetup.m_filterToComponents.insert(filterName, components); + m_currentSetup.m_filterToData.insert(filterName, filterData); m_filterToItem.insert(filterName, item); m_itemToFilter.insert(item, filterName); m_ui.filterWidget->insertItem(m_filterToItem.keys().indexOf(filterName), item); @@ -338,7 +374,7 @@ void PreferencesDialog::removeFilter(const QString &filterName) m_filterToItem.remove(filterName); delete item; - m_currentSetup.m_filterToComponents.remove(filterName); + m_currentSetup.m_filterToData.remove(filterName); } void PreferencesDialog::addDocumentation() @@ -361,12 +397,17 @@ void PreferencesDialog::addDocumentation() continue; const QString component = details.component(); + const QString version = details.version(); + m_currentSetup.m_namespaceToFileName.insert(namespaceName, fileName); m_currentSetup.m_fileNameToNamespace.insert(fileName, namespaceName); m_currentSetup.m_namespaceToComponent.insert(namespaceName, component); m_currentSetup.m_componentToNamespace[component].append(namespaceName); + m_currentSetup.m_namespaceToVersion.insert(namespaceName, version); + m_currentSetup.m_versionToNamespace[version].append(namespaceName); + QListWidgetItem *item = new QListWidgetItem(namespaceName); m_namespaceToItem.insert(namespaceName, item); m_itemToNamespace.insert(item, namespaceName); @@ -393,12 +434,17 @@ void PreferencesDialog::removeDocumentation() const QString fileName = m_currentSetup.m_namespaceToFileName.value(namespaceName); const QString component = m_currentSetup.m_namespaceToComponent.value(namespaceName); + const QString version = m_currentSetup.m_namespaceToVersion.value(namespaceName); m_currentSetup.m_namespaceToComponent.remove(namespaceName); + m_currentSetup.m_namespaceToVersion.remove(namespaceName); m_currentSetup.m_namespaceToFileName.remove(namespaceName); m_currentSetup.m_fileNameToNamespace.remove(fileName); m_currentSetup.m_componentToNamespace[component].removeOne(namespaceName); if (m_currentSetup.m_componentToNamespace[component].isEmpty()) m_currentSetup.m_componentToNamespace.remove(component); + m_currentSetup.m_versionToNamespace[version].removeOne(namespaceName); + if (m_currentSetup.m_versionToNamespace[version].isEmpty()) + m_currentSetup.m_versionToNamespace.remove(version); } updateCurrentFilter(); @@ -457,12 +503,12 @@ void PreferencesDialog::applyChanges() changed = true; } - const QMap<QString, QStringList> filtersToRemove = subtract( - m_originalSetup.m_filterToComponents, - m_currentSetup.m_filterToComponents); - const QMap<QString, QStringList> filtersToAdd = subtract( - m_currentSetup.m_filterToComponents, - m_originalSetup.m_filterToComponents); + const QMap<QString, QHelpFilterData> filtersToRemove = subtract( + m_originalSetup.m_filterToData, + m_currentSetup.m_filterToData); + const QMap<QString, QHelpFilterData> filtersToAdd = subtract( + m_currentSetup.m_filterToData, + m_originalSetup.m_filterToData); const QString ¤tFilter = helpEngine.filterEngine()->activeFilter(); @@ -474,9 +520,7 @@ void PreferencesDialog::applyChanges() } for (auto it = filtersToAdd.cbegin(); it != filtersToAdd.cend(); ++it) { - QHelpFilterData data; - data.setComponents(it.value()); - helpEngine.filterEngine()->setFilterData(it.key(), data); + helpEngine.filterEngine()->setFilterData(it.key(), it.value()); changed = true; } diff --git a/src/assistant/assistant/preferencesdialog.h b/src/assistant/assistant/preferencesdialog.h index 1e45d9b6d..17ffb5add 100644 --- a/src/assistant/assistant/preferencesdialog.h +++ b/src/assistant/assistant/preferencesdialog.h @@ -30,6 +30,7 @@ #define PREFERENCESDIALOG_H #include <QtWidgets/QDialog> +#include <QtHelp/QHelpFilterData> #include "ui_preferencesdialog.h" QT_BEGIN_NAMESPACE @@ -42,10 +43,14 @@ struct FilterSetup { QMap<QString, QString> m_namespaceToComponent; QMap<QString, QStringList> m_componentToNamespace; + QMap<QString, QString> m_namespaceToVersion; + QMap<QString, QStringList> m_versionToNamespace; + QMap<QString, QString> m_namespaceToFileName; QMap<QString, QString> m_fileNameToNamespace; - QMap<QString, QStringList> m_filterToComponents; + QMap<QString, QHelpFilterData> m_filterToData; + QString m_currentFilter; }; class PreferencesDialog : public QDialog @@ -61,10 +66,12 @@ public: private slots: void filterSelected(QListWidgetItem *item); void componentsChanged(const QStringList &components); + void versionsChanged(const QStringList &versions); void addFilterClicked(); void renameFilterClicked(); void removeFilterClicked(); - void addFilter(const QString &filterName, const QStringList &components); + void addFilter(const QString &filterName, + const QHelpFilterData &filterData = QHelpFilterData()); void removeFilter(const QString &filterName); void addDocumentation(); void removeDocumentation(); diff --git a/src/assistant/assistant/preferencesdialog.ui b/src/assistant/assistant/preferencesdialog.ui index 70a90dd74..68dbf68e2 100644 --- a/src/assistant/assistant/preferencesdialog.ui +++ b/src/assistant/assistant/preferencesdialog.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>378</width> + <width>395</width> <height>341</height> </rect> </property> @@ -70,15 +70,8 @@ <string>Filters</string> </attribute> <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Filter:</string> - </property> - </widget> - </item> <item row="0" column="3"> - <widget class="QLabel" name="label_2"> + <widget class="QLabel" name="componentsLabel"> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> @@ -87,12 +80,22 @@ </property> </widget> </item> + <item row="0" column="4"> + <widget class="QLabel" name="versionsLabel"> + <property name="text"> + <string>Versions:</string> + </property> + </widget> + </item> <item row="1" column="0" colspan="3"> <widget class="QListWidget" name="filterWidget"/> </item> - <item row="1" column="3"> + <item row="1" column="3" rowspan="2"> <widget class="OptionsWidget" name="componentWidget" native="true"/> </item> + <item row="1" column="4" rowspan="2"> + <widget class="OptionsWidget" name="versionWidget" native="true"/> + </item> <item row="2" column="0"> <widget class="QToolButton" name="filterAddButton"> <property name="text"> @@ -114,6 +117,13 @@ </property> </widget> </item> + <item row="0" column="0" colspan="3"> + <widget class="QLabel" name="filterLabel"> + <property name="text"> + <string>Filter:</string> + </property> + </widget> + </item> </layout> </widget> <widget class="QWidget" name="docsTab"> diff --git a/src/assistant/help/qhelpcollectionhandler.cpp b/src/assistant/help/qhelpcollectionhandler.cpp index 756861c1a..375edd8d3 100644 --- a/src/assistant/help/qhelpcollectionhandler.cpp +++ b/src/assistant/help/qhelpcollectionhandler.cpp @@ -188,7 +188,8 @@ bool QHelpCollectionHandler::openCollectionFile() QLatin1String("Filter"), QLatin1String("ComponentTable"), QLatin1String("ComponentMapping"), - QLatin1String("ComponentFilter") + QLatin1String("ComponentFilter"), + QLatin1String("VersionFilter") }; QString queryString = QLatin1String("SELECT COUNT(*) " @@ -486,6 +487,7 @@ bool QHelpCollectionHandler::recreateIndexAndNamespaceFilterTables(QSqlQuery *qu << QLatin1String("DROP TABLE IF EXISTS ComponentTable") << QLatin1String("DROP TABLE IF EXISTS ComponentMapping") << QLatin1String("DROP TABLE IF EXISTS ComponentFilter") + << QLatin1String("DROP TABLE IF EXISTS VersionFilter") << QLatin1String("CREATE TABLE FileNameTable (" "FolderId INTEGER, " "Name TEXT, " @@ -538,6 +540,9 @@ bool QHelpCollectionHandler::recreateIndexAndNamespaceFilterTables(QSqlQuery *qu "NamespaceId INTEGER)") << QLatin1String("CREATE TABLE ComponentFilter (" "ComponentName TEXT, " + "FilterId INTEGER)") + << QLatin1String("CREATE TABLE VersionFilter (" + "Version TEXT, " "FilterId INTEGER)"); for (const QString &q : tables) { @@ -581,6 +586,17 @@ QStringList QHelpCollectionHandler::availableComponents() const return list; } +QStringList QHelpCollectionHandler::availableVersions() const +{ + QStringList list; + if (m_query) { + m_query->exec(QLatin1String("SELECT DISTINCT Version FROM VersionTable ORDER BY Version")); + while (m_query->next()) + list.append(m_query->value(0).toString()); + } + return list; +} + QMap<QString, QString> QHelpCollectionHandler::namespaceToComponent() const { QMap<QString, QString> result; @@ -599,9 +615,26 @@ QMap<QString, QString> QHelpCollectionHandler::namespaceToComponent() const return result; } +QMap<QString, QString> QHelpCollectionHandler::namespaceToVersion() const +{ + QMap<QString, QString> result; + if (m_query) { + m_query->exec(QLatin1String("SELECT " + "NamespaceTable.Name, " + "VersionTable.Version " + "FROM NamespaceTable, " + "VersionTable " + "WHERE NamespaceTable.Id = VersionTable.NamespaceId")); + while (m_query->next()) + result.insert(m_query->value(0).toString(), m_query->value(1).toString()); + } + return result; +} + QHelpFilterData QHelpCollectionHandler::filterData(const QString &filterName) const { QStringList components; + QStringList versions; if (m_query) { m_query->prepare(QLatin1String("SELECT ComponentFilter.ComponentName " "FROM ComponentFilter, Filter " @@ -612,9 +645,21 @@ QHelpFilterData QHelpCollectionHandler::filterData(const QString &filterName) co m_query->exec(); while (m_query->next()) components.append(m_query->value(0).toString()); + + m_query->prepare(QLatin1String("SELECT VersionFilter.Version " + "FROM VersionFilter, Filter " + "WHERE VersionFilter.FilterId = Filter.FilterId " + "AND Filter.Name = ? " + "ORDER BY VersionFilter.Version")); + m_query->bindValue(0, filterName); + m_query->exec(); + while (m_query->next()) + versions.append(m_query->value(0).toString()); + } QHelpFilterData data; data.setComponents(components); + data.setVersions(versions); return data; } @@ -633,6 +678,7 @@ bool QHelpCollectionHandler::setFilterData(const QString &filterName, const int filterId = m_query->lastInsertId().toInt(); QVariantList componentList; + QVariantList versionList; QVariantList filterIdList; for (const QString &component : filterData.components()) { @@ -644,7 +690,23 @@ bool QHelpCollectionHandler::setFilterData(const QString &filterName, "VALUES (?, ?)")); m_query->addBindValue(componentList); m_query->addBindValue(filterIdList); - return m_query->execBatch(); + if (!m_query->execBatch()) + return false; + + filterIdList.clear(); + for (const QString &version : filterData.versions()) { + versionList.append(version); + filterIdList.append(filterId); + } + + m_query->prepare(QLatin1String("INSERT INTO VersionFilter " + "VALUES (?, ?)")); + m_query->addBindValue(versionList); + m_query->addBindValue(filterIdList); + if (!m_query->execBatch()) + return false; + + return true; } bool QHelpCollectionHandler::removeFilter(const QString &filterName) @@ -673,6 +735,12 @@ bool QHelpCollectionHandler::removeFilter(const QString &filterName) if (!m_query->exec()) return false; + m_query->prepare(QLatin1String("DELETE FROM VersionFilter " + "WHERE VersionFilter.FilterId = ?")); + m_query->bindValue(0, filterId); + if (!m_query->exec()) + return false; + return true; } @@ -955,7 +1023,8 @@ static QString prepareFilterQuery(const QString &filterName) return QString(); return QString::fromLatin1(" AND EXISTS(SELECT * FROM Filter WHERE Filter.Name = ?) " - "AND (NOT EXISTS(" + "AND (" + "(NOT EXISTS(" // 1. filter by component "SELECT * FROM " "ComponentFilter, " "Filter " @@ -974,7 +1043,26 @@ static QString prepareFilterQuery(const QString &filterName) "AND ComponentTable.ComponentId = ComponentMapping.ComponentId " "AND ComponentTable.Name = ComponentFilter.ComponentName " "AND ComponentFilter.FilterId = Filter.FilterId " - "AND Filter.Name = ?)" + "AND Filter.Name = ?))" + " AND " + "(NOT EXISTS(" // 2. filter by version + "SELECT * FROM " + "VersionFilter, " + "Filter " + "WHERE VersionFilter.FilterId = Filter.FilterId " + "AND Filter.Name = ?) " + "OR NamespaceTable.Id IN (" + "SELECT " + "NamespaceTable.Id " + "FROM " + "NamespaceTable, " + "VersionFilter, " + "VersionTable, " + "Filter " + "WHERE VersionFilter.FilterId = Filter.FilterId " + "AND VersionFilter.Version = VersionTable.Version " + "AND VersionTable.NamespaceId = NamespaceTable.Id " + "AND Filter.Name = ?))" ")"); } @@ -986,6 +1074,8 @@ static void bindFilterQuery(QSqlQuery *query, int bindStart, const QString &filt query->bindValue(bindStart, filterName); query->bindValue(bindStart + 1, filterName); query->bindValue(bindStart + 2, filterName); + query->bindValue(bindStart + 3, filterName); + query->bindValue(bindStart + 4, filterName); } static QString prepareFilterQuery(int attributesCount, diff --git a/src/assistant/help/qhelpcollectionhandler_p.h b/src/assistant/help/qhelpcollectionhandler_p.h index 940e69e48..c52498f4e 100644 --- a/src/assistant/help/qhelpcollectionhandler_p.h +++ b/src/assistant/help/qhelpcollectionhandler_p.h @@ -157,7 +157,9 @@ public: QStringList filters() const; QStringList availableComponents() const; + QStringList availableVersions() const; QMap<QString, QString> namespaceToComponent() const; + QMap<QString, QString> namespaceToVersion() const; QHelpFilterData filterData(const QString &filterName) const; bool setFilterData(const QString &filterName, const QHelpFilterData &filterData); bool removeFilter(const QString &filterName); diff --git a/src/assistant/help/qhelpfilterdata.cpp b/src/assistant/help/qhelpfilterdata.cpp index a2c1f0ea8..6f072f9aa 100644 --- a/src/assistant/help/qhelpfilterdata.cpp +++ b/src/assistant/help/qhelpfilterdata.cpp @@ -48,10 +48,12 @@ public: QHelpFilterDataPrivate(const QHelpFilterDataPrivate &other) : QSharedData(other) , m_components(other.m_components) + , m_versions(other.m_versions) { } ~QHelpFilterDataPrivate() = default; QStringList m_components; + QStringList m_versions; }; /*! @@ -63,6 +65,8 @@ public: By using setComponents() you may constrain the search results to documents that belong only to components specified on the given list. + By using setVersions() you may constrain the search results to + documents that belong only to versions specified on the given list. \sa QHelpFilterEngine */ @@ -103,10 +107,16 @@ QHelpFilterData &QHelpFilterData::operator=(const QHelpFilterData &) = default; */ QHelpFilterData &QHelpFilterData::operator=(QHelpFilterData &&) = default; +bool QHelpFilterData::operator==(const QHelpFilterData &other) const +{ + return (d->m_components == other.d->m_components && + d->m_versions == other.d->m_versions); +} + /*! Specifies the component list that is used for filtering - the search results. Only the results which match the \a components - will be returned. + the search results. Only results from components in the list + \a components shall be returned. */ void QHelpFilterData::setComponents(const QStringList &components) { @@ -114,6 +124,16 @@ void QHelpFilterData::setComponents(const QStringList &components) } /*! + Specifies the version list that is used for filtering + the search results. Only results from versions in the list + \a versions shall be returned. +*/ +void QHelpFilterData::setVersions(const QStringList &versions) +{ + d->m_versions = versions; +} + +/*! Returns the component list that is used for filtering the search results. */ @@ -122,4 +142,13 @@ QStringList QHelpFilterData::components() const return d->m_components; } +/*! + Returns the version list that is used for filtering + the search results. +*/ +QStringList QHelpFilterData::versions() const +{ + return d->m_versions; +} + QT_END_NAMESPACE diff --git a/src/assistant/help/qhelpfilterdata.h b/src/assistant/help/qhelpfilterdata.h index 089eb0059..b2a38c087 100644 --- a/src/assistant/help/qhelpfilterdata.h +++ b/src/assistant/help/qhelpfilterdata.h @@ -58,10 +58,13 @@ public: QHelpFilterData &operator=(const QHelpFilterData &other); QHelpFilterData &operator=(QHelpFilterData &&other); + bool operator==(const QHelpFilterData &other) const; void setComponents(const QStringList &components); + void setVersions(const QStringList &versions); QStringList components() const; + QStringList versions() const; private: QSharedDataPointer<QHelpFilterDataPrivate> d; }; diff --git a/src/assistant/help/qhelpfilterengine.cpp b/src/assistant/help/qhelpfilterengine.cpp index 6a57e1cdc..6e5942f87 100644 --- a/src/assistant/help/qhelpfilterengine.cpp +++ b/src/assistant/help/qhelpfilterengine.cpp @@ -170,6 +170,17 @@ QMap<QString, QString> QHelpFilterEngine::namespaceToComponent() const } /*! + Returns the map of all the available namespaces as keys + together with their associated versions as values. +*/ +QMap<QString, QString> QHelpFilterEngine::namespaceToVersion() const +{ + if (!d->setup()) + return QMap<QString, QString>(); + return d->m_collectionHandler->namespaceToVersion(); +} + +/*! Returns the list of all filter names defined inside the filter engine. */ QStringList QHelpFilterEngine::filters() const diff --git a/src/assistant/help/qhelpfilterengine.h b/src/assistant/help/qhelpfilterengine.h index aac8597d7..3ed5f4e5d 100644 --- a/src/assistant/help/qhelpfilterengine.h +++ b/src/assistant/help/qhelpfilterengine.h @@ -59,6 +59,7 @@ class QHELP_EXPORT QHelpFilterEngine : public QObject Q_OBJECT public: QMap<QString, QString> namespaceToComponent() const; + QMap<QString, QString> namespaceToVersion() const; QStringList filters() const; |