#pragma once

#include <QList>
#include <QObject>

class AdbUtils final : public QObject {
    Q_OBJECT

public:
    explicit AdbUtils(QObject *parent = nullptr);

    static QList<QPair<QString, QString> > getListDevices();

    static QString tryToGetRunningAppPid(const QString &deviceId, const QString &packageName);

    static bool tryToStartApplication(const QString &deviceId, const QString &packageName);

    static bool tryToKillApplication(const QString &deviceId, const QString &packageName);

    static QString getScreenDumpAsXml(const QString &deviceId, int idx);

    static bool takeScreenshot(const QString &deviceId, const QString &name);

    static bool makeTap(const QString &deviceId, int x, int y);

    static bool enableAdbIMEKeyboard(const QString &deviceId);

    static bool inputAdbIMEText(const QString &deviceId, const QString &text);

    static bool disableAdbIMEKeyboard(const QString &deviceId);

    static bool makeSwipe(const QString &deviceId, int x1, int y1, int x2, int y2);

    static bool inputText(const QString &deviceId, const QString &text);

    static bool goBack(const QString &deviceId);
};
