Sandboxie/SandboxiePlus/SandMan/Engine/WizardObject.h

79 lines
2.3 KiB
C++

#pragma once
#include "BoxEngine.h"
class JWizardObject : public QObject
{
Q_OBJECT
public:
JWizardObject(CWizardEngine* pEngine) : m_pEngine(pEngine) {}
/*Q_INVOKABLE QJSValue showMessageBox(const QString& Type, const QString& Text){
//Type = "info_yes_NO_cancel";
return "cancel";
}*/
Q_INVOKABLE QJSValue showForm(const QJSValue& form, const QString& Text = ""){
QMutexLocker Locker(&m_pEngine->m_Mutex);
if (!m_pEngine->TestRunning()) return QJSValue();
QVariantMap Data;
Data["type"] = "form";
Data["form"] = form.toVariant().toList();
Data["text"] = Text;
m_pEngine->m_Data = Data;
m_pEngine->SetState(CBoxEngine::eQuery);
if (!m_pEngine->WaitLocked()) return QJSValue();
return m_pEngine->m_pEngine->toScriptValue(m_pEngine->m_Data);
}
Q_INVOKABLE void showStatus(const QString& Text, bool bWait = false){
QMutexLocker Locker(&m_pEngine->m_Mutex);
if (!m_pEngine->TestRunning()) return;
m_pEngine->SetState(bWait ? CBoxEngine::eReady : CBoxEngine::eRunningAsync, Text);
if(bWait) m_pEngine->WaitLocked();
}
Q_INVOKABLE void setResult(bool bSuccess, const QString& Text = "") {
QMutexLocker Locker(&m_pEngine->m_Mutex);
if (!m_pEngine->TestRunning()) return;
if(bSuccess) m_pEngine->SetState(CBoxEngine::eSuccess);
else m_pEngine->SetState(CBoxEngine::eFailed, Text);
}
Q_INVOKABLE void reportAdd(const QString& name, const QString& value) {
m_pEngine->m_Report[name] = value;
}
Q_INVOKABLE void openSettings(const QString& page) {
QMutexLocker Locker(&m_pEngine->m_Mutex);
if (!m_pEngine->TestRunning()) return;
QMetaObject::invokeMethod(m_pEngine, "OpenSettings", Qt::QueuedConnection, Q_ARG(QString, page));
m_pEngine->WaitLocked();
}
Q_INVOKABLE void openOptions(const QString& box, const QString& page) {
QMutexLocker Locker(&m_pEngine->m_Mutex);
if (!m_pEngine->TestRunning()) return;
QMetaObject::invokeMethod(m_pEngine, "OpenOptions", Qt::QueuedConnection, Q_ARG(QString, box), Q_ARG(QString, page));
m_pEngine->WaitLocked();
}
protected:
CWizardEngine* m_pEngine;
};