-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.h
More file actions
98 lines (64 loc) · 2.15 KB
/
mainwindow.h
File metadata and controls
98 lines (64 loc) · 2.15 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "bintree.h"
#include <QDebug>
#include <QListWidgetItem>
#include <QTreeWidgetItem>
#include <QMessageBox>
#include <QRandomGenerator>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsItem>
#define LOG(EXPR) ui->logTextEdit->append(EXPR)
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
struct nodeData {
QString str = nullptr;
node<nodeData>* parent = nullptr;
int rightSpacing = 0;
int leftSpacing = 0;
int cumulativeRightSpacing = 0;
int cumulativeLeftSpacing = 0;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_expandAllPushButton_clicked();
void on_collapseAllPushButton_clicked();
void on_createButton_clicked();
void on_refreshButton_clicked();
void on_expandToLevelPushButton_clicked();
void on_insertButton_clicked();
void on_deleteButton_clicked();
void on_findMaxKeypushButton_clicked();
void on_insertKeySpinBox_valueChanged(int arg1);
void on_findMinKeypushButton_clicked();
void on_findNodePushButton_clicked();
void on_findAutomaticallyCheckBox_stateChanged(int arg1);
void on_refreshAutomaticallyCheckBox_stateChanged(int arg1);
void on_findKeySpinBox_valueChanged(int arg1);
void on_zoomHorizontalSlider_valueChanged(int value);
private:
Ui::MainWindow *ui;
bintree<nodeData>* tree;
node<nodeData>* lastFoundMax = nullptr;
node<nodeData>* lastFoundMin = nullptr;
node<nodeData>* lastFound = nullptr;
QGraphicsScene* scene;
void printTree(bintree<nodeData>* tree);
void _printTree(node<nodeData>* leaf, QTreeWidgetItem* parentItem);
void drawTree(bintree<nodeData>* tree);
void _drawTree(node<nodeData>* leaf, node<nodeData>* neighbor, QGraphicsRectItem* parentRectItem, int side);
void findMaxNode(bool update = true);
void findMinNode(bool update = true);
void updateTree(void);
void onTreeOperation(bool changing = true);
bintree<nodeData>* makeTree(void);
};
#endif // MAINWINDOW_H