diff options
author | hjk <hjk121@nokiamail.com> | 2014-01-13 16:17:34 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-01-14 07:43:00 +0100 |
commit | 4d96fa7aba7be35800d61d8bed89d3f6c3ef9329 (patch) | |
tree | c9b102981cf81023e1488224a24758af18aa064e /src/plugins/coreplugin/locator/ilocatorfilter.cpp | |
parent | 8b854270a6c214479b2cdf302072a3e74fa854da (diff) |
Core: Merge Find and Locator into Core plugin
Change-Id: I7053310272235d854c9f409670ff52a10a7add8b
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/coreplugin/locator/ilocatorfilter.cpp')
-rw-r--r-- | src/plugins/coreplugin/locator/ilocatorfilter.cpp | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.cpp b/src/plugins/coreplugin/locator/ilocatorfilter.cpp new file mode 100644 index 0000000000..ea91197cc6 --- /dev/null +++ b/src/plugins/coreplugin/locator/ilocatorfilter.cpp @@ -0,0 +1,208 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "ilocatorfilter.h" + +#include <QBoxLayout> +#include <QCheckBox> +#include <QDialog> +#include <QDialogButtonBox> +#include <QLabel> +#include <QLineEdit> + +using namespace Core; + +ILocatorFilter::ILocatorFilter(QObject *parent): + QObject(parent), + m_priority(Medium), + m_includedByDefault(false), + m_hidden(false), + m_enabled(true), + m_isConfigurable(true) +{ +} + +QString ILocatorFilter::shortcutString() const +{ + return m_shortcut; +} + +void ILocatorFilter::setShortcutString(const QString &shortcut) +{ + m_shortcut = shortcut; +} + +QByteArray ILocatorFilter::saveState() const +{ + QByteArray value; + QDataStream out(&value, QIODevice::WriteOnly); + out << shortcutString(); + out << isIncludedByDefault(); + return value; +} + +bool ILocatorFilter::restoreState(const QByteArray &state) +{ + QString shortcut; + bool defaultFilter; + + QDataStream in(state); + in >> shortcut; + in >> defaultFilter; + + setShortcutString(shortcut); + setIncludedByDefault(defaultFilter); + return true; +} + +bool ILocatorFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) +{ + Q_UNUSED(needsRefresh) + + QDialog dialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint); + dialog.setWindowTitle(tr("Filter Configuration")); + + 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()); + + hlayout->addWidget(new QLabel(tr("Prefix:"))); + hlayout->addWidget(shortcutEdit); + hlayout->addWidget(limitCheck); + + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | + QDialogButtonBox::Cancel); + connect(buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject())); + + vlayout->addLayout(hlayout); + vlayout->addStretch(); + vlayout->addWidget(buttonBox); + + if (dialog.exec() == QDialog::Accepted) { + setShortcutString(shortcutEdit->text().trimmed()); + setIncludedByDefault(!limitCheck->isChecked()); + return true; + } + + return false; +} + +QString ILocatorFilter::trimWildcards(const QString &str) +{ + if (str.isEmpty()) + return str; + int first = 0, last = str.size() - 1; + const QChar asterisk = QLatin1Char('*'); + const QChar question = QLatin1Char('?'); + while (first < str.size() && (str.at(first) == asterisk || str.at(first) == question)) + ++first; + while (last >= 0 && (str.at(last) == asterisk || str.at(last) == question)) + --last; + if (first > last) + return QString(); + return str.mid(first, last - first + 1); +} + +Qt::CaseSensitivity ILocatorFilter::caseSensitivity(const QString &str) +{ + return str == str.toLower() ? Qt::CaseInsensitive : Qt::CaseSensitive; +} + +bool ILocatorFilter::isConfigurable() const +{ + return m_isConfigurable; +} + +bool ILocatorFilter::isIncludedByDefault() const +{ + return m_includedByDefault; +} + +void ILocatorFilter::setIncludedByDefault(bool includedByDefault) +{ + m_includedByDefault = includedByDefault; +} + +bool ILocatorFilter::isHidden() const +{ + return m_hidden; +} + +void ILocatorFilter::setHidden(bool hidden) +{ + m_hidden = hidden; +} + +bool ILocatorFilter::isEnabled() const +{ + return m_enabled; +} + +Core::Id ILocatorFilter::id() const +{ + return m_id; +} + +QString ILocatorFilter::displayName() const +{ + return m_displayName; +} + +ILocatorFilter::Priority ILocatorFilter::priority() const +{ + return m_priority; +} + +void ILocatorFilter::setEnabled(bool enabled) +{ + m_enabled = enabled; +} + +void ILocatorFilter::setId(Core::Id id) +{ + m_id = id; +} + +void ILocatorFilter::setPriority(Priority priority) +{ + m_priority = priority; +} + +void ILocatorFilter::setDisplayName(const QString &displayString) +{ + m_displayName = displayString; +} + +void ILocatorFilter::setConfigurable(bool configurable) +{ + m_isConfigurable = configurable; +} |