Browse Source

Merge branch 'mix' of https://github.com/arkpar/cpp-ethereum into ide_m25

cl-refactor
yann300 10 years ago
parent
commit
3a9183e276
  1. 33
      mix/TransactionListModel.cpp
  2. 4
      mix/TransactionListModel.h

33
mix/TransactionListModel.cpp

@ -24,11 +24,12 @@
#include <QQmlEngine> #include <QQmlEngine>
#include <QTextDocument> #include <QTextDocument>
#include <QAbstractListModel> #include <QAbstractListModel>
#include <libdevcore/CommonJS.h>
#include "TransactionListModel.h" #include "TransactionListModel.h"
#include "QContractDefinition.h" #include "QContractDefinition.h"
#include "QFunctionDefinition.h" #include "QFunctionDefinition.h"
#include "QVariableDeclaration.h" #include "QVariableDeclaration.h"
#include "libdevcore/CommonJS.h"
namespace dev namespace dev
{ {
@ -56,7 +57,9 @@ TransactionListItem::TransactionListItem(int _index, TransactionSettings const&
TransactionListModel::TransactionListModel(QObject* _parent, QTextDocument* _document): TransactionListModel::TransactionListModel(QObject* _parent, QTextDocument* _document):
QAbstractListModel(_parent), m_document(_document) QAbstractListModel(_parent), m_document(_document)
{} {
qRegisterMetaType<TransactionListItem*>("TransactionListItem*");
}
QHash<int, QByteArray> TransactionListModel::roleNames() const QHash<int, QByteArray> TransactionListModel::roleNames() const
{ {
@ -96,25 +99,24 @@ QList<TransactionParameterItem*> buildParameters(QTextDocument* _document, Trans
{ {
std::shared_ptr<QContractDefinition> contract = QContractDefinition::Contract(_document->toPlainText()); std::shared_ptr<QContractDefinition> contract = QContractDefinition::Contract(_document->toPlainText());
auto functions = contract->functions(); auto functions = contract->functions();
for (auto qf : functions) for (auto f : functions)
{ {
QFunctionDefinition const& f = (QFunctionDefinition const&) *qf; if (f->name() != _functionId)
if (f.name() != _functionId)
continue; continue;
auto parameters = f.parameters(); auto parameters = f->parameters();
for (auto qp : parameters) //build a list of parameters for a function. If the function is selected as current, add parameter values as well
for (auto p : parameters)
{ {
QVariableDeclaration const& p = (QVariableDeclaration const&) *qp;
QString paramValue; QString paramValue;
if (f.name() == _transaction.functionId) if (f->name() == _transaction.functionId)
{ {
auto paramValueIter = _transaction.parameterValues.find(p.name()); auto paramValueIter = _transaction.parameterValues.find(p->name());
if (paramValueIter != _transaction.parameterValues.cend()) if (paramValueIter != _transaction.parameterValues.cend())
paramValue = toQString(paramValueIter->second); paramValue = toQString(paramValueIter->second);
} }
TransactionParameterItem* item = new TransactionParameterItem(p.name(), p.type(), paramValue); TransactionParameterItem* item = new TransactionParameterItem(p->name(), p->type(), paramValue);
QQmlEngine::setObjectOwnership(item, QQmlEngine::JavaScriptOwnership); QQmlEngine::setObjectOwnership(item, QQmlEngine::JavaScriptOwnership);
params.append(item); params.append(item);
} }
@ -137,10 +139,9 @@ QList<QString> TransactionListModel::getFunctions()
QString code = m_document->toPlainText(); QString code = m_document->toPlainText();
std::shared_ptr<QContractDefinition> contract(QContractDefinition::Contract(code)); std::shared_ptr<QContractDefinition> contract(QContractDefinition::Contract(code));
auto functions = contract->functions(); auto functions = contract->functions();
for (auto qf : functions) for (auto f : functions)
{ {
QFunctionDefinition const& f = (QFunctionDefinition const&) * qf; functionNames.append(f->name());
functionNames.append(f.name());
} }
} }
catch (boost::exception const&) catch (boost::exception const&)
@ -159,7 +160,7 @@ QVariantList TransactionListModel::getParameters(int _index, QString const& _fun
return vl; return vl;
} }
QObject* TransactionListModel::getItem(int _index) TransactionListItem* TransactionListModel::getItem(int _index)
{ {
TransactionSettings const& transaction = (_index >= 0 && _index < (int)m_transactions.size()) ? m_transactions[_index] : TransactionSettings(); TransactionSettings const& transaction = (_index >= 0 && _index < (int)m_transactions.size()) ? m_transactions[_index] : TransactionSettings();
TransactionListItem* item = new TransactionListItem(_index, transaction, nullptr); TransactionListItem* item = new TransactionListItem(_index, transaction, nullptr);
@ -214,5 +215,7 @@ void TransactionListModel::runTransaction(int _index)
emit transactionStarted(tr); emit transactionStarted(tr);
} }
} }
} }

4
mix/TransactionListModel.h

@ -143,7 +143,7 @@ public:
/// @todo Change that to transaction item /// @todo Change that to transaction item
Q_INVOKABLE void edit(QObject* _data); Q_INVOKABLE void edit(QObject* _data);
/// @returns transaction item for a give index /// @returns transaction item for a give index
Q_INVOKABLE QObject* getItem(int _index); Q_INVOKABLE TransactionListItem* getItem(int _index);
/// @returns a list of functions for current contract /// @returns a list of functions for current contract
Q_INVOKABLE QList<QString> getFunctions(); Q_INVOKABLE QList<QString> getFunctions();
/// @returns function parameters along with parameter values if set. @see TransactionParameterItem /// @returns function parameters along with parameter values if set. @see TransactionParameterItem
@ -154,7 +154,7 @@ public:
signals: signals:
/// Transaction count has changed /// Transaction count has changed
void countChanged(); void countChanged();
/// Transaction has be launched /// Transaction has been launched
void transactionStarted(dev::mix::TransactionSettings); void transactionStarted(dev::mix::TransactionSettings);
private: private:

Loading…
Cancel
Save