summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-09-16 16:54:10 +0200
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-09-16 16:54:10 +0200
commit9ca9d252235af5031b3a0721284ae11df29a3f88 (patch)
tree3285000579dea2a52789ad198f5d103b165411c1
parent60f23d29ae417b42f909264079b6007630594395 (diff)
downloadqt-creator-9ca9d252235af5031b3a0721284ae11df29a3f88.tar.gz
Header cleanup: Application launcher.
-rw-r--r--src/plugins/projectexplorer/applicationlauncher.h24
-rw-r--r--src/plugins/projectexplorer/applicationlauncher_win.cpp69
-rw-r--r--src/plugins/projectexplorer/applicationlauncher_x11.cpp104
-rw-r--r--src/plugins/projectexplorer/winguiprocess.h4
4 files changed, 107 insertions, 94 deletions
diff --git a/src/plugins/projectexplorer/applicationlauncher.h b/src/plugins/projectexplorer/applicationlauncher.h
index 63d3eba33c..a35f654eaa 100644
--- a/src/plugins/projectexplorer/applicationlauncher.h
+++ b/src/plugins/projectexplorer/applicationlauncher.h
@@ -35,19 +35,13 @@
#include <QtCore/QObject>
#include <QtCore/QStringList>
#include <QtCore/QProcess>
-#ifndef Q_OS_WIN
-#include <QtCore/QTextCodec>
-#endif
namespace Utils {
class ConsoleProcess;
}
namespace ProjectExplorer {
-
-namespace Internal {
- class WinGuiProcess;
-}
+struct ApplicationLauncherPrivate;
class PROJECTEXPLORER_EXPORT ApplicationLauncher : public QObject
{
@@ -59,7 +53,9 @@ public:
Gui
};
- ApplicationLauncher(QObject *parent = 0);
+ explicit ApplicationLauncher(QObject *parent = 0);
+ ~ApplicationLauncher();
+
void setWorkingDirectory(const QString &dir);
void setEnvironment(const QStringList &env);
@@ -90,17 +86,7 @@ private slots:
void bringToForeground();
private:
- QProcess *m_guiProcess;
- Utils::ConsoleProcess *m_consoleProcess;
- Mode m_currentMode;
-
-#ifdef Q_OS_WIN
- Internal::WinGuiProcess *m_winGuiProcess;
-#else
- QTextCodec *m_outputCodec;
- QTextCodec::ConverterState m_outputCodecState;
- QTextCodec::ConverterState m_errorCodecState;
-#endif
+ QScopedPointer<ApplicationLauncherPrivate> d;
};
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp
index bb35f7c242..eb61352dcc 100644
--- a/src/plugins/projectexplorer/applicationlauncher_win.cpp
+++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp
@@ -31,52 +31,57 @@
#include "consoleprocess.h"
#include "winguiprocess.h"
-#include <QDebug>
+#include <QtCore/QDebug>
-using namespace ProjectExplorer;
-using namespace ProjectExplorer::Internal;
-using namespace Utils;
+namespace ProjectExplorer {
+
+struct ApplicationLauncherPrivate {
+ ApplicationLauncherPrivate() : m_currentMode(ApplicationLauncher::Gui) {}
+
+ Utils::ConsoleProcess m_consoleProcess;
+ ApplicationLauncher::Mode m_currentMode;
+ Internal::WinGuiProcess m_winGuiProcess;
+};
ApplicationLauncher::ApplicationLauncher(QObject *parent)
- : QObject(parent)
+ : QObject(parent), d(new ApplicationLauncherPrivate)
{
- m_currentMode = Gui;
-
- m_consoleProcess = new ConsoleProcess(this);
- connect(m_consoleProcess, SIGNAL(processMessage(const QString&, bool)),
+ connect(&d->m_consoleProcess, SIGNAL(processMessage(QString,bool)),
this, SIGNAL(appendMessage(QString,bool)));
- connect(m_consoleProcess, SIGNAL(processStopped()),
+ connect(&d->m_consoleProcess, SIGNAL(processStopped()),
this, SLOT(processStopped()));
- m_winGuiProcess = new WinGuiProcess(this);
- connect(m_winGuiProcess, SIGNAL(processMessage(const QString &, bool)),
+ connect(&d->m_winGuiProcess, SIGNAL(processMessage(QString, bool)),
this, SIGNAL(appendMessage(QString,bool)));
- connect(m_winGuiProcess, SIGNAL(receivedDebugOutput(const QString&, bool)),
- this, SLOT(readWinDebugOutput(const QString&, bool)));
- connect(m_winGuiProcess, SIGNAL(processFinished(int)),
+ connect(&d->m_winGuiProcess, SIGNAL(receivedDebugOutput(QString, bool)),
+ this, SLOT(readWinDebugOutput(QString, bool)));
+ connect(&d->m_winGuiProcess, SIGNAL(processFinished(int)),
this, SLOT(processFinished(int)));
+}
+ApplicationLauncher::~ApplicationLauncher()
+{
}
void ApplicationLauncher::setWorkingDirectory(const QString &dir)
{
- m_winGuiProcess->setWorkingDirectory(dir);
- m_consoleProcess->setWorkingDirectory(dir);
+ d->m_winGuiProcess.setWorkingDirectory(dir);
+ d->m_consoleProcess.setWorkingDirectory(dir);
}
void ApplicationLauncher::setEnvironment(const QStringList &env)
{
- m_winGuiProcess->setEnvironment(env);
- m_consoleProcess->setEnvironment(env);
+ d->m_winGuiProcess.setEnvironment(env);
+ d->m_consoleProcess.setEnvironment(env);
}
void ApplicationLauncher::start(Mode mode, const QString &program, const QStringList &args)
{
- m_currentMode = mode;
+ d->m_currentMode = mode;
if (mode == Gui) {
- m_winGuiProcess->start(program, args);
+ d->m_winGuiProcess.start(program, args);
} else {
- m_consoleProcess->start(program, args);
+ d->m_consoleProcess.start(program, args);
}
}
@@ -84,20 +89,20 @@ void ApplicationLauncher::stop()
{
if (!isRunning())
return;
- if (m_currentMode == Gui) {
- m_winGuiProcess->stop();
+ if (d->m_currentMode == Gui) {
+ d->m_winGuiProcess.stop();
} else {
- m_consoleProcess->stop();
+ d->m_consoleProcess.stop();
processStopped();
}
}
bool ApplicationLauncher::isRunning() const
{
- if (m_currentMode == Gui)
- return m_winGuiProcess->isRunning();
+ if (d->m_currentMode == Gui)
+ return d->m_winGuiProcess.isRunning();
else
- return m_consoleProcess->isRunning();
+ return d->m_consoleProcess.isRunning();
}
qint64 ApplicationLauncher::applicationPID() const
@@ -106,10 +111,10 @@ qint64 ApplicationLauncher::applicationPID() const
if (!isRunning())
return result;
- if (m_currentMode == Console) {
- result = m_consoleProcess->applicationPID();
+ if (d->m_currentMode == Console) {
+ result = d->m_consoleProcess.applicationPID();
} else {
- result = m_winGuiProcess->applicationPID();
+ result = d->m_winGuiProcess.applicationPID();
}
return result;
}
@@ -133,3 +138,5 @@ void ApplicationLauncher::processFinished(int exitCode)
void ApplicationLauncher::bringToForeground()
{
}
+
+} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/applicationlauncher_x11.cpp b/src/plugins/projectexplorer/applicationlauncher_x11.cpp
index e14dc2b2a9..d058c96f95 100644
--- a/src/plugins/projectexplorer/applicationlauncher_x11.cpp
+++ b/src/plugins/projectexplorer/applicationlauncher_x11.cpp
@@ -33,55 +33,73 @@
#include <coreplugin/icore.h>
#include <QtCore/QTimer>
+#include <QtCore/QTextCodec>
-using namespace ProjectExplorer;
-using namespace Utils;
+namespace ProjectExplorer {
+
+struct ApplicationLauncherPrivate {
+ ApplicationLauncherPrivate();
+
+ QProcess m_guiProcess;
+ Utils::ConsoleProcess m_consoleProcess;
+ ApplicationLauncher::Mode m_currentMode;
+
+ QTextCodec *m_outputCodec;
+ QTextCodec::ConverterState m_outputCodecState;
+ QTextCodec::ConverterState m_errorCodecState;
+};
+
+ApplicationLauncherPrivate::ApplicationLauncherPrivate() :
+ m_currentMode(ApplicationLauncher::Gui),
+ m_outputCodec(QTextCodec::codecForLocale())
+{
+}
ApplicationLauncher::ApplicationLauncher(QObject *parent)
- : QObject(parent)
+ : QObject(parent), d(new ApplicationLauncherPrivate)
{
- m_outputCodec = QTextCodec::codecForLocale();
- m_currentMode = Gui;
- m_guiProcess = new QProcess(this);
- m_guiProcess->setReadChannelMode(QProcess::SeparateChannels);
- connect(m_guiProcess, SIGNAL(error(QProcess::ProcessError)),
+ d->m_guiProcess.setReadChannelMode(QProcess::SeparateChannels);
+ connect(&d->m_guiProcess, SIGNAL(error(QProcess::ProcessError)),
this, SLOT(guiProcessError()));
- connect(m_guiProcess, SIGNAL(readyReadStandardOutput()),
+ connect(&d->m_guiProcess, SIGNAL(readyReadStandardOutput()),
this, SLOT(readStandardOutput()));
- connect(m_guiProcess, SIGNAL(readyReadStandardError()),
+ connect(&d->m_guiProcess, SIGNAL(readyReadStandardError()),
this, SLOT(readStandardError()));
- connect(m_guiProcess, SIGNAL(finished(int, QProcess::ExitStatus)),
+ connect(&d->m_guiProcess, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(processDone(int, QProcess::ExitStatus)));
- connect(m_guiProcess, SIGNAL(started()),
+ connect(&d->m_guiProcess, SIGNAL(started()),
this, SLOT(bringToForeground()));
- m_consoleProcess = new ConsoleProcess(this);
- m_consoleProcess->setSettings(Core::ICore::instance()->settings());
- connect(m_consoleProcess, SIGNAL(processMessage(QString,bool)),
+ d->m_consoleProcess.setSettings(Core::ICore::instance()->settings());
+ connect(&d->m_consoleProcess, SIGNAL(processMessage(QString,bool)),
this, SIGNAL(appendMessage(QString,bool)));
- connect(m_consoleProcess, SIGNAL(processStopped()),
+ connect(&d->m_consoleProcess, SIGNAL(processStopped()),
this, SLOT(processStopped()));
}
+ApplicationLauncher::~ApplicationLauncher()
+{
+}
+
void ApplicationLauncher::setWorkingDirectory(const QString &dir)
{
- m_guiProcess->setWorkingDirectory(dir);
- m_consoleProcess->setWorkingDirectory(dir);
+ d->m_guiProcess.setWorkingDirectory(dir);
+ d->m_consoleProcess.setWorkingDirectory(dir);
}
void ApplicationLauncher::setEnvironment(const QStringList &env)
{
- m_guiProcess->setEnvironment(env);
- m_consoleProcess->setEnvironment(env);
+ d->m_guiProcess.setEnvironment(env);
+ d->m_consoleProcess.setEnvironment(env);
}
void ApplicationLauncher::start(Mode mode, const QString &program, const QStringList &args)
{
- m_currentMode = mode;
+ d->m_currentMode = mode;
if (mode == Gui) {
- m_guiProcess->start(program, args);
+ d->m_guiProcess.start(program, args);
} else {
- m_consoleProcess->start(program, args);
+ d->m_consoleProcess.start(program, args);
}
}
@@ -89,24 +107,24 @@ void ApplicationLauncher::stop()
{
if (!isRunning())
return;
- if (m_currentMode == Gui) {
- m_guiProcess->terminate();
- if (!m_guiProcess->waitForFinished(1000)) { // This is blocking, so be fast.
- m_guiProcess->kill();
- m_guiProcess->waitForFinished();
+ if (d->m_currentMode == Gui) {
+ d->m_guiProcess.terminate();
+ if (!d->m_guiProcess.waitForFinished(1000)) { // This is blocking, so be fast.
+ d->m_guiProcess.kill();
+ d->m_guiProcess.waitForFinished();
}
} else {
- m_consoleProcess->stop();
+ d->m_consoleProcess.stop();
processStopped();
}
}
bool ApplicationLauncher::isRunning() const
{
- if (m_currentMode == Gui)
- return m_guiProcess->state() != QProcess::NotRunning;
+ if (d->m_currentMode == Gui)
+ return d->m_guiProcess.state() != QProcess::NotRunning;
else
- return m_consoleProcess->isRunning();
+ return d->m_consoleProcess.isRunning();
}
qint64 ApplicationLauncher::applicationPID() const
@@ -115,10 +133,10 @@ qint64 ApplicationLauncher::applicationPID() const
if (!isRunning())
return result;
- if (m_currentMode == Console) {
- result = m_consoleProcess->applicationPID();
+ if (d->m_currentMode == Console) {
+ result = d->m_consoleProcess.applicationPID();
} else {
- result = (qint64)m_guiProcess->pid();
+ result = (qint64)d->m_guiProcess.pid();
}
return result;
}
@@ -126,7 +144,7 @@ qint64 ApplicationLauncher::applicationPID() const
void ApplicationLauncher::guiProcessError()
{
QString error;
- switch (m_guiProcess->error()) {
+ switch (d->m_guiProcess.error()) {
case QProcess::FailedToStart:
error = tr("Failed to start program. Path or permissions wrong?");
break;
@@ -141,17 +159,17 @@ void ApplicationLauncher::guiProcessError()
void ApplicationLauncher::readStandardOutput()
{
- QByteArray data = m_guiProcess->readAllStandardOutput();
- emit appendOutput(m_outputCodec->toUnicode(
- data.constData(), data.length(), &m_outputCodecState),
+ QByteArray data = d->m_guiProcess.readAllStandardOutput();
+ emit appendOutput(d->m_outputCodec->toUnicode(
+ data.constData(), data.length(), &d->m_outputCodecState),
false);
}
void ApplicationLauncher::readStandardError()
{
- QByteArray data = m_guiProcess->readAllStandardError();
- emit appendOutput(m_outputCodec->toUnicode(
- data.constData(), data.length(), &m_errorCodecState),
+ QByteArray data = d->m_guiProcess.readAllStandardError();
+ emit appendOutput(d->m_outputCodec->toUnicode(
+ data.constData(), data.length(), &d->m_errorCodecState),
true);
}
@@ -169,3 +187,5 @@ void ApplicationLauncher::bringToForeground()
{
emit bringToForegroundRequested(applicationPID());
}
+
+} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/winguiprocess.h b/src/plugins/projectexplorer/winguiprocess.h
index 1136997df0..e729317dd2 100644
--- a/src/plugins/projectexplorer/winguiprocess.h
+++ b/src/plugins/projectexplorer/winguiprocess.h
@@ -50,8 +50,8 @@ class WinGuiProcess : public QThread, public AbstractProcess
Q_OBJECT
public:
- WinGuiProcess(QObject *parent);
- ~WinGuiProcess();
+ explicit WinGuiProcess(QObject *parent = 0);
+ virtual ~WinGuiProcess();
bool start(const QString &program, const QStringList &args);
void stop();