Fixes: Polish submit message checking.

Details: Use a global model for nicknames that is shared by all dialogs to solve the updating  problems. Make p4 plugin submit work again. Force a submit prompt in case of shutdown or editor close (as opposed to user clickling on "Submit").
This commit is contained in:
Friedemann Kleint
2009-03-20 10:16:18 +01:00
parent 79d6c96d4e
commit 927578ed55
12 changed files with 160 additions and 82 deletions

View File

@@ -115,7 +115,7 @@ VCSBaseSubmitEditor::VCSBaseSubmitEditor(const VCSBaseSubmitEditorParameters *pa
const Internal::VCSBaseSettings settings = Internal::VCSBasePlugin::instance()->settings();
// Add additional context menu settings
if (!settings.submitMessageCheckScript.isEmpty() || !settings.nickNameFieldListFile.isEmpty()) {
if (!settings.submitMessageCheckScript.isEmpty() || !settings.nickNameMailMap.isEmpty()) {
QAction *sep = new QAction(this);
sep->setSeparator(true);
m_d->m_widget->addDescriptionEditContextMenuAction(sep);
@@ -126,7 +126,7 @@ VCSBaseSubmitEditor::VCSBaseSubmitEditor(const VCSBaseSubmitEditorParameters *pa
m_d->m_widget->addDescriptionEditContextMenuAction(checkAction);
}
// Insert nick
if (!settings.nickNameFieldListFile.isEmpty()) {
if (!settings.nickNameMailMap.isEmpty()) {
QAction *insertAction = new QAction(tr("Insert name..."), this);
connect(insertAction, SIGNAL(triggered()), this, SLOT(slotInsertNickName()));
m_d->m_widget->addDescriptionEditContextMenuAction(insertAction);
@@ -369,17 +369,22 @@ bool VCSBaseSubmitEditor::setFileContents(const QString &contents)
enum { checkDialogMinimumWidth = 500 };
VCSBaseSubmitEditor::PromptSubmitResult
VCSBaseSubmitEditor::promptSubmit(const QString &title, const QString &question, const QString &checkFailureQuestion) const
VCSBaseSubmitEditor::promptSubmit(const QString &title,
const QString &question,
const QString &checkFailureQuestion,
bool forcePrompt) const
{
QString errorMessage;
QMessageBox::StandardButton answer = QMessageBox::Yes;
const bool prompt = forcePrompt || Internal::VCSBasePlugin::instance()->settings().promptForSubmit;
QWidget *parent = Core::ICore::instance()->mainWindow();
// Pop up a message depending on whether the check succeeded and the
// user wants to be prompted
if (checkSubmitMessage(&errorMessage)) {
// Check ok, do prompt?
if (Internal::VCSBasePlugin::instance()->settings().promptForSubmit) {
if (prompt) {
answer = QMessageBox::question(parent, title, question,
QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,
QMessageBox::Yes);
@@ -443,6 +448,14 @@ bool VCSBaseSubmitEditor::checkSubmitMessage(QString *errorMessage) const
const QString checkScript = submitMessageCheckScript();
if (checkScript.isEmpty())
return true;
QApplication::setOverrideCursor(Qt::WaitCursor);
const bool rc = runSubmitMessageCheckScript(checkScript, errorMessage);
QApplication::restoreOverrideCursor();
return rc;
}
bool VCSBaseSubmitEditor::runSubmitMessageCheckScript(const QString &checkScript, QString *errorMessage) const
{
// Write out message
QString tempFilePattern = QDir::tempPath();
if (!tempFilePattern.endsWith(QDir::separator()))