64 lines
2.6 KiB
C++
64 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include "ChainDataModel.hpp"
|
|
|
|
#include <graphene/chain/protocol/transfer.hpp>
|
|
|
|
#include <QObject>
|
|
|
|
class TransferOperation {
|
|
Q_GADGET
|
|
Q_PROPERTY(qint64 fee READ fee)
|
|
Q_PROPERTY(ObjectId feeType READ feeType)
|
|
Q_PROPERTY(ObjectId sender READ sender WRITE setSender)
|
|
Q_PROPERTY(ObjectId receiver READ receiver WRITE setReceiver)
|
|
Q_PROPERTY(qint64 amount READ amount WRITE setAmount)
|
|
Q_PROPERTY(ObjectId amountType READ amountType WRITE setAmountType)
|
|
Q_PROPERTY(QString memo READ memo WRITE setMemo)
|
|
|
|
graphene::chain::transfer_operation m_op;
|
|
QString m_memo;
|
|
|
|
public:
|
|
Q_INVOKABLE qint64 fee() const { return m_op.fee.amount.value; }
|
|
Q_INVOKABLE void setFee(qint64 fee) { m_op.fee.amount = fee; }
|
|
|
|
Q_INVOKABLE ObjectId feeType() const { return m_op.fee.asset_id.instance.value; }
|
|
Q_INVOKABLE void setFeeType(ObjectId feeType) { m_op.fee.asset_id = feeType; }
|
|
|
|
Q_INVOKABLE ObjectId sender() const { return m_op.from.instance.value; }
|
|
Q_INVOKABLE void setSender(ObjectId sender) { m_op.from = sender; }
|
|
|
|
Q_INVOKABLE ObjectId receiver() const { return m_op.to.instance.value; }
|
|
Q_INVOKABLE void setReceiver(ObjectId receiver) { m_op.to = receiver; }
|
|
|
|
Q_INVOKABLE qint64 amount() const { return m_op.amount.amount.value; }
|
|
Q_INVOKABLE void setAmount(qint64 amount) { m_op.amount.amount = amount; }
|
|
|
|
Q_INVOKABLE ObjectId amountType() const { return m_op.amount.asset_id.instance.value; }
|
|
Q_INVOKABLE void setAmountType(ObjectId assetType) { m_op.amount.asset_id = assetType; }
|
|
|
|
/// This does not deal with encrypted memos. The memo stored here is unencrypted, and does not get stored in the
|
|
/// underlying graphene operation. The encryption and storage steps must be handled elsewhere.
|
|
Q_INVOKABLE QString memo() const { return m_memo; }
|
|
/// This does not deal with encrypted memos. The memo stored here is unencrypted, and does not get stored in the
|
|
/// underlying graphene operation. The encryption and storage steps must be handled elsewhere.
|
|
Q_INVOKABLE void setMemo(QString memo) { m_memo = memo; }
|
|
|
|
const graphene::chain::transfer_operation& operation() const { return m_op; }
|
|
graphene::chain::transfer_operation& operation() { return m_op; }
|
|
};
|
|
Q_DECLARE_METATYPE(TransferOperation)
|
|
|
|
class OperationBuilder : public QObject {
|
|
Q_OBJECT
|
|
|
|
ChainDataModel& model;
|
|
|
|
public:
|
|
OperationBuilder(ChainDataModel& model, QObject* parent = nullptr)
|
|
: QObject(parent), model(model){}
|
|
|
|
Q_INVOKABLE TransferOperation transfer(ObjectId sender, ObjectId receiver,
|
|
qint64 amount, ObjectId amountType, QString memo, ObjectId feeType);
|
|
};
|