/*************************************************************************** ** ** This file is part of Qt Creator ** ** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). ** ** Contact: Qt Software Information (qt-info@nokia.com) ** ** ** Non-Open Source Usage ** ** Licensees may use this file in accordance with the Qt Beta Version ** License Agreement, Agreement version 2.2 provided with the Software or, ** alternatively, in accordance with the terms contained in a written ** agreement between you and Nokia. ** ** GNU General Public License Usage ** ** Alternatively, this file may be used under the terms of the GNU General ** Public License versions 2.0 or 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the packaging ** of this file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and ** http://www.gnu.org/copyleft/gpl.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt GPL Exception ** version 1.2, included in the file GPL_EXCEPTION.txt in this package. ** ***************************************************************************/ #include "findinfiles.h" #include #include #include #include #include using namespace Find; using namespace TextEditor::Internal; FindInFiles::FindInFiles(Core::ICore *core, SearchResultWindow *resultWindow) : BaseFileFind(core, resultWindow), m_configWidget(0), m_directory(0) { } QString FindInFiles::name() const { return tr("Files on Disk"); } QKeySequence FindInFiles::defaultShortcut() const { return QKeySequence(); } void FindInFiles::findAll(const QString &txt, QTextDocument::FindFlags findFlags) { updateComboEntries(m_directory, true); BaseFileFind::findAll(txt, findFlags); } QStringList FindInFiles::files() { QStringList fileList; QDirIterator it(m_directory->currentText(), fileNameFilters(), QDir::Files|QDir::Readable, QDirIterator::Subdirectories); while (it.hasNext()) { it.next(); fileList << it.filePath(); } return fileList; } QWidget *FindInFiles::createConfigWidget() { if (!m_configWidget) { m_configWidget = new QWidget; QGridLayout * const gridLayout = new QGridLayout(m_configWidget); gridLayout->setMargin(0); m_configWidget->setLayout(gridLayout); gridLayout->addWidget(createRegExpWidget(), 0, 1, 1, 2); gridLayout->addWidget(new QLabel(tr("Directory:")), 1, 0, Qt::AlignRight); m_directory = new QComboBox; m_directory->setEditable(true); m_directory->setMaxCount(30); m_directory->setMinimumContentsLength(10); m_directory->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon); m_directory->setInsertPolicy(QComboBox::InsertAtTop); m_directory->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_directory->setModel(&m_directoryStrings); syncComboWithSettings(m_directory, m_directorySetting); gridLayout->addWidget(m_directory, 1, 1); QPushButton *browseButton = new QPushButton(tr("Browse")); gridLayout->addWidget(browseButton, 1, 2); connect(browseButton, SIGNAL(clicked()), this, SLOT(openFileBrowser())); QLabel * const filePatternLabel = new QLabel(tr("File pattern:")); filePatternLabel->setMinimumWidth(80); filePatternLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); filePatternLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); gridLayout->addWidget(filePatternLabel, 2, 0); gridLayout->addWidget(createPatternWidget(), 2, 1, 1, 2); m_configWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } return m_configWidget; } void FindInFiles::openFileBrowser() { if (!m_directory) return; QString dir = QFileDialog::getExistingDirectory(m_configWidget, tr("Directory to search")); if (!dir.isEmpty()) m_directory->setEditText(dir); } void FindInFiles::writeSettings(QSettings *settings) { settings->beginGroup("FindInFiles"); writeCommonSettings(settings); settings->setValue("directories", m_directoryStrings.stringList()); if (m_directory) settings->setValue("currentDirectory", m_directory->currentText()); settings->endGroup(); } void FindInFiles::readSettings(QSettings *settings) { settings->beginGroup("FindInFiles"); readCommonSettings(settings, "*.cpp,*.h"); m_directoryStrings.setStringList(settings->value("directories").toStringList()); m_directorySetting = settings->value("currentDirectory").toString(); settings->endGroup(); syncComboWithSettings(m_directory, m_directorySetting); }