DiskIOView.cpp
Go to the documentation of this file.
1#include "DiskIOView.h"
2
3#include <cmath>
4#include <filesystem>
5
6#include <QCoreApplication>
7#include <QFileDialog>
8#include <QHBoxLayout>
9#include <QPushButton>
10#include <QSpacerItem>
11#include <QLabel>
12
13#include <SimoxUtility/algorithm/string/string_tools.h>
14
16
21
23{
24
26 {
27 _latestDirectory = QString::fromStdString("/tmp/MemoryExport");
28
29 _loadFromDiskButton = new QPushButton(" Load Query from Disk into WM", this);
30 _loadFromDiskButton->setIcon(QIcon(":/icons/document-open.svg"));
31 _storeOnDiskButton = new QPushButton(" Store shown Data on Disk", this);
32 _storeOnDiskButton->setIcon(QIcon(":/icons/document-save.svg"));
33
34 _loadingLabel = new QLabel("Query loading...", this);
35 _loadingLabel->setStyleSheet("color: gray");
36 _loadingLabel->setVisible(false);
37
38 // Allow horizontal shrinking of buttons
39 std::vector<QPushButton*> buttons{_storeOnDiskButton, _loadFromDiskButton};
40 for (QPushButton* button : buttons)
41 {
42 button->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
43 }
44
45 this->setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Fixed);
46
47 QHBoxLayout* layout = new QHBoxLayout();
48 this->setLayout(layout);
49
50 const int margin = 0;
51 layout->setContentsMargins(margin, margin, margin, margin);
52
53 layout->addWidget(_loadingLabel);
54 layout->addWidget(_loadFromDiskButton);
55 layout->addWidget(_storeOnDiskButton);
56
57
58 // Connections
59
60 connect(_loadFromDiskButton,
61 &QPushButton::pressed,
62 [this]()
63 {
64 QString directory = chooseDirectoryDialog();
65 if (directory.size() > 0)
66 {
67 _loadingLabel->setVisible(true);
68 _loadFromDiskButton->setEnabled(false);
69
70 emit requestedLoadFromDisk(directory);
71
72 }
73
74 });
75 connect(_storeOnDiskButton,
76 &QPushButton::pressed,
77 [this]()
78 {
79 QString directory = chooseDirectoryDialog();
80 if (directory.size() > 0)
81 {
82 emit requestedStoreOnDisk(directory);
83 }
84 });
85 }
86
87 QString
88 DiskIOView::chooseDirectoryDialog()
89 {
90 _latestDirectory = QFileDialog::getExistingDirectory(this,
91 "Open query result",
92 _latestDirectory,
93 QFileDialog::ShowDirsOnly |
94 QFileDialog::DontResolveSymlinks);
95
96 return _latestDirectory;
97 }
98
100 {
101 _loadingLabel->setVisible(false);
102 _loadFromDiskButton->setEnabled(true);
103 }
104
105} // namespace armarx::armem::gui::view
void requestedStoreOnDisk(QString directory)
void requestedLoadFromDisk(QString directory)