forked from qt-creator/qt-creator
Git: inline gitsubmitpanel.ui
Change-Id: Ib6ba5a6c44d413a13300a28ffb575db5799a9927 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -30,7 +30,6 @@ add_qtc_plugin(Git
|
||||
gitsettings.cpp gitsettings.h
|
||||
gitsubmiteditor.cpp gitsubmiteditor.h
|
||||
gitsubmiteditorwidget.cpp gitsubmiteditorwidget.h
|
||||
gitsubmitpanel.ui
|
||||
gitutils.cpp gitutils.h
|
||||
logchangedialog.cpp logchangedialog.h
|
||||
mergetool.cpp mergetool.h
|
||||
|
@@ -48,7 +48,6 @@ QtcPlugin {
|
||||
"gitsubmiteditor.h",
|
||||
"gitsubmiteditorwidget.cpp",
|
||||
"gitsubmiteditorwidget.h",
|
||||
"gitsubmitpanel.ui",
|
||||
"gitutils.cpp",
|
||||
"gitutils.h",
|
||||
"logchangedialog.cpp",
|
||||
|
@@ -23,8 +23,9 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "commitdata.h"
|
||||
#include "gitsubmiteditorwidget.h"
|
||||
|
||||
#include "commitdata.h"
|
||||
#include "githighlighters.h"
|
||||
#include "logchangedialog.h"
|
||||
|
||||
@@ -32,53 +33,118 @@
|
||||
|
||||
#include <utils/completingtextedit.h>
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/theme/theme.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
#include <QRegularExpressionValidator>
|
||||
#include <QTextEdit>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
#include <QDir>
|
||||
#include <QGroupBox>
|
||||
#include <QVBoxLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QMenu>
|
||||
#include <QRegularExpressionValidator>
|
||||
#include <QTextEdit>
|
||||
#include <QVBoxLayout>>
|
||||
|
||||
using namespace Utils;
|
||||
|
||||
namespace Git {
|
||||
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() :
|
||||
m_gitSubmitPanel(new QWidget)
|
||||
m_gitSubmitPanel(new GitSubmitPanel)
|
||||
{
|
||||
m_gitSubmitPanelUi.setupUi(m_gitSubmitPanel);
|
||||
new GitSubmitHighlighter(descriptionEdit());
|
||||
|
||||
m_emailValidator = new QRegularExpressionValidator(QRegularExpression("[^@ ]+@[^@ ]+\\.[a-zA-Z]+"), this);
|
||||
const QPixmap error = Utils::Icons::CRITICAL.pixmap();
|
||||
m_gitSubmitPanelUi.invalidAuthorLabel->setPixmap(error);
|
||||
m_gitSubmitPanelUi.invalidEmailLabel->setToolTip(tr("Provide a valid email to commit."));
|
||||
m_gitSubmitPanelUi.invalidEmailLabel->setPixmap(error);
|
||||
m_gitSubmitPanel->invalidAuthorLabel->setPixmap(error);
|
||||
m_gitSubmitPanel->invalidEmailLabel->setToolTip(tr("Provide a valid email to commit."));
|
||||
m_gitSubmitPanel->invalidEmailLabel->setPixmap(error);
|
||||
|
||||
connect(m_gitSubmitPanelUi.authorLineEdit, &QLineEdit::textChanged,
|
||||
connect(m_gitSubmitPanel->authorLineEdit, &QLineEdit::textChanged,
|
||||
this, &GitSubmitEditorWidget::authorInformationChanged);
|
||||
connect(m_gitSubmitPanelUi.emailLineEdit, &QLineEdit::textChanged,
|
||||
connect(m_gitSubmitPanel->emailLineEdit, &QLineEdit::textChanged,
|
||||
this, &GitSubmitEditorWidget::authorInformationChanged);
|
||||
connect(m_gitSubmitPanelUi.showHeadLabel, &QLabel::linkActivated,
|
||||
connect(m_gitSubmitPanel->showHeadLabel, &QLabel::linkActivated,
|
||||
this, [this] { emit showRequested("HEAD"); });
|
||||
}
|
||||
|
||||
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)")) {
|
||||
const QString errorColor =
|
||||
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")));
|
||||
} else {
|
||||
m_gitSubmitPanelUi.branchLabel->setText(info.branch);
|
||||
m_gitSubmitPanel->branchLabel->setText(info.branch);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,7 +168,7 @@ void GitSubmitEditorWidget::initialize(CommitType commitType,
|
||||
return;
|
||||
m_isInitialized = true;
|
||||
if (commitType != AmendCommit)
|
||||
m_gitSubmitPanelUi.showHeadLabel->hide();
|
||||
m_gitSubmitPanel->showHeadLabel->hide();
|
||||
if (commitType == FixupCommit) {
|
||||
auto logChangeGroupBox = new QGroupBox(tr("Select Change"));
|
||||
auto logChangeLayout = new QVBoxLayout;
|
||||
@@ -112,7 +178,7 @@ void GitSubmitEditorWidget::initialize(CommitType commitType,
|
||||
connect(m_logChangeWidget, &LogChangeWidget::commitActivated, this, &GitSubmitEditorWidget::showRequested);
|
||||
logChangeLayout->addWidget(m_logChangeWidget);
|
||||
insertLeftWidget(logChangeGroupBox);
|
||||
m_gitSubmitPanelUi.editGroup->hide();
|
||||
m_gitSubmitPanel->editGroup->hide();
|
||||
hideDescription();
|
||||
}
|
||||
insertTopWidget(m_gitSubmitPanel);
|
||||
@@ -140,15 +206,15 @@ void GitSubmitEditorWidget::refreshLog(const FilePath &repository)
|
||||
GitSubmitEditorPanelData GitSubmitEditorWidget::panelData() const
|
||||
{
|
||||
GitSubmitEditorPanelData rc;
|
||||
const QString author = m_gitSubmitPanelUi.authorLineEdit->text();
|
||||
const QString email = m_gitSubmitPanelUi.emailLineEdit->text();
|
||||
const QString author = m_gitSubmitPanel->authorLineEdit->text();
|
||||
const QString email = m_gitSubmitPanel->emailLineEdit->text();
|
||||
if (author != m_originalAuthor || email != m_originalEmail) {
|
||||
rc.author = author;
|
||||
rc.email = email;
|
||||
}
|
||||
rc.bypassHooks = m_gitSubmitPanelUi.bypassHooksCheckBox->isChecked();
|
||||
rc.bypassHooks = m_gitSubmitPanel->bypassHooksCheckBox->isChecked();
|
||||
rc.pushAction = m_pushAction;
|
||||
rc.signOff = m_gitSubmitPanelUi.signOffCheckBox->isChecked();
|
||||
rc.signOff = m_gitSubmitPanel->signOffCheckBox->isChecked();
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -156,21 +222,21 @@ void GitSubmitEditorWidget::setPanelData(const GitSubmitEditorPanelData &data)
|
||||
{
|
||||
m_originalAuthor = data.author;
|
||||
m_originalEmail = data.email;
|
||||
m_gitSubmitPanelUi.authorLineEdit->setText(data.author);
|
||||
m_gitSubmitPanelUi.emailLineEdit->setText(data.email);
|
||||
m_gitSubmitPanelUi.bypassHooksCheckBox->setChecked(data.bypassHooks);
|
||||
m_gitSubmitPanelUi.signOffCheckBox->setChecked(data.signOff);
|
||||
m_gitSubmitPanel->authorLineEdit->setText(data.author);
|
||||
m_gitSubmitPanel->emailLineEdit->setText(data.email);
|
||||
m_gitSubmitPanel->bypassHooksCheckBox->setChecked(data.bypassHooks);
|
||||
m_gitSubmitPanel->signOffCheckBox->setChecked(data.signOff);
|
||||
authorInformationChanged();
|
||||
}
|
||||
|
||||
bool GitSubmitEditorWidget::canSubmit(QString *whyNot) const
|
||||
{
|
||||
if (m_gitSubmitPanelUi.invalidAuthorLabel->isVisible()) {
|
||||
if (m_gitSubmitPanel->invalidAuthorLabel->isVisible()) {
|
||||
if (whyNot)
|
||||
*whyNot = tr("Invalid author");
|
||||
return false;
|
||||
}
|
||||
if (m_gitSubmitPanelUi.invalidEmailLabel->isVisible()) {
|
||||
if (m_gitSubmitPanel->invalidEmailLabel->isVisible()) {
|
||||
if (whyNot)
|
||||
*whyNot = tr("Invalid email");
|
||||
return false;
|
||||
@@ -214,12 +280,12 @@ QString GitSubmitEditorWidget::commitName() const
|
||||
|
||||
void GitSubmitEditorWidget::authorInformationChanged()
|
||||
{
|
||||
bool bothEmpty = m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() &&
|
||||
m_gitSubmitPanelUi.emailLineEdit->text().isEmpty();
|
||||
bool bothEmpty = m_gitSubmitPanel->authorLineEdit->text().isEmpty() &&
|
||||
m_gitSubmitPanel->emailLineEdit->text().isEmpty();
|
||||
|
||||
m_gitSubmitPanelUi.invalidAuthorLabel->
|
||||
setVisible(m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() && !bothEmpty);
|
||||
m_gitSubmitPanelUi.invalidEmailLabel->
|
||||
m_gitSubmitPanel->invalidAuthorLabel->
|
||||
setVisible(m_gitSubmitPanel->authorLineEdit->text().isEmpty() && !bothEmpty);
|
||||
m_gitSubmitPanel->invalidEmailLabel->
|
||||
setVisible(!emailIsValid() && !bothEmpty);
|
||||
|
||||
updateSubmitAction();
|
||||
@@ -245,8 +311,8 @@ void GitSubmitEditorWidget::commitAndPushToGerritSlot()
|
||||
|
||||
bool GitSubmitEditorWidget::emailIsValid() const
|
||||
{
|
||||
int pos = m_gitSubmitPanelUi.emailLineEdit->cursorPosition();
|
||||
QString text = m_gitSubmitPanelUi.emailLineEdit->text();
|
||||
int pos = m_gitSubmitPanel->emailLineEdit->cursorPosition();
|
||||
QString text = m_gitSubmitPanel->emailLineEdit->text();
|
||||
return m_emailValidator->validate(text, pos) == QValidator::Acceptable;
|
||||
}
|
||||
|
||||
|
@@ -25,7 +25,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ui_gitsubmitpanel.h"
|
||||
#include "gitsettings.h"
|
||||
#include "commitdata.h"
|
||||
|
||||
@@ -42,6 +41,7 @@ QT_END_NAMESPACE
|
||||
namespace Git {
|
||||
namespace Internal {
|
||||
|
||||
class GitSubmitPanel;
|
||||
class GitSubmitEditorPanelInfo;
|
||||
class GitSubmitEditorPanelData;
|
||||
class LogChangeWidget;
|
||||
@@ -90,9 +90,8 @@ private:
|
||||
void setPanelInfo(const GitSubmitEditorPanelInfo &info);
|
||||
|
||||
PushAction m_pushAction = NoPush;
|
||||
QWidget *m_gitSubmitPanel;
|
||||
GitSubmitPanel *m_gitSubmitPanel;
|
||||
LogChangeWidget *m_logChangeWidget = nullptr;
|
||||
Ui::GitSubmitPanel m_gitSubmitPanelUi;
|
||||
QValidator *m_emailValidator;
|
||||
QString m_originalAuthor;
|
||||
QString m_originalEmail;
|
||||
|
@@ -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><a href="head">Show HEAD</a></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&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>
|
Reference in New Issue
Block a user