AusweisApp2/src/aidl/UIPlugInAidl.h

52 lines
1.1 KiB
C
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* \brief UIPlugIn implementation of the AIDL UI.
*
* \copyright Copyright (c) 2016 Governikus GmbH & Co. KG
*/
#pragma once
#include "UIPlugInJsonApi.h"
#include "view/UIPlugIn.h"
#include <QAtomicPointer>
2017-09-15 10:23:30 +02:00
#include <QMutex>
2017-07-03 09:30:10 +02:00
namespace governikus
{
class UIPlugInAidl
: public UIPlugIn
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "governikus.UIPlugIn" FILE "metadata.json")
Q_INTERFACES(governikus::UIPlugIn)
private:
UIPlugInJsonApi* mJsonApi;
QSharedPointer<WorkflowContext> mContext;
2017-09-15 10:23:30 +02:00
QMutex mWorkflowIsActive;
2017-07-03 09:30:10 +02:00
static QAtomicPointer<UIPlugInAidl> instance;
bool mInitializationSuccessfull;
public:
UIPlugInAidl();
virtual ~UIPlugInAidl();
static UIPlugInAidl* getInstance(bool pBlock = true);
bool isSuccessfullInitialized();
Q_INVOKABLE void onReceived(const QByteArray& pMessage);
2017-09-15 10:23:30 +02:00
bool waitForWorkflowToFinish();
2017-07-03 09:30:10 +02:00
private Q_SLOTS:
2017-07-03 09:33:28 +02:00
void reset();
2017-07-03 09:30:10 +02:00
virtual void doShutdown() override;
virtual void onWorkflowStarted(QSharedPointer<WorkflowContext> pContext) override;
virtual void onWorkflowFinished(QSharedPointer<WorkflowContext> pContext) override;
void onToSend(const QByteArray& pMessage);
};
} /* namespace governikus */