#include <QSortFilterProxyModel>
#include <QClipboard>
#include <QMessageBox>
+#include <QProgressBar>
#include <QDebug>
// Address: <address>: New... : Paste to clipboard
QHBoxLayout *hbox_address = new QHBoxLayout();
- hbox_address->addWidget(new QLabel(tr("Your Bitcoin Address:")));
+ hbox_address->addWidget(new QLabel(tr("Your Bitcoin address:")));
address = new QLineEdit();
address->setReadOnly(true);
address->setFont(GUIUtil::bitcoinAddressFont());
// Create status bar
statusBar();
-
+
labelConnections = new QLabel();
labelConnections->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- labelConnections->setMinimumWidth(130);
+ labelConnections->setMinimumWidth(150);
labelConnections->setToolTip(tr("Number of connections to other clients"));
-
+
labelBlocks = new QLabel();
labelBlocks->setFrameStyle(QFrame::Panel | QFrame::Sunken);
labelBlocks->setMinimumWidth(130);
labelTransactions->setMinimumWidth(130);
labelTransactions->setToolTip(tr("Number of transactions in your wallet"));
+ // Progress bar for blocks download
+ progressBarLabel = new QLabel(tr("Downloading initial data..."));
+ progressBarLabel->setVisible(false);
+ progressBar = new QProgressBar();
+ progressBar->setToolTip(tr("Initial block chain download in progress"));
+ progressBar->setVisible(false);
+
+ statusBar()->addWidget(progressBarLabel);
+ statusBar()->addWidget(progressBar);
statusBar()->addPermanentWidget(labelConnections);
statusBar()->addPermanentWidget(labelBlocks);
statusBar()->addPermanentWidget(labelTransactions);
-
+
// Action bindings
connect(button_new, SIGNAL(clicked()), this, SLOT(newAddressClicked()));
connect(button_clipboard, SIGNAL(clicked()), this, SLOT(copyClipboardClicked()));
addressbook->setToolTip(tr("Edit the list of stored addresses and labels"));
about = new QAction(QIcon(":/icons/bitcoin"), tr("&About"), this);
about->setToolTip(tr("Show information about Bitcoin"));
- receivingAddresses = new QAction(QIcon(":/icons/receiving-addresses"), tr("Your &Receiving Addresses..."), this);
+ receivingAddresses = new QAction(QIcon(":/icons/receiving_addresses"), tr("Your &Receiving Addresses..."), this);
receivingAddresses->setToolTip(tr("Show the list of receiving addresses and edit their labels"));
options = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
options->setToolTip(tr("Modify configuration options for bitcoin"));
transaction_table->verticalHeader()->hide();
transaction_table->horizontalHeader()->resizeSection(
- TransactionTableModel::Status, 145);
+ TransactionTableModel::Status, 23);
transaction_table->horizontalHeader()->resizeSection(
TransactionTableModel::Date, 120);
transaction_table->horizontalHeader()->setResizeMode(
void BitcoinGUI::addressbookClicked()
{
- AddressBookDialog dlg;
+ AddressBookDialog dlg(AddressBookDialog::ForEditing);
dlg.setModel(model->getAddressTableModel());
dlg.setTab(AddressBookDialog::SendingTab);
dlg.exec();
void BitcoinGUI::receivingAddressesClicked()
{
- AddressBookDialog dlg;
+ AddressBookDialog dlg(AddressBookDialog::ForEditing);
dlg.setModel(model->getAddressTableModel());
dlg.setTab(AddressBookDialog::ReceivingTab);
dlg.exec();
void BitcoinGUI::setNumConnections(int count)
{
- labelConnections->setText(QLocale::system().toString(count)+" "+tr("connections(s)", "", count));
+ QString icon;
+ switch(count)
+ {
+ case 0: icon = ":/icons/connect_0"; break;
+ case 1: case 2: case 3: icon = ":/icons/connect_1"; break;
+ case 4: case 5: case 6: icon = ":/icons/connect_2"; break;
+ case 7: case 8: case 9: icon = ":/icons/connect_3"; break;
+ default: icon = ":/icons/connect_4"; break;
+ }
+ labelConnections->setTextFormat(Qt::RichText);
+ labelConnections->setText("<img src=\""+icon+"\"> " + QLocale::system().toString(count)+" "+tr("connection(s)", "", count));
}
void BitcoinGUI::setNumBlocks(int count)
{
+ int total = model->getTotalBlocksEstimate();
+ if(count < total)
+ {
+ progressBarLabel->setVisible(true);
+ progressBar->setVisible(true);
+ progressBar->setMaximum(total);
+ progressBar->setValue(count);
+ }
+ else
+ {
+ progressBarLabel->setVisible(false);
+ progressBar->setVisible(false);
+ }
+
labelBlocks->setText(QLocale::system().toString(count)+" "+tr("block(s)", "", count));
}
void BitcoinGUI::transactionDetails(const QModelIndex& idx)
{
- /* A transaction is doubleclicked */
+ // A transaction is doubleclicked
TransactionDescDialog dlg(idx);
dlg.exec();
}
.data(Qt::EditRole).toULongLong();
qint64 debit = ttm->index(start, TransactionTableModel::Debit, parent)
.data(Qt::EditRole).toULongLong();
- if((credit+debit)>0)
+ if((credit+debit)>0 && !model->inInitialBlockDownload())
{
- /* On incoming transaction, make an info balloon */
+ // On incoming transaction, make an info balloon
+ // Unless the initial block download is in progress, to prevent balloon-spam
QString date = ttm->index(start, TransactionTableModel::Date, parent)
.data().toString();
QString description = ttm->index(start, TransactionTableModel::Description, parent)