frameBlocksLayout->setContentsMargins(3,0,3,0);
frameBlocksLayout->setSpacing(3);
labelEncryptionIcon = new QLabel();
+ labelMiningIcon = new QLabel();
labelConnectionsIcon = new QLabel();
labelBlocksIcon = new QLabel();
frameBlocksLayout->addStretch();
frameBlocksLayout->addWidget(labelEncryptionIcon);
frameBlocksLayout->addStretch();
+ frameBlocksLayout->addWidget(labelMiningIcon);
+ frameBlocksLayout->addStretch();
frameBlocksLayout->addWidget(labelConnectionsIcon);
frameBlocksLayout->addStretch();
frameBlocksLayout->addWidget(labelBlocksIcon);
backupWalletAction = new QAction(QIcon(":/icons/filesave"), tr("&Backup Wallet..."), this);
backupWalletAction->setToolTip(tr("Backup wallet to another location"));
dumpWalletAction = new QAction(QIcon(":/icons/dump"), tr("&Dump Wallet..."), this);
- dumpWalletAction->setStatusTip(tr("Export wallet's keys to a text file"));
+ dumpWalletAction->setStatusTip(tr("Dump keys to a text file"));
importWalletAction = new QAction(QIcon(":/icons/import"), tr("&Import Wallet..."), this);
- importWalletAction->setStatusTip(tr("Import a file's keys into a wallet"));
+ importWalletAction->setStatusTip(tr("Import keys into a wallet"));
changePassphraseAction = new QAction(QIcon(":/icons/key"), tr("&Change Passphrase..."), this);
changePassphraseAction->setToolTip(tr("Change the passphrase used for wallet encryption"));
signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this);
setNumBlocks(clientModel->getNumBlocks(), clientModel->getNumBlocksOfPeers());
connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
+ connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(updateMining()));
// Report errors from network/worker thread
connect(clientModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool)));
progressBar->setToolTip(tooltip);
}
+void BitcoinGUI::updateMining()
+{
+ if(!walletModel)
+ return;
+
+ labelMiningIcon->setPixmap(QIcon(":/icons/mining_inactive").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE));
+
+ if (!clientModel->getNumConnections())
+ labelMiningIcon->setToolTip(tr("Wallet is offline"));
+
+ if (walletModel->getEncryptionStatus() == WalletModel::Locked)
+ labelMiningIcon->setToolTip(tr("Wallet is locked"));
+
+ if (clientModel->inInitialBlockDownload() || clientModel->getNumBlocksOfPeers() > clientModel->getNumBlocks())
+ labelMiningIcon->setToolTip(tr("Blockchain download is in progress"));
+
+ uint64 nMinWeight = 0, nMaxWeight = 0, nTotalWeight = 0;
+ walletModel->getStakeWeight(nMinWeight, nMaxWeight, nTotalWeight);
+
+ if (nTotalWeight > 0)
+ {
+ labelMiningIcon->setPixmap(QIcon(":/icons/mining_active").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE));
+
+ double dNetworkWeight = clientModel->getPoSKernelPS();
+/*
+ double dDifficulty = clientModel->getDifficulty(true);
+ QString msg;
+
+ int nApproxTime = 4294967297 * dDifficulty / nTotalWeight;
+
+ if (nApproxTime < 60)
+ msg = tr("%n second(s)", "", nApproxTime);
+ else if (nApproxTime < 60*60)
+ msg = tr("%n minute(s)", "", nApproxTime / 60);
+ else if (nApproxTime < 24*60*60)
+ msg = tr("%n hour(s)", "", nApproxTime / 3600);
+ else
+ msg = tr("%n day(s)", "", nApproxTime / 86400);
+
+ labelMiningIcon->setToolTip(tr("Stake miner is active\nYour current stake weight is %1\nNetwork weight is %2\nAverage block generation time is %3").arg(nTotalWeight).arg(dNetworkWeight).arg(msg));
+*/
+
+ labelMiningIcon->setToolTip(tr("Stake miner is active\nYour current stake weight is %1\nNetwork weight is %2").arg(nTotalWeight).arg(dNetworkWeight));
+ }
+ else
+ labelMiningIcon->setToolTip(tr("No suitable inputs were found"));
+}
+
void BitcoinGUI::error(const QString &title, const QString &message, bool modal)
{
// Report errors from network/worker thread
#else
QString saveDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
#endif
- QString filename = QFileDialog::getSaveFileName(this, tr("Export Wallet"), saveDir, tr("Wallet Text (*.txt)"));
+ QString filename = QFileDialog::getSaveFileName(this, tr("Dump Wallet"), saveDir, tr("Wallet dump (*.txt)"));
if(!filename.isEmpty()) {
if(!walletModel->dumpWallet(filename)) {
- error(tr("DumpWallet Failed"),
+ error(tr("Dump failed"),
tr("An error happened while trying to save the keys to your location.\n"
- "Keys were not saved")
+ "Keys were not saved.")
,CClientUIInterface::MSG_ERROR);
}
else
- message(tr("DumpWallet Successful"),
+ message(tr("Dump successful"),
tr("Keys were saved to this file:\n%2")
.arg(filename)
,CClientUIInterface::MSG_INFORMATION);
#else
QString openDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
#endif
- QString filename = QFileDialog::getOpenFileName(this, tr("Import Wallet"), openDir, tr("Wallet Text (*.txt)"));
+ QString filename = QFileDialog::getOpenFileName(this, tr("Import Wallet"), openDir, tr("Wallet dump (*.txt)"));
if(!filename.isEmpty()) {
if(!walletModel->importWallet(filename)) {
error(tr("Import Failed"),