forked from qt-creator/qt-creator
Git: Move filter widget to GitEditor
and make it a QToolBar. Change-Id: I6a16b1a828bfabaace8e14ef39344f7f2bac7e8a Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
committed by
Orgad Shaneh
parent
d21f72d0dd
commit
2110be00ab
@@ -42,17 +42,15 @@
|
|||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/temporaryfile.h>
|
#include <utils/temporaryfile.h>
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QDir>
|
||||||
|
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QMenu>
|
||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
#include <QTextCodec>
|
|
||||||
#include <QDir>
|
|
||||||
|
|
||||||
#include <QTextCursor>
|
|
||||||
#include <QTextBlock>
|
#include <QTextBlock>
|
||||||
#include <QMessageBox>
|
#include <QTextCodec>
|
||||||
|
#include <QTextCursor>
|
||||||
|
|
||||||
#define CHANGE_PATTERN "[a-f0-9]{7,40}"
|
#define CHANGE_PATTERN "[a-f0-9]{7,40}"
|
||||||
|
|
||||||
@@ -61,6 +59,45 @@ using namespace VcsBase;
|
|||||||
namespace Git {
|
namespace Git {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
class GitLogFilterWidget : public QToolBar
|
||||||
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(Git::Internal::GitLogFilterWidget);
|
||||||
|
|
||||||
|
public:
|
||||||
|
GitLogFilterWidget(GitEditorWidget *editor)
|
||||||
|
{
|
||||||
|
auto addLineEdit = [](const QString &placeholder,
|
||||||
|
const QString &tooltip,
|
||||||
|
GitEditorWidget *editor)
|
||||||
|
{
|
||||||
|
auto lineEdit = new Utils::FancyLineEdit;
|
||||||
|
lineEdit->setFiltering(true);
|
||||||
|
lineEdit->setToolTip(tooltip);
|
||||||
|
lineEdit->setPlaceholderText(placeholder);
|
||||||
|
lineEdit->setMaximumWidth(200);
|
||||||
|
connect(lineEdit, &QLineEdit::returnPressed,
|
||||||
|
editor, &GitEditorWidget::refresh);
|
||||||
|
connect(lineEdit, &Utils::FancyLineEdit::rightButtonClicked,
|
||||||
|
editor, &GitEditorWidget::refresh);
|
||||||
|
return lineEdit;
|
||||||
|
};
|
||||||
|
grepLineEdit = addLineEdit(tr("Filter by message"),
|
||||||
|
tr("Filter log entries by text in the commit message."),
|
||||||
|
editor);
|
||||||
|
pickaxeLineEdit = addLineEdit(tr("Filter by content"),
|
||||||
|
tr("Filter log entries by added or removed string."),
|
||||||
|
editor);
|
||||||
|
addWidget(new QLabel(tr("Filter:")));
|
||||||
|
addSeparator();
|
||||||
|
addWidget(grepLineEdit);
|
||||||
|
addSeparator();
|
||||||
|
addWidget(pickaxeLineEdit);
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils::FancyLineEdit *grepLineEdit;
|
||||||
|
Utils::FancyLineEdit *pickaxeLineEdit;
|
||||||
|
};
|
||||||
|
|
||||||
GitEditorWidget::GitEditorWidget() :
|
GitEditorWidget::GitEditorWidget() :
|
||||||
m_changeNumberPattern(CHANGE_PATTERN)
|
m_changeNumberPattern(CHANGE_PATTERN)
|
||||||
{
|
{
|
||||||
@@ -360,44 +397,31 @@ QString GitEditorWidget::sourceWorkingDirectory() const
|
|||||||
return path.toString();
|
return path.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitEditorWidget::lineEditChanged()
|
void GitEditorWidget::refresh()
|
||||||
{
|
{
|
||||||
if (VcsBaseEditorConfig *config = editorConfig())
|
if (VcsBaseEditorConfig *config = editorConfig())
|
||||||
config->handleArgumentsChanged();
|
config->handleArgumentsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitEditorWidget::refreshOnLineEdit(Utils::FancyLineEdit *lineEdit)
|
QWidget *GitEditorWidget::addFilterWidget()
|
||||||
{
|
{
|
||||||
connect(lineEdit, &QLineEdit::returnPressed,
|
if (!m_logFilterWidget)
|
||||||
this, &GitEditorWidget::lineEditChanged);
|
m_logFilterWidget = new GitLogFilterWidget(this);
|
||||||
connect(lineEdit, &Utils::FancyLineEdit::rightButtonClicked,
|
return m_logFilterWidget;
|
||||||
this, &GitEditorWidget::lineEditChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitEditorWidget::setGrepLineEdit(Utils::FancyLineEdit *lineEdit)
|
|
||||||
{
|
|
||||||
m_grepLineEdit = lineEdit;
|
|
||||||
refreshOnLineEdit(lineEdit);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GitEditorWidget::setPickaxeLineEdit(Utils::FancyLineEdit *lineEdit)
|
|
||||||
{
|
|
||||||
m_pickaxeLineEdit = lineEdit;
|
|
||||||
refreshOnLineEdit(lineEdit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GitEditorWidget::grepValue() const
|
QString GitEditorWidget::grepValue() const
|
||||||
{
|
{
|
||||||
if (!m_grepLineEdit)
|
if (!m_logFilterWidget)
|
||||||
return QString();
|
return QString();
|
||||||
return m_grepLineEdit->text();
|
return m_logFilterWidget->grepLineEdit->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GitEditorWidget::pickaxeValue() const
|
QString GitEditorWidget::pickaxeValue() const
|
||||||
{
|
{
|
||||||
if (!m_pickaxeLineEdit)
|
if (!m_logFilterWidget)
|
||||||
return QString();
|
return QString();
|
||||||
return m_pickaxeLineEdit->text();
|
return m_logFilterWidget->pickaxeLineEdit->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -34,6 +34,8 @@ namespace Utils { class FancyLineEdit; }
|
|||||||
namespace Git {
|
namespace Git {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
class GitLogFilterWidget;
|
||||||
|
|
||||||
class GitEditorWidget : public VcsBase::VcsBaseEditorWidget
|
class GitEditorWidget : public VcsBase::VcsBaseEditorWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -42,10 +44,11 @@ public:
|
|||||||
GitEditorWidget();
|
GitEditorWidget();
|
||||||
|
|
||||||
void setPlainText(const QString &text) override;
|
void setPlainText(const QString &text) override;
|
||||||
void setGrepLineEdit(Utils::FancyLineEdit *lineEdit);
|
QWidget *addFilterWidget();
|
||||||
void setPickaxeLineEdit(Utils::FancyLineEdit *lineEdit);
|
void setPickaxeLineEdit(Utils::FancyLineEdit *lineEdit);
|
||||||
QString grepValue() const;
|
QString grepValue() const;
|
||||||
QString pickaxeValue() const;
|
QString pickaxeValue() const;
|
||||||
|
void refresh();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void applyDiffChunk(const VcsBase::DiffChunk& chunk, bool revert);
|
void applyDiffChunk(const VcsBase::DiffChunk& chunk, bool revert);
|
||||||
@@ -64,13 +67,10 @@ private:
|
|||||||
bool supportChangeLinks() const override;
|
bool supportChangeLinks() const override;
|
||||||
QString fileNameForLine(int line) const override;
|
QString fileNameForLine(int line) const override;
|
||||||
QString sourceWorkingDirectory() const;
|
QString sourceWorkingDirectory() const;
|
||||||
void refreshOnLineEdit(Utils::FancyLineEdit *lineEdit);
|
|
||||||
void lineEditChanged();
|
|
||||||
|
|
||||||
mutable QRegExp m_changeNumberPattern;
|
mutable QRegExp m_changeNumberPattern;
|
||||||
QString m_currentChange;
|
QString m_currentChange;
|
||||||
Utils::FancyLineEdit *m_grepLineEdit = nullptr;
|
GitLogFilterWidget *m_logFilterWidget = nullptr;
|
||||||
Utils::FancyLineEdit *m_pickaxeLineEdit = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Git
|
} // namespace Git
|
||||||
|
@@ -60,7 +60,6 @@
|
|||||||
#include <coreplugin/vcsmanager.h>
|
#include <coreplugin/vcsmanager.h>
|
||||||
|
|
||||||
#include <aggregation/aggregate.h>
|
#include <aggregation/aggregate.h>
|
||||||
#include <utils/fancylineedit.h>
|
|
||||||
#include <utils/parameteraction.h>
|
#include <utils/parameteraction.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
@@ -85,7 +84,6 @@
|
|||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
@@ -146,29 +144,15 @@ public:
|
|||||||
|
|
||||||
class GitLogEditorWidget : public QWidget
|
class GitLogEditorWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_DECLARE_TR_FUNCTIONS(Git::Internal::GitLogEditorWidget);
|
|
||||||
public:
|
public:
|
||||||
GitLogEditorWidget(GitEditorWidget *gitEditor)
|
GitLogEditorWidget(GitEditorWidget *gitEditor)
|
||||||
{
|
{
|
||||||
auto vlayout = new QVBoxLayout;
|
auto vlayout = new QVBoxLayout;
|
||||||
auto hlayout = new QHBoxLayout;
|
|
||||||
vlayout->setSpacing(0);
|
vlayout->setSpacing(0);
|
||||||
vlayout->setContentsMargins(0, 0, 0, 0);
|
vlayout->setContentsMargins(0, 0, 0, 0);
|
||||||
auto grepLineEdit = addLineEdit(tr("Filter by message"),
|
vlayout->addWidget(gitEditor->addFilterWidget());
|
||||||
tr("Filter log entries by text in the commit message."));
|
|
||||||
auto pickaxeLineEdit = addLineEdit(tr("Filter by content"),
|
|
||||||
tr("Filter log entries by added or removed string."));
|
|
||||||
hlayout->setSpacing(20);
|
|
||||||
hlayout->setContentsMargins(0, 0, 0, 0);
|
|
||||||
hlayout->addWidget(new QLabel(tr("Filter:")));
|
|
||||||
hlayout->addWidget(grepLineEdit);
|
|
||||||
hlayout->addWidget(pickaxeLineEdit);
|
|
||||||
hlayout->addStretch();
|
|
||||||
vlayout->addLayout(hlayout);
|
|
||||||
vlayout->addWidget(gitEditor);
|
vlayout->addWidget(gitEditor);
|
||||||
setLayout(vlayout);
|
setLayout(vlayout);
|
||||||
gitEditor->setGrepLineEdit(grepLineEdit);
|
|
||||||
gitEditor->setPickaxeLineEdit(pickaxeLineEdit);
|
|
||||||
|
|
||||||
auto textAgg = Aggregation::Aggregate::parentAggregate(gitEditor);
|
auto textAgg = Aggregation::Aggregate::parentAggregate(gitEditor);
|
||||||
auto agg = textAgg ? textAgg : new Aggregation::Aggregate;
|
auto agg = textAgg ? textAgg : new Aggregation::Aggregate;
|
||||||
@@ -176,17 +160,6 @@ public:
|
|||||||
agg->add(gitEditor);
|
agg->add(gitEditor);
|
||||||
setFocusProxy(gitEditor);
|
setFocusProxy(gitEditor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
FancyLineEdit *addLineEdit(const QString &placeholder, const QString &tooltip)
|
|
||||||
{
|
|
||||||
auto lineEdit = new FancyLineEdit;
|
|
||||||
lineEdit->setFiltering(true);
|
|
||||||
lineEdit->setToolTip(tooltip);
|
|
||||||
lineEdit->setPlaceholderText(placeholder);
|
|
||||||
lineEdit->setMaximumWidth(200);
|
|
||||||
return lineEdit;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Editor>
|
template<class Editor>
|
||||||
|
Reference in New Issue
Block a user