2
* Copyright (C) 2014,2016 Canonical, Ltd.
4
* This program is free software: you can redistribute it and/or modify it under
5
* the terms of the GNU Lesser General Public License version 3, as published by
6
* the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful, but WITHOUT
9
* ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10
* SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
* Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
#ifndef UBUNTU_CLIENT_INTEGRATION_H
18
#define UBUNTU_CLIENT_INTEGRATION_H
1
/****************************************************************************
3
** Copyright (C) 2016 Canonical, Ltd.
4
** Contact: https://www.qt.io/licensing/
6
** This file is part of the plugins of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and The Qt Company. For licensing terms
14
** and conditions see https://www.qt.io/terms-conditions. For further
15
** information use the contact form at https://www.qt.io/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 3 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL3 included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 3 requirements
23
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
25
** GNU General Public License Usage
26
** Alternatively, this file may be used under the terms of the GNU
27
** General Public License version 2.0 or (at your option) the GNU General
28
** Public license version 3 or any later version approved by the KDE Free
29
** Qt Foundation. The licenses are as published by the Free Software
30
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31
** included in the packaging of this file. Please review the following
32
** information to ensure the GNU General Public License requirements will
33
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34
** https://www.gnu.org/licenses/gpl-3.0.html.
38
****************************************************************************/
41
#ifndef QMIRCLIENTINTEGRATION_H
42
#define QMIRCLIENTINTEGRATION_H
20
44
#include <qpa/qplatformintegration.h>
21
45
#include <QSharedPointer>
23
#include "appstatecontroller.h"
24
#include "platformservices.h"
25
#include "screenobserver.h"
47
#include "qmirclientappstatecontroller.h"
48
#include "qmirclientplatformservices.h"
49
#include "qmirclientscreenobserver.h"
28
52
#include <ubuntu/application/description.h>
31
55
#include <EGL/egl.h>
33
class UbuntuDebugExtension;
35
class UbuntuNativeInterface;
57
class QMirClientDebugExtension;
58
class QMirClientInput;
59
class QMirClientNativeInterface;
60
class QMirClientScreen;
37
61
class MirConnection;
39
class UbuntuClientIntegration : public QObject, public QPlatformIntegration
63
class QMirClientClientIntegration : public QObject, public QPlatformIntegration
44
UbuntuClientIntegration(int argc, char **argv);
45
virtual ~UbuntuClientIntegration();
68
QMirClientClientIntegration(int argc, char **argv);
69
virtual ~QMirClientClientIntegration();
47
71
// QPlatformIntegration methods.
48
72
bool hasCapability(QPlatformIntegration::Capability cap) const override;
66
90
MirConnection *mirConnection() const { return mMirConnection; }
67
91
EGLDisplay eglDisplay() const { return mEglDisplay; }
68
92
EGLNativeDisplayType eglNativeDisplay() const { return mEglNativeDisplay; }
69
UbuntuAppStateController *appStateController() const { return mAppStateController.data(); }
70
UbuntuScreenObserver *screenObserver() const { return mScreenObserver.data(); }
71
UbuntuDebugExtension *debugExtension() const { return mDebugExtension.data(); }
93
QMirClientAppStateController *appStateController() const { return mAppStateController.data(); }
94
QMirClientScreenObserver *screenObserver() const { return mScreenObserver.data(); }
95
QMirClientDebugExtension *debugExtension() const { return mDebugExtension.data(); }
74
void destroyScreen(UbuntuScreen *screen);
98
void destroyScreen(QMirClientScreen *screen);
77
101
void setupOptions(QStringList &args);
79
103
static QByteArray generateSessionName(QStringList &args);
80
104
static QByteArray generateSessionNameFromQmlFile(QStringList &args);
82
UbuntuNativeInterface* mNativeInterface;
106
QMirClientNativeInterface* mNativeInterface;
83
107
QPlatformFontDatabase* mFontDb;
85
UbuntuPlatformServices* mServices;
109
QMirClientPlatformServices* mServices;
111
QMirClientInput* mInput;
88
112
QPlatformInputContext* mInputContext;
89
113
mutable QScopedPointer<QPlatformAccessibility> mAccessibility;
90
QScopedPointer<UbuntuDebugExtension> mDebugExtension;
91
QScopedPointer<UbuntuScreenObserver> mScreenObserver;
92
QScopedPointer<UbuntuAppStateController> mAppStateController;
114
QScopedPointer<QMirClientDebugExtension> mDebugExtension;
115
QScopedPointer<QMirClientScreenObserver> mScreenObserver;
116
QScopedPointer<QMirClientAppStateController> mAppStateController;
93
117
qreal mScaleFactor;
95
119
MirConnection *mMirConnection;