Motiv
Marvelous OTF2 Traces Interactive Visualizer
Loading...
Searching...
No Matches
InformationDockElementBaseStrategy.cpp
1/*
2 * Marvelous OTF2 Traces Interactive Visualizer (MOTIV)
3 * Copyright (C) 2023 Florian Gallrein, Björn Gehrke
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18#include "InformationDockElementBaseStrategy.hpp"
19#include "src/models/Slot.hpp"
20#include "src/models/Trace.hpp"
21
22template<class T> requires std::is_base_of_v<TimedElement, T>
24 startField = new TimeUnitLabel(0);
25 endField = new TimeUnitLabel(0);
26 runtimeField = new TimeUnitLabel(0);
27
28
29 layout->addRow(tr("Start:"), startField);
30 layout->addRow(tr("End:"), endField);
31 layout->addRow(tr("Runtime:"), runtimeField);
32}
33
34template<class T> requires std::is_base_of_v<TimedElement, T>
36 if (!element) return;
37
38 auto start = static_cast<double>(element->getStartTime().count());
39 auto end = static_cast<double>(element->getEndTime().count());
40 auto runtime = static_cast<double>(element->getDuration().count());
41
42 startField->setTime(start);
43 endField->setTime(end);
44 runtimeField->setTime(runtime);
45}
46
47template<class T>
48requires std::is_base_of_v<TimedElement, T>bool
50 T *t = applicable(element);
51 if (t) {
52 updateView(layout, t);
53 }
54
55 return t;
56}
57
58template<class T>
59requires std::is_base_of_v<TimedElement, T>std::string InformationDockElementBaseStrategy<T>::title() {
60 return typeid(T).name();
61}
62
A generic InformationDockElementStrategy for specific TimedElements.
bool update(QFormLayout *layout, TimedElement *element) override
Sets up the QFormLayout.
virtual void updateView(QFormLayout *layout, T *element)
Updates the view.
std::string title() override
Returns the title the information dock should show.
void setup(QFormLayout *layout) override
Sets up the QFormLayout.
TimeUnitLabel constructs a QLabel from a double value that represents a time point.
A base class for all elements with a start and end time.