diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-09-16 16:54:10 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-09-16 16:54:10 +0200 |
commit | 9ca9d252235af5031b3a0721284ae11df29a3f88 (patch) | |
tree | 3285000579dea2a52789ad198f5d103b165411c1 | |
parent | 60f23d29ae417b42f909264079b6007630594395 (diff) | |
download | qt-creator-9ca9d252235af5031b3a0721284ae11df29a3f88.tar.gz |
Header cleanup: Application launcher.
-rw-r--r-- | src/plugins/projectexplorer/applicationlauncher.h | 24 | ||||
-rw-r--r-- | src/plugins/projectexplorer/applicationlauncher_win.cpp | 69 | ||||
-rw-r--r-- | src/plugins/projectexplorer/applicationlauncher_x11.cpp | 104 | ||||
-rw-r--r-- | src/plugins/projectexplorer/winguiprocess.h | 4 |
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(); |