VCS: Add error message when submit is not possible

Fixes: QTCREATORBUG-30333
Change-Id: Ib25a36a05dee2e1c4c4c1d686616899260f98c38
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Andre Hartmann
2024-09-06 14:50:50 +02:00
committed by André Hartmann
parent 39b826c684
commit 18205d6235

View File

@@ -104,6 +104,7 @@ struct SubmitEditorWidgetPrivate
QCheckBox *checkAllCheckBox; QCheckBox *checkAllCheckBox;
QTreeView *fileView; QTreeView *fileView;
QHBoxLayout *buttonLayout; QHBoxLayout *buttonLayout;
QLabel *error;
QVBoxLayout *vboxLayout; QVBoxLayout *vboxLayout;
QList<AdditionalContextMenuAction> descriptionEditContextMenuActions; QList<AdditionalContextMenuAction> descriptionEditContextMenuActions;
@@ -194,6 +195,9 @@ SubmitEditorWidget::SubmitEditorWidget() :
d->buttonLayout->addWidget(openSettingsButton); d->buttonLayout->addWidget(openSettingsButton);
d->buttonLayout->addItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); d->buttonLayout->addItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
d->error = new QLabel();
d->buttonLayout->addWidget(d->error);
d->vboxLayout = new QVBoxLayout(scrollAreaWidgetContents); d->vboxLayout = new QVBoxLayout(scrollAreaWidgetContents);
d->vboxLayout->setSpacing(6); d->vboxLayout->setSpacing(6);
d->vboxLayout->setContentsMargins(9, 9, 9, 9); d->vboxLayout->setContentsMargins(9, 9, 9, 9);
@@ -251,16 +255,28 @@ void SubmitEditorWidget::registerActions(QAction *editorUndoAction, QAction *edi
} }
if (submitAction) { if (submitAction) {
auto updateSubmitEnabled = [this, submitAction] {
QString errorMessage;
const bool submitEnabled = canSubmit(&errorMessage);
submitAction->setEnabled(submitEnabled);
if (submitEnabled || errorMessage.isEmpty()) {
d->error->clear();
} else {
const QString hint = QString("<font color=\"%1\">")
.arg(Utils::creatorColor(Utils::Theme::TextColorError).name());
d->error->setText(hint + Tr::tr("Cannot commit: %1").arg(errorMessage));
}
};
if (debug) { if (debug) {
const SubmitFileModel *model = fileModel(); const SubmitFileModel *model = fileModel();
int count = model ? model->rowCount() : 0; int count = model ? model->rowCount() : 0;
qDebug() << Q_FUNC_INFO << submitAction << count << "items"; qDebug() << Q_FUNC_INFO << submitAction << count << "items";
} }
d->m_commitEnabled = !canSubmit(); updateSubmitEnabled();
connect(this, &SubmitEditorWidget::submitActionEnabledChanged, connect(this, &SubmitEditorWidget::submitActionEnabledChanged, this, updateSubmitEnabled);
submitAction, &QAction::setEnabled); connect(this, &SubmitEditorWidget::submitActionTextChanged, this, updateSubmitEnabled);
connect(this, &SubmitEditorWidget::submitActionTextChanged,
submitAction, &QAction::setText);
d->m_submitButton = new QActionPushButton(submitAction); d->m_submitButton = new QActionPushButton(submitAction);
d->buttonLayout->addWidget(d->m_submitButton); d->buttonLayout->addWidget(d->m_submitButton);
if (!d->m_submitShortcut) if (!d->m_submitShortcut)