-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.cpp
More file actions
71 lines (61 loc) · 2.62 KB
/
mainwindow.cpp
File metadata and controls
71 lines (61 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
node("10.10.10.10")
{
ui->setupUi(this);
setupUI();
connect(ui->pbMine,SIGNAL(clicked()),SLOT(pbMine_clicked()));
connect(&creator,SIGNAL(createdBlock(const Block)),&node,SLOT(anonce(const Block)));
node.setParent(this);
// //Сомнительно, что тут должно сразу идти это
node.requestSynchronization();
// Ну это же по сути запуск программы. Предположение, что как только запускается программа необходимо
// провести синхронизацию
updateTable();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::setupUI()
{
tbvBlockchainModel = new QStandardItemModel;
tbvBlockchainModel->setColumnCount(5);
tbvBlockchainModel->setHeaderData(0,Qt::Horizontal,"index",Qt::DisplayRole);
tbvBlockchainModel->setHeaderData(1,Qt::Horizontal,"data",Qt::DisplayRole);
tbvBlockchainModel->setHeaderData(2,Qt::Horizontal,"nonce",Qt::DisplayRole);
tbvBlockchainModel->setHeaderData(3,Qt::Horizontal,"hash",Qt::DisplayRole);
tbvBlockchainModel->setHeaderData(4,Qt::Horizontal,"previous hash",Qt::DisplayRole);
ui->tbvBlockchain->setModel(tbvBlockchainModel);
}
void MainWindow::pbMine_clicked()
{
node.blockchain.setDifficulty(2);
creator.setDifficulty(node.blockchain.difficulty());
const Block block = creator.createBlock(node.blockchain.lastBlockIndex()+1,
node.blockchain.lastBlockHash(),"data");
node.blockchain.append(block);
QTimer::singleShot(0,this,SLOT(updateTable()));
}
void MainWindow::updateTable()
{
for(int i = tbvBlockchainModel->rowCount() ; i <= node.blockchain.lastBlockIndex(); i++)
{
QList<QStandardItem*> row;
QStandardItem *index = new QStandardItem(QString::number(node.blockchain.blockAt(i).index()));
row.append(index);
QStandardItem *data = new QStandardItem(node.blockchain.blockAt(i).data().toString());
row.append(data);
QStandardItem *nonce = new QStandardItem(QString::number(node.blockchain.blockAt(i).nonce()));
row.append(nonce);
QStandardItem *hash = new QStandardItem(QVariant(node.blockchain.blockAt(i).hash()).toString());
row.append(hash);
QStandardItem *prevHash = new QStandardItem(QVariant(node.blockchain.blockAt(i).prevHash()).toString());
row.append(prevHash);
tbvBlockchainModel->insertRow(i,row);
}
}