Browse Source

Fixes and better reactivity for the Account Naming infrastructure.

cl-refactor
Gav Wood 10 years ago
parent
commit
56a7bfa7fe
  1. 12
      alethzero/MainFace.cpp
  2. 17
      alethzero/MainFace.h
  3. 19
      alethzero/MainWin.cpp
  4. 3
      alethzero/MainWin.h
  5. 3
      alethzero/OtherAccounts.cpp
  6. 1
      alethzero/OurAccounts.cpp
  7. 6
      alethzero/Transact.cpp
  8. 2
      libp2p/Capability.cpp

12
alethzero/MainFace.cpp

@ -25,6 +25,18 @@ using namespace std;
using namespace dev;
using namespace az;
void AccountNamer::noteKnownChanged()
{
if (m_main)
m_main->noteKnownAddressesChanged(this);
}
void AccountNamer::noteNamesChanged()
{
if (m_main)
m_main->noteAddressNamesChanged(this);
}
void MainFace::notePlugin(std::function<Plugin*(MainFace*)> const& _new)
{
if (!s_linkedPlugins)

17
alethzero/MainFace.h

@ -47,15 +47,26 @@ namespace az
static bool s_notePlugin = [](){ MainFace::notePlugin([](MainFace* m){ return new ClassName(m); }); return true; }()
class Plugin;
class MainFace;
class Main;
using WatchHandler = std::function<void(dev::eth::LocalisedLogEntries const&)>;
class AccountNamer
{
friend class Main;
public:
virtual std::string toName(Address const&) const { return std::string(); }
virtual Address toAddress(std::string const&) const { return Address(); }
virtual Addresses knownAddresses() const { return Addresses(); }
protected:
void noteKnownChanged();
void noteNamesChanged();
private:
MainFace* m_main = nullptr;
};
class MainFace: public QMainWindow, public Context
@ -86,7 +97,8 @@ public:
// Account naming API
virtual void install(AccountNamer* _adopt) = 0;
virtual void uninstall(AccountNamer* _kill) = 0;
virtual void noteAddressesChanged() = 0;
virtual void noteKnownAddressesChanged(AccountNamer*) = 0;
virtual void noteAddressNamesChanged(AccountNamer*) = 0;
virtual Address toAddress(std::string const&) const = 0;
virtual std::string toName(Address const&) const = 0;
virtual Addresses allKnownAddresses() const = 0;
@ -100,7 +112,8 @@ protected:
static std::vector<std::function<Plugin*(MainFace*)>>* s_linkedPlugins;
signals:
void allKnownAddressesChanged();
void knownAddressesChanged();
void addressNamesChanged();
void keyManagerChanged();
private:

19
alethzero/MainWin.cpp

@ -309,6 +309,7 @@ string Main::fromRaw(h256 const& _n, unsigned* _inc)
void Main::install(AccountNamer* _adopt)
{
m_namers.insert(_adopt);
_adopt->m_main = this;
refreshAll();
}
@ -319,9 +320,15 @@ void Main::uninstall(AccountNamer* _kill)
refreshAll();
}
void Main::noteAddressesChanged()
void Main::noteKnownAddressesChanged(AccountNamer*)
{
emit allKnownAddressesChanged();
emit knownAddressesChanged();
refreshAll();
}
void Main::noteAddressNamesChanged(AccountNamer*)
{
emit addressNamesChanged();
refreshAll();
}
@ -1233,7 +1240,13 @@ void Main::refreshBalances()
for (auto const& address: m_keyManager.accounts())
{
u256 b = ethereum()->balanceAt(address);
QListWidgetItem* li = new QListWidgetItem(QString("<%5> %4 %2: %1 [%3]").arg(formatBalance(b).c_str()).arg(QString::fromStdString(render(address))).arg((unsigned)ethereum()->countAt(address)).arg(QString::fromStdString(m_keyManager.accountName(address))).arg(m_keyManager.haveKey(address) ? "KEY" : "BRAIN"), ui->ourAccounts);
QListWidgetItem* li = new QListWidgetItem(
QString("<%1> %2: %3 [%4]")
.arg(m_keyManager.haveKey(address) ? "KEY" : "BRAIN")
.arg(QString::fromStdString(render(address)))
.arg(formatBalance(b).c_str())
.arg((unsigned)ethereum()->countAt(address))
, ui->ourAccounts);
li->setData(Qt::UserRole, QByteArray((char const*)address.data(), Address::size));
li->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
li->setCheckState(m_beneficiary == address ? Qt::Checked : Qt::Unchecked);

3
alethzero/MainWin.h

@ -109,7 +109,8 @@ public:
// Account naming API.
void install(AccountNamer* _adopt) override;
void uninstall(AccountNamer* _kill) override;
void noteAddressesChanged() override;
void noteKnownAddressesChanged(AccountNamer*) override;
void noteAddressNamesChanged(AccountNamer*) override;
Address toAddress(std::string const&) const override;
std::string toName(Address const&) const override;
Addresses allKnownAddresses() const override;

3
alethzero/OtherAccounts.cpp

@ -54,7 +54,7 @@ void OtherAccounts::import()
m_toAddress[name] = addr;
}
main()->noteSettingsChanged();
main()->noteAddressesChanged();
noteKnownChanged();
}
}
@ -71,6 +71,7 @@ void OtherAccounts::readSettings(QSettings const& _s)
m_toAddress[l[1].toStdString()] = Address(l[0].toStdString());
}
}
noteKnownChanged();
}
void OtherAccounts::writeSettings(QSettings& _s)

1
alethzero/OurAccounts.cpp

@ -63,4 +63,5 @@ void OurAccounts::updateNames()
m_names.clear();
for (Address const& i: main()->keyManager().accounts())
m_names[main()->keyManager().accountName(i)] = i;
noteKnownChanged();
}

6
alethzero/Transact.cpp

@ -139,7 +139,7 @@ void Transact::updateDestination()
for (Address const& a: m_main->allKnownAddresses())
{
cdebug << "Adding" << a << m_main->toName(a) << " -> " << (m_main->toName(a) + " (" + ICAP(a).encoded() + ")");
ui->destination->addItem(QString::fromStdString(m_main->toName(a) + " (" + ICAP(a).encoded() + ")"), QVariant(QByteArray((char const*)a.data(), a.size)));
ui->destination->addItem(QString::fromStdString(m_main->toName(a) + " (" + ICAP(a).encoded() + ")"), QString::fromStdString(a.hex()));
}
}
@ -167,8 +167,8 @@ void Transact::on_destination_currentTextChanged(QString)
if (ui->destination->currentText().size() && ui->destination->currentText() != "(Create Contract)")
{
pair<Address, bytes> p;
if (!ui->destination->currentData().isNull())
p.first = Address(bytesConstRef((uint8_t const*)ui->destination->currentData().toByteArray().data_ptr(), 20));
if (!ui->destination->currentData().isNull() && ui->destination->currentText() == ui->destination->itemText(ui->destination->currentIndex()))
p.first = Address(ui->destination->currentData().toString().toStdString());
else
p = m_main->fromString(ui->destination->currentText().toStdString());

2
libp2p/Capability.cpp

@ -35,7 +35,7 @@ Capability::Capability(std::shared_ptr<Session> _s, HostCapabilityFace* _h, unsi
void Capability::disable(std::string const& _problem)
{
clog(NetNote) << "DISABLE: Disabling capability '" << m_hostCap->name() << "'. Reason:" << _problem;
clog(NetTriviaSummary) << "DISABLE: Disabling capability '" << m_hostCap->name() << "'. Reason:" << _problem;
m_enabled = false;
}

Loading…
Cancel
Save