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 46 47 48 49 50
|
#ifndef DBANDROIDSHELLCONNECTION_H
#define DBANDROIDSHELLCONNECTION_H
#include "dbandroidconnection.h"
#include "csvformat.h"
#include <QMutex>
class DbAndroid;
class AdbManager;
class DbAndroidShellConnection : public DbAndroidConnection
{
Q_OBJECT
public:
DbAndroidShellConnection(DbAndroid* plugin, const QString &deviceName, QObject *parent = 0);
~DbAndroidShellConnection();
bool connectToAndroid(const DbAndroidUrl& url);
void disconnectFromAndroid();
bool isConnected() const;
QString getDbName() const;
QStringList getDbList();
QStringList getAppList();
bool isAppOkay() const;
bool deleteDatabase(const QString& dbName);
ExecutionResult executeQuery(const QString& query);
private:
QStringList findColumns(const QStringList& originalArgs, const QString& query);
QString appendTypeQueryPart(const QString& query, const QStringList& columnNames);
void extractResultData(const QList<QList<QByteArray> >& deserialized, bool firstHalfForTypes, ExecutionResult& results);
QVariant valueFromString(const QByteArray& bytes, const QByteArray& type);
DbAndroid* plugin = nullptr;
AdbManager* adbManager = nullptr;
bool connected = false;
DbAndroidUrl connectionUrl;
bool appOkay = false;
mutable QMutex appOkMutex;
QString creationDeviceName;
static const CsvFormat CSV_FORMAT;
private slots:
void checkForDisconnection(const QStringList& devices);
};
#endif // DBANDROIDSHELLCONNECTION_H
|