Improved locator settings

* Added columns for name, prefix and default
* Made sortable
* Added filter input field
* Added inline editing of prefix and default state
* Changed "Limit to prefix" to "Include by default"
* Added some tool tips

Change-Id: I9ddfaf1bc9ff62e3fbe84c1b66bdd795aaa274fd
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
Eike Ziller
2015-06-08 16:48:24 +02:00
parent 0046562391
commit ee488785bf
11 changed files with 318 additions and 82 deletions

View File

@@ -30,6 +30,7 @@
#include "directoryfilter.h"
#include <coreplugin/coreconstants.h>
#include <utils/filesearch.h>
#include <QFileDialog>
@@ -95,7 +96,11 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
QDialog dialog(parent);
m_dialog = &dialog;
m_ui.setupUi(&dialog);
dialog.setWindowTitle(tr("Filter Configuration"));
dialog.setWindowTitle(ILocatorFilter::msgConfigureDialogTitle());
m_ui.prefixLabel->setText(ILocatorFilter::msgPrefixLabel());
m_ui.prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip());
m_ui.defaultFlag->setText(ILocatorFilter::msgIncludeByDefault());
m_ui.defaultFlag->setText(ILocatorFilter::msgIncludeByDefaultToolTip());
connect(m_ui.addButton, &QPushButton::clicked,
this, &DirectoryFilter::addDirectory, Qt::DirectConnection);
connect(m_ui.editButton, &QPushButton::clicked,
@@ -110,7 +115,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
m_ui.directoryList->addItems(m_directories);
m_ui.fileTypeEdit->setText(m_filters.join(QLatin1Char(',')));
m_ui.shortcutEdit->setText(shortcutString());
m_ui.defaultFlag->setChecked(!isIncludedByDefault());
m_ui.defaultFlag->setChecked(isIncludedByDefault());
updateOptionButtons();
if (dialog.exec() == QDialog::Accepted) {
QMutexLocker locker(&m_lock);
@@ -130,7 +135,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
}
m_filters = m_ui.fileTypeEdit->text().trimmed().split(QLatin1Char(','));
setShortcutString(m_ui.shortcutEdit->text().trimmed());
setIncludedByDefault(!m_ui.defaultFlag->isChecked());
setIncludedByDefault(m_ui.defaultFlag->isChecked());
if (directoriesChanged || oldFilters != m_filters)
needsRefresh = true;
success = true;

View File

@@ -38,9 +38,9 @@
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<widget class="QLabel" name="prefixLabel">
<property name="text">
<string>Prefix:</string>
<string notr="true">Prefix:</string>
</property>
</widget>
</item>
@@ -67,7 +67,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
<item row="3" column="2" colspan="2">
<widget class="QCheckBox" name="defaultFlag">
<property name="text">
<string>Limit to prefix</string>
<string notr="true">Include by default</string>
</property>
<property name="checked">
<bool>false</bool>

View File

@@ -30,6 +30,7 @@
#include "filesystemfilter.h"
#include "locatorwidget.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/idocument.h>
@@ -171,15 +172,19 @@ bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
Ui::FileSystemFilterOptions ui;
QDialog dialog(parent);
ui.setupUi(&dialog);
dialog.setWindowTitle(ILocatorFilter::msgConfigureDialogTitle());
ui.prefixLabel->setText(ILocatorFilter::msgPrefixLabel());
ui.prefixLabel->setToolTip(ILocatorFilter::msgPrefixToolTip());
ui.includeByDefault->setText(msgIncludeByDefault());
ui.includeByDefault->setToolTip(msgIncludeByDefaultToolTip());
ui.hiddenFilesFlag->setChecked(m_includeHidden);
ui.limitCheck->setChecked(!isIncludedByDefault());
ui.includeByDefault->setChecked(isIncludedByDefault());
ui.shortcutEdit->setText(shortcutString());
if (dialog.exec() == QDialog::Accepted) {
m_includeHidden = ui.hiddenFilesFlag->isChecked();
setShortcutString(ui.shortcutEdit->text().trimmed());
setIncludedByDefault(!ui.limitCheck->isChecked());
setIncludedByDefault(ui.includeByDefault->isChecked());
return true;
}
return false;

View File

@@ -11,13 +11,13 @@
</rect>
</property>
<property name="windowTitle">
<string>Add Filter Configuration</string>
<string notr="true">Filter Configuration</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QLabel" name="label">
<widget class="QLabel" name="prefixLabel">
<property name="text">
<string>Prefix:</string>
<string notr="true">Prefix:</string>
</property>
<property name="buddy">
<cstring>shortcutEdit</cstring>
@@ -28,9 +28,9 @@
<widget class="QLineEdit" name="shortcutEdit"/>
</item>
<item row="1" column="2">
<widget class="QCheckBox" name="limitCheck">
<widget class="QCheckBox" name="includeByDefault">
<property name="text">
<string>Limit to prefix</string>
<string notr="true">Include by default</string>
</property>
</widget>
</item>

View File

@@ -30,8 +30,11 @@
#include "ilocatorfilter.h"
#include <coreplugin/coreconstants.h>
#include <QBoxLayout>
#include <QCheckBox>
#include <QCoreApplication>
#include <QDialog>
#include <QDialogButtonBox>
#include <QLabel>
@@ -92,17 +95,20 @@ bool ILocatorFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
Q_UNUSED(needsRefresh)
QDialog dialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint);
dialog.setWindowTitle(tr("Filter Configuration"));
dialog.setWindowTitle(msgConfigureDialogTitle());
QVBoxLayout *vlayout = new QVBoxLayout(&dialog);
QHBoxLayout *hlayout = new QHBoxLayout;
QLineEdit *shortcutEdit = new QLineEdit(shortcutString());
QCheckBox *limitCheck = new QCheckBox(tr("Limit to prefix"));
limitCheck->setChecked(!isIncludedByDefault());
QCheckBox *includeByDefault = new QCheckBox(msgIncludeByDefault());
includeByDefault->setToolTip(msgIncludeByDefaultToolTip());
includeByDefault->setChecked(isIncludedByDefault());
hlayout->addWidget(new QLabel(tr("Prefix:")));
auto prefixLabel = new QLabel(msgPrefixLabel());
prefixLabel->setToolTip(msgPrefixToolTip());
hlayout->addWidget(prefixLabel);
hlayout->addWidget(shortcutEdit);
hlayout->addWidget(limitCheck);
hlayout->addWidget(includeByDefault);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok |
QDialogButtonBox::Cancel);
@@ -115,7 +121,7 @@ bool ILocatorFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
if (dialog.exec() == QDialog::Accepted) {
setShortcutString(shortcutEdit->text().trimmed());
setIncludedByDefault(!limitCheck->isChecked());
setIncludedByDefault(includeByDefault->isChecked());
return true;
}
@@ -143,6 +149,31 @@ Qt::CaseSensitivity ILocatorFilter::caseSensitivity(const QString &str)
return str == str.toLower() ? Qt::CaseInsensitive : Qt::CaseSensitive;
}
QString ILocatorFilter::msgConfigureDialogTitle()
{
return tr("Filter Configuration");
}
QString ILocatorFilter::msgPrefixLabel()
{
return tr("Prefix:");
}
QString ILocatorFilter::msgPrefixToolTip()
{
return tr("Type the prefix followed by a space and search term to restrict search to the filter.");
}
QString ILocatorFilter::msgIncludeByDefault()
{
return tr("Include by default");
}
QString ILocatorFilter::msgIncludeByDefaultToolTip()
{
return tr("Include the filter when not using a prefix for searches.");
}
bool ILocatorFilter::isConfigurable() const
{
return m_isConfigurable;

View File

@@ -100,6 +100,7 @@ public:
/* String to type to use this filter exclusively. */
QString shortcutString() const;
void setShortcutString(const QString &shortcut);
/* Called on the main thread before matchesFor is called in a separate thread.
Can be used to perform actions that need to be done in the main thread before actually
@@ -135,6 +136,7 @@ public:
/* Is this filter used also when the shortcutString is not used? */
bool isIncludedByDefault() const;
void setIncludedByDefault(bool includedByDefault);
/* Returns whether the filter should be hidden from configuration and menus. */
bool isHidden() const;
@@ -145,13 +147,17 @@ public:
static QString trimWildcards(const QString &str);
static Qt::CaseSensitivity caseSensitivity(const QString &str);
static QString msgConfigureDialogTitle();
static QString msgPrefixLabel();
static QString msgPrefixToolTip();
static QString msgIncludeByDefault();
static QString msgIncludeByDefaultToolTip();
public slots:
/* Enable or disable the filter. */
void setEnabled(bool enabled);
protected:
void setShortcutString(const QString &shortcut);
void setIncludedByDefault(bool includedByDefault);
void setHidden(bool hidden);
void setId(Id id);
void setPriority(Priority priority);

View File

@@ -36,15 +36,133 @@
#include "directoryfilter.h"
#include <coreplugin/coreconstants.h>
#include <utils/categorysortfiltermodel.h>
#include <utils/headerviewstretcher.h>
#include <utils/qtcassert.h>
#include <utils/treemodel.h>
#include <QCoreApplication>
Q_DECLARE_METATYPE(Core::ILocatorFilter*)
using namespace Utils;
static const int SortRole = Qt::UserRole + 1;
namespace Core {
namespace Internal {
enum FilterItemColumn
{
FilterName = 0,
FilterPrefix,
FilterIncludedByDefault
};
class FilterItem : public TreeItem
{
public:
FilterItem(ILocatorFilter *filter);
QVariant data(int column, int role) const override;
Qt::ItemFlags flags(int column) const override;
bool setData(int column, const QVariant &data, int role) override;
ILocatorFilter *filter() const;
private:
ILocatorFilter *m_filter;
};
class CategoryItem : public TreeItem
{
public:
CategoryItem(const QString &name, int order);
QVariant data(int column, int role) const override;
private:
int m_order;
};
} // Internal
} // Core
using namespace Core;
using namespace Core::Internal;
FilterItem::FilterItem(ILocatorFilter *filter)
: m_filter(filter)
{
setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
}
QVariant FilterItem::data(int column, int role) const
{
switch (column) {
case FilterName:
if (role == Qt::DisplayRole || role == SortRole)
return m_filter->displayName();
break;
case FilterPrefix:
if (role == Qt::DisplayRole || role == SortRole || role == Qt::EditRole)
return m_filter->shortcutString();
break;
case FilterIncludedByDefault:
if (role == Qt::CheckStateRole || role == SortRole || role == Qt::EditRole)
return m_filter->isIncludedByDefault() ? Qt::Checked : Qt::Unchecked;
break;
default:
break;
}
return QVariant();
}
Qt::ItemFlags FilterItem::flags(int column) const
{
if (column == FilterPrefix) {
return TreeItem::flags(column) | Qt::ItemIsEditable;
} else if (column == FilterIncludedByDefault) {
return TreeItem::flags(column) | Qt::ItemIsEditable | Qt::ItemIsUserCheckable;
}
return TreeItem::flags(column);
}
bool FilterItem::setData(int column, const QVariant &data, int role)
{
switch (column) {
case FilterName:
break;
case FilterPrefix:
if (role == Qt::EditRole && data.canConvert<QString>()) {
m_filter->setShortcutString(data.toString());
return true;
}
break;
case FilterIncludedByDefault:
if (role == Qt::CheckStateRole && data.canConvert<bool>()) {
m_filter->setIncludedByDefault(data.toBool());
return true;
}
}
return false;
}
ILocatorFilter *FilterItem::filter() const
{
return m_filter;
}
CategoryItem::CategoryItem(const QString &name, int order)
: TreeItem(QStringList(name)),
m_order(order)
{
}
QVariant CategoryItem::data(int column, int role) const
{
if (role == SortRole)
return m_order;
return TreeItem::data(column, role);
}
LocatorSettingsPage::LocatorSettingsPage(Locator *plugin)
: m_plugin(plugin), m_widget(0)
{
@@ -58,25 +176,49 @@ LocatorSettingsPage::LocatorSettingsPage(Locator *plugin)
QWidget *LocatorSettingsPage::widget()
{
if (!m_widget) {
m_filters = m_plugin->filters();
m_customFilters = m_plugin->customFilters();
m_widget = new QWidget;
m_ui.setupUi(m_widget);
m_ui.refreshInterval->setToolTip(m_ui.refreshIntervalLabel->toolTip());
connect(m_ui.filterList, &QListWidget::currentItemChanged,
m_ui.filterEdit->setFiltering(true);
m_ui.filterList->setSelectionMode(QAbstractItemView::SingleSelection);
m_ui.filterList->setSelectionBehavior(QAbstractItemView::SelectRows);
m_ui.filterList->setSortingEnabled(true);
m_ui.filterList->setUniformRowHeights(true);
m_ui.filterList->setActivationMode(Utils::DoubleClickActivation);
m_model = new TreeModel(m_ui.filterList);
initializeModel();
m_proxyModel = new CategorySortFilterModel(m_ui.filterList);
m_proxyModel->setSourceModel(m_model);
m_proxyModel->setSortRole(SortRole);
m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_proxyModel->setFilterKeyColumn(-1/*all*/);
m_ui.filterList->setModel(m_proxyModel);
m_ui.filterList->expandAll();
new HeaderViewStretcher(m_ui.filterList->header(), FilterName);
m_ui.filterList->header()->setSortIndicator(FilterName, Qt::AscendingOrder);
connect(m_ui.filterEdit, &FancyLineEdit::filterChanged,
this, &LocatorSettingsPage::setFilter);
connect(m_ui.filterList->selectionModel(), &QItemSelectionModel::currentChanged,
this, &LocatorSettingsPage::updateButtonStates);
connect(m_ui.filterList, SIGNAL(itemActivated(QListWidgetItem*)),
this, SLOT(configureFilter(QListWidgetItem*)));
connect(m_ui.editButton, SIGNAL(clicked()),
this, SLOT(configureFilter()));
connect(m_ui.filterList, &Utils::TreeView::activated,
this, &LocatorSettingsPage::configureFilter);
connect(m_ui.editButton, &QPushButton::clicked,
this, [this]() { configureFilter(m_ui.filterList->currentIndex()); });
connect(m_ui.addButton, &QPushButton::clicked,
this, &LocatorSettingsPage::addCustomFilter);
connect(m_ui.removeButton, &QPushButton::clicked,
this, &LocatorSettingsPage::removeCustomFilter);
m_ui.refreshInterval->setValue(m_plugin->refreshInterval());
m_filters = m_plugin->filters();
m_customFilters = m_plugin->customFilters();
saveFilterStates();
updateFilterList();
}
return m_widget;
}
@@ -121,6 +263,12 @@ void LocatorSettingsPage::requestRefresh()
m_plugin->refresh(m_refreshFilters);
}
void LocatorSettingsPage::setFilter(const QString &text)
{
m_proxyModel->setFilterFixedString(text);
m_ui.filterList->expandAll();
}
void LocatorSettingsPage::saveFilterStates()
{
m_filterStates.clear();
@@ -134,49 +282,60 @@ void LocatorSettingsPage::restoreFilterStates()
filter->restoreState(m_filterStates.value(filter));
}
void LocatorSettingsPage::updateFilterList()
void LocatorSettingsPage::initializeModel()
{
m_ui.filterList->clear();
foreach (ILocatorFilter *filter, m_filters) {
if (filter->isHidden())
continue;
m_model->setHeader(QStringList({ tr("Name"), tr("Prefix"), tr("Default") }));
m_model->setHeaderToolTip(QStringList({
QString(),
ILocatorFilter::msgPrefixToolTip(),
ILocatorFilter::msgIncludeByDefaultToolTip()
}));
m_model->clear();
QSet<ILocatorFilter *> customFilterSet = m_customFilters.toSet();
auto builtIn = new CategoryItem(tr("Built-in"), 0/*order*/);
foreach (ILocatorFilter *filter, m_filters)
if (!filter->isHidden() && !customFilterSet.contains(filter))
builtIn->appendChild(new FilterItem(filter));
m_customFilterRoot = new CategoryItem(tr("Custom"), 1/*order*/);
foreach (ILocatorFilter *customFilter, m_customFilters)
m_customFilterRoot->appendChild(new FilterItem(customFilter));
QString title;
if (filter->isIncludedByDefault())
title = filter->displayName();
else
title = tr("%1 (prefix: %2)").arg(filter->displayName()).arg(filter->shortcutString());
QListWidgetItem *item = new QListWidgetItem(title);
item->setData(Qt::UserRole, qVariantFromValue(filter));
m_ui.filterList->addItem(item);
}
if (m_ui.filterList->count() > 0)
m_ui.filterList->setCurrentRow(0);
m_model->rootItem()->appendChild(builtIn);
m_model->rootItem()->appendChild(m_customFilterRoot);
}
void LocatorSettingsPage::updateButtonStates()
{
QListWidgetItem *item = m_ui.filterList->currentItem();
ILocatorFilter *filter = (item ? item->data(Qt::UserRole).value<ILocatorFilter *>() : 0);
const QModelIndex currentIndex = m_proxyModel->mapToSource(m_ui.filterList->currentIndex());
bool selected = currentIndex.isValid();
ILocatorFilter *filter = 0;
if (selected) {
auto item = dynamic_cast<FilterItem *>(m_model->itemForIndex(currentIndex));
if (item)
filter = item->filter();
}
m_ui.editButton->setEnabled(filter && filter->isConfigurable());
m_ui.removeButton->setEnabled(filter && m_customFilters.contains(filter));
}
void LocatorSettingsPage::configureFilter(QListWidgetItem *item)
void LocatorSettingsPage::configureFilter(const QModelIndex &proxyIndex)
{
if (!item)
item = m_ui.filterList->currentItem();
const QModelIndex index = m_proxyModel->mapToSource(proxyIndex);
QTC_ASSERT(index.isValid(), return);
auto item = dynamic_cast<FilterItem *>(m_model->itemForIndex(index));
QTC_ASSERT(item, return);
ILocatorFilter *filter = item->data(Qt::UserRole).value<ILocatorFilter *>();
QTC_ASSERT(filter, return);
if (!filter->isConfigurable())
return;
ILocatorFilter *filter = item->filter();
QTC_ASSERT(filter->isConfigurable(), return);
bool includedByDefault = filter->isIncludedByDefault();
QString shortcutString = filter->shortcutString();
bool needsRefresh = false;
filter->openConfigDialog(m_widget, needsRefresh);
if (needsRefresh && !m_refreshFilters.contains(filter))
m_refreshFilters.append(filter);
updateFilterList();
if (filter->isIncludedByDefault() != includedByDefault)
item->updateColumn(FilterIncludedByDefault);
if (filter->shortcutString() != shortcutString)
item->updateColumn(FilterPrefix);
}
void LocatorSettingsPage::addCustomFilter()
@@ -189,16 +348,19 @@ void LocatorSettingsPage::addCustomFilter()
m_addedFilters.append(filter);
m_customFilters.append(filter);
m_refreshFilters.append(filter);
updateFilterList();
m_customFilterRoot->appendChild(new FilterItem(filter));
}
}
void LocatorSettingsPage::removeCustomFilter()
{
QListWidgetItem *item = m_ui.filterList->currentItem();
QModelIndex currentIndex = m_proxyModel->mapToSource(m_ui.filterList->currentIndex());
QTC_ASSERT(currentIndex.isValid(), return);
auto item = dynamic_cast<FilterItem *>(m_model->itemForIndex(currentIndex));
QTC_ASSERT(item, return);
ILocatorFilter *filter = item->data(Qt::UserRole).value<ILocatorFilter *>();
ILocatorFilter *filter = item->filter();
QTC_ASSERT(m_customFilters.contains(filter), return);
delete m_model->takeItem(item);
m_filters.removeAll(filter);
m_customFilters.removeAll(filter);
m_refreshFilters.removeAll(filter);
@@ -208,5 +370,4 @@ void LocatorSettingsPage::removeCustomFilter()
} else {
m_removedFilters.append(filter);
}
updateFilterList();
}

View File

@@ -40,8 +40,16 @@
QT_BEGIN_NAMESPACE
class QListWidgetItem;
class QSortFilterProxyModel;
QT_END_NAMESPACE
namespace Utils {
class TreeModel;
class TreeItem;
} // Utils
namespace Core {
class ILocatorFilter;
@@ -63,19 +71,23 @@ public:
private slots:
void updateButtonStates();
void configureFilter(QListWidgetItem *item = 0);
void configureFilter(const QModelIndex &proxyIndex);
void addCustomFilter();
void removeCustomFilter();
private:
void updateFilterList();
void initializeModel();
void saveFilterStates();
void restoreFilterStates();
void requestRefresh();
void setFilter(const QString &text);
Ui::LocatorSettingsWidget m_ui;
Locator *m_plugin;
QPointer<QWidget> m_widget;
Utils::TreeModel *m_model;
QSortFilterProxyModel *m_proxyModel;
Utils::TreeItem *m_customFilterRoot;
QList<ILocatorFilter *> m_filters;
QList<ILocatorFilter *> m_addedFilters;
QList<ILocatorFilter *> m_removedFilters;

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>367</width>
<height>242</height>
<width>411</width>
<height>287</height>
</rect>
</property>
<property name="windowTitle">
@@ -15,13 +15,12 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QListWidget" name="filterList">
<property name="font">
<font/>
</property>
</widget>
<widget class="Utils::FancyLineEdit" name="filterEdit"/>
</item>
<item row="0" column="1">
<item row="1" column="0">
<widget class="Utils::TreeView" name="filterList"/>
</item>
<item row="1" column="1">
<layout class="QVBoxLayout">
<item>
<widget class="QPushButton" name="addButton">
@@ -65,7 +64,7 @@
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="refreshIntervalLabel">
@@ -116,6 +115,18 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Utils::TreeView</class>
<extends>QTreeView</extends>
<header location="global">utils/itemviews.h</header>
</customwidget>
<customwidget>
<class>Utils::FancyLineEdit</class>
<extends>QLineEdit</extends>
<header location="global">utils/fancylineedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -41,8 +41,13 @@ RemoteFilterOptions::RemoteFilterOptions(RemoteHelpFilter *filter, QWidget *pare
, m_filter(filter)
{
m_ui.setupUi(this);
setWindowTitle(Core::ILocatorFilter::msgConfigureDialogTitle());
m_ui.prefixLabel->setText(Core::ILocatorFilter::msgPrefixLabel());
m_ui.prefixLabel->setToolTip(Core::ILocatorFilter::msgPrefixToolTip());
m_ui.includeByDefault->setText(Core::ILocatorFilter::msgIncludeByDefault());
m_ui.includeByDefault->setToolTip(Core::ILocatorFilter::msgIncludeByDefaultToolTip());
m_ui.shortcutEdit->setText(m_filter->shortcutString());
m_ui.limitCheck->setChecked(!m_filter->isIncludedByDefault());
m_ui.includeByDefault->setChecked(m_filter->isIncludedByDefault());
foreach (const QString &url, m_filter->remoteUrls()) {
QListWidgetItem *item = new QListWidgetItem(url);
m_ui.listWidget->addItem(item);
@@ -162,7 +167,7 @@ bool RemoteHelpFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
if (optionsDialog.exec() == QDialog::Accepted) {
QMutexLocker lock(&m_mutex); Q_UNUSED(lock)
m_remoteUrls.clear();
setIncludedByDefault(!optionsDialog.m_ui.limitCheck->isChecked());
setIncludedByDefault(optionsDialog.m_ui.includeByDefault->isChecked());
setShortcutString(optionsDialog.m_ui.shortcutEdit->text().trimmed());
for (int i = 0; i < optionsDialog.m_ui.listWidget->count(); ++i)
m_remoteUrls.append(optionsDialog.m_ui.listWidget->item(i)->text());

View File

@@ -6,18 +6,18 @@
<rect>
<x>0</x>
<y>0</y>
<width>340</width>
<height>179</height>
<width>342</width>
<height>182</height>
</rect>
</property>
<property name="windowTitle">
<string>Edit Filter Configuration</string>
<string notr="true">Filter Configuration</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<widget class="QLabel" name="prefixLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -25,7 +25,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Prefix:</string>
<string notr="true">Prefix:</string>
</property>
<property name="buddy">
<cstring>shortcutEdit</cstring>
@@ -43,7 +43,7 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="limitCheck">
<widget class="QCheckBox" name="includeByDefault">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -51,7 +51,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Limit to prefix</string>
<string notr="true">Include by default</string>
</property>
</widget>
</item>