aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/squish/squishprocessbase.h
blob: d8af2e9d4f2452a1b82a628ea7ffdd02ad0b8402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#pragma once

#include "squishconstants.h"

#include <utils/qtcprocess.h>

#include <QObject>

namespace Squish::Internal {

class SquishProcessBase : public QObject
{
    Q_OBJECT
public:
    explicit SquishProcessBase(QObject *parent = nullptr);
    ~SquishProcessBase() = default;
    SquishProcessState processState() const { return m_state; }

    bool isRunning() const { return m_process.isRunning(); }
    Utils::ProcessResult result() const { return m_process.result(); }
    QProcess::ProcessError error() const { return m_process.error(); }
    QProcess::ProcessState state() const { return m_process.state(); }

    void closeProcess() { m_process.close(); }

signals:
    void logOutputReceived(const QString &output);
    void stateChanged(SquishProcessState state);

protected:
    void setState(SquishProcessState state);
    virtual void start(const Utils::CommandLine &cmdline, const Utils::Environment &env);
    virtual void onDone() {}
    virtual void onErrorOutput() {}

    Utils::Process m_process;

private:
    SquishProcessState m_state = Idle;
};

} // namespace Squish::Internal