aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/locator/ilocatorfilter.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-01-13 16:17:34 +0100
committerEike Ziller <eike.ziller@digia.com>2014-01-14 07:43:00 +0100
commit4d96fa7aba7be35800d61d8bed89d3f6c3ef9329 (patch)
treec9b102981cf81023e1488224a24758af18aa064e /src/plugins/coreplugin/locator/ilocatorfilter.cpp
parent8b854270a6c214479b2cdf302072a3e74fa854da (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.cpp208
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;
+}