Rename "History" tab to more logical "Transactions", move "Number of transactions...
[novacoin.git] / src / qt / bitcoingui.cpp
index f6b87c5..fbab51b 100644 (file)
@@ -17,6 +17,7 @@
 #include "transactiondescdialog.h"
 #include "addresstablemodel.h"
 #include "transactionview.h"
+#include "overviewpage.h"
 
 #include <QApplication>
 #include <QMainWindow>
@@ -33,6 +34,7 @@
 #include <QLocale>
 #include <QMessageBox>
 #include <QProgressBar>
+#include <QStackedWidget>
 
 #include <QDebug>
 
@@ -45,7 +47,7 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
     trayIcon(0)
 {
     resize(850, 550);
-    setWindowTitle(tr("Bitcoin"));
+    setWindowTitle(tr("Bitcoin Wallet"));
     setWindowIcon(QIcon(":icons/bitcoin"));
 
     createActions();
@@ -66,31 +68,28 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
     // Toolbar
     QToolBar *toolbar = addToolBar("Main toolbar");
     toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    toolbar->addAction(overviewAction);
+    toolbar->addAction(historyAction);
+    toolbar->addSeparator();
     toolbar->addAction(sendCoins);
     toolbar->addAction(receiveCoins);
     toolbar->addAction(addressbook);
 
-    // Balance: <balance>
-    QHBoxLayout *hbox_balance = new QHBoxLayout();
-    hbox_balance->addWidget(new QLabel(tr("Balance:")));
-    hbox_balance->addSpacing(5);/* Add some spacing between the label and the text */
+    overviewPage = new OverviewPage();
 
-    labelBalance = new QLabel();
-    labelBalance->setFont(QFont("Monospace", -1, QFont::Bold));
-    labelBalance->setToolTip(tr("Your current balance"));
-    hbox_balance->addWidget(labelBalance);
-    hbox_balance->addStretch(1);
-    
     QVBoxLayout *vbox = new QVBoxLayout();
-    vbox->addLayout(hbox_balance);
 
     transactionView = new TransactionView(this);
     connect(transactionView, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(transactionDetails(const QModelIndex&)));
     vbox->addWidget(transactionView);
 
-    QWidget *centralwidget = new QWidget(this);
-    centralwidget->setLayout(vbox);
-    setCentralWidget(centralwidget);
+    transactionsPage = new QWidget(this);
+    transactionsPage->setLayout(vbox);
+
+    centralWidget = new QStackedWidget(this);
+    centralWidget->addWidget(overviewPage);
+    centralWidget->addWidget(transactionsPage);
+    setCentralWidget(centralWidget);
     
     // Create status bar
     statusBar();
@@ -105,11 +104,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
     labelBlocks->setMinimumWidth(130);
     labelBlocks->setToolTip(tr("Number of blocks in the block chain"));
 
-    labelTransactions = new QLabel();
-    labelTransactions->setFrameStyle(QFrame::Panel | QFrame::Sunken);
-    labelTransactions->setMinimumWidth(130);
-    labelTransactions->setToolTip(tr("Number of transactions in your wallet"));
-
     // Progress bar for blocks download
     progressBarLabel = new QLabel(tr("Synchronizing with network..."));
     progressBarLabel->setVisible(false);
@@ -121,13 +115,25 @@ BitcoinGUI::BitcoinGUI(QWidget *parent):
     statusBar()->addWidget(progressBar);
     statusBar()->addPermanentWidget(labelConnections);
     statusBar()->addPermanentWidget(labelBlocks);
-    statusBar()->addPermanentWidget(labelTransactions);
 
     createTrayIcon();
+
+    gotoOverviewTab();
 }
 
 void BitcoinGUI::createActions()
 {
+    QActionGroup *tabGroup = new QActionGroup(this);
+    overviewAction = new QAction(QIcon(":/icons/overview"), tr("&Overview"), this);
+    overviewAction->setCheckable(true);
+    tabGroup->addAction(overviewAction);
+    historyAction = new QAction(QIcon(":/icons/history"), tr("&Transactions"), this);
+    historyAction->setCheckable(true);
+    tabGroup->addAction(historyAction);
+
+    connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewTab()));
+    connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryTab()));
+
     quit = new QAction(QIcon(":/icons/quit"), tr("&Exit"), this);
     quit->setToolTip(tr("Quit application"));
     sendCoins = new QAction(QIcon(":/icons/send"), tr("&Send coins"), this);
@@ -158,11 +164,12 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
 
     if(clientModel->isTestNet())
     {
-        setWindowTitle(tr("Bitcoin [testnet]"));
+        QString title_testnet = tr("Bitcoin Wallet [testnet]");
+        setWindowTitle(title_testnet);
         setWindowIcon(QIcon(":icons/bitcoin_testnet"));
         if(trayIcon)
         {
-            trayIcon->setToolTip(tr("Bitcoin [testnet]"));
+            trayIcon->setToolTip(title_testnet);
             trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
         }
     }
@@ -266,7 +273,7 @@ void BitcoinGUI::aboutClicked()
 
 void BitcoinGUI::setBalance(qint64 balance)
 {
-    labelBalance->setText(GUIUtil::formatMoney(balance) + QString(" BTC"));
+    overviewPage->setBalance(balance);
 }
 
 void BitcoinGUI::setNumConnections(int count)
@@ -305,7 +312,7 @@ void BitcoinGUI::setNumBlocks(int count)
 
 void BitcoinGUI::setNumTransactions(int count)
 {
-    labelTransactions->setText(tr("%n transaction(s)", "", count));
+    overviewPage->setNumTransactions(count);
 }
 
 void BitcoinGUI::error(const QString &title, const QString &message)
@@ -398,3 +405,15 @@ void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int
                               QSystemTrayIcon::Information);
     }
 }
+
+void BitcoinGUI::gotoOverviewTab()
+{
+    overviewAction->setChecked(true);
+    centralWidget->setCurrentWidget(overviewPage);
+}
+
+void BitcoinGUI::gotoHistoryTab()
+{
+    historyAction->setChecked(true);
+    centralWidget->setCurrentWidget(transactionsPage);
+}