// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include #include #include #include #include namespace Ios::Internal { class SimulatorControlPrivate; class SimulatorEntity { public: QString name; QString identifier; bool operator <(const SimulatorEntity &o) const { return name < o.name; } }; class SimulatorInfo : public SimulatorEntity { friend QDebug &operator<<(QDebug &, const SimulatorInfo &info); public: bool isBooted() const { return state == "Booted"; } bool isShuttingDown() const { return state == "Shutting Down"; } bool isShutdown() const { return state == "Shutdown"; } bool operator==(const SimulatorInfo &other) const; bool operator!=(const SimulatorInfo &other) const { return !(*this == other); } bool available; QString state; QString runtimeName; }; class RuntimeInfo : public SimulatorEntity { public: QString version; QString build; }; class DeviceTypeInfo : public SimulatorEntity {}; class SimulatorControl { public: struct ResponseData { ResponseData(const QString & udid): simUdid(udid) { } QString simUdid; bool success = false; qint64 pID = -1; QString commandOutput; }; public: static QList availableDeviceTypes(); static QFuture> updateDeviceTypes(QObject *context); static QList availableRuntimes(); static QFuture> updateRuntimes(QObject *context); static QList availableSimulators(); static QFuture> updateAvailableSimulators(QObject *context); static bool isSimulatorRunning(const QString &simUdid); static QString bundleIdentifier(const Utils::FilePath &bundlePath); static QString bundleExecutable(const Utils::FilePath &bundlePath); public: static QFuture startSimulator(const QString &simUdid); static QFuture installApp(const QString &simUdid, const Utils::FilePath &bundlePath); static QFuture launchApp(const QString &simUdid, const QString &bundleIdentifier, bool waitForDebugger, const QStringList &extraArgs, const QString &stdoutPath = QString(), const QString &stderrPath = QString()); static QFuture deleteSimulator(const QString &simUdid); static QFuture resetSimulator(const QString &simUdid); static QFuture renameSimulator(const QString &simUdid, const QString &newName); static QFuture createSimulator(const QString &name, const DeviceTypeInfo &deviceType, const RuntimeInfo &runtime); static QFuture takeSceenshot(const QString &simUdid, const QString &filePath); }; } // Ios::Internal Q_DECLARE_METATYPE(Ios::Internal::DeviceTypeInfo) Q_DECLARE_METATYPE(Ios::Internal::RuntimeInfo) Q_DECLARE_METATYPE(Ios::Internal::SimulatorInfo)