Skip to content

Commit 7b4d775

Browse files
authored
Merge pull request bitcoin#354 from qtumproject/time/QTUMCORE-98-p1
Qt wallet bugs and changes
2 parents d81ca26 + 616b184 commit 7b4d775

File tree

7 files changed

+158
-76
lines changed

7 files changed

+158
-76
lines changed

src/qt/abiparam.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ ABIParam::ABIParam(int ID, const ParameterABI &param, QWidget *parent) :
1414
mainLayout->setSpacing(10);
1515
mainLayout->setContentsMargins(0,0,0,0);
1616
m_ParamID = ID;
17-
m_paramName->setToolTip(tr("Parameter %1 %2").arg(ID + 1).arg(QString::fromStdString(param.name)));
17+
m_paramName->setToolTip(tr("%1 %2").arg(QString::fromStdString(param.type)).arg(QString::fromStdString(param.name)));
1818
m_paramName->setFixedWidth(160);
19-
m_ParamValue->setFixedWidth(370);
2019

2120
QRegularExpression regEx;
2221
if(ParameterABI::getRegularExpession(param.decodeType(), regEx))
@@ -29,7 +28,7 @@ ABIParam::ABIParam(int ID, const ParameterABI &param, QWidget *parent) :
2928

3029
mainLayout->addWidget(m_paramName);
3130
mainLayout->addWidget(m_ParamValue);
32-
mainLayout->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Fixed));
31+
mainLayout->addSpacerItem(new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed));
3332

3433
QFontMetrics metrix(m_paramName->font());
3534
int width = m_paramName->width() + 10;

src/qt/contractabi.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
#include <QRegularExpression>
77
#include <QStringList>
88

9-
#define paternUint "^[0-9]{1,}$"
10-
#define paternInt "^\\-{0,1}[0-9]{1,}$"
9+
#define paternUint "^[0-9]{1,77}$"
10+
#define paternInt "^\\-{0,1}[0-9]{1,76}$"
1111
#define paternAddress "^[a-fA-F0-9]{40,40}$"
1212
#define paternBool "^true$|^false$"
1313
#define paternHex "^[a-fA-F0-9]{1,}$"

src/qt/contractresult.cpp

Lines changed: 65 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ContractResult::ContractResult(QWidget *parent) :
1414
ui->groupBoxCreateOrSendTo->setStyleSheet(STYLE_GROUPBOX);
1515

1616
ui->scrollAreaParams->setStyleSheet(".QScrollArea { border: none;}");
17+
ui->scrollAreaResult->setStyleSheet(".QScrollArea { border: none;}");
1718
}
1819

1920
ContractResult::~ContractResult()
@@ -46,19 +47,13 @@ void ContractResult::setResultData(QVariant result, FunctionABI function, QStrin
4647

4748
void ContractResult::setParamsData(FunctionABI function, QStringList paramValues)
4849
{
49-
QStringList paramNames;
50-
for(std::vector<ParameterABI>::const_iterator param = function.inputs.begin(); param != function.inputs.end(); ++param)
51-
{
52-
paramNames.append(QString::fromStdString(param->name));
53-
}
54-
5550
// Remove previous widget from scroll area
5651
QWidget *scrollWidget = ui->scrollAreaParams->widget();
57-
if(scrollWidget)
58-
scrollWidget->deleteLater();
52+
if(scrollWidget)
53+
scrollWidget->deleteLater();
5954

6055
// Don't show empty list
61-
if(paramNames.isEmpty())
56+
if(function.inputs.size() == 0)
6257
{
6358
ui->scrollAreaParams->setVisible(false);
6459
return;
@@ -71,25 +66,38 @@ void ContractResult::setParamsData(FunctionABI function, QStringList paramValues
7166
widgetParams->setLayout(vLayout);
7267

7368
// Add rows with params and values sent
74-
for(int i = 0; i < paramNames.count(); i++)
69+
int i = 0;
70+
for(std::vector<ParameterABI>::const_iterator param = function.inputs.begin(); param != function.inputs.end(); ++param)
7571
{
72+
7673
QHBoxLayout *hLayout = new QHBoxLayout();
77-
hLayout->setSpacing(30);
74+
hLayout->setSpacing(10);
7875
hLayout->setContentsMargins(0,0,0,0);
7976

8077
QLabel *paramName = new QLabel(this);
8178
QLineEdit *paramValue = new QLineEdit(this);
8279
paramValue->setReadOnly(true);
83-
paramName->setMinimumWidth(110);
84-
paramName->setText(paramNames[i]);
80+
paramName->setFixedWidth(160);
81+
82+
QFontMetrics metrix(paramName->font());
83+
int width = paramName->width() + 10;
84+
QString text(QString("%2 <b>%1").arg(QString::fromStdString(param->name)).arg(QString::fromStdString(param->type)));
85+
QString clippedText = metrix.elidedText(text, Qt::ElideRight, width);
86+
87+
paramName->setToolTip(QString("%2 %1").arg(QString::fromStdString(param->name)).arg(QString::fromStdString(param->type)));
88+
paramName->setText(clippedText);
8589
paramValue->setText(paramValues[i]);
8690

8791
hLayout->addWidget(paramName);
8892
hLayout->addWidget(paramValue);
8993

9094
vLayout->addLayout(hLayout);
95+
i++;
9196
}
97+
widgetParams->adjustSize();
98+
ui->scrollAreaParams->setMaximumHeight(widgetParams->sizeHint().height() + 2);
9299
ui->scrollAreaParams->setWidget(widgetParams);
100+
ui->scrollAreaParams->setVisible(true);
93101
}
94102

95103
void ContractResult::updateCreateResult(QVariant result)
@@ -133,9 +141,52 @@ void ContractResult::updateCallResult(QVariant result, FunctionABI function, QSt
133141
std::vector<ParameterABI::ErrorType> errors;
134142
if(function.abiOut(rawData, values, errors))
135143
{
144+
// Remove previous widget from scroll area
145+
QWidget *scrollWidget = ui->scrollAreaResult->widget();
146+
if(scrollWidget)
147+
scrollWidget->deleteLater();
148+
136149
if(values.size() > 0)
137150
{
138-
ui->lineEditResult->setText(QString::fromStdString(values[0]));
151+
QWidget *widgetResults = new QWidget(this);
152+
QVBoxLayout *vLayout = new QVBoxLayout(widgetResults);
153+
vLayout->setSpacing(6);
154+
vLayout->setContentsMargins(0,6,0,6);
155+
widgetResults->setLayout(vLayout);
156+
157+
for(size_t i = 0; i < values.size(); i++)
158+
{
159+
QHBoxLayout *hLayout = new QHBoxLayout();
160+
hLayout->setSpacing(10);
161+
hLayout->setContentsMargins(0,0,0,0);
162+
163+
QLabel *resultName = new QLabel(this);
164+
QLineEdit *resultValue = new QLineEdit(this);
165+
resultValue->setReadOnly(true);
166+
resultName->setFixedWidth(160);
167+
168+
QFontMetrics metrix(resultName->font());
169+
int width = resultName->width() + 10;
170+
QString text(QString("%2 <b>%1").arg(QString::fromStdString(function.outputs[i].name)).arg(QString::fromStdString(function.outputs[i].type)));
171+
QString clippedText = metrix.elidedText(text, Qt::ElideRight, width);
172+
173+
resultName->setText(clippedText);
174+
resultName->setToolTip(QString("%2 %1").arg(QString::fromStdString(function.outputs[i].name)).arg(QString::fromStdString(function.outputs[i].type)));
175+
resultValue->setText(QString::fromStdString(values[i]));
176+
177+
hLayout->addWidget(resultName);
178+
hLayout->addWidget(resultValue);
179+
180+
vLayout->addLayout(hLayout);
181+
}
182+
widgetResults->adjustSize();
183+
ui->scrollAreaResult->setMaximumHeight(widgetResults->sizeHint().height() + 2);
184+
ui->scrollAreaResult->setWidget(widgetResults);
185+
ui->groupBoxResult->setVisible(true);
186+
}
187+
else
188+
{
189+
ui->groupBoxResult->setVisible(false);
139190
}
140191
}
141192
else

src/qt/forms/callcontract.ui

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<number>12</number>
6969
</property>
7070
<property name="horizontalSpacing">
71-
<number>6</number>
71+
<number>15</number>
7272
</property>
7373
<property name="verticalSpacing">
7474
<number>12</number>
@@ -138,8 +138,8 @@
138138
<rect>
139139
<x>0</x>
140140
<y>0</y>
141-
<width>640</width>
142-
<height>68</height>
141+
<width>638</width>
142+
<height>73</height>
143143
</rect>
144144
</property>
145145
</widget>

0 commit comments

Comments
 (0)