63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
// Copyright 2014-2023 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_MUMBLEAPPLICATION_H
|
|
#define MUMBLE_MUMBLE_MUMBLEAPPLICATION_H
|
|
|
|
#include <QApplication>
|
|
#include <QUrl>
|
|
|
|
#ifdef Q_OS_WIN
|
|
# include <QAbstractNativeEventFilter>
|
|
#endif
|
|
|
|
/**
|
|
* @brief Implements custom system shutdown behavior as well as event filtering.
|
|
*/
|
|
#ifdef Q_OS_WIN
|
|
class MumbleApplication : public QApplication, public QAbstractNativeEventFilter {
|
|
#else
|
|
class MumbleApplication : public QApplication {
|
|
#endif
|
|
Q_OBJECT
|
|
public:
|
|
/// The instance function returns an instance
|
|
/// of the MumbleApplication singleton.
|
|
static MumbleApplication *instance();
|
|
|
|
MumbleApplication(int &pargc, char **pargv);
|
|
|
|
/// applicationVersionRootPath returns
|
|
/// Mumble's "versioned root"-path.
|
|
///
|
|
/// This is a version-specific path that contains
|
|
/// supplementary binaries and other products
|
|
/// that Mumble needs to function.
|
|
///
|
|
/// In the current implementation, the versioned
|
|
/// root path is set by the MUMBLE_VERSION_ROOT
|
|
/// environment variable. This environment variable
|
|
/// is set in the mumble.exe launcher.
|
|
///
|
|
/// If a versioned root path has not been
|
|
/// configured in the environment, the function
|
|
/// returns the same path as Qt's own
|
|
/// QApplication::applicationDirPath().
|
|
QString applicationVersionRootPath();
|
|
|
|
bool event(QEvent *e) Q_DECL_OVERRIDE;
|
|
#ifdef Q_OS_WIN
|
|
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
|
|
#endif
|
|
|
|
QUrl quLaunchURL;
|
|
|
|
public slots:
|
|
/// Saves state and suppresses ask on quit before system shutdown.
|
|
void onCommitDataRequest(QSessionManager &);
|
|
};
|
|
|
|
#endif // MUMBLE_MUMBLE_MUMBLEAPPLICATION_H
|