1 /********************************************************************
2 Copyright 2016  Martin Gräßlin <mgraesslin@kde.org>
3 
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) version 3, or any
8 later version accepted by the membership of KDE e.V. (or its
9 successor approved by the membership of KDE e.V.), which shall
10 act as a proxy defined in Section 6 of version 3 of the license.
11 
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 Lesser General Public License for more details.
16 
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library.  If not, see <http://www.gnu.org/licenses/>.
19 *********************************************************************/
20 #ifndef TESTSERVER_H
21 #define TESTSERVER_H
22 
23 #include <QHash>
24 #include <QObject>
25 #include <QPointF>
26 #include <QVector>
27 
28 // STD
29 #include <memory>
30 
31 class QElapsedTimer;
32 class QTimer;
33 
34 namespace Wrapland
35 {
36 namespace Server
37 {
38 class Display;
39 class Seat;
40 class XdgShell;
41 class XdgShellToplevel;
42 }
43 }
44 
45 class TestServer : public QObject
46 {
47     Q_OBJECT
48 public:
49     explicit TestServer(QObject* parent);
50     virtual ~TestServer();
51 
52     void init();
53     void startTestApp(const QString& app, const QStringList& arguments);
54 
55 private:
56     void repaint();
57 
58     Wrapland::Server::Display* m_display = nullptr;
59     Wrapland::Server::XdgShell* m_shell = nullptr;
60     Wrapland::Server::Seat* m_seat = nullptr;
61     QVector<Wrapland::Server::XdgShellToplevel*> m_shellSurfaces;
62     QTimer* m_repaintTimer;
63     std::unique_ptr<QElapsedTimer> m_timeSinceStart;
64     QPointF m_cursorPos;
65     QHash<qint32, qint32> m_touchIdMapper;
66 };
67 
68 #endif
69