diff --git a/alethzero/Main.ui b/alethzero/Main.ui index d2589f815..3a49fa839 100644 --- a/alethzero/Main.ui +++ b/alethzero/Main.ui @@ -6,8 +6,8 @@ 0 0 - 1112 - 766 + 1504 + 798 @@ -26,15 +26,33 @@ + + + 0 + 0 + + - Qt::Vertical + Qt::Horizontal + + + 0 + 0 + + QFrame::NoFrame + + + 2 + 0 + + QFrame::NoFrame @@ -73,7 +91,7 @@ 0 0 - 1112 + 1504 28 diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 5fe09d5e6..fe62f1f98 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -33,7 +33,7 @@ Main::Main(QWidget *parent) : m_refresh = new QTimer(this); connect(m_refresh, SIGNAL(timeout()), SLOT(refresh())); - m_refresh->start(1000); + m_refresh->start(100); #if ETH_DEBUG m_servers.append("192.168.0.10:30301"); @@ -126,7 +126,8 @@ void Main::readSettings() void Main::refresh() { m_client->lock(); - if (m_client->changed()) + bool c = m_client->changed(); + if (c) { ui->peerCount->setText(QString::fromStdString(toString(m_client->peerCount())) + " peer(s)"); ui->peers->clear(); @@ -140,7 +141,10 @@ void Main::refresh() auto acs = m_client->state().addresses(); ui->accounts->clear(); for (auto i: acs) - ui->accounts->addItem(QString("%1 @ %2").arg(formatBalance(i.second).c_str()).arg(i.first.abridged().c_str())); + { + (new QListWidgetItem(QString("%1 @ %2").arg(formatBalance(i.second).c_str()).arg(i.first.abridged().c_str()), ui->accounts)) + ->setData(Qt::UserRole, QByteArray((char const*)i.first.data(), Address::size)); + } ui->transactionQueue->clear(); for (pair const& i: m_client->pending()) @@ -175,15 +179,20 @@ void Main::refresh() } } - ui->ourAccounts->clear(); - u256 totalBalance = 0; - for (auto i: m_myKeys) + if (c || m_keysChanged) { - u256 b = m_client->state().balance(i.address()); - ui->ourAccounts->addItem(QString("%1 @ %2").arg(formatBalance(b).c_str()).arg(i.address().abridged().c_str())); - totalBalance += b; + m_keysChanged = false; + ui->ourAccounts->clear(); + u256 totalBalance = 0; + for (auto i: m_myKeys) + { + u256 b = m_client->state().balance(i.address()); + (new QListWidgetItem(QString("%1 @ %2").arg(formatBalance(b).c_str()).arg(i.address().abridged().c_str()), ui->ourAccounts)) + ->setData(Qt::UserRole, QByteArray((char const*)i.address().data(), Address::size)); + totalBalance += b; + } + ui->balance->setText(QString::fromStdString(formatBalance(totalBalance))); } - ui->balance->setText(QString::fromStdString(formatBalance(totalBalance))); m_client->unlock(); } @@ -208,14 +217,14 @@ void Main::on_blocks_currentItemChanged() char timestamp[64]; time_t rawTime = (time_t)(uint64_t)info.timestamp; strftime(timestamp, 64, "%c", localtime(&rawTime)); - s << "" << timestamp << ": " << h; - s << "   #" << details.number << ""; - s << "   D/TD: 2^" << log2((double)info.difficulty) << "/2^" << log2((double)details.totalDifficulty) << "
"; + s << "

" << h << "

"; + s << "

#" << details.number; + s << "   " << timestamp << "

"; + s << "
D/TD: 2^" << log2((double)info.difficulty) << "/2^" << log2((double)details.totalDifficulty) << ""; + s << "   Children: " << details.children.size() << ""; s << "
Coinbase: " << info.coinbaseAddress << ""; - s << "   TXs: " << block[1].itemCount() << ""; - s << "   Children: " << details.children.size() << ""; s << "
State: " << info.stateRoot << ""; - s << "
nonce: " << info.nonce << ""; + s << "
Nonce: " << info.nonce << ""; s << "
Transactions: " << block[1].itemCount() << " @" << info.sha3Transactions << ""; s << "
Uncles: " << block[2].itemCount() << " @" << info.sha3Uncles << ""; } @@ -224,13 +233,13 @@ void Main::on_blocks_currentItemChanged() unsigned txi = item->data(Qt::UserRole + 1).toInt(); Transaction tx(block[1][txi].data()); h256 th = tx.sha3(); - s << "" << th << "
"; - s << h << "[" << txi << "]"; + s << "

" << th << "

"; + s << "

" << h << "[" << txi << "]

"; s << "
From: " << tx.safeSender() << ""; if (tx.receiveAddress) - s << "   To: " << tx.receiveAddress << ""; + s << "
To: " << tx.receiveAddress << ""; else - s << "   Creates: " << right160(th) << ""; + s << "
Creates: " << right160(th) << ""; s << "
Value: " << formatBalance(tx.value) << ""; s << "   #" << tx.nonce << ""; if (tx.data.size()) @@ -256,7 +265,9 @@ void Main::on_idealPeers_valueChanged() void Main::on_ourAccounts_doubleClicked() { - qApp->clipboard()->setText(ui->ourAccounts->currentItem()->text().section(" @ ", 1)); + auto hba = ui->ourAccounts->currentItem()->data(Qt::UserRole).toByteArray(); + auto h = Address((byte const*)hba.data(), Address::ConstructFromPointer); + qApp->clipboard()->setText(QString::fromStdString(asHex(h.asArray()))); } void Main::on_log_doubleClicked() @@ -266,7 +277,9 @@ void Main::on_log_doubleClicked() void Main::on_accounts_doubleClicked() { - qApp->clipboard()->setText(ui->accounts->currentItem()->text().section(" @ ", 1)); + auto hba = ui->accounts->currentItem()->data(Qt::UserRole).toByteArray(); + auto h = Address((byte const*)hba.data(), Address::ConstructFromPointer); + qApp->clipboard()->setText(QString::fromStdString(asHex(h.asArray()))); } void Main::on_destination_textChanged() @@ -387,4 +400,5 @@ void Main::on_send_clicked() void Main::on_create_triggered() { m_myKeys.append(KeyPair::create()); + m_keysChanged = true; } diff --git a/alethzero/MainWin.h b/alethzero/MainWin.h index 2fec721c8..60e685ea3 100644 --- a/alethzero/MainWin.h +++ b/alethzero/MainWin.h @@ -62,6 +62,7 @@ private: QTimer* m_refresh; QStringList m_servers; QVector m_myKeys; + bool m_keysChanged = false; QStringList m_data; QNetworkAccessManager m_webCtrl;