diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index b2c0b9e8f..6460d0bff 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -397,14 +397,15 @@ void TableViewLastColumnResizingFixer::connectViewHeadersSignals() connect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); } -//we need to disconnect these while handling the resize events, otherwise we can enter infinite loops +// We need to disconnect these while handling the resize events, otherwise we can enter infinite loops. void TableViewLastColumnResizingFixer::disconnectViewHeadersSignals() { disconnect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); disconnect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); } -//setup the resize mode, handles compatibility for QT5 and below as the method signatures changed. (refactored here for readability) +// Setup the resize mode, handles compatibility for Qt5 and below as the method signatures changed. +// Refactored here for readability. void TableViewLastColumnResizingFixer::setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode) { #if QT_VERSION < 0x050000 @@ -414,7 +415,8 @@ void TableViewLastColumnResizingFixer::setViewHeaderResizeMode(int logicalIndex, #endif } -void TableViewLastColumnResizingFixer::resizeColumn(int nColumnIndex, int width) { +void TableViewLastColumnResizingFixer::resizeColumn(int nColumnIndex, int width) +{ tableView->setColumnWidth(nColumnIndex, width); tableView->horizontalHeader()->resizeSection(nColumnIndex, width); } @@ -443,7 +445,7 @@ int TableViewLastColumnResizingFixer::getAvailableWidthForColumn(int column) return nResult; } -//make sure we don't make the columns wider than the table's viewport's width. +// Make sure we don't make the columns wider than the tables viewport width. void TableViewLastColumnResizingFixer::adjustTableColumnsWidth() { disconnectViewHeadersSignals(); @@ -458,14 +460,15 @@ void TableViewLastColumnResizingFixer::adjustTableColumnsWidth() } } -//make column use all the space available, useful during window resizing. -void TableViewLastColumnResizingFixer::stretchColumnWidth(int column) { +// Make column use all the space available, useful during window resizing. +void TableViewLastColumnResizingFixer::stretchColumnWidth(int column) +{ disconnectViewHeadersSignals(); resizeColumn(column, getAvailableWidthForColumn(column)); connectViewHeadersSignals(); } -//when a section is resized this is a slot-proxy for ajustAmountColumnWidth() +// When a section is resized this is a slot-proxy for ajustAmountColumnWidth(). void TableViewLastColumnResizingFixer::on_sectionResized(int logicalIndex, int oldSize, int newSize) { adjustTableColumnsWidth(); @@ -476,8 +479,8 @@ void TableViewLastColumnResizingFixer::on_sectionResized(int logicalIndex, int o } } -//when the table's geometry is ready, we manually perform the Stretch of the "Message" column -//as the "Stretch" resize mode does not allow for interactive resizing. +// When the tabless geometry is ready, we manually perform the stretch of the "Message" column, +// as the "Stretch" resize mode does not allow for interactive resizing. void TableViewLastColumnResizingFixer::on_geometriesChanged() { if ((getColumnsWidth() - this->tableView->horizontalHeader()->width()) != 0) @@ -493,9 +496,9 @@ void TableViewLastColumnResizingFixer::on_geometriesChanged() * the resize modes of the last 2 columns of the table and */ TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth) : - tableView(table), - lastColumnMinimumWidth(lastColMinimumWidth), - allColumnsMinimumWidth(allColsMinimumWidth) + tableView(table), + lastColumnMinimumWidth(lastColMinimumWidth), + allColumnsMinimumWidth(allColsMinimumWidth) { columnCount = tableView->horizontalHeader()->count(); lastColumnIndex = columnCount - 1; @@ -505,7 +508,6 @@ TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* t setViewHeaderResizeMode(lastColumnIndex, QHeaderView::Interactive); } - #ifdef WIN32 boost::filesystem::path static StartupShortcutPath() { diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index d7de4c606..23da39fc6 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -5,11 +5,11 @@ #ifndef GUIUTIL_H #define GUIUTIL_H +#include #include #include #include #include -#include #include @@ -132,30 +132,31 @@ namespace GUIUtil */ class TableViewLastColumnResizingFixer: public QObject { - Q_OBJECT - public: - TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth); - void stretchColumnWidth(int column); + Q_OBJECT - private: - QTableView* tableView; - int lastColumnMinimumWidth; - int allColumnsMinimumWidth; - int lastColumnIndex; - int columnCount; - int secondToLastColumnIndex; + public: + TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth); + void stretchColumnWidth(int column); - void adjustTableColumnsWidth(); - int getAvailableWidthForColumn(int column); - int getColumnsWidth(); - void connectViewHeadersSignals(); - void disconnectViewHeadersSignals(); - void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode); - void resizeColumn(int nColumnIndex, int width); + private: + QTableView* tableView; + int lastColumnMinimumWidth; + int allColumnsMinimumWidth; + int lastColumnIndex; + int columnCount; + int secondToLastColumnIndex; - private slots: - void on_sectionResized(int logicalIndex, int oldSize, int newSize); - void on_geometriesChanged(); + void adjustTableColumnsWidth(); + int getAvailableWidthForColumn(int column); + int getColumnsWidth(); + void connectViewHeadersSignals(); + void disconnectViewHeadersSignals(); + void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode); + void resizeColumn(int nColumnIndex, int width); + + private slots: + void on_sectionResized(int logicalIndex, int oldSize, int newSize); + void on_geometriesChanged(); }; bool GetStartOnSystemStartup(); diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp index f63032494..3ccfb429a 100644 --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -55,8 +55,6 @@ ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) : connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); } - - void ReceiveCoinsDialog::setModel(WalletModel *model) { this->model = model; @@ -65,10 +63,6 @@ void ReceiveCoinsDialog::setModel(WalletModel *model) { model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - connect(ui->recentRequestsView->selectionModel(), - SIGNAL(selectionChanged(QItemSelection, QItemSelection)), - this, - SLOT(on_recentRequestsView_selectionChanged(QItemSelection, QItemSelection))); updateDisplayUnit(); QTableView* tableView = ui->recentRequestsView; @@ -82,7 +76,10 @@ void ReceiveCoinsDialog::setModel(WalletModel *model) tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH); tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH); - //(last 2 columns are set when the table geometry is ready) by the columnResizingFixer. + connect(tableView->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, + SLOT(on_recentRequestsView_selectionChanged(QItemSelection, QItemSelection))); + // Last 2 columns are set by the columnResizingFixer, when the table geometry is ready. columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(tableView, AMOUNT_MINIMUM_COLUMN_WIDTH, DATE_COLUMN_WIDTH); } } @@ -201,10 +198,12 @@ void ReceiveCoinsDialog::on_removeRequestButton_clicked() model->getRecentRequestsTableModel()->removeRows(firstIndex.row(), selection.length(), firstIndex.parent()); } -//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. -void ReceiveCoinsDialog::resizeEvent(QResizeEvent* event) { - QWidget::resizeEvent(event); - columnResizingFixer->stretchColumnWidth(RecentRequestsTableModel::Message); +// We override the virtual resizeEvent of the QWidget to adjust tables column +// sizes as the tables width is proportional to the dialogs width. +void ReceiveCoinsDialog::resizeEvent(QResizeEvent* event) +{ + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(RecentRequestsTableModel::Message); } void ReceiveCoinsDialog::keyPressEvent(QKeyEvent *event) diff --git a/src/qt/receivecoinsdialog.h b/src/qt/receivecoinsdialog.h index 1d051d932..ab6333159 100644 --- a/src/qt/receivecoinsdialog.h +++ b/src/qt/receivecoinsdialog.h @@ -6,12 +6,13 @@ #define RECEIVECOINSDIALOG_H #include +#include +#include #include #include #include #include -#include -#include + #include "guiutil.h" namespace Ui { @@ -31,16 +32,16 @@ class ReceiveCoinsDialog : public QDialog public: enum ColumnWidths { - DATE_COLUMN_WIDTH = 130, - LABEL_COLUMN_WIDTH = 120, - AMOUNT_MINIMUM_COLUMN_WIDTH = 160, - MINIMUM_COLUMN_WIDTH = 130 + DATE_COLUMN_WIDTH = 130, + LABEL_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 160, + MINIMUM_COLUMN_WIDTH = 130 }; explicit ReceiveCoinsDialog(QWidget *parent = 0); ~ReceiveCoinsDialog(); - void setModel(WalletModel *model); + void setModel(WalletModel *model); public slots: void clear(); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index c5135b94d..6cc5b769e 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -459,8 +459,10 @@ void TransactionView::focusTransaction(const QModelIndex &idx) transactionView->setFocus(); } -//We override the virtual resizeEvent of the QWidget to adjust tablet's column sizes as the table's width is proportional to the dialog's. -void TransactionView::resizeEvent(QResizeEvent* event) { - QWidget::resizeEvent(event); - columnResizingFixer->stretchColumnWidth(TransactionTableModel::ToAddress); +// We override the virtual resizeEvent of the QWidget to adjust tables column +// sizes as the tables width is proportional to the dialogs width. +void TransactionView::resizeEvent(QResizeEvent* event) +{ + QWidget::resizeEvent(event); + columnResizingFixer->stretchColumnWidth(TransactionTableModel::ToAddress); } diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 5985f66c7..d7922779f 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -5,9 +5,10 @@ #ifndef TRANSACTIONVIEW_H #define TRANSACTIONVIEW_H -#include #include "guiutil.h" +#include + class TransactionFilterProxy; class WalletModel; @@ -46,11 +47,11 @@ public: }; enum ColumnWidths { - STATUS_COLUMN_WIDTH = 23, - DATE_COLUMN_WIDTH = 120, - TYPE_COLUMN_WIDTH = 120, - AMOUNT_MINIMUM_COLUMN_WIDTH = 120, - MINIMUM_COLUMN_WIDTH = 23 + STATUS_COLUMN_WIDTH = 23, + DATE_COLUMN_WIDTH = 120, + TYPE_COLUMN_WIDTH = 120, + AMOUNT_MINIMUM_COLUMN_WIDTH = 120, + MINIMUM_COLUMN_WIDTH = 23 }; private: diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index 5ac0c9088..bda3709df 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -1888,4 +1888,33 @@ Value settxfee(const Array& params, bool fHelp) return true; } +Value getwalletinfo(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 0) + throw runtime_error( + "getwalletinfo\n" + "Returns an object containing various wallet state info.\n" + "\nResult:\n" + "{\n" + " \"walletversion\": xxxxx, (numeric) the wallet version\n" + " \"balance\": xxxxxxx, (numeric) the total bitcoin balance of the wallet\n" + " \"txcount\": xxxxxxx, (numeric) the total number of transactions in the wallet\n" + " \"keypoololdest\": xxxxxx, (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n" + " \"keypoolsize\": xxxx, (numeric) how many new keys are pre-generated\n" + " \"unlocked_until\": ttt, (numeric) the timestamp in seconds since epoch (midnight Jan 1 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n" + "}\n" + "\nExamples:\n" + + HelpExampleCli("getwalletinfo", "") + + HelpExampleRpc("getwalletinfo", "") + ); + Object obj; + obj.push_back(Pair("walletversion", pwalletMain->GetVersion())); + obj.push_back(Pair("balance", ValueFromAmount(pwalletMain->GetBalance()))); + obj.push_back(Pair("txcount", (int)pwalletMain->mapWallet.size())); + obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime())); + obj.push_back(Pair("keypoolsize", (int)pwalletMain->GetKeyPoolSize())); + if (pwalletMain->IsCrypted()) + obj.push_back(Pair("unlocked_until", (boost::int64_t)nWalletUnlockTime)); + return obj; +}