1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/*
SPDX-FileCopyrightText: 1999-2001 Bernd Gehrmann <bernd@kdevelop.org>
SPDX-FileCopyrightText: 1999-2001 the KDevelop Team
SPDX-FileCopyrightText: 2007 Dukju Ahn <dukjuahn@gmail.com>
SPDX-FileCopyrightText: 2010 Julien Desgats <julien.desgats@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef KDEVPLATFORM_PLUGIN_GREPDIALOG_H
#define KDEVPLATFORM_PLUGIN_GREPDIALOG_H
#include <QDialog>
#include <QUrl>
#include "grepjob.h"
#include "ui_grepwidget.h"
class GrepOutputView;
class GrepViewPlugin;
class GrepDialog : public QDialog, private Ui::GrepWidget
{
Q_OBJECT
public:
/// Search results are displayed in: @p toolView if it is not null,
/// or in a possibly created and raised GrepOutputView in the current area.
explicit GrepDialog(GrepViewPlugin* plugin, GrepOutputView* toolView = nullptr, QWidget* parent = nullptr,
bool show = true);
~GrepDialog() override;
/// Read last used settings from config.
/// @pre @c show == @c false has been passed to the constructor.
void setLastUsedSettings();
void setPattern(const QString& pattern);
///Rerun all grep jobs from a list of settings, called by GrepOutputView
void historySearch(QVector<GrepJobSettings> &settingsHistory);
public Q_SLOTS:
///Start a new search
void startSearch();
///Sets directory(ies)/files to search in. Also it can be semicolon separated list of directories/files or one of special strings: allOpenFilesString, allOpenProjectsString
void setSearchLocations(const QString &dir);
private Q_SLOTS:
void templateTypeComboActivated(int);
void patternComboEditTextChanged( const QString& );
QMenu* createSyncButtonMenu();
void addUrlToMenu(QMenu* ret, const QUrl& url);
void addStringToMenu(QMenu* ret, const QString& string);
void synchronizeDirActionTriggered(bool);
///Check if all projects have been loaded
bool checkProjectsOpened();
///Call the next element in m_jobs_history or close the dialog if all jobs are done
///\param[in] next if false, skip pending jobs
void nextHistory(bool next);
///Opens the dialog to select a directory to search in, and inserts it into Location(s) field.
void selectDirectoryDialog();
protected:
///Prevent showing the dialog if m_show is false
void setVisible(bool visible) override;
void closeEvent(QCloseEvent* closeEvent) override;
private:
///Returns whether the given url is a subfile/subdirectory of one of the chosen directories/files
///
///This is slow, so don't call it too often
bool isPartOfChoice(const QUrl& url) const;
///Checks what a user has entered into the dialog and saves the data in m_settings
void updateSettings();
/// Enables/disables limit-to-project UI depending on current search paths.
void updateLimitToProjectEnabled();
GrepViewPlugin * m_plugin;
GrepOutputView* const m_toolView;
///Allow to show a dialog
const bool m_show;
///Current setting
GrepJobSettings m_settings;
///List of remaining grep job settings to be done
QVector<GrepJobSettings> m_historyJobSettings;
};
#endif
|