TerminalImpl: Drop ProcessImpl and Terminal mode from c'tor

Change-Id: I0571eabb1a20389055a8e98dd942776b3d054981
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2022-02-21 15:52:03 +01:00
parent 02d9a9b7b7
commit d502f78c4f
3 changed files with 27 additions and 17 deletions

View File

@@ -218,8 +218,7 @@ public:
class TerminalImpl : public ProcessInterface
{
public:
TerminalImpl(ProcessImpl processImpl, TerminalMode terminalMode)
: m_terminal(this, processImpl, terminalMode)
TerminalImpl() : m_terminal(this)
{
connect(&m_terminal, &Internal::TerminalProcess::started,
this, &ProcessInterface::started);
@@ -237,6 +236,8 @@ public:
void start() override
{
m_terminal.setProcessImpl(m_setup.m_processImpl);
m_terminal.setTerminalMode(m_setup.m_terminalMode);
m_terminal.setAbortOnMetaChars(m_setup.m_abortOnMetaChars);
m_terminal.setCommand(m_setup.m_commandLine);
m_terminal.setWorkingDirectory(m_setup.m_workingDirectory);
@@ -451,12 +452,12 @@ public:
ProcessInterface *createProcessInterface()
{
if (m_setup.m_terminalMode != TerminalMode::Off)
return new TerminalImpl();
const ProcessImpl impl = m_setup.m_processImpl == ProcessImpl::Default
? defaultProcessImpl() : m_setup.m_processImpl;
if (m_setup.m_terminalMode != TerminalMode::Off)
return new TerminalImpl(impl, m_setup.m_terminalMode);
else if (impl == ProcessImpl::QProcess)
if (impl == ProcessImpl::QProcess)
return new QProcessImpl();
return new ProcessLauncherImpl();
}

View File

@@ -123,14 +123,10 @@ static QString msgCannotExecute(const QString & p, const QString &why)
class TerminalProcessPrivate
{
public:
TerminalProcessPrivate(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode)
: m_terminalMode(terminalMode)
, m_process(parent)
{
m_process.setProcessImpl(processImpl);
}
TerminalProcessPrivate(QObject *parent)
: m_process(parent) {}
const TerminalMode m_terminalMode;
TerminalMode m_terminalMode = TerminalMode::On;
FilePath m_workingDir;
Environment m_environment;
qint64 m_processId = 0;
@@ -160,9 +156,8 @@ public:
#endif
};
TerminalProcess::TerminalProcess(QObject *parent, ProcessImpl processImpl,
TerminalMode terminalMode)
: QObject(parent), d(new TerminalProcessPrivate(this, processImpl, terminalMode))
TerminalProcess::TerminalProcess(QObject *parent)
: QObject(parent), d(new TerminalProcessPrivate(this))
{
connect(&d->m_stubServer, &QLocalServer::newConnection,
this, &TerminalProcess::stubConnectionAvailable);
@@ -176,6 +171,17 @@ TerminalProcess::~TerminalProcess()
delete d;
}
void TerminalProcess::setProcessImpl(ProcessImpl processImpl)
{
d->m_process.setProcessImpl(processImpl);
}
void TerminalProcess::setTerminalMode(TerminalMode mode)
{
QTC_ASSERT(mode != TerminalMode::Off, return);
d->m_terminalMode = mode;
}
void TerminalProcess::setCommand(const CommandLine &command)
{
d->m_commandLine = command;

View File

@@ -41,9 +41,12 @@ class TerminalProcess : public QObject
{
Q_OBJECT
public:
explicit TerminalProcess(QObject *parent, ProcessImpl processImpl, TerminalMode terminalMode);
explicit TerminalProcess(QObject *parent);
~TerminalProcess() override;
void setProcessImpl(ProcessImpl processImpl);
void setTerminalMode(TerminalMode mode);
void setCommand(const CommandLine &command);
const CommandLine &commandLine() const;