From 6d8efefbe5d3d216fae28f17d5dbd3b5a3758cc6 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 19 Feb 2020 21:22:59 +0200 Subject: [PATCH] Git: Add a toggle button for filter widget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If9680d1fc8a06f57f995a63095ad201fc1f3156b Reviewed-by: André Hartmann --- src/plugins/git/gitclient.cpp | 27 +++++++++++++++++---------- src/plugins/git/giteditor.cpp | 2 ++ src/plugins/git/giteditor.h | 3 +++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 0940b8a38bf..3d651015cf2 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -565,9 +565,10 @@ class BaseGitLogArgumentsWidget : public BaseGitDiffArgumentsWidget Q_OBJECT public: - BaseGitLogArgumentsWidget(VcsBaseClientSettings &settings, QToolBar *toolBar) : - BaseGitDiffArgumentsWidget(settings, toolBar) + BaseGitLogArgumentsWidget(VcsBaseClientSettings &settings, GitEditorWidget *editor) : + BaseGitDiffArgumentsWidget(settings, editor->toolBar()) { + QToolBar *toolBar = editor->toolBar(); QAction *diffButton = addToggleButton("--patch", tr("Diff"), tr("Show difference.")); mapSetting(diffButton, settings.boolPointer(GitSettings::logDiffKey)); @@ -575,6 +576,11 @@ public: connect(diffButton, &QAction::toggled, m_ignoreWSButton, &QAction::setVisible); m_patienceButton->setVisible(diffButton->isChecked()); m_ignoreWSButton->setVisible(diffButton->isChecked()); + auto filterAction = new QAction(tr("Filter"), toolBar); + filterAction->setToolTip(tr("Filter commits by message or content.")); + filterAction->setCheckable(true); + connect(filterAction, &QAction::toggled, editor, &GitEditorWidget::toggleFilters); + toolBar->addAction(filterAction); } }; @@ -583,8 +589,8 @@ class GitLogArgumentsWidget : public BaseGitLogArgumentsWidget Q_OBJECT public: - GitLogArgumentsWidget(VcsBaseClientSettings &settings, bool fileRelated, QToolBar *toolBar) : - BaseGitLogArgumentsWidget(settings, toolBar) + GitLogArgumentsWidget(VcsBaseClientSettings &settings, bool fileRelated, GitEditorWidget *editor) : + BaseGitLogArgumentsWidget(settings, editor) { QAction *firstParentButton = addToggleButton({"-m", "--first-parent"}, @@ -615,8 +621,8 @@ class GitRefLogArgumentsWidget : public BaseGitLogArgumentsWidget Q_OBJECT public: - GitRefLogArgumentsWidget(VcsBaseClientSettings &settings, QToolBar *toolBar) : - BaseGitLogArgumentsWidget(settings, toolBar) + GitRefLogArgumentsWidget(VcsBaseClientSettings &settings, GitEditorWidget *editor) : + BaseGitLogArgumentsWidget(settings, editor) { QAction *showDateButton = addToggleButton("--date=iso", @@ -1033,7 +1039,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName, codecFor(CodecLogOutput), "logTitle", msgArg)); VcsBaseEditorConfig *argWidget = editor->editorConfig(); if (!argWidget) { - argWidget = new GitLogArgumentsWidget(settings(), !fileName.isEmpty(), editor->toolBar()); + argWidget = new GitLogArgumentsWidget(settings(), !fileName.isEmpty(), editor); argWidget->setBaseArguments(args); connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, this, [=]() { this->log(workingDir, fileName, enableAnnotationContextMenu, args); }); @@ -1068,11 +1074,12 @@ void GitClient::reflog(const QString &workingDirectory, const QString &ref) const Id editorId = Git::Constants::GIT_REFLOG_EDITOR_ID; // Creating document might change the referenced workingDirectory. Store a copy and use it. const QString workingDir = workingDirectory; - VcsBaseEditorWidget *editor = createVcsEditor(editorId, title, workingDir, codecFor(CodecLogOutput), - "reflogRepository", workingDir); + GitEditorWidget *editor = static_cast( + createVcsEditor(editorId, title, workingDir, codecFor(CodecLogOutput), + "reflogRepository", workingDir)); VcsBaseEditorConfig *argWidget = editor->editorConfig(); if (!argWidget) { - argWidget = new GitRefLogArgumentsWidget(settings(), editor->toolBar()); + argWidget = new GitRefLogArgumentsWidget(settings(), editor); if (!ref.isEmpty()) argWidget->setBaseArguments({ref}); connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, this, diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index 9f5867bf4a8..471ceefb6e3 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -92,6 +92,8 @@ public: addWidget(grepLineEdit); addSeparator(); addWidget(pickaxeLineEdit); + hide(); + connect(editor, &GitEditorWidget::toggleFilters, this, &QWidget::setVisible); } Utils::FancyLineEdit *grepLineEdit; diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h index 1eceeae1325..d2a7144edbc 100644 --- a/src/plugins/git/giteditor.h +++ b/src/plugins/git/giteditor.h @@ -50,6 +50,9 @@ public: QString pickaxeValue() const; void refresh(); +signals: + void toggleFilters(bool value); + private: void applyDiffChunk(const VcsBase::DiffChunk& chunk, bool revert);