Motiv
Marvelous OTF2 Traces Interactive Visualizer
Loading...
Searching...
No Matches
InformationDockElementBaseStrategy.hpp
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#ifndef MOTIV_INFORMATIONDOCKELEMENTBASESTRATEGY_HPP
19#define MOTIV_INFORMATIONDOCKELEMENTBASESTRATEGY_HPP
20
21#include "InformationDockElementStrategy.hpp"
22#include "src/ui/widgets/TimeUnitLabel.hpp"
23
33template<class T> requires std::is_base_of_v<TimedElement, T>
35public:
39 static QString tr(const char *s, const char *c = nullptr, int n = -1) {
40 return QObject::tr(s, c, n);
41 }
42
43public:
53 virtual T *applicable(TimedElement *t) { return dynamic_cast<T *>(t); }
54
58 void setup(QFormLayout *layout) override;
59
69 virtual void updateView(QFormLayout *layout, T *element);
70
74 bool update(QFormLayout *layout, TimedElement *element) override;
75
79 std::string title() override;
80
81protected:
85};
86
87
88#endif //MOTIV_INFORMATIONDOCKELEMENTBASESTRATEGY_HPP
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.
static QString tr(const char *s, const char *c=nullptr, int n=-1)
void setup(QFormLayout *layout) override
Sets up the QFormLayout.
virtual T * applicable(TimedElement *t)
Checks if the strategy is applicable for an element and returns the casted element if so.
A base class for strategies for the InformationDock to show information about a TimedElement.
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.