void HelpPlugin::resetFilter() { const QString &filterInternal = QString::fromLatin1("Qt Creator %1.%2.%3") .arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR).arg(IDE_VERSION_RELEASE); QRegExp filterRegExp(QLatin1String("Qt Creator \\d*\\.\\d*\\.\\d*")); QHelpEngineCore *engine = &LocalHelpManager::helpEngine(); const QStringList &filters = engine->customFilters(); foreach (const QString &filter, filters) { if (filterRegExp.exactMatch(filter) && filter != filterInternal) engine->removeCustomFilter(filter); } // we added a filter at some point, remove previously added filter if (engine->customValue(Help::Constants::WeAddedFilterKey).toInt() == 1) { const QString &filter = engine->customValue(Help::Constants::PreviousFilterNameKey).toString(); if (!filter.isEmpty()) engine->removeCustomFilter(filter); } // potentially remove a filter with new name const QString filterName = tr("Unfiltered"); engine->removeCustomFilter(filterName); engine->addCustomFilter(filterName, QStringList()); engine->setCustomValue(Help::Constants::WeAddedFilterKey, 1); engine->setCustomValue(Help::Constants::PreviousFilterNameKey, filterName); engine->setCurrentFilter(filterName); LocalHelpManager::updateFilterModel(); connect(engine, &QHelpEngineCore::setupFinished, LocalHelpManager::instance(), &LocalHelpManager::updateFilterModel); }
void FilterSettingsPage::apply() { bool changed = m_filterMap.count() != m_filterMapBackup.count(); if (!changed) { FilterMap::const_iterator it = m_filterMapBackup.constBegin(); for (; it != m_filterMapBackup.constEnd() && !changed; ++it) { if (m_filterMap.contains(it.key())) { const QStringList &a = it.value(); const QStringList &b = m_filterMap.value(it.key()); if (a.count() == b.count()) { QStringList::const_iterator i = a.constBegin(); for (; i != a.constEnd() && !changed; ++i) { if (b.contains(*i)) continue; changed = true; } } else { changed = true; } } else { changed = true; } } } if (changed) { QHelpEngineCore *engine = &LocalHelpManager::helpEngine(); foreach (const QString &filter, m_removedFilters) engine->removeCustomFilter(filter); FilterMap::const_iterator it; for (it = m_filterMap.constBegin(); it != m_filterMap.constEnd(); ++it) engine->addCustomFilter(it.key(), it.value()); // emit this signal to the help plugin, since we don't want // to force gui help engine setup if we are not in help mode emit filtersChanged(); } }