From e8f97fd7515185040e96fe0cf193ddda2d90067c Mon Sep 17 00:00:00 2001 From: clemahieu Date: Sun, 26 Oct 2014 17:03:59 -0500 Subject: [PATCH] Moving layout around. --- rai/qt/qt.cpp | 322 +++++++++++++++++++++++++++----------------------- rai/qt/qt.hpp | 74 +++++++----- 2 files changed, 216 insertions(+), 180 deletions(-) diff --git a/rai/qt/qt.cpp b/rai/qt/qt.cpp index 0b4c5ae1..d3191d7e 100644 --- a/rai/qt/qt.cpp +++ b/rai/qt/qt.cpp @@ -8,6 +8,7 @@ rai_qt::client::client (QApplication & application_a, rai::client & client_a) : client_m (client_a), password_change (*this), enter_password (*this), +advanced (*this), application (application_a), main_stack (new QStackedWidget), settings_window (new QWidget), @@ -26,16 +27,14 @@ balance_label (new QLabel), entry_window (new QWidget), entry_window_layout (new QVBoxLayout), send_blocks (new QPushButton ("Send")), -show_wallet (new QPushButton ("Wallet")), +show_wallet (new QPushButton ("Accounts")), settings (new QPushButton ("Settings")), -show_ledger (new QPushButton ("Ledger")), -show_peers (new QPushButton ("Peers")), -show_log (new QPushButton ("Log")), +show_advanced (new QPushButton ("Advanced")), send_blocks_window (new QWidget), send_blocks_layout (new QVBoxLayout), -send_address_label (new QLabel ("Address:")), +send_address_label (new QLabel ("Destination account:")), send_address (new QLineEdit), -send_count_label (new QLabel ("Coins:")), +send_count_label (new QLabel ("Amount:")), send_count (new QLineEdit), send_blocks_send (new QPushButton ("Send")), send_blocks_back (new QPushButton ("Back")), @@ -44,29 +43,10 @@ wallet_layout (new QVBoxLayout), wallet_model (new QStandardItemModel), wallet_view (new QTableView), wallet_refresh (new QPushButton ("Refresh")), -wallet_add_account (new QPushButton ("Add account")), +wallet_add_account (new QPushButton ("Create account")), wallet_key_line (new QLineEdit), wallet_add_key_button (new QPushButton ("Add key")), -wallet_back (new QPushButton ("Back")), -ledger_window (new QWidget), -ledger_layout (new QVBoxLayout), -ledger_model (new QStandardItemModel), -ledger_view (new QTableView), -ledger_refresh (new QPushButton ("Refresh")), -ledger_back (new QPushButton ("Back")), -log_window (new QWidget), -log_layout (new QVBoxLayout), -log_model (new QStringListModel), -log_view (new QListView), -log_refresh (new QPushButton ("Refresh")), -log_back (new QPushButton ("Back")), -peers_window (new QWidget), -peers_layout (new QVBoxLayout), -peers_model (new QStringListModel), -peers_view (new QListView), -peers_refresh (new QPushButton ("Refresh")), -peers_back (new QPushButton ("Back")), -scale ("100000000000000000000") +wallet_back (new QPushButton ("Back")) { send_blocks_layout->addWidget (send_address_label); send_blocks_layout->addWidget (send_address); @@ -92,41 +72,11 @@ scale ("100000000000000000000") wallet_layout->addWidget (wallet_back); wallet_layout->setContentsMargins (0, 0, 0, 0); wallet_window->setLayout (wallet_layout); - - ledger_model->setHorizontalHeaderItem (0, new QStandardItem ("Account")); - ledger_model->setHorizontalHeaderItem (1, new QStandardItem ("Balance")); - ledger_model->setHorizontalHeaderItem (2, new QStandardItem ("Block")); - ledger_view->setModel (ledger_model); - ledger_view->horizontalHeader ()->setSectionResizeMode (0, QHeaderView::ResizeMode::Stretch); - ledger_view->horizontalHeader ()->setSectionResizeMode (1, QHeaderView::ResizeMode::ResizeToContents); - ledger_view->horizontalHeader ()->setSectionResizeMode (2, QHeaderView::ResizeMode::Stretch); - ledger_view->verticalHeader ()->hide (); - ledger_layout->addWidget (ledger_view); - ledger_layout->addWidget (ledger_refresh); - ledger_layout->addWidget (ledger_back); - ledger_layout->setContentsMargins (0, 0, 0, 0); - ledger_window->setLayout (ledger_layout); - - log_view->setModel (log_model); - log_layout->addWidget (log_view); - log_layout->addWidget (log_refresh); - log_layout->addWidget (log_back); - log_layout->setContentsMargins (0, 0, 0, 0); - log_window->setLayout (log_layout); - - peers_view->setModel (peers_model); - peers_layout->addWidget (peers_view); - peers_layout->addWidget (peers_refresh); - peers_layout->addWidget (peers_back); - peers_layout->setContentsMargins (0, 0, 0, 0); - peers_window->setLayout (peers_layout); entry_window_layout->addWidget (send_blocks); entry_window_layout->addWidget (show_wallet); entry_window_layout->addWidget (settings); - entry_window_layout->addWidget (show_ledger); - entry_window_layout->addWidget (show_peers); - entry_window_layout->addWidget (show_log); + entry_window_layout->addWidget (show_advanced); entry_window_layout->setContentsMargins (0, 0, 0, 0); entry_window_layout->setSpacing (5); entry_window->setLayout (entry_window_layout); @@ -150,30 +100,6 @@ scale ("100000000000000000000") settings_layout->addWidget (settings_back); settings_window->setLayout (settings_layout); - QObject::connect (log_refresh, &QPushButton::released, [this] () - { - refresh_log (); - }); - QObject::connect (log_back, &QPushButton::released, [this] () - { - pop_main_stack (); - }); - QObject::connect (show_log, &QPushButton::released, [this] () - { - push_main_stack (log_window); - }); - QObject::connect (show_peers, &QPushButton::released, [this] () - { - push_main_stack (peers_window); - }); - QObject::connect (peers_back, &QPushButton::released, [this] () - { - pop_main_stack (); - }); - QObject::connect (peers_refresh, &QPushButton::released, [this] () - { - refresh_peers (); - }); QObject::connect (wallet_add_key_button, &QPushButton::released, [this] () { QString key_text_wide (wallet_key_line->text ()); @@ -238,18 +164,6 @@ scale ("100000000000000000000") settings_connect_line->setPalette (palette); } }); - QObject::connect (show_ledger, &QPushButton::released, [this] () - { - push_main_stack (ledger_window); - }); - QObject::connect (ledger_refresh, &QPushButton::released, [this] () - { - refresh_ledger (); - }); - QObject::connect (ledger_back, &QPushButton::released, [this] () - { - pop_main_stack (); - }); QObject::connect (wallet_refresh, &QPushButton::released, [this] () { refresh_wallet (); @@ -262,6 +176,10 @@ scale ("100000000000000000000") { push_main_stack (settings_window); }); + QObject::connect (show_advanced, &QPushButton::released, [this] () + { + push_main_stack (advanced.window); + }); QObject::connect (show_wallet, &QPushButton::released, [this] () { push_main_stack (wallet_window); @@ -277,8 +195,8 @@ scale ("100000000000000000000") try { auto scaled (std::stoull (coins_text_narrow)); - rai::uint128_t coins (scale_up (scaled)); - if (coins / scale == scaled) + rai::uint128_t coins (advanced.scale_up (scaled)); + if (coins / advanced.scale == scaled) { QPalette palette; palette.setColor (QPalette::Text, Qt::black); @@ -350,56 +268,6 @@ scale ("100000000000000000000") refresh_wallet (); }); refresh_wallet (); - refresh_ledger (); -} - -void rai_qt::client::refresh_log () -{ - QStringList log; - for (auto i: client_m.log.items) - { - std::stringstream entry; - entry << i.first << ' ' << i.second << std::endl; - QString qentry (entry.str ().c_str ()); - log << qentry; - } - log_model->setStringList (log); -} - -void rai_qt::client::refresh_peers () -{ - QStringList peers; - for (auto i: client_m.peers.list ()) - { - std::stringstream endpoint; - endpoint << i.endpoint.address ().to_string (); - endpoint << ':'; - endpoint << i.endpoint.port (); - endpoint << ' '; - endpoint << i.last_contact; - endpoint << ' '; - endpoint << i.last_attempt; - QString qendpoint (endpoint.str().c_str ()); - peers << qendpoint; - } - peers_model->setStringList (peers); -} - -void rai_qt::client::refresh_ledger () -{ - ledger_model->removeRows (0, ledger_model->rowCount ()); - for (auto i (client_m.ledger.store.latest_begin()), j (client_m.ledger.store.latest_end ()); i != j; ++i) - { - QList items; - std::string account; - i->first.encode_base58check (account); - items.push_back (new QStandardItem (QString (account.c_str ()))); - items.push_back (new QStandardItem (QString (std::to_string (scale_down (client_m.ledger.balance (i->second.hash))).c_str ()))); - std::string block_hash; - i->second.hash.encode_hex (block_hash); - items.push_back (new QStandardItem (QString (block_hash.c_str ()))); - ledger_model->appendRow (items); - } } void rai_qt::client::refresh_wallet () @@ -415,11 +283,11 @@ void rai_qt::client::refresh_wallet () items.push_back (new QStandardItem (QString (account.c_str ()))); auto account_balance (client_m.ledger.account_balance (key)); balance += account_balance; - auto balance (std::to_string (scale_down (account_balance))); + auto balance (std::to_string (advanced.scale_down (account_balance))); items.push_back (new QStandardItem (balance.c_str ())); wallet_model->appendRow (items); } - balance_label->setText (QString ((std::string ("Balance: ") + std::to_string (scale_down (balance))).c_str ())); + balance_label->setText (QString ((std::string ("Balance: ") + std::to_string (advanced.scale_down (balance))).c_str ())); } rai_qt::client::~client () @@ -546,12 +414,166 @@ void rai_qt::enter_password::update_label () } } -uint64_t rai_qt::client::scale_down (rai::uint128_t const & amount_a) +rai_qt::advanced_actions::advanced_actions (rai_qt::client & client_a) : +window (new QWidget), +layout (new QVBoxLayout), +show_ledger (new QPushButton ("Ledger")), +show_peers (new QPushButton ("Peers")), +show_log (new QPushButton ("Log")), +back (new QPushButton ("Back")), +ledger_window (new QWidget), +ledger_layout (new QVBoxLayout), +ledger_model (new QStandardItemModel), +ledger_view (new QTableView), +ledger_refresh (new QPushButton ("Refresh")), +ledger_back (new QPushButton ("Back")), +log_window (new QWidget), +log_layout (new QVBoxLayout), +log_model (new QStringListModel), +log_view (new QListView), +log_refresh (new QPushButton ("Refresh")), +log_back (new QPushButton ("Back")), +peers_window (new QWidget), +peers_layout (new QVBoxLayout), +peers_model (new QStringListModel), +peers_view (new QListView), +peers_refresh (new QPushButton ("Refresh")), +peers_back (new QPushButton ("Back")), +scale ("100000000000000000000"), +client (client_a) +{ + + ledger_model->setHorizontalHeaderItem (0, new QStandardItem ("Account")); + ledger_model->setHorizontalHeaderItem (1, new QStandardItem ("Balance")); + ledger_model->setHorizontalHeaderItem (2, new QStandardItem ("Block")); + ledger_view->setModel (ledger_model); + ledger_view->horizontalHeader ()->setSectionResizeMode (0, QHeaderView::ResizeMode::Stretch); + ledger_view->horizontalHeader ()->setSectionResizeMode (1, QHeaderView::ResizeMode::ResizeToContents); + ledger_view->horizontalHeader ()->setSectionResizeMode (2, QHeaderView::ResizeMode::Stretch); + ledger_view->verticalHeader ()->hide (); + ledger_layout->addWidget (ledger_view); + ledger_layout->addWidget (ledger_refresh); + ledger_layout->addWidget (ledger_back); + ledger_layout->setContentsMargins (0, 0, 0, 0); + ledger_window->setLayout (ledger_layout); + + log_view->setModel (log_model); + log_layout->addWidget (log_view); + log_layout->addWidget (log_refresh); + log_layout->addWidget (log_back); + log_layout->setContentsMargins (0, 0, 0, 0); + log_window->setLayout (log_layout); + + peers_view->setModel (peers_model); + peers_layout->addWidget (peers_view); + peers_layout->addWidget (peers_refresh); + peers_layout->addWidget (peers_back); + peers_layout->setContentsMargins (0, 0, 0, 0); + peers_window->setLayout (peers_layout); + + layout->addWidget (show_ledger); + layout->addWidget (show_peers); + layout->addWidget (show_log); + layout->addWidget (back); + window->setLayout (layout); + QObject::connect (show_log, &QPushButton::released, [this] () + { + client.push_main_stack (log_window); + }); + QObject::connect (show_peers, &QPushButton::released, [this] () + { + client.push_main_stack (peers_window); + }); + QObject::connect (show_ledger, &QPushButton::released, [this] () + { + client.push_main_stack (ledger_window); + }); + QObject::connect (back, &QPushButton::released, [this] () + { + client.pop_main_stack (); + }); + QObject::connect (log_refresh, &QPushButton::released, [this] () + { + refresh_log (); + }); + QObject::connect (log_back, &QPushButton::released, [this] () + { + client.pop_main_stack (); + }); + QObject::connect (peers_back, &QPushButton::released, [this] () + { + client.pop_main_stack (); + }); + QObject::connect (peers_refresh, &QPushButton::released, [this] () + { + refresh_peers (); + }); + QObject::connect (ledger_refresh, &QPushButton::released, [this] () + { + refresh_ledger (); + }); + QObject::connect (ledger_back, &QPushButton::released, [this] () + { + client.pop_main_stack (); + }); + refresh_ledger (); +} + +void rai_qt::advanced_actions::refresh_log () +{ + QStringList log; + for (auto i: client.client_m.log.items) + { + std::stringstream entry; + entry << i.first << ' ' << i.second << std::endl; + QString qentry (entry.str ().c_str ()); + log << qentry; + } + log_model->setStringList (log); +} + +void rai_qt::advanced_actions::refresh_peers () +{ + QStringList peers; + for (auto i: client.client_m.peers.list ()) + { + std::stringstream endpoint; + endpoint << i.endpoint.address ().to_string (); + endpoint << ':'; + endpoint << i.endpoint.port (); + endpoint << ' '; + endpoint << i.last_contact; + endpoint << ' '; + endpoint << i.last_attempt; + QString qendpoint (endpoint.str().c_str ()); + peers << qendpoint; + } + peers_model->setStringList (peers); +} + +void rai_qt::advanced_actions::refresh_ledger () +{ + ledger_model->removeRows (0, ledger_model->rowCount ()); + for (auto i (client.client_m.ledger.store.latest_begin()), j (client.client_m.ledger.store.latest_end ()); i != j; ++i) + { + QList items; + std::string account; + i->first.encode_base58check (account); + items.push_back (new QStandardItem (QString (account.c_str ()))); + items.push_back (new QStandardItem (QString (std::to_string (scale_down (client.client_m.ledger.balance (i->second.hash))).c_str ()))); + std::string block_hash; + i->second.hash.encode_hex (block_hash); + items.push_back (new QStandardItem (QString (block_hash.c_str ()))); + ledger_model->appendRow (items); + } +} + +uint64_t rai_qt::advanced_actions::scale_down (rai::uint128_t const & amount_a) { return (amount_a / scale).convert_to (); } -rai::uint128_t rai_qt::client::scale_up (uint64_t amount_a) +rai::uint128_t rai_qt::advanced_actions::scale_up (uint64_t amount_a) { return scale * amount_a; } \ No newline at end of file diff --git a/rai/qt/qt.hpp b/rai/qt/qt.hpp index 997ab2f9..7728ea24 100644 --- a/rai/qt/qt.hpp +++ b/rai/qt/qt.hpp @@ -39,6 +39,48 @@ namespace rai_qt { QPushButton * back; rai_qt::client & client; }; + class advanced_actions + { + public: + advanced_actions (rai_qt::client &); + QWidget * window; + QVBoxLayout * layout; + QPushButton * show_ledger; + QPushButton * show_peers; + QPushButton * show_log; + QPushButton * back; + + QWidget * ledger_window; + QVBoxLayout * ledger_layout; + QStandardItemModel * ledger_model; + QTableView * ledger_view; + QPushButton * ledger_refresh; + QPushButton * ledger_back; + + QWidget * log_window; + QVBoxLayout * log_layout; + QStringListModel * log_model; + QListView * log_view; + QPushButton * log_refresh; + QPushButton * log_back; + + QWidget * peers_window; + QVBoxLayout * peers_layout; + QStringListModel * peers_model; + QListView * peers_view; + QPushButton * peers_refresh; + QPushButton * peers_back; + + rai::uint128_t const scale; + uint64_t scale_down (rai::uint128_t const &); + rai::uint128_t scale_up (uint64_t); + + rai_qt::client & client; + private: + void refresh_ledger (); + void refresh_peers (); + void refresh_log (); + }; class client { public: @@ -47,6 +89,7 @@ namespace rai_qt { rai::client & client_m; rai_qt::password_change password_change; rai_qt::enter_password enter_password; + rai_qt::advanced_actions advanced; QApplication & application; QStackedWidget * main_stack; @@ -71,9 +114,7 @@ namespace rai_qt { QPushButton * send_blocks; QPushButton * show_wallet; QPushButton * settings; - QPushButton * show_ledger; - QPushButton * show_peers; - QPushButton * show_log; + QPushButton * show_advanced; QWidget * send_blocks_window; QVBoxLayout * send_blocks_layout; @@ -93,37 +134,10 @@ namespace rai_qt { QLineEdit * wallet_key_line; QPushButton * wallet_add_key_button; QPushButton * wallet_back; - - QWidget * ledger_window; - QVBoxLayout * ledger_layout; - QStandardItemModel * ledger_model; - QTableView * ledger_view; - QPushButton * ledger_refresh; - QPushButton * ledger_back; - - QWidget * log_window; - QVBoxLayout * log_layout; - QStringListModel * log_model; - QListView * log_view; - QPushButton * log_refresh; - QPushButton * log_back; - - QWidget * peers_window; - QVBoxLayout * peers_layout; - QStringListModel * peers_model; - QListView * peers_view; - QPushButton * peers_refresh; - QPushButton * peers_back; void pop_main_stack (); void push_main_stack (QWidget *); - rai::uint128_t const scale; - uint64_t scale_down (rai::uint128_t const &); - rai::uint128_t scale_up (uint64_t); private: void refresh_wallet (); - void refresh_ledger (); - void refresh_peers (); - void refresh_log (); }; } \ No newline at end of file