#include "addressbookpage.h"
#include "sendcoinsdialog.h"
#include "signverifymessagedialog.h"
+#include "secondauthdialog.h"
#include "multisigdialog.h"
#include "optionsdialog.h"
#include "aboutdialog.h"
#include <iostream>
extern bool fWalletUnlockMintOnly;
+extern uint64_t nStakeInputsMapSize;
BitcoinGUI::BitcoinGUI(QWidget *parent):
QMainWindow(parent),
clientModel(0),
walletModel(0),
signVerifyMessageDialog(0),
+ secondAuthDialog(0),
multisigPage(0),
encryptWalletAction(0),
lockWalletAction(0),
unlockWalletAction(0),
unlockWalletMiningAction(0),
changePassphraseAction(0),
- aboutQtAction(0),
trayIcon(0),
notificator(0),
rpcConsole(0),
signVerifyMessageDialog = new SignVerifyMessageDialog(0);
+ secondAuthDialog = new SecondAuthDialog(0);
+
multisigPage = new MultisigDialog(0);
centralWidget = new QStackedWidget(this);
rpcConsole = new RPCConsole(0);
connect(openRPCConsoleAction, SIGNAL(triggered()), rpcConsole, SLOT(show()));
+ connect(openRPCConsoleAction, SIGNAL(triggered()), rpcConsole, SLOT(raise()));
aboutDialog = new AboutDialog(0);
optionsDialog = new OptionsDialog(0);
delete aboutDialog;
delete optionsDialog;
delete multisigPage;
+ delete secondAuthDialog;
delete signVerifyMessageDialog;
}
aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About NovaCoin"), this);
aboutAction->setStatusTip(tr("Show information about NovaCoin"));
aboutAction->setMenuRole(QAction::AboutRole);
-#if QT_VERSION < 0x050000
- aboutQtAction = new QAction(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this);
-#else
- aboutQtAction = new QAction(QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this);
-#endif
- aboutQtAction->setStatusTip(tr("Show information about Qt"));
- aboutQtAction->setMenuRole(QAction::AboutQtRole);
optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
optionsAction->setStatusTip(tr("Modify configuration options for NovaCoin"));
optionsAction->setMenuRole(QAction::PreferencesRole);
signMessageAction->setStatusTip(tr("Sign messages with your Novacoin addresses to prove you own them"));
verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this);
verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Novacoin addresses"));
+ secondAuthAction = new QAction(QIcon(":/icons/key"), tr("Second &auth..."), this);
+ secondAuthAction->setStatusTip(tr("Second auth with your Novacoin addresses"));
lockWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Lock wallet"), this);
lockWalletAction->setStatusTip(tr("Lock wallet"));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
- connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked()));
connect(toggleHideAction, SIGNAL(triggered()), this, SLOT(toggleHidden()));
connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool)));
connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase()));
connect(signMessageAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab()));
connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(gotoVerifyMessageTab()));
+ connect(secondAuthAction, SIGNAL(triggered()), this, SLOT(gotoSecondAuthPage()));
}
void BitcoinGUI::createMenuBar()
file->addAction(exportAction);
file->addAction(signMessageAction);
file->addAction(verifyMessageAction);
+ file->addAction(secondAuthAction);
file->addAction(multisigAction);
file->addSeparator();
file->addAction(quitAction);
QMenu *help = appMenuBar->addMenu(tr("&Help"));
help->addAction(openRPCConsoleAction);
- help->addSeparator();
help->addAction(aboutAction);
- help->addAction(aboutQtAction);
}
void BitcoinGUI::createToolBars()
setNumConnections(clientModel->getNumConnections());
connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
- setNumBlocks(clientModel->getNumBlocks(), clientModel->getNumBlocksOfPeers());
- connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
+ setNumBlocks(clientModel->getNumBlocks());
+ connect(clientModel, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateMining()));
receiveCoinsPage->setModel(walletModel->getAddressTableModel());
sendCoinsPage->setModel(walletModel);
signVerifyMessageDialog->setModel(walletModel);
+ secondAuthDialog->setModel(walletModel);
multisigPage->setModel(walletModel);
setEncryptionStatus(walletModel->getEncryptionStatus());
trayIconMenu->addSeparator();
trayIconMenu->addAction(signMessageAction);
trayIconMenu->addAction(verifyMessageAction);
+ trayIconMenu->addAction(secondAuthAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(optionsAction);
trayIconMenu->addAction(openRPCConsoleAction);
labelConnectionsIcon->setToolTip(tr("%n active connection(s) to NovaCoin network", "", count));
}
-void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
+void BitcoinGUI::setNumBlocks(int count)
{
// don't show / hide progress bar and its label if we have no connection to the network
if (!clientModel || clientModel->getNumConnections() == 0)
QString strStatusBarWarnings = clientModel->getStatusBarWarnings();
QString tooltip;
- if(count < nTotalBlocks)
- {
- int nRemainingBlocks = nTotalBlocks - count;
- float nPercentageDone = count / (nTotalBlocks * 0.01f);
-
- if (strStatusBarWarnings.isEmpty())
- {
- progressBarLabel->setText(tr("Synchronizing with network..."));
- progressBarLabel->setVisible(true);
- progressBar->setFormat(tr("~%n block(s) remaining", "", nRemainingBlocks));
- progressBar->setMaximum(nTotalBlocks);
- progressBar->setValue(count);
- progressBar->setVisible(true);
- }
-
- tooltip = tr("Downloaded %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone, 0, 'f', 2);
- }
- else
- {
- if (strStatusBarWarnings.isEmpty())
- progressBarLabel->setVisible(false);
+ if (strStatusBarWarnings.isEmpty())
+ progressBarLabel->setVisible(false);
- progressBar->setVisible(false);
- tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count);
- }
+ progressBar->setVisible(false);
+ tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count);
// Override progressBarLabel text and hide progress bar, when we have warnings to display
if (!strStatusBarWarnings.isEmpty())
progressBar->setVisible(false);
}
+ tooltip = tr("Current PoW difficulty is %1.").arg(clientModel->getDifficulty(false)) + QString("<br>") + tooltip;
+ tooltip = tr("Current PoS difficulty is %1.").arg(clientModel->getDifficulty(true)) + QString("<br>") + tooltip;
+
QDateTime lastBlockDate = clientModel->getLastBlockDate();
int secs = lastBlockDate.secsTo(QDateTime::currentDateTime());
QString text;
}
// Set icon state: spinning if catching up, tick otherwise
- if(secs < 90*60 && count >= nTotalBlocks)
+ if(secs < 90*60)
{
tooltip = tr("Up to date") + QString(".<br>") + tooltip;
labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
return;
}
- if (clientModel->inInitialBlockDownload() || clientModel->getNumBlocksOfPeers() > clientModel->getNumBlocks())
+ if (clientModel->inInitialBlockDownload())
{
labelMiningIcon->setToolTip(tr("Blockchain download is in progress"));
return;
}
- float nKernelsRate = 0, nCoinDaysRate = 0;
- walletModel->getStakeStats(nKernelsRate, nCoinDaysRate);
-
- if (nKernelsRate > 0)
+ if (nStakeInputsMapSize > 0)
{
labelMiningIcon->setPixmap(QIcon(":/icons/mining_active").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE));
uint64_t nNetworkWeight = 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(QString("<nobr>")+tr("Stake miner is active<br>Kernel rate is %1 k/s<br>CD rate is %2 CD/s<br>Network weight is %3").arg(nKernelsRate).arg(nCoinDaysRate).arg(nNetworkWeight)+QString("<\nobr>"));
+ labelMiningIcon->setToolTip(QString("<nobr>")+tr("Stake miner is active<br>%1 inputs being used for mining<br>Network weight is %3").arg(nStakeInputsMapSize).arg(nNetworkWeight)+QString("<\nobr>"));
}
else
labelMiningIcon->setToolTip(tr("No suitable inputs were found"));
signVerifyMessageDialog->setAddress_VM(addr);
}
+void BitcoinGUI::gotoSecondAuthPage(QString addr)
+{
+ secondAuthDialog->show();
+ secondAuthDialog->raise();
+ secondAuthDialog->activateWindow();
+}
+
void BitcoinGUI::gotoMultisigPage()
{
multisigPage->show();
- multisigPage->setFocus();
+ multisigPage->raise();
+ multisigPage->activateWindow();
}
void BitcoinGUI::dragEnterEvent(QDragEnterEvent *event)