Welcome to mirror list, hosted at ThFree Co, Russian Federation.

OverlayClient.h « mumble « src - github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 63455011f27ce954eb531fbbeab1c0a29226c2c2 (plain)
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
// Copyright 2014-2021 The Mumble Developers. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file at the root of the
// Mumble source tree or at <https://www.mumble.info/LICENSE>.

#ifndef MUMBLE_MUMBLE_OVERLAYCLIENT_H_
#define MUMBLE_MUMBLE_OVERLAYCLIENT_H_

#include <QtCore/QScopedPointer>
#include <QtCore/QUrl>
#include <QtNetwork/QLocalSocket>

#include "../../overlay/overlay.h"
#include "OverlayUserGroup.h"
#include "SharedMemory.h"
#include "Timer.h"

class ClientUser;
class Overlay;
class QLibrary;
class QLocalServer;
class OverlayPositionableItem;

class OverlayClient : public QObject {
	friend class Overlay;

private:
	Q_OBJECT
	Q_DISABLE_COPY(OverlayClient)
protected:
	OverlayMsg omMsg;
	QLocalSocket *qlsSocket;
	SharedMemory2 *smMem;
	QRect qrLast;
	Timer t;

	float framesPerSecond;
	int iOffsetX, iOffsetY;

	/// The process ID of the process this OverlayClient is connected to.
	quint64 uiPid;
	/// The path to the executable of the process that this OverlayClient is connected to.
	QString qsExecutablePath;

	QGraphicsScene qgs;

	QScopedPointer< QGraphicsPixmapItem > qgpiCursor;
	QScopedPointer< QGraphicsPixmapItem > qgpiLogo;
	QScopedPointer< OverlayPositionableItem > qgpiFPS;
	QScopedPointer< OverlayPositionableItem > qgpiTime;

	OverlayUserGroup ougUsers;

#ifdef Q_OS_MAC
	QMap< Qt::CursorShape, QPixmap > qmCursors;
#endif

	bool bWasVisible;
	bool bDelete;

	void setupRender();
	void setupScene(bool show);

	bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE;

	void readyReadMsgInit(unsigned int length);

	QList< QRectF > qlDirty;
protected slots:
	void readyRead();
	void changed(const QList< QRectF > &);
	void render();

public:
	QGraphicsView qgv;
	unsigned int uiWidth, uiHeight;
	int iMouseX, iMouseY;

	OverlayClient(QLocalSocket *, QObject *);
	~OverlayClient() Q_DECL_OVERRIDE;
	void reset();
public slots:
	void showGui();
	void hideGui();
	void scheduleDelete();
	void updateMouse();
	void updateFPS();
	void updateTime();
	bool update();
	void openEditor();
};

#endif