ProjectExplorer: Add history completion ability to SelectableFilesWidget

... and make use of it in project contexts.

Fixes: QTCREATORBUG-19781
Change-Id: I4618b6e4a64b1aaa1352afcc98e4cc6e5fac1859
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-01-21 17:44:00 +01:00
parent 90e31668d6
commit 13b0106dcd
6 changed files with 31 additions and 10 deletions

View File

@@ -29,6 +29,7 @@
#include "genericprojectconstants.h"
#include <coreplugin/icore.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/selectablefilesmodel.h>
#include <utils/wizard.h>
@@ -47,6 +48,8 @@ FilesSelectionWizardPage::FilesSelectionWizardPage(GenericProjectWizardDialog *g
auto layout = new QVBoxLayout(this);
layout->addWidget(m_filesWidget);
m_filesWidget->enableFilterHistoryCompletion
(ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY);
m_filesWidget->setBaseDirEditable(false);
connect(m_filesWidget, &ProjectExplorer::SelectableFilesWidget::selectedFilesChanged,
this, &FilesSelectionWizardPage::completeChanged);

View File

@@ -3317,7 +3317,9 @@ void ProjectExplorerPluginPrivate::addExistingDirectory()
SelectableFilesDialogAddDirectory dialog(Utils::FileName::fromString(directoryFor(node)),
Utils::FileNameList(), ICore::mainWindow());
dialog.setAddFileFilter(folderNode->addFileFilter());
const QString addFileFilter = folderNode->addFileFilter();
if (!addFileFilter.isEmpty())
dialog.setAddFileFilter(addFileFilter);
if (dialog.exec() == QDialog::Accepted)
ProjectExplorerPlugin::addExistingFiles(folderNode, Utils::transform(dialog.selectedFiles(), &Utils::FileName::toString));

View File

@@ -211,5 +211,7 @@ const char FILEOVERLAY_H[]=":/projectexplorer/images/fileoverlay_h.png";
const char FILEOVERLAY_SCXML[]=":/projectexplorer/images/fileoverlay_scxml.png";
const char FILEOVERLAY_UNKNOWN[]=":/projectexplorer/images/fileoverlay_unknown.png";
const char ADD_FILES_DIALOG_FILTER_HISTORY_KEY[] = "ProjectExplorer.AddFilesFilterKey";
} // namespace Constants
} // namespace ProjectExplorer

View File

@@ -29,8 +29,10 @@
#include <coreplugin/fileiconprovider.h>
#include <coreplugin/icore.h>
#include <utils/runextensions.h>
#include <utils/algorithm.h>
#include <utils/fancylineedit.h>
#include <utils/pathchooser.h>
#include <utils/runextensions.h>
#include <QDialogButtonBox>
#include <QGridLayout>
@@ -39,7 +41,6 @@
#include <QPushButton>
#include <QTreeView>
#include <QDir>
#include <utils/pathchooser.h>
namespace ProjectExplorer {
@@ -533,9 +534,9 @@ SelectableFilesWidget::SelectableFilesWidget(QWidget *parent) :
m_baseDirLabel(new QLabel),
m_startParsingButton(new QPushButton),
m_selectFilesFilterLabel(new QLabel),
m_selectFilesFilterEdit(new QLineEdit),
m_selectFilesFilterEdit(new Utils::FancyLineEdit),
m_hideFilesFilterLabel(new QLabel),
m_hideFilesFilterEdit(new QLineEdit),
m_hideFilesFilterEdit(new Utils::FancyLineEdit),
m_applyFiltersButton(new QPushButton),
m_view(new QTreeView),
m_preservedFilesLabel(new QLabel),
@@ -652,6 +653,12 @@ void SelectableFilesWidget::cancelParsing()
m_model->cancel();
}
void SelectableFilesWidget::enableFilterHistoryCompletion(const QString &keyPrefix)
{
m_selectFilesFilterEdit->setHistoryCompleter(keyPrefix + ".select", true);
m_hideFilesFilterEdit->setHistoryCompleter(keyPrefix + ".hide", true);
}
void SelectableFilesWidget::enableWidgets(bool enabled)
{
m_hideFilesFilterEdit->setEnabled(enabled);
@@ -733,6 +740,7 @@ SelectableFilesDialogEditFiles::SelectableFilesDialogEditFiles(const Utils::File
layout->addWidget(m_filesWidget);
m_filesWidget->setBaseDirEditable(false);
m_filesWidget->enableFilterHistoryCompletion(Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY);
auto buttonBox = new QDialogButtonBox(Qt::Horizontal, this);
buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
@@ -749,6 +757,7 @@ Utils::FileNameList SelectableFilesDialogEditFiles::selectedFiles() const
return m_filesWidget->selectedFiles();
}
//////////
// SelectableFilesDialogAddDirectory
//////////

View File

@@ -36,7 +36,10 @@
#include <utils/fileutils.h>
namespace Utils { class PathChooser; }
namespace Utils {
class FancyLineEdit;
class PathChooser;
}
QT_BEGIN_NAMESPACE
class QVBoxLayout;
@@ -202,6 +205,8 @@ public:
void resetModel(const Utils::FileName &path, const Utils::FileNameList &files);
void cancelParsing();
void enableFilterHistoryCompletion(const QString &keyPrefix);
signals:
void selectedFilesChanged();
@@ -223,10 +228,10 @@ private:
QPushButton *m_startParsingButton;
QLabel *m_selectFilesFilterLabel;
QLineEdit *m_selectFilesFilterEdit;
Utils::FancyLineEdit *m_selectFilesFilterEdit;
QLabel *m_hideFilesFilterLabel;
QLineEdit *m_hideFilesFilterEdit;
Utils::FancyLineEdit *m_hideFilesFilterEdit;
QPushButton *m_applyFiltersButton;
@@ -259,8 +264,6 @@ class SelectableFilesDialogAddDirectory : public SelectableFilesDialogEditFiles
public:
SelectableFilesDialogAddDirectory(const Utils::FileName &path, const Utils::FileNameList &files,
QWidget *parent);
void setAddFileFilter(const QString &filter) { m_filesWidget->setAddFileFilter(filter); }
};
} // namespace ProjectExplorer

View File

@@ -86,6 +86,8 @@ FilesSelectionWizardPage::FilesSelectionWizardPage(SimpleProjectWizardDialog *si
layout->addWidget(m_filesWidget);
m_filesWidget->setBaseDirEditable(false);
m_filesWidget->enableFilterHistoryCompletion
(ProjectExplorer::Constants::ADD_FILES_DIALOG_FILTER_HISTORY_KEY);
connect(m_filesWidget, &SelectableFilesWidget::selectedFilesChanged,
this, &FilesSelectionWizardPage::completeChanged);