File: tourhandler.h

package info (click to toggle)
musescore3 3.2.3%2Bdfsg2-16
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 214,188 kB
  • sloc: cpp: 291,198; xml: 200,238; sh: 3,779; ansic: 1,447; python: 393; makefile: 244; perl: 82; pascal: 79
file content (111 lines) | stat: -rw-r--r-- 3,523 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef TOURHANDLER_H
#define TOURHANDLER_H

#include "libmscore/xml.h"

namespace Ms {

//---------------------------------------------------------
//   TourMessage
//---------------------------------------------------------

struct TourMessage {
      QString message;
      QList<QString> widgetNames;
      TourMessage(QString m, QList<QString> w) : message(m), widgetNames(w) {}
      };

//---------------------------------------------------------
//   Tour
//---------------------------------------------------------

class Tour
      {
      QList<TourMessage> _messages;
      QMultiMap<QString, QWidget*> nameToWidget;
      QString _tourName;
      bool _completed = false;

   public:
      Tour(QString name) { _tourName = name; }

      void addMessage(QString m, QList<QString> w) { TourMessage message(m, w);
                                                     _messages.append(message); }
      QList<TourMessage> messages() { return _messages; }

      QList<QWidget*> getWidgetsByName(QString n)  { return nameToWidget.values(n);   }
      void addNameAndWidget(QString n, QWidget* w) { nameToWidget.insert(n, w);       }
      void clearWidgets()                          { nameToWidget.clear();            }
      bool hasNameForWidget(QString n)             { return nameToWidget.contains(n); }

      void setTourName(QString n) { _tourName = n;     }
      QString tourName()          { return _tourName;  }

      void setCompleted(bool c)   { _completed = c;    }
      bool completed()            { return _completed; }
      };

//---------------------------------------------------------
//   OverlayWidget
//---------------------------------------------------------

class OverlayWidget : public QWidget
      {
      void newParent();
      bool eventFilter(QObject * obj, QEvent * ev);
      virtual bool event(QEvent* ev);
      virtual void paintEvent(QPaintEvent *);

      QList<QWidget*> widgets;

   public:
      OverlayWidget(QList<QWidget*> widgetList, QWidget* parent = 0);
      };

//---------------------------------------------------------
//   TourHandler
//---------------------------------------------------------

class TourHandler : public QObject
      {
      Q_OBJECT

      QMap<QObject*, QMap<QEvent::Type, QString>*> eventHandler;

      void loadTour(XmlReader& tourXml);

      static void displayTour(Tour* tour);
      static void positionMessage(QList<QWidget*> widgets, QMessageBox* mbox);
      static QHash<QString, Tour*> allTours;
      static QHash<QString, Tour*> shortcutToTour;
      static QMap<QString, QMap<QString, QString>*> eventNameLookup;
      static QList<QWidget*> getWidgetsByNames(Tour* tour, QList<QString> names);

      bool delayedWelcomeTour = false;

public slots:
      void showWelcomeTour();

public:
      TourHandler(QObject* parent) : QObject(parent) {}
      void loadTours();
      void resetCompletedTours();
      void readCompletedTours();
      void writeCompletedTours();

      bool eventFilter(QObject *obj, QEvent* event);
      static void startTour(QString tourName);
      void attachTour(QObject* obj, QEvent::Type eventType, QString tourName);

      static void addWidgetToTour(QString tourName, QWidget* widget, QString widgetName);
      static void clearWidgetsFromTour(QString tourName);

      static QList<QString> allTourShortcuts() { return shortcutToTour.keys(); }

      void delayWelcomeTour() { delayedWelcomeTour = true; }
      void showDelayedWelcomeTour();
      };

}

#endif // TOURHANDLER_H