![laanwj@gmail.com](/assets/img/avatar_default.png)
commit
aaa1c3c400
11 changed files with 316 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||
*~ |
|||
*.o |
@ -0,0 +1,133 @@ |
|||
/*
|
|||
* 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; |
|||
} |
@ -0,0 +1,23 @@ |
|||
#ifndef H_BITCOINGUI |
|||
#define H_BITCOINGUI |
|||
|
|||
#include <QMainWindow> |
|||
|
|||
class BitcoinGUI : public QMainWindow |
|||
{ |
|||
Q_OBJECT |
|||
public: |
|||
BitcoinGUI(QWidget *parent = 0); |
|||
|
|||
/* Transaction table tab indices */ |
|||
enum { |
|||
ALL_TRANSACTIONS = 0, |
|||
SENT_RECEIVED = 1, |
|||
SENT = 2, |
|||
RECEIVED = 3 |
|||
} TabIndex; |
|||
private slots: |
|||
void currentChanged(int tab); |
|||
}; |
|||
|
|||
#endif |
@ -0,0 +1,50 @@ |
|||
Toolbar: |
|||
Send coins |
|||
Address book |
|||
|
|||
- "Your bitcoin address" label |
|||
- address field |
|||
- "New..." |
|||
- Copy to Clipboard |
|||
|
|||
Balance: XXX |
|||
|
|||
Tabs: |
|||
All transactions |
|||
Sent/Received |
|||
Sent |
|||
Received |
|||
|
|||
Table [columns]: |
|||
Status |
|||
Date |
|||
Description |
|||
Debit |
|||
Credit |
|||
|
|||
** Table should be the same in all tabs. Do we really need different widgets? |
|||
|
|||
Status bar: |
|||
Permanent status indicators: |
|||
< actions_crystal_project: connect_established.png / connect_no.png > |
|||
N connections |
|||
M blocks |
|||
O transactions |
|||
|
|||
SendCoinDialog |
|||
AddressesDialog (Address book) |
|||
Receiving/Sending |
|||
|
|||
OptionsDialog |
|||
Tabs at the left |
|||
AboutDialog |
|||
|
|||
|
|||
- Move resources to res/ |
|||
|
|||
- Send icon |
|||
|
|||
- Address Book icon |
|||
|
|||
|
|||
- Translation |
After Width: | Height: | Size: 656 B |
@ -0,0 +1,17 @@ |
|||
/*
|
|||
* W.J. van der Laan 2011 |
|||
*/ |
|||
#include "BitcoinGUI.h" |
|||
|
|||
#include <QApplication> |
|||
|
|||
int main(int argc, char *argv[]) |
|||
{ |
|||
QApplication app(argc, argv); |
|||
|
|||
BitcoinGUI window; |
|||
|
|||
window.show(); |
|||
|
|||
return app.exec(); |
|||
} |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,12 @@ |
|||
###################################################################### |
|||
# Automatically generated by qmake (2.01a) Sat May 7 20:45:42 2011 |
|||
###################################################################### |
|||
|
|||
TEMPLATE = app |
|||
TARGET = |
|||
DEPENDPATH += . |
|||
INCLUDEPATH += . |
|||
|
|||
# Input |
|||
HEADERS += BitcoinGUI.h |
|||
SOURCES += bitcoin.cpp BitcoinGUI.cpp |
@ -0,0 +1,79 @@ |
|||
/****************************************************************************
|
|||
** 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 |
After Width: | Height: | Size: 876 B |
After Width: | Height: | Size: 946 B |
Loading…
Reference in new issue