From f59964d19cfa8e3cecd049b765f846160db04542 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <qtc-committer@nokia.com>
Date: Thu, 4 Dec 2008 16:24:15 +0100
Subject: [PATCH] Fixes: Console wizard has finalPage set, wrong options for
 wizard, quieten p4 when quering the project directory

---
 src/plugins/perforce/perforceplugin.cpp       | 84 +++++++++++--------
 src/plugins/perforce/perforceplugin.h         |  8 +-
 .../wizards/consoleappwizarddialog.cpp        |  3 +-
 .../wizards/guiappwizarddialog.cpp            |  1 -
 4 files changed, 55 insertions(+), 41 deletions(-)

diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index 2de31700a86..dc28901b705 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -405,17 +405,17 @@ void PerforcePlugin::extensionsInitialized()
 
 void PerforcePlugin::openCurrentFile()
 {
-    runP4Cmd(QStringList() << QLatin1String("edit") << currentFileName(), QStringList(), true);
+    vcsOpen(currentFileName());
 }
 
 void PerforcePlugin::addCurrentFile()
 {
-    runP4Cmd(QStringList() << QLatin1String("add") << currentFileName(), QStringList(), true);
+    vcsAdd(currentFileName());
 }
 
 void PerforcePlugin::deleteCurrentFile()
 {
-    runP4Cmd(QStringList() << QLatin1String("delete") << currentFileName(), QStringList(), true);
+    vcsDelete(currentFileName());
 }
 
 void PerforcePlugin::revertCurrentFile()
@@ -426,7 +426,7 @@ void PerforcePlugin::revertCurrentFile()
     QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName);
     QStringList args;
     args << QLatin1String("diff") << QLatin1String("-sa");
-    PerforceResponse result = runP4Cmd(args, QStringList(), false, true, codec);
+    PerforceResponse result = runP4Cmd(args, QStringList(), CommandToWindow|StdErrToWindow|ErrorToWindow, codec);
     if (result.error)
         return;
 
@@ -444,7 +444,7 @@ void PerforcePlugin::revertCurrentFile()
     foreach (Core::IFile *file, files) {
         fm->blockFileChange(file);
     }
-    PerforceResponse result2 = runP4Cmd(QStringList() << QLatin1String("revert") << fileName, QStringList(), true);
+    PerforceResponse result2 = runP4Cmd(QStringList() << QLatin1String("revert") << fileName, QStringList(), CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
     Core::IFile::ReloadBehavior tempBehavior =
             Core::IFile::ReloadAll;
     foreach (Core::IFile *file, files) {
@@ -489,7 +489,7 @@ void PerforcePlugin::printOpenedFileList()
     Core::IEditor *e = m_coreInstance->editorManager()->currentEditor();
     if (e)
         e->widget()->setFocus();
-    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("opened"), QStringList(), true);
+    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("opened"), QStringList(), CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
 }
 
 #ifdef USE_P4_API
@@ -522,7 +522,8 @@ void PerforcePlugin::submit()
         return;
     }
 
-    PerforceResponse result = runP4Cmd(QStringList()<< QLatin1String("change") << QLatin1String("-o"), QStringList(), false);
+    PerforceResponse result = runP4Cmd(QStringList()<< QLatin1String("change") << QLatin1String("-o"), QStringList(),
+                                       CommandToWindow|StdErrToWindow|ErrorToWindow);
     if (result.error) {
         delete m_changeTmpFile;
         m_changeTmpFile = 0;
@@ -550,7 +551,8 @@ void PerforcePlugin::submit()
     foreach (const QString &f, files)
         nativeFiles << QDir::toNativeSeparators(f);
 
-    PerforceResponse result2 = runP4Cmd(QStringList(QLatin1String("fstat")), nativeFiles, false);
+    PerforceResponse result2 = runP4Cmd(QStringList(QLatin1String("fstat")), nativeFiles,
+                                        CommandToWindow|StdErrToWindow|ErrorToWindow);
     if (result2.error) {
         delete m_changeTmpFile;
         m_changeTmpFile = 0;
@@ -597,8 +599,10 @@ void PerforcePlugin::printPendingChanges()
     PendingChangesDialog dia(pendingChangesData(), m_coreInstance->mainWindow());
     qApp->restoreOverrideCursor();
     if (dia.exec() == QDialog::Accepted) {
-        int i = dia.changeNumber();
-        PerforceResponse result = runP4Cmd(QStringList()<<"submit"<<"-c"<<QString::number(i), QStringList(), true);
+        const int i = dia.changeNumber();
+        QStringList args(QLatin1String("submit"));
+        args << QLatin1String("-c") << QString::number(i);
+        runP4Cmd(args, QStringList(), CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
     }
 }
 
@@ -628,7 +632,8 @@ void PerforcePlugin::annotate(const QString &fileName)
     QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName);
     QStringList args;
     args << QLatin1String("annotate") << QLatin1String("-cqi") << fileName;
-    const PerforceResponse result = runP4Cmd(args, QStringList(), false, true, codec);
+    const PerforceResponse result = runP4Cmd(args, QStringList(),
+                                             CommandToWindow|StdErrToWindow|ErrorToWindow, codec);
     if (!result.error) {
         const QFileInfo fi(fileName);
         showOutputInEditor(tr("p4 annotate %1").arg(fi.fileName()), result.stdOut, VCSBase::AnnotateOutput, codec);
@@ -654,7 +659,8 @@ void PerforcePlugin::filelog(const QString &fileName)
     QTextCodec *codec = VCSBase::VCSBaseEditor::getCodec(m_coreInstance, fileName);
     QStringList args;
     args << QLatin1String("filelog") << QLatin1String("-li") << fileName;
-    const PerforceResponse result = runP4Cmd(args, QStringList(), false, true, codec);
+    const PerforceResponse result = runP4Cmd(args, QStringList(),
+                                             CommandToWindow|StdErrToWindow|ErrorToWindow, codec);
     if (!result.error) {
         const QFileInfo fi(fileName);
         showOutputInEditor(tr("p4 filelog %1").arg(fi.fileName()), result.stdOut, VCSBase::LogOutput, codec);
@@ -718,18 +724,19 @@ bool PerforcePlugin::managesDirectory(const QString &directory) const
     QStringList args;
     args << QLatin1String("fstat") << QLatin1String("-m1") << p4Path;
 
-    const PerforceResponse result = runP4Cmd(args, QStringList(), false, false);
+    const PerforceResponse result = runP4Cmd(args, QStringList(), 0u);
     return result.stdOut.contains("depotFile") || result.stdErr.contains("... - no such file(s)");
 }
 
 QString PerforcePlugin::findTopLevelForDirectory(const QString & /* dir */) const
 {
     // First check with p4 client -o
-    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("client") << QLatin1String("-o"), QStringList(), false, false);
+    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("client") << QLatin1String("-o"), QStringList(), 0u);
     if (result.error)
         return QString::null;
 
     QRegExp regExp(QLatin1String("(\\n|\\r\\n|\\r)Root:\\s*(.*)(\\n|\\r\\n|\\r)"));
+    Q_ASSERT(regExp.isValid());
     regExp.setMinimal(true);
     if (regExp.indexIn(result.stdOut) != -1) {
         QString file = regExp.cap(2).trimmed();
@@ -741,20 +748,24 @@ QString PerforcePlugin::findTopLevelForDirectory(const QString & /* dir */) cons
 
 bool PerforcePlugin::vcsOpen(const QString &fileName)
 {
-    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("edit") << QDir::toNativeSeparators(fileName), QStringList(), true);
+    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("edit") << QDir::toNativeSeparators(fileName), QStringList(),
+                                       CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
     return !result.error;
 }
 
 bool PerforcePlugin::vcsAdd(const QString &fileName)
 {
-    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("add") << fileName, QStringList(), true);
+    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("add") << fileName, QStringList(),
+                                       CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
     return !result.error;
 }
 
 bool PerforcePlugin::vcsDelete(const QString &fileName)
 {
-    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("revert") << fileName, QStringList(), true);
-    PerforceResponse result2 = runP4Cmd(QStringList() << QLatin1String("delete") << fileName, QStringList(), true);
+    PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("revert") << fileName, QStringList(),
+                                       CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
+    PerforceResponse result2 = runP4Cmd(QStringList() << QLatin1String("delete") << fileName, QStringList(),
+                                        CommandToWindow|StdOutToWindow|StdErrToWindow|ErrorToWindow);
     // TODO need to carefully parse the actual messages from perforce
     // or do a fstat before to decide what to do
 
@@ -767,8 +778,7 @@ bool PerforcePlugin::vcsDelete(const QString &fileName)
 
 PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args,
                                           const QStringList &extraArgs,
-                                          bool showStdOutInOutputWindow,
-                                          bool showStdErrInOutputWindow,
+                                          unsigned logFlags,
                                           QTextCodec *outputCodec) const
 {
     if (Perforce::Constants::debug)
@@ -801,12 +811,14 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args,
     }
     actualArgs << args;
 
-    response.command = m_settings.p4Command;
-    response.command += blank;
-    response.command += actualArgs.join(QString(blank));
-    const QString timeStamp = QTime::currentTime().toString(QLatin1String("HH:mm"));
-    const QString outputText = tr("%1 Executing: %2\n").arg(timeStamp, response.command);
-    showOutput(outputText, false);
+    if (logFlags & CommandToWindow) {
+        QString command = m_settings.p4Command;
+        command += blank;
+        command += actualArgs.join(QString(blank));
+        const QString timeStamp = QTime::currentTime().toString(QLatin1String("HH:mm"));
+        const QString outputText = tr("%1 Executing: %2\n").arg(timeStamp, command);
+        showOutput(outputText, false);
+    }
 
     // Run, connect stderr to the output window
     Core::Utils::SynchronousProcess process;
@@ -815,13 +827,13 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args,
     process.setEnvironment(environment());
 
     // connect stderr to the output window if desired
-    if (showStdErrInOutputWindow) {
+    if (logFlags & StdErrToWindow) {
         process.setStdErrBufferedSignalsEnabled(true);
         connect(&process, SIGNAL(stdErrBuffered(QString,bool)), m_perforceOutputWindow, SLOT(append(QString,bool)));
     }
 
     // connect stdout to the output window if desired
-    if (showStdOutInOutputWindow) {
+    if (logFlags & StdOutToWindow) {
         process.setStdOutBufferedSignalsEnabled(true);
         connect(&process, SIGNAL(stdOutBuffered(QString,bool)), m_perforceOutputWindow, SLOT(append(QString,bool)));
     }
@@ -847,13 +859,15 @@ PerforceResponse PerforcePlugin::runP4Cmd(const QStringList &args,
         response.message = tr("Could not start perforce '%1'. Please check your settings in the preferences.").arg(m_settings.p4Command);
         break;
     case Core::Utils::SynchronousProcessResponse::Hang:
-        response.message = tr("Subversion did not respond within timeout limit (%1 ms).").arg(p4Timeout );
+        response.message = tr("Perforce did not respond within timeout limit (%1 ms).").arg(p4Timeout );
         break;
     }
-    if (response.error)
-        m_perforceOutputWindow->append(response.message, true);
-
-
+    if (response.error) {
+        if (Perforce::Constants::debug)
+            qDebug() << response.message;
+        if (logFlags & ErrorToWindow)
+            m_perforceOutputWindow->append(response.message, true);
+    }
     return response;
 }
 
@@ -923,7 +937,7 @@ void PerforcePlugin::p4Diff(const QStringList &files, QString diffname)
         }
     }
 
-    const PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("diff") << QLatin1String("-du"), files, false, codec);
+    const PerforceResponse result = runP4Cmd(QStringList() << QLatin1String("diff") << QLatin1String("-du"), files, CommandToWindow|StdErrToWindow|ErrorToWindow, codec);
     if (result.error)
         return;
 
@@ -948,7 +962,7 @@ void PerforcePlugin::describe(const QString & source, const QString &n)
     QTextCodec *codec = source.isEmpty() ? static_cast<QTextCodec *>(0) : VCSBase::VCSBaseEditor::getCodec(m_coreInstance, source);
     QStringList args;
     args << QLatin1String("describe") << QLatin1String("-du") << n;
-    const PerforceResponse result = runP4Cmd(args, QStringList(), codec);
+    const PerforceResponse result = runP4Cmd(args, QStringList(), CommandToWindow|StdErrToWindow|ErrorToWindow, codec);
     if (!result.error)
         showOutputInEditor(tr("p4 describe %1").arg(n), result.stdOut, VCSBase::DiffOutput, codec);
 }
diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h
index 4c088563324..7a4e2307779 100644
--- a/src/plugins/perforce/perforceplugin.h
+++ b/src/plugins/perforce/perforceplugin.h
@@ -86,7 +86,6 @@ private:
 struct PerforceResponse
 {
     bool error;
-    QString command;
     QString stdOut;
     QString stdErr;
     QString message;
@@ -161,12 +160,15 @@ private:
     Core::IEditor *showOutputInEditor(const QString& title, const QString output,
                                       int editorType,
                                       QTextCodec *codec = 0);
+
+    // Verbosity flags for runP4Cmd.
+    enum  RunLogFlags { CommandToWindow = 0x1, StdOutToWindow = 0x2, StdErrToWindow = 0x4, ErrorToWindow = 0x8 };
+
     // args are passed as command line arguments
     // extra args via a tempfile and the option -x "temp-filename"
     PerforceResponse runP4Cmd(const QStringList &args,
                               const QStringList &extraArgs = QStringList(),
-                              bool showStdOutInOutputWindow = false,
-                              bool showStdErrInOutputWindow = true,
+                              unsigned logFlags = CommandToWindow|StdErrToWindow|ErrorToWindow,
                               QTextCodec *outputCodec = 0) const;
 
     void openFiles(const QStringList &files);
diff --git a/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
index 14965f50187..1090673284f 100644
--- a/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/consoleappwizarddialog.cpp
@@ -35,6 +35,7 @@
 #include "consoleappwizard.h"
 #include "modulespage.h"
 
+#include <QtCore/QDebug>
 #include <utils/projectintropage.h>
 
 namespace Qt4ProjectManager {
@@ -51,13 +52,11 @@ ConsoleAppWizardDialog::ConsoleAppWizardDialog(const QString &templateName,
     setWindowIcon(icon);
     setWindowTitle(templateName);
     Core::BaseFileWizard::setupWizard(this);
-    setOptions(QWizard::IndependentPages | QWizard::HaveNextButtonOnLastPage);
 
     m_introPage->setDescription(tr("This wizard generates a Qt4 console application "
                           "project. The application derives from QCoreApplication and does not "
                           "present a GUI. You can press 'Finish' at any point in time."));
 
-    m_introPage->setFinalPage(true);
     addPage(m_introPage);
 
     m_modulesPage->setModuleSelected(QLatin1String("core"));
diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
index 7b1ba073d34..621a3b6ba92 100644
--- a/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
+++ b/src/plugins/qt4projectmanager/wizards/guiappwizarddialog.cpp
@@ -63,7 +63,6 @@ GuiAppWizardDialog::GuiAppWizardDialog(const QString &templateName,
     setWindowIcon(icon);
     setWindowTitle(templateName);
     Core::BaseFileWizard::setupWizard(this);
-    setOptions(QWizard::IndependentPages);
 
     m_introPage->setDescription(tr("This wizard generates a Qt4 GUI application "
          "project. The application derives by default from QApplication "
-- 
GitLab