Skip to content

Commit 9bc245e

Browse files
committed
BTL_GUI mining info Add
1 parent f3efd50 commit 9bc245e

12 files changed

+429
-68
lines changed

BTL_GUI/BTL_GUI.cpp

+105-9
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,6 @@ void BTL_GUI::on_resetwallet_clicked()
201201
// 채굴 시작 버튼
202202
void BTL_GUI::on_mining_clicked()
203203
{
204-
205-
206204
QString mining_count = ui.miningcount->text();
207205
QString cmd = NODE "-generate " + mining_count/* + " 2>&1"*/;
208206

@@ -372,15 +370,116 @@ void BTL_GUI::on_resettx_clicked()
372370
}
373371
view_tx_list(transaction, tx_list, tx_amount_group, tx_addr_group, tx_mining_group, tx_txid_group, tx_send_group);
374372
prev_tx[0].save_tx = tx_list;
373+
}
375374

376-
375+
void BTL_GUI::on_my_mining_button_clicked()
376+
{
377+
Mining_info mining_info[MINING_LIST_COUNT] = { 0, };
378+
Mining_info prev_mining_info[MINING_LIST_COUNT] = { 0, };
379+
380+
QLabel *mining_group[MINING_LIST_COUNT] = { ui.mining1, ui.mining2 ,ui.mining3,ui.mining4, ui.mining5};
381+
QLabel *mining_amount_group[MINING_LIST_COUNT] = { ui.mining_amount1, ui.mining_amount2 ,ui.mining_amount3,ui.mining_amount4, ui.mining_amount5};
382+
//QLabel *tx_mining_group[TX_LIST_COUNT] = { ui.tx_mining, ui.tx_mining_2 ,ui.tx_mining_3,ui.tx_mining_4, ui.tx_mining_5, ui.tx_mining_6, ui.tx_mining_7 };
383+
//QLabel *tx_txid_group[TX_LIST_COUNT] = { ui.tx_id, ui.tx_id_2 ,ui.tx_id_3,ui.tx_id_4, ui.tx_id_5, ui.tx_id_6, ui.tx_id_7 };
384+
//QLabel *tx_send_group[TX_LIST_COUNT] = { ui.tx_send, ui.tx_send_2 ,ui.tx_send_3,ui.tx_send_4, ui.tx_send_5, ui.tx_send_6, ui.tx_send_7 };
385+
386+
prev_mining_info[0].save_mining = init_mining_list(prev_mining_info, mining_group, mining_amount_group);
387+
388+
int compare_count = 0;
389+
int mining_start_p = 0;
390+
int mining_list = 0;
391+
int mining_count = 0;
392+
393+
QString cmd;
394+
QString result;
395+
QJsonDocument doc;
396+
QJsonObject mining_obj;
397+
QJsonArray mining_array;
398+
QJsonArray mining_array2;
399+
400+
// 수신 일때, 송신자의 주소를 알기 위한 vin의 정보
401+
//QJsonObject vin_obj;
402+
//QJsonArray vin_array;
403+
//int vin_n;
404+
//QString vin_txid;
405+
406+
bool iscontinue = true;
407+
while (iscontinue)
408+
{
409+
cmd = NODE "listtransactions \"*\" " + QString::number(MINING_LIST_COUNT) + " " + QString::number(mining_start_p);
410+
result = CmdExe(cmd);
411+
if (result == "[\r\n]")
412+
break;
413+
doc = QJsonDocument::fromJson(result.toUtf8());
414+
mining_array = doc.array();
415+
mining_count = mining_array.size();
416+
417+
for (int i = mining_count - 1; i >= 0; i--)
418+
{
419+
mining_obj = mining_array[i].toObject();
420+
mining_info[mining_list].category = mining_obj.value("category").toString();
421+
if (mining_info[mining_list].category == "immature" || mining_info[mining_list].category == "generate")
422+
{
423+
if (mining_info[mining_list].category == "immature") mining_info[mining_list].category == "immature";
424+
else mining_info[mining_list].category == "generate";
425+
426+
mining_info[mining_list].amount = fabs(mining_obj.value("amount").toDouble());
427+
mining_info[mining_list].blockhash = mining_obj.value("blockhash").toString();
428+
429+
int time_int = mining_obj.value("time").toInt();
430+
time_t epch = time_int + 32400;
431+
char *current_time = asctime(gmtime(&epch));
432+
mining_info[mining_list].time = current_time;
433+
434+
//if (t x_obj.value("confirmations").toInt() == 0)
435+
// transaction[tx_list].check_mining = "Mining Wait....";
436+
//else
437+
// transaction[tx_list].check_mining = "Mining Success!";
438+
439+
// 이전 최근 목록과 같으면.. 이후 TX copy
440+
if (mining_info[mining_list].blockhash == prev_mining_info[compare_count].blockhash && mining_info[mining_list].time == prev_mining_info[compare_count].time)
441+
{
442+
if (mining_info[mining_list].category != prev_mining_info[compare_count].category) compare_count++;
443+
else
444+
{
445+
int count = 0;
446+
for (int j = mining_list; j < mining_list + prev_mining_info[0].save_mining - compare_count; j++)
447+
{
448+
mining_info[j].blockhash = prev_mining_info[j - mining_list + compare_count].blockhash;
449+
mining_info[j].category = prev_mining_info[j - mining_list + compare_count].category;
450+
mining_info[j].amount = prev_mining_info[j - mining_list + compare_count].amount;
451+
mining_info[j].time = prev_mining_info[j - mining_list + compare_count].time;
452+
// mining_info[j].check_mining = prev_mining_info[j - mining_list + compare_count].check_mining;
453+
if (j == MINING_LIST_COUNT - 1)
454+
{
455+
mining_list++;
456+
break;
457+
}
458+
count++;
459+
}
460+
mining_list = mining_list + count;
461+
iscontinue = false;
462+
break;
463+
}
464+
}
465+
//if (tx_list == 0) transaction[0].tx_obj = tx_obj;
466+
mining_list++;
467+
}
468+
if (mining_list == MINING_LIST_COUNT)
469+
{
470+
iscontinue = false;
471+
break;
472+
}
473+
}
474+
mining_start_p += TX_SCAN_COUNT;
475+
}
476+
view_mining_list(mining_info, mining_list, mining_group, mining_amount_group);
477+
prev_mining_info[0].save_mining = mining_list;
377478
}
378479

379480
// 대시보드 리셋
380481
void BTL_GUI::on_resetinfo_clicked()
381482
{
382-
383-
384483
QString cmd = NODE "getblockcount"; // 블록 갯수
385484
QString getblockcount = CmdExe(cmd);
386485
cmd = NODE "getconnectioncount"; // Node 수
@@ -405,7 +504,7 @@ void BTL_GUI::on_resetinfo_clicked()
405504
QString blockhash[BLOCK_LIST_COUNT];
406505
QString prev_blockhash[BLOCK_LIST_COUNT];
407506

408-
init_blockhash_list(prev_blockhash, blocklist, block_group);
507+
//init_blockhash_list(prev_blockhash, blocklist, block_group);
409508

410509
if (blockcount != 0)
411510
{
@@ -428,12 +527,9 @@ void BTL_GUI::on_resetinfo_clicked()
428527
block_group[i]->setText(blockhash[i]);
429528
blocknum_group[i]->setText(QString::number(blockcount - i));
430529
}
431-
432530
ui.blockcount->setText(getblockcount);
433531
ui.usercount->setText(getconnectioncount);
434532
}
435-
436-
437533
}
438534

439535
void BTL_GUI::on_block1_clicked()

BTL_GUI/BTL_GUI.h

+41
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#define NODE "bitcoin-cli -pqcnet -datadir=../data -rpcport=1234 "
1919

2020
#define BLOCK_LIST_COUNT 10 // 블록 목록 갱신 갯수 -> 변경 시 void BTL_GUI::on_resetinfo_clicked()의 출력 수 수정
21+
#define MINING_LIST_COUNT 5 // 블록 목록 갱신 갯수 -> 변경 시 void BTL_GUI::on_resetinfo_clicked()의 출력 수 수정
2122

2223
#define TX_LIST_COUNT 7 // 거래 내역 갱신 갯수 -> 변경 시 출력을 위해 init_tx_list(TX_Info *tx)와 view_tx_list(TX_Info *tx) 함수 수정 필요
2324
#define TX_SCAN_COUNT 10000 // 최근 TX_SCAN_COUNT개의 거래 내역을 조회( TX_SCAN_COUNT번을 주기로 TX_LIST_COUNT만큼 검색 될 때까지 반복 )
@@ -34,6 +35,16 @@ typedef struct TX_Info {
3435
QString check_mining;
3536
}TX_info;
3637

38+
typedef struct mining_Info {
39+
int save_mining;
40+
41+
double amount; // 금액
42+
QString category; // "send" "receive"
43+
QString time; // 시간
44+
QString blockhash;
45+
}Mining_info;
46+
47+
3748
class BTL_GUI : public QMainWindow
3849
{
3950
Q_OBJECT
@@ -220,6 +231,35 @@ class BTL_GUI : public QMainWindow
220231
}
221232
}
222233

234+
int init_mining_list(Mining_info *mining_info, QLabel **mining_group, QLabel **mining_amount_group)
235+
{
236+
int List_count = 0;
237+
238+
for (int i = 0; i < MINING_LIST_COUNT; i++)
239+
{
240+
mining_info[i].blockhash = mining_group[i]->text();
241+
if (mining_info[i].blockhash == NULL) return i;
242+
243+
mining_info[i].amount = mining_amount_group[i]->text().toDouble();
244+
mining_info[i].blockhash = mining_group[i]->text();
245+
//mining_info[i].check_mining = tx_mining_group[i]->text();
246+
//txmining_infoi].send_receive = tx_send_group[i]->text();
247+
}
248+
return MINING_LIST_COUNT;
249+
}
250+
251+
void view_mining_list(Mining_info *mining_info, int mining_count, QLabel **mining_group, QLabel **mining_amount_group)
252+
{
253+
for (int i = 0; i < mining_count; i++)
254+
{
255+
mining_amount_group[i]->setText(QString::number(mining_info[i].amount));
256+
mining_group[i]->setText(mining_info[i].blockhash);
257+
//tx_mining_group[i]->setText(tx[i].check_mining);
258+
//tx_txid_group[i]->setText(tx[i].txid);
259+
//tx_send_group[i]->setText(tx[i].send_receive);
260+
}
261+
}
262+
223263

224264
private slots:
225265
void on_closeBtn_clicked();
@@ -230,6 +270,7 @@ private slots:
230270
void on_send_clicked();
231271
void on_resettx_clicked();
232272
void on_resetinfo_clicked();
273+
void on_my_mining_button_clicked();
233274

234275
void on_block1_clicked();
235276
void on_block2_clicked();

0 commit comments

Comments
 (0)