AusweisApp2/src/cli/UIPlugInCli.h

73 lines
1.6 KiB
C
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* \brief UIPlugIn implementation of CLI.
*
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2015-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#pragma once
#include "context/WorkflowContext.h"
2017-09-15 10:23:30 +02:00
#include "ConsoleReader.h"
2017-07-03 09:30:10 +02:00
#include "view/UIPlugIn.h"
#include <QMap>
#include <QString>
#include <functional>
namespace governikus
{
class UIPlugInCli
: public UIPlugIn
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "governikus.UIPlugIn" FILE "metadata.json")
Q_INTERFACES(governikus::UIPlugIn)
2017-12-20 14:54:05 +01:00
using MemberFunc = void (UIPlugInCli::*)();
2017-07-03 09:30:10 +02:00
private:
2017-07-03 09:33:28 +02:00
QString mOldPin;
QString mNewPin;
2017-07-03 09:30:10 +02:00
ConsoleReader mReader;
QMap<QString, std::function<void()> > mAvailableCommands;
QSharedPointer<WorkflowContext> mContext;
QStringList mCurrentCommandArgs;
void addCommand(const QString& pCmd, MemberFunc pFunc)
{
mAvailableCommands.insert(pCmd, std::bind(pFunc, this));
}
2017-07-03 09:33:28 +02:00
void handleCancelWorkflow();
2017-07-03 09:30:10 +02:00
void handleChangePin();
void handleEnterPin();
void handleHelp();
void handlePing();
void handlePort();
void handleQuit();
public:
UIPlugInCli();
2017-12-20 14:54:05 +01:00
virtual ~UIPlugInCli() override;
2017-07-03 09:30:10 +02:00
public Q_SLOTS:
virtual void onApplicationStarted() override;
virtual void doShutdown() override;
private Q_SLOTS:
void doInput(const QString& pData);
virtual void onWorkflowStarted(QSharedPointer<WorkflowContext> pContext) override;
virtual void onWorkflowFinished(QSharedPointer<WorkflowContext> pContext) override;
2017-12-20 14:54:05 +01:00
void onStateChanged(const QString& pState);
2017-07-03 09:33:28 +02:00
void handleOldPinEntered(const QString& pLine);
void handleNewPinEntered(const QString& pLine);
void handleNewPinEnteredAgain(const QString& pLine);
2017-07-03 09:30:10 +02:00
};
} /* namespace governikus */