wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
TourOverlay.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <functional>
7
8#include <QRect>
9#include <QWidget>
10
11class QFrame;
12
13#include "App/Tour/TourStep.h"
14
15class QLabel;
16class QPushButton;
17class TourEngine;
18
24class TourOverlay : public QWidget
25{
26 Q_OBJECT
27 friend class TestTourEngine;
28
29public:
30 using TargetResolver = std::function<QRect(const QString &targetId)>;
31
32 explicit TourOverlay(TourEngine *engine, QWidget *parent = nullptr);
33
36 void setTargetResolver(TargetResolver resolver);
37
39 void setParentWindow(QWidget *newParent);
40
41public slots:
42 void onStepChanged(int step, int total, const TourStep &stepData);
43 void onTourFinished();
44 void onRetranslated();
45
46signals:
48
49protected:
50 void paintEvent(QPaintEvent *event) override;
51 bool eventFilter(QObject *obj, QEvent *event) override;
52
53private:
54 void setupUi();
55 void repositionCallout();
56
57 TourEngine *m_engine = nullptr;
58 TargetResolver m_resolver;
59 QString m_currentTarget;
60 QRect m_highlightRect;
61 QColor m_dimColor;
62 QColor m_spotlightColor;
63
64 // Callout panel (child of this overlay)
65 QFrame *m_callout = nullptr;
66 QLabel *m_stepCounter = nullptr;
67 QLabel *m_titleLabel = nullptr;
68 QLabel *m_bodyLabel = nullptr;
69 QPushButton *m_prevButton = nullptr;
70 QPushButton *m_nextButton = nullptr;
71 QPushButton *m_closeButton = nullptr;
72
73 void applyTheme();
74
78 static int scaledFontPx(int basePx);
79};
void onTourFinished()
void setTargetResolver(TargetResolver resolver)
TourOverlay(TourEngine *engine, QWidget *parent=nullptr)
void closeRequested()
friend class TestTourEngine
Definition TourOverlay.h:27
void onRetranslated()
void paintEvent(QPaintEvent *event) override
void onStepChanged(int step, int total, const TourStep &stepData)
void setParentWindow(QWidget *newParent)
Re-parents the overlay to newParent and reinstalls the resize event filter.
std::function< QRect(const QString &targetId)> TargetResolver
Definition TourOverlay.h:30
bool eventFilter(QObject *obj, QEvent *event) override