Git: inline gitsubmitpanel.ui

Change-Id: Ib6ba5a6c44d413a13300a28ffb575db5799a9927
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2022-08-05 12:48:25 +02:00
parent 332f35d864
commit 9ad5c4254d
5 changed files with 103 additions and 224 deletions

View File

@@ -30,7 +30,6 @@ add_qtc_plugin(Git
gitsettings.cpp gitsettings.h gitsettings.cpp gitsettings.h
gitsubmiteditor.cpp gitsubmiteditor.h gitsubmiteditor.cpp gitsubmiteditor.h
gitsubmiteditorwidget.cpp gitsubmiteditorwidget.h gitsubmiteditorwidget.cpp gitsubmiteditorwidget.h
gitsubmitpanel.ui
gitutils.cpp gitutils.h gitutils.cpp gitutils.h
logchangedialog.cpp logchangedialog.h logchangedialog.cpp logchangedialog.h
mergetool.cpp mergetool.h mergetool.cpp mergetool.h

View File

@@ -48,7 +48,6 @@ QtcPlugin {
"gitsubmiteditor.h", "gitsubmiteditor.h",
"gitsubmiteditorwidget.cpp", "gitsubmiteditorwidget.cpp",
"gitsubmiteditorwidget.h", "gitsubmiteditorwidget.h",
"gitsubmitpanel.ui",
"gitutils.cpp", "gitutils.cpp",
"gitutils.h", "gitutils.h",
"logchangedialog.cpp", "logchangedialog.cpp",

View File

@@ -23,8 +23,9 @@
** **
****************************************************************************/ ****************************************************************************/
#include "commitdata.h"
#include "gitsubmiteditorwidget.h" #include "gitsubmiteditorwidget.h"
#include "commitdata.h"
#include "githighlighters.h" #include "githighlighters.h"
#include "logchangedialog.h" #include "logchangedialog.h"
@@ -32,53 +33,118 @@
#include <utils/completingtextedit.h> #include <utils/completingtextedit.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/layoutbuilder.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <QRegularExpressionValidator> #include <QApplication>
#include <QTextEdit> #include <QCheckBox>
#include <QDir> #include <QDir>
#include <QGroupBox> #include <QGroupBox>
#include <QVBoxLayout> #include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QMenu> #include <QMenu>
#include <QRegularExpressionValidator>
#include <QTextEdit>
#include <QVBoxLayout>>
using namespace Utils; using namespace Utils;
namespace Git { namespace Git {
namespace Internal { namespace Internal {
class GitSubmitPanel : public QWidget
{
public:
GitSubmitPanel()
{
resize(364, 269);
repositoryLabel = new QLabel(tr("repository"));
branchLabel = new QLabel(tr("branch")); // FIXME: Isn't this overwritten soon?
showHeadLabel = new QLabel(tr("<a href=\"head\">Show HEAD</a>")); // FIXME: Simplify string in tr()
authorLineEdit = new QLineEdit;
authorLineEdit->setMinimumSize(QSize(200, 0));
invalidAuthorLabel = new QLabel;
invalidAuthorLabel->setMinimumSize(QSize(20, 20));
emailLineEdit = new QLineEdit;
emailLineEdit->setMinimumSize(QSize(200, 0));
invalidEmailLabel = new QLabel;
invalidEmailLabel->setMinimumSize(QSize(20, 20));
bypassHooksCheckBox = new QCheckBox(tr("By&pass hooks"));
signOffCheckBox = new QCheckBox(tr("Sign off"));
using namespace Layouting;
editGroup = new QGroupBox(tr("Commit Information"));
Grid {
tr("Author:"), authorLineEdit, invalidAuthorLabel, st, br,
tr("Email:"), emailLineEdit, invalidEmailLabel, br,
empty, Row { bypassHooksCheckBox, signOffCheckBox, st }
}.attachTo(editGroup);
Column {
Group {
title(tr("General Information")),
Form {
tr("Repository:"), repositoryLabel, br,
tr("Branch:"), branchLabel, br,
Span(2, showHeadLabel)
}
},
editGroup,
}.attachTo(this, WithoutMargins);
}
QLabel *repositoryLabel;
QLabel *branchLabel;
QLabel *showHeadLabel;
QGroupBox *editGroup;
QLineEdit *authorLineEdit;
QLabel *invalidAuthorLabel;
QLineEdit *emailLineEdit;
QLabel *invalidEmailLabel;
QCheckBox *bypassHooksCheckBox;
QCheckBox *signOffCheckBox;
};
// ------------------ // ------------------
GitSubmitEditorWidget::GitSubmitEditorWidget() : GitSubmitEditorWidget::GitSubmitEditorWidget() :
m_gitSubmitPanel(new QWidget) m_gitSubmitPanel(new GitSubmitPanel)
{ {
m_gitSubmitPanelUi.setupUi(m_gitSubmitPanel);
new GitSubmitHighlighter(descriptionEdit()); new GitSubmitHighlighter(descriptionEdit());
m_emailValidator = new QRegularExpressionValidator(QRegularExpression("[^@ ]+@[^@ ]+\\.[a-zA-Z]+"), this); m_emailValidator = new QRegularExpressionValidator(QRegularExpression("[^@ ]+@[^@ ]+\\.[a-zA-Z]+"), this);
const QPixmap error = Utils::Icons::CRITICAL.pixmap(); const QPixmap error = Utils::Icons::CRITICAL.pixmap();
m_gitSubmitPanelUi.invalidAuthorLabel->setPixmap(error); m_gitSubmitPanel->invalidAuthorLabel->setPixmap(error);
m_gitSubmitPanelUi.invalidEmailLabel->setToolTip(tr("Provide a valid email to commit.")); m_gitSubmitPanel->invalidEmailLabel->setToolTip(tr("Provide a valid email to commit."));
m_gitSubmitPanelUi.invalidEmailLabel->setPixmap(error); m_gitSubmitPanel->invalidEmailLabel->setPixmap(error);
connect(m_gitSubmitPanelUi.authorLineEdit, &QLineEdit::textChanged, connect(m_gitSubmitPanel->authorLineEdit, &QLineEdit::textChanged,
this, &GitSubmitEditorWidget::authorInformationChanged); this, &GitSubmitEditorWidget::authorInformationChanged);
connect(m_gitSubmitPanelUi.emailLineEdit, &QLineEdit::textChanged, connect(m_gitSubmitPanel->emailLineEdit, &QLineEdit::textChanged,
this, &GitSubmitEditorWidget::authorInformationChanged); this, &GitSubmitEditorWidget::authorInformationChanged);
connect(m_gitSubmitPanelUi.showHeadLabel, &QLabel::linkActivated, connect(m_gitSubmitPanel->showHeadLabel, &QLabel::linkActivated,
this, [this] { emit showRequested("HEAD"); }); this, [this] { emit showRequested("HEAD"); });
} }
void GitSubmitEditorWidget::setPanelInfo(const GitSubmitEditorPanelInfo &info) void GitSubmitEditorWidget::setPanelInfo(const GitSubmitEditorPanelInfo &info)
{ {
m_gitSubmitPanelUi.repositoryLabel->setText(info.repository.toUserOutput()); m_gitSubmitPanel->repositoryLabel->setText(info.repository.toUserOutput());
if (info.branch.contains("(no branch)")) { if (info.branch.contains("(no branch)")) {
const QString errorColor = const QString errorColor =
Utils::creatorTheme()->color(Utils::Theme::TextColorError).name(); Utils::creatorTheme()->color(Utils::Theme::TextColorError).name();
m_gitSubmitPanelUi.branchLabel->setText(QString::fromLatin1("<span style=\"color:%1\">%2</span>") m_gitSubmitPanel->branchLabel->setText(QString::fromLatin1("<span style=\"color:%1\">%2</span>")
.arg(errorColor, tr("Detached HEAD"))); .arg(errorColor, tr("Detached HEAD")));
} else { } else {
m_gitSubmitPanelUi.branchLabel->setText(info.branch); m_gitSubmitPanel->branchLabel->setText(info.branch);
} }
} }
@@ -102,7 +168,7 @@ void GitSubmitEditorWidget::initialize(CommitType commitType,
return; return;
m_isInitialized = true; m_isInitialized = true;
if (commitType != AmendCommit) if (commitType != AmendCommit)
m_gitSubmitPanelUi.showHeadLabel->hide(); m_gitSubmitPanel->showHeadLabel->hide();
if (commitType == FixupCommit) { if (commitType == FixupCommit) {
auto logChangeGroupBox = new QGroupBox(tr("Select Change")); auto logChangeGroupBox = new QGroupBox(tr("Select Change"));
auto logChangeLayout = new QVBoxLayout; auto logChangeLayout = new QVBoxLayout;
@@ -112,7 +178,7 @@ void GitSubmitEditorWidget::initialize(CommitType commitType,
connect(m_logChangeWidget, &LogChangeWidget::commitActivated, this, &GitSubmitEditorWidget::showRequested); connect(m_logChangeWidget, &LogChangeWidget::commitActivated, this, &GitSubmitEditorWidget::showRequested);
logChangeLayout->addWidget(m_logChangeWidget); logChangeLayout->addWidget(m_logChangeWidget);
insertLeftWidget(logChangeGroupBox); insertLeftWidget(logChangeGroupBox);
m_gitSubmitPanelUi.editGroup->hide(); m_gitSubmitPanel->editGroup->hide();
hideDescription(); hideDescription();
} }
insertTopWidget(m_gitSubmitPanel); insertTopWidget(m_gitSubmitPanel);
@@ -140,15 +206,15 @@ void GitSubmitEditorWidget::refreshLog(const FilePath &repository)
GitSubmitEditorPanelData GitSubmitEditorWidget::panelData() const GitSubmitEditorPanelData GitSubmitEditorWidget::panelData() const
{ {
GitSubmitEditorPanelData rc; GitSubmitEditorPanelData rc;
const QString author = m_gitSubmitPanelUi.authorLineEdit->text(); const QString author = m_gitSubmitPanel->authorLineEdit->text();
const QString email = m_gitSubmitPanelUi.emailLineEdit->text(); const QString email = m_gitSubmitPanel->emailLineEdit->text();
if (author != m_originalAuthor || email != m_originalEmail) { if (author != m_originalAuthor || email != m_originalEmail) {
rc.author = author; rc.author = author;
rc.email = email; rc.email = email;
} }
rc.bypassHooks = m_gitSubmitPanelUi.bypassHooksCheckBox->isChecked(); rc.bypassHooks = m_gitSubmitPanel->bypassHooksCheckBox->isChecked();
rc.pushAction = m_pushAction; rc.pushAction = m_pushAction;
rc.signOff = m_gitSubmitPanelUi.signOffCheckBox->isChecked(); rc.signOff = m_gitSubmitPanel->signOffCheckBox->isChecked();
return rc; return rc;
} }
@@ -156,21 +222,21 @@ void GitSubmitEditorWidget::setPanelData(const GitSubmitEditorPanelData &data)
{ {
m_originalAuthor = data.author; m_originalAuthor = data.author;
m_originalEmail = data.email; m_originalEmail = data.email;
m_gitSubmitPanelUi.authorLineEdit->setText(data.author); m_gitSubmitPanel->authorLineEdit->setText(data.author);
m_gitSubmitPanelUi.emailLineEdit->setText(data.email); m_gitSubmitPanel->emailLineEdit->setText(data.email);
m_gitSubmitPanelUi.bypassHooksCheckBox->setChecked(data.bypassHooks); m_gitSubmitPanel->bypassHooksCheckBox->setChecked(data.bypassHooks);
m_gitSubmitPanelUi.signOffCheckBox->setChecked(data.signOff); m_gitSubmitPanel->signOffCheckBox->setChecked(data.signOff);
authorInformationChanged(); authorInformationChanged();
} }
bool GitSubmitEditorWidget::canSubmit(QString *whyNot) const bool GitSubmitEditorWidget::canSubmit(QString *whyNot) const
{ {
if (m_gitSubmitPanelUi.invalidAuthorLabel->isVisible()) { if (m_gitSubmitPanel->invalidAuthorLabel->isVisible()) {
if (whyNot) if (whyNot)
*whyNot = tr("Invalid author"); *whyNot = tr("Invalid author");
return false; return false;
} }
if (m_gitSubmitPanelUi.invalidEmailLabel->isVisible()) { if (m_gitSubmitPanel->invalidEmailLabel->isVisible()) {
if (whyNot) if (whyNot)
*whyNot = tr("Invalid email"); *whyNot = tr("Invalid email");
return false; return false;
@@ -214,12 +280,12 @@ QString GitSubmitEditorWidget::commitName() const
void GitSubmitEditorWidget::authorInformationChanged() void GitSubmitEditorWidget::authorInformationChanged()
{ {
bool bothEmpty = m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() && bool bothEmpty = m_gitSubmitPanel->authorLineEdit->text().isEmpty() &&
m_gitSubmitPanelUi.emailLineEdit->text().isEmpty(); m_gitSubmitPanel->emailLineEdit->text().isEmpty();
m_gitSubmitPanelUi.invalidAuthorLabel-> m_gitSubmitPanel->invalidAuthorLabel->
setVisible(m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() && !bothEmpty); setVisible(m_gitSubmitPanel->authorLineEdit->text().isEmpty() && !bothEmpty);
m_gitSubmitPanelUi.invalidEmailLabel-> m_gitSubmitPanel->invalidEmailLabel->
setVisible(!emailIsValid() && !bothEmpty); setVisible(!emailIsValid() && !bothEmpty);
updateSubmitAction(); updateSubmitAction();
@@ -245,8 +311,8 @@ void GitSubmitEditorWidget::commitAndPushToGerritSlot()
bool GitSubmitEditorWidget::emailIsValid() const bool GitSubmitEditorWidget::emailIsValid() const
{ {
int pos = m_gitSubmitPanelUi.emailLineEdit->cursorPosition(); int pos = m_gitSubmitPanel->emailLineEdit->cursorPosition();
QString text = m_gitSubmitPanelUi.emailLineEdit->text(); QString text = m_gitSubmitPanel->emailLineEdit->text();
return m_emailValidator->validate(text, pos) == QValidator::Acceptable; return m_emailValidator->validate(text, pos) == QValidator::Acceptable;
} }

View File

@@ -25,7 +25,6 @@
#pragma once #pragma once
#include "ui_gitsubmitpanel.h"
#include "gitsettings.h" #include "gitsettings.h"
#include "commitdata.h" #include "commitdata.h"
@@ -42,6 +41,7 @@ QT_END_NAMESPACE
namespace Git { namespace Git {
namespace Internal { namespace Internal {
class GitSubmitPanel;
class GitSubmitEditorPanelInfo; class GitSubmitEditorPanelInfo;
class GitSubmitEditorPanelData; class GitSubmitEditorPanelData;
class LogChangeWidget; class LogChangeWidget;
@@ -90,9 +90,8 @@ private:
void setPanelInfo(const GitSubmitEditorPanelInfo &info); void setPanelInfo(const GitSubmitEditorPanelInfo &info);
PushAction m_pushAction = NoPush; PushAction m_pushAction = NoPush;
QWidget *m_gitSubmitPanel; GitSubmitPanel *m_gitSubmitPanel;
LogChangeWidget *m_logChangeWidget = nullptr; LogChangeWidget *m_logChangeWidget = nullptr;
Ui::GitSubmitPanel m_gitSubmitPanelUi;
QValidator *m_emailValidator; QValidator *m_emailValidator;
QString m_originalAuthor; QString m_originalAuthor;
QString m_originalEmail; QString m_originalEmail;

View File

@@ -1,184 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Git::Internal::GitSubmitPanel</class>
<widget class="QWidget" name="Git::Internal::GitSubmitPanel">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>364</width>
<height>269</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="infoGroup">
<property name="title">
<string>General Information</string>
</property>
<layout class="QFormLayout" name="infoFormLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="repositoryLabelLabel">
<property name="text">
<string>Repository:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="repositoryLabel">
<property name="text">
<string>repository</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="branchLabelLabel">
<property name="text">
<string>Branch:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="branchLabel">
<property name="text">
<string>branch</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="showHeadLabel">
<property name="text">
<string>&lt;a href=&quot;head&quot;&gt;Show HEAD&lt;/a&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="editGroup">
<property name="title">
<string>Commit Information</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="authorLabel">
<property name="text">
<string>Author:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="authorLineEdit">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="invalidAuthorLabel">
<property name="minimumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="emailLabel">
<property name="text">
<string>Email:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="emailLineEdit">
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QLabel" name="invalidEmailLabel">
<property name="minimumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QCheckBox" name="bypassHooksCheckBox">
<property name="text">
<string>By&amp;pass hooks</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="signOffCheckBox">
<property name="text">
<string>Sign off</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>