MemoryGroupBoxView.cpp
Go to the documentation of this file.
2
3#include <QCheckBox>
4#include <QGuiApplication>
5#include <QHBoxLayout>
6#include <QScreen>
7#include <QSplitter>
8#include <QVBoxLayout>
9#include <QPushButton>
10
12{
13
15 {
16 QVBoxLayout* layout = new QVBoxLayout();
17 this->setLayout(layout);
18
19 _splitter = new QSplitter(Qt::Orientation::Vertical);
20 layout->addWidget(_splitter);
21
22 this->setTitle("Memory");
23 int margin = 3;
24 this->layout()->setContentsMargins(margin, margin, margin, margin);
25
26
27 _tree = new armem::gui::MemoryTreeWidget();
28
29
30 _memoryTabWidget = new QTabWidget();
31 _memoryTabGroup = new QGroupBox("Queries, Predictions and Commits");
32 _memoryTabGroup->setLayout(new QVBoxLayout());
33
34 margin = 0;
35 _memoryTabGroup->setContentsMargins(margin, margin, margin, margin);
36 _memoryTabGroup->setSizePolicy(QSizePolicy::Policy::Expanding,
37 QSizePolicy::Policy::Maximum);
38
39 {
40 _queryWidget = new armem::gui::QueryWidget();
41 _queryWidget->setSizePolicy(QSizePolicy::Policy::Expanding,
42 QSizePolicy::Policy::Maximum);
43
44 _memoryTabWidget->addTab(_queryWidget, QString("Query Settings"));
45 }
46 {
47 _snapshotSelectorWidget = new armem::gui::SnapshotSelectorWidget();
48 _snapshotSelectorWidget->setSizePolicy(QSizePolicy::Policy::Expanding,
49 QSizePolicy::Policy::Maximum);
50
51 _memoryTabWidget->addTab(_snapshotSelectorWidget, QString("Snapshot Selection"));
52 }
53 {
54 _predictionWidget = new armem::gui::PredictionWidget(std::move(entityInfoRetriever));
55 _predictionWidget->setSizePolicy(QSizePolicy::Policy::Expanding,
56 QSizePolicy::Policy::Maximum);
57
58 _memoryTabWidget->addTab(_predictionWidget, QString("Prediction"));
59 }
60 {
61 _commitWidget = new armem::gui::CommitWidget();
62 _commitWidget->setSizePolicy(QSizePolicy::Policy::Expanding,
63 QSizePolicy::Policy::Maximum);
64
65 _memoryTabWidget->addTab(_commitWidget, QString("Commit"));
66 }
67 {
68 _ltmWidget = new armem::gui::LTMWidget();
69 _ltmWidget->setSizePolicy(QSizePolicy::Policy::Expanding,
70 QSizePolicy::Policy::Maximum);
71
72 _memoryTabWidget->addTab(_ltmWidget, QString("LTM"));
73 }
74
75 _memoryTabGroup->layout()->addWidget(_memoryTabWidget);
76
77 _splitter->addWidget(_tree);
78 _splitter->addWidget(_memoryTabGroup);
79 // Prevent QueryGroup from growing.
80 const int largeHeight = QGuiApplication::primaryScreen()->size().height();
81 _splitter->setSizes({(int)(largeHeight * 0.65), (int)(largeHeight * 0.35)});
82
83 // save last splitter size if moved
84 connect(_splitter, &QSplitter::splitterMoved, this, [this](int pos, int index) {
85 Q_UNUSED(pos);
86 Q_UNUSED(index);
87
88 QList<int> sizes = _splitter->sizes();
89
90 if (hiddenQPC && sizes[1] > 0) {
91 _lastSplitterSize = sizes[1];
92 hiddenQPC = false;
93 emit toggleSplitButton();
94 }
95 else if (!hiddenQPC && sizes[1] > 0) {
96 _lastSplitterSize = sizes[1];
97 }
98 else if (!hiddenQPC && sizes[1] == 0){
99 hiddenQPC = true;
100 emit toggleSplitButton();
101 }
102 });
103
104
105 }
106
107 void
109 {
110 QList<int> sizes = _splitter->sizes();
111 if (sizes[1] == 0) {
112 sizes[0] = _splitter->height() - _lastSplitterSize;
113 sizes[1] = _lastSplitterSize;
114 hiddenQPC = false;
115 }
116 else {
117 _lastSplitterSize = sizes[1];
118 sizes[0] = _splitter->height();
119 sizes[1] = 0;
120 hiddenQPC = true;
121 }
122 _splitter->setSizes(sizes);
123 }
124
127 {
128 return _queryWidget;
129 }
130
131 QGroupBox*
133 {
134 return _memoryTabGroup;
135 }
136
139 {
140 return _snapshotSelectorWidget;
141 }
142
145 {
146 return _predictionWidget;
147 }
148
151 {
152 return _commitWidget;
153 }
154
155 LTMWidget*
157 {
158 return _ltmWidget;
159 }
160
163 {
164 return _tree;
165 }
166
167
168} // namespace armarx::armem::gui::view
std::function< EntityInfo(const MemoryID &)> GetEntityInfoFn
Widget where queries for snapshots can be configured.
MemoryGroupBoxView(PredictionWidget::GetEntityInfoFn &&entityInfoRetriever)
SnapshotSelectorWidget * snapshotSelectorWidget() const
TreeWidget MemoryTreeWidget
Definition TreeWidget.h:111