ClangTools: Make file selection dialog searchable/filterable

Allow filtering for open and edited documents.
Add also search functionality (triggerable by e.g. Ctrl+F).

Change-Id: Ib41400abfd3b81371afddd56b88ff1b9bf8b9bcd
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-09-27 12:04:55 +02:00
parent 9fd4b25638
commit a0a39a0470
7 changed files with 268 additions and 134 deletions

View File

@@ -27,13 +27,10 @@
#include "clangfileinfo.h"
#include <coreplugin/id.h>
#include <QDialog>
#include <memory>
QT_BEGIN_NAMESPACE
class QDialogButtonBox;
class QPushButton;
QT_END_NAMESPACE
@@ -51,18 +48,25 @@ class SelectableFilesDialog : public QDialog
public:
explicit SelectableFilesDialog(const CppTools::ProjectInfo &projectInfo,
const FileInfos &allFileInfos);
const FileInfoProviders &fileInfoProviders,
int initialProviderIndex);
~SelectableFilesDialog() override;
FileInfos filteredFileInfos() const;
FileInfos fileInfos() const;
int currentProviderIndex() const;
private:
void onFileFilterChanged(int index);
void accept() override;
std::unique_ptr<Ui::SelectableFilesDialog> m_ui;
QTreeView *m_fileView = nullptr;
QDialogButtonBox *m_buttons = nullptr;
std::unique_ptr<SelectableFilesModel> m_filesModel;
Core::Id m_customDiagnosticConfig;
FileInfoProviders m_fileInfoProviders;
int m_previousProviderIndex = -1;
ProjectExplorer::Project *m_project;
QPushButton *m_analyzeButton = nullptr;
};