| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "widgets/board.hpp" | ||
| 2 | |||
| 3 | #include <QVBoxLayout> | ||
| 4 | |||
| 5 | #include "widgets/grid_view.hpp" | ||
| 6 | #include "widgets/stream_cell.hpp" | ||
| 7 | |||
| 8 | ✗ | board::board(QWidget* parent) | |
| 9 | : QWidget(parent) | ||
| 10 | ✗ | , grid(new grid_view(this)) | |
| 11 | ✗ | , active_container(new QWidget(this)) | |
| 12 | ✗ | , active_layout(new QVBoxLayout(active_container)) | |
| 13 | ✗ | , active_tile(nullptr) { | |
| 14 | ✗ | active_layout->setContentsMargins(6, 6, 6, 6); | |
| 15 | ✗ | active_layout->setSpacing(6); | |
| 16 | ✗ | active_container->setLayout(active_layout); | |
| 17 | |||
| 18 | ✗ | auto* outer = new QVBoxLayout(this); | |
| 19 | ✗ | outer->setContentsMargins(0, 0, 0, 0); | |
| 20 | ✗ | outer->setSpacing(6); | |
| 21 | |||
| 22 | ✗ | outer->addWidget(active_container, 3); | |
| 23 | |||
| 24 | ✗ | outer->addWidget(grid, 1); | |
| 25 | |||
| 26 | ✗ | setLayout(outer); | |
| 27 | ✗ | active_container->hide(); | |
| 28 | ✗ | } | |
| 29 | |||
| 30 | ✗ | grid_view* board::grid_mode() const { return grid; } | |
| 31 | |||
| 32 | ✗ | stream_cell* board::active_cell() const { return active_tile; } | |
| 33 | |||
| 34 | ✗ | void board::set_active_stream(const QString& name) { | |
| 35 | ✗ | if (!grid || name.isEmpty()) { | |
| 36 | return; | ||
| 37 | } | ||
| 38 | ✗ | if (active_tile && active_tile->get_name() == name) { | |
| 39 | return; | ||
| 40 | } | ||
| 41 | |||
| 42 | ✗ | if (active_tile) { | |
| 43 | ✗ | active_layout->removeWidget(active_tile); | |
| 44 | ✗ | active_tile->set_active(false); | |
| 45 | ✗ | grid->put_stream_cell(active_tile); | |
| 46 | ✗ | active_tile = nullptr; | |
| 47 | } | ||
| 48 | |||
| 49 | ✗ | stream_cell* cell = grid->take_stream_cell(name); | |
| 50 | ✗ | if (!cell) { | |
| 51 | return; | ||
| 52 | } | ||
| 53 | ✗ | active_container->show(); | |
| 54 | |||
| 55 | ✗ | cell->setParent(active_container); | |
| 56 | ✗ | cell->set_active(true); | |
| 57 | |||
| 58 | ✗ | cell->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); | |
| 59 | ✗ | cell->show(); | |
| 60 | ✗ | active_layout->addWidget(cell); | |
| 61 | ✗ | active_tile = cell; | |
| 62 | |||
| 63 | ✗ | active_container->updateGeometry(); | |
| 64 | } | ||
| 65 | |||
| 66 | ✗ | void board::clear_active() { | |
| 67 | ✗ | if (!active_tile || !grid) { | |
| 68 | return; | ||
| 69 | } | ||
| 70 | ✗ | active_layout->removeWidget(active_tile); | |
| 71 | ✗ | active_tile->set_active(false); | |
| 72 | ✗ | grid->put_stream_cell(active_tile); | |
| 73 | // active_tile->deleteLater(); | ||
| 74 | ✗ | active_tile = nullptr; | |
| 75 | |||
| 76 | ✗ | active_container->hide(); | |
| 77 | ✗ | active_container->updateGeometry(); | |
| 78 | } | ||
| 79 | |||
| 80 | ✗ | stream_cell* board::take_active_cell() { | |
| 81 | ✗ | if (!active_tile) { | |
| 82 | return nullptr; | ||
| 83 | } | ||
| 84 | |||
| 85 | ✗ | active_layout->removeWidget(active_tile); | |
| 86 | ✗ | active_tile->set_active(false); | |
| 87 | |||
| 88 | ✗ | active_container->hide(); | |
| 89 | ✗ | active_container->updateGeometry(); | |
| 90 | |||
| 91 | ✗ | stream_cell* out = active_tile; | |
| 92 | ✗ | active_tile = nullptr; | |
| 93 | ✗ | return out; | |
| 94 | } | ||
| 95 |