--- /dev/null
+/*
+ * W.J. van der Laan 2011
+ */
+#include "BitcoinGUI.h"
+
+#include <QApplication>
+#include <QMainWindow>
+#include <QMenuBar>
+#include <QMenu>
+#include <QIcon>
+#include <QTabBar>
+#include <QVBoxLayout>
+#include <QWidget>
+#include <QToolBar>
+#include <QStatusBar>
+#include <QLabel>
+#include <QTableView>
+#include <QLineEdit>
+#include <QPushButton>
+
+#include <iostream>
+
+BitcoinGUI::BitcoinGUI(QWidget *parent):
+ QMainWindow(parent)
+{
+ resize(850, 550);
+ setWindowTitle("Bitcoin");
+ setWindowIcon(QIcon("bitcoin.png"));
+
+
+ QAction *quit = new QAction(QIcon("quit.png"), "&Quit", this);
+ QAction *sendcoins = new QAction(QIcon("send.png"), "&Send coins", this);
+ QAction *addressbook = new QAction(QIcon("address-book.png"), "&Address book", this);
+ QAction *about = new QAction(QIcon("bitcoin.png"), "&About", this);
+
+ /* Menus */
+ QMenu *file = menuBar()->addMenu("&File");
+ file->addAction(sendcoins);
+ file->addSeparator();
+ file->addAction(quit);
+
+ QMenu *settings = menuBar()->addMenu("&Settings");
+ settings->addAction(addressbook);
+
+ QMenu *help = menuBar()->addMenu("&Help");
+ help->addAction(about);
+
+ /* Toolbar */
+ QToolBar *toolbar = addToolBar("Main toolbar");
+ toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ toolbar->addAction(sendcoins);
+ toolbar->addAction(addressbook);
+
+ /* Address: <address>: New... : Paste to clipboard */
+ QHBoxLayout *hbox_address = new QHBoxLayout();
+ hbox_address->addWidget(new QLabel("Your Bitcoin Address:"));
+ QLineEdit *edit_address = new QLineEdit();
+ edit_address->setReadOnly(true);
+ hbox_address->addWidget(edit_address);
+
+ QPushButton *button_new = new QPushButton(trUtf8("&New\u2026"));
+ QPushButton *button_clipboard = new QPushButton("&Copy to clipboard");
+ hbox_address->addWidget(button_new);
+ hbox_address->addWidget(button_clipboard);
+
+ /* Balance: <balance> */
+ QHBoxLayout *hbox_balance = new QHBoxLayout();
+ hbox_balance->addWidget(new QLabel("Balance:"));
+ hbox_balance->addSpacing(5);/* Add some spacing between the label and the text */
+ QLabel *label_balance = new QLabel("1,234.54");
+ label_balance->setFont(QFont("Teletype"));
+ hbox_balance->addWidget(label_balance);
+ hbox_balance->addStretch(1);
+
+ /* Tab widget */
+ QVBoxLayout *vbox = new QVBoxLayout();
+ vbox->addLayout(hbox_address);
+ vbox->addLayout(hbox_balance);
+
+ /* Transaction table:
+ * TransactionView
+ * TransactionModel
+ * Selection behaviour
+ * selection mode
+ * QAbstractItemView::SelectItems
+ * QAbstractItemView::ExtendedSelection
+ */
+ QTableView *transaction_table = new QTableView(this);
+
+ QTabBar *tabs = new QTabBar(this);
+ tabs->addTab("All transactions");
+ tabs->addTab("Sent/Received");
+ tabs->addTab("Sent");
+ tabs->addTab("Received");
+
+ vbox->addWidget(tabs);
+ vbox->addWidget(transaction_table);
+
+ QWidget *centralwidget = new QWidget(this);
+ centralwidget->setLayout(vbox);
+ setCentralWidget(centralwidget);
+
+ /* Status bar */
+ statusBar();
+
+ QLabel *label_connections = new QLabel("6 connections", this);
+ label_connections->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ label_connections->setMinimumWidth(100);
+
+ QLabel *label_blocks = new QLabel("6 blocks", this);
+ label_blocks->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ label_blocks->setMinimumWidth(100);
+
+ QLabel *label_transactions = new QLabel("6 transactions", this);
+ label_transactions->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ label_transactions->setMinimumWidth(100);
+
+
+ statusBar()->addPermanentWidget(label_connections);
+ statusBar()->addPermanentWidget(label_blocks);
+ statusBar()->addPermanentWidget(label_transactions);
+
+
+ /* Action bindings */
+
+ connect(quit, SIGNAL(triggered()), qApp, SLOT(quit()));
+ connect(tabs, SIGNAL(currentChanged(int)), this, SLOT(currentChanged(int)));
+}
+
+void BitcoinGUI::currentChanged(int tab)
+{
+ std::cout << "Switched to tab: " << tab << std::endl;
+}
--- /dev/null
+/****************************************************************************
+** Meta object code from reading C++ file 'BitcoinGUI.h'
+**
+** Created: Sat May 7 20:43:39 2011
+** by: The Qt Meta Object Compiler version 62 (Qt 4.7.0)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include "BitcoinGUI.h"
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'BitcoinGUI.h' doesn't include <QObject>."
+#elif Q_MOC_OUTPUT_REVISION != 62
+#error "This file was generated using the moc from 4.7.0. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+static const uint qt_meta_data_BitcoinGUI[] = {
+
+ // content:
+ 5, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 1, 14, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+ 0, // flags
+ 0, // signalCount
+
+ // slots: signature, parameters, type, tag, flags
+ 16, 12, 11, 11, 0x08,
+
+ 0 // eod
+};
+
+static const char qt_meta_stringdata_BitcoinGUI[] = {
+ "BitcoinGUI\0\0tab\0currentChanged(int)\0"
+};
+
+const QMetaObject BitcoinGUI::staticMetaObject = {
+ { &QMainWindow::staticMetaObject, qt_meta_stringdata_BitcoinGUI,
+ qt_meta_data_BitcoinGUI, 0 }
+};
+
+#ifdef Q_NO_DATA_RELOCATION
+const QMetaObject &BitcoinGUI::getStaticMetaObject() { return staticMetaObject; }
+#endif //Q_NO_DATA_RELOCATION
+
+const QMetaObject *BitcoinGUI::metaObject() const
+{
+ return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
+}
+
+void *BitcoinGUI::qt_metacast(const char *_clname)
+{
+ if (!_clname) return 0;
+ if (!strcmp(_clname, qt_meta_stringdata_BitcoinGUI))
+ return static_cast<void*>(const_cast< BitcoinGUI*>(this));
+ return QMainWindow::qt_metacast(_clname);
+}
+
+int BitcoinGUI::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = QMainWindow::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ switch (_id) {
+ case 0: currentChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
+ default: ;
+ }
+ _id -= 1;
+ }
+ return _id;
+}
+QT_END_MOC_NAMESPACE