mirror of
https://github.com/moonlight-stream/moonlight-qt
synced 2024-11-10 05:34:17 +00:00
226 lines
7.2 KiB
C++
226 lines
7.2 KiB
C++
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QRect>
|
|
#include <QQmlEngine>
|
|
|
|
class StreamingPreferences : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
static StreamingPreferences* get(QQmlEngine *qmlEngine = nullptr);
|
|
|
|
Q_INVOKABLE static int
|
|
getDefaultBitrate(int width, int height, int fps, bool yuv444);
|
|
|
|
Q_INVOKABLE void save();
|
|
|
|
void reload();
|
|
|
|
enum AudioConfig
|
|
{
|
|
AC_STEREO,
|
|
AC_51_SURROUND,
|
|
AC_71_SURROUND
|
|
};
|
|
Q_ENUM(AudioConfig)
|
|
|
|
enum VideoCodecConfig
|
|
{
|
|
VCC_AUTO,
|
|
VCC_FORCE_H264,
|
|
VCC_FORCE_HEVC,
|
|
VCC_FORCE_HEVC_HDR_DEPRECATED, // Kept for backwards compatibility
|
|
VCC_FORCE_AV1
|
|
};
|
|
Q_ENUM(VideoCodecConfig)
|
|
|
|
enum VideoDecoderSelection
|
|
{
|
|
VDS_AUTO,
|
|
VDS_FORCE_HARDWARE,
|
|
VDS_FORCE_SOFTWARE
|
|
};
|
|
Q_ENUM(VideoDecoderSelection)
|
|
|
|
enum WindowMode
|
|
{
|
|
WM_FULLSCREEN,
|
|
WM_FULLSCREEN_DESKTOP,
|
|
WM_WINDOWED
|
|
};
|
|
Q_ENUM(WindowMode)
|
|
|
|
enum UIDisplayMode
|
|
{
|
|
UI_WINDOWED,
|
|
UI_MAXIMIZED,
|
|
UI_FULLSCREEN
|
|
};
|
|
Q_ENUM(UIDisplayMode)
|
|
|
|
// New entries must go at the end of the enum
|
|
// to avoid renumbering existing entries (which
|
|
// would affect existing user preferences).
|
|
enum Language
|
|
{
|
|
LANG_AUTO,
|
|
LANG_EN,
|
|
LANG_FR,
|
|
LANG_ZH_CN,
|
|
LANG_DE,
|
|
LANG_NB_NO,
|
|
LANG_RU,
|
|
LANG_ES,
|
|
LANG_JA,
|
|
LANG_VI,
|
|
LANG_TH,
|
|
LANG_KO,
|
|
LANG_HU,
|
|
LANG_NL,
|
|
LANG_SV,
|
|
LANG_TR,
|
|
LANG_UK,
|
|
LANG_ZH_TW,
|
|
LANG_PT,
|
|
LANG_PT_BR,
|
|
LANG_EL,
|
|
LANG_IT,
|
|
LANG_HI,
|
|
LANG_PL,
|
|
LANG_CS,
|
|
LANG_HE,
|
|
LANG_CKB,
|
|
LANG_LT,
|
|
LANG_ET,
|
|
};
|
|
Q_ENUM(Language);
|
|
|
|
enum CaptureSysKeysMode
|
|
{
|
|
CSK_OFF,
|
|
CSK_FULLSCREEN,
|
|
CSK_ALWAYS,
|
|
};
|
|
Q_ENUM(CaptureSysKeysMode);
|
|
|
|
Q_PROPERTY(int width MEMBER width NOTIFY displayModeChanged)
|
|
Q_PROPERTY(int height MEMBER height NOTIFY displayModeChanged)
|
|
Q_PROPERTY(int fps MEMBER fps NOTIFY displayModeChanged)
|
|
Q_PROPERTY(int bitrateKbps MEMBER bitrateKbps NOTIFY bitrateChanged)
|
|
Q_PROPERTY(bool unlockBitrate MEMBER unlockBitrate NOTIFY unlockBitrateChanged)
|
|
Q_PROPERTY(bool enableVsync MEMBER enableVsync NOTIFY enableVsyncChanged)
|
|
Q_PROPERTY(bool gameOptimizations MEMBER gameOptimizations NOTIFY gameOptimizationsChanged)
|
|
Q_PROPERTY(bool playAudioOnHost MEMBER playAudioOnHost NOTIFY playAudioOnHostChanged)
|
|
Q_PROPERTY(bool multiController MEMBER multiController NOTIFY multiControllerChanged)
|
|
Q_PROPERTY(bool enableMdns MEMBER enableMdns NOTIFY enableMdnsChanged)
|
|
Q_PROPERTY(bool quitAppAfter MEMBER quitAppAfter NOTIFY quitAppAfterChanged)
|
|
Q_PROPERTY(bool absoluteMouseMode MEMBER absoluteMouseMode NOTIFY absoluteMouseModeChanged)
|
|
Q_PROPERTY(bool absoluteTouchMode MEMBER absoluteTouchMode NOTIFY absoluteTouchModeChanged)
|
|
Q_PROPERTY(bool framePacing MEMBER framePacing NOTIFY framePacingChanged)
|
|
Q_PROPERTY(bool connectionWarnings MEMBER connectionWarnings NOTIFY connectionWarningsChanged)
|
|
Q_PROPERTY(bool richPresence MEMBER richPresence NOTIFY richPresenceChanged)
|
|
Q_PROPERTY(bool gamepadMouse MEMBER gamepadMouse NOTIFY gamepadMouseChanged)
|
|
Q_PROPERTY(bool detectNetworkBlocking MEMBER detectNetworkBlocking NOTIFY detectNetworkBlockingChanged)
|
|
Q_PROPERTY(bool showPerformanceOverlay MEMBER showPerformanceOverlay NOTIFY showPerformanceOverlayChanged)
|
|
Q_PROPERTY(AudioConfig audioConfig MEMBER audioConfig NOTIFY audioConfigChanged)
|
|
Q_PROPERTY(VideoCodecConfig videoCodecConfig MEMBER videoCodecConfig NOTIFY videoCodecConfigChanged)
|
|
Q_PROPERTY(bool enableHdr MEMBER enableHdr NOTIFY enableHdrChanged)
|
|
Q_PROPERTY(bool enableYUV444 MEMBER enableYUV444 NOTIFY enableYUV444Changed)
|
|
Q_PROPERTY(VideoDecoderSelection videoDecoderSelection MEMBER videoDecoderSelection NOTIFY videoDecoderSelectionChanged)
|
|
Q_PROPERTY(WindowMode windowMode MEMBER windowMode NOTIFY windowModeChanged)
|
|
Q_PROPERTY(WindowMode recommendedFullScreenMode MEMBER recommendedFullScreenMode CONSTANT)
|
|
Q_PROPERTY(UIDisplayMode uiDisplayMode MEMBER uiDisplayMode NOTIFY uiDisplayModeChanged)
|
|
Q_PROPERTY(bool swapMouseButtons MEMBER swapMouseButtons NOTIFY mouseButtonsChanged)
|
|
Q_PROPERTY(bool muteOnFocusLoss MEMBER muteOnFocusLoss NOTIFY muteOnFocusLossChanged)
|
|
Q_PROPERTY(bool backgroundGamepad MEMBER backgroundGamepad NOTIFY backgroundGamepadChanged)
|
|
Q_PROPERTY(bool reverseScrollDirection MEMBER reverseScrollDirection NOTIFY reverseScrollDirectionChanged)
|
|
Q_PROPERTY(bool swapFaceButtons MEMBER swapFaceButtons NOTIFY swapFaceButtonsChanged)
|
|
Q_PROPERTY(bool keepAwake MEMBER keepAwake NOTIFY keepAwakeChanged)
|
|
Q_PROPERTY(CaptureSysKeysMode captureSysKeysMode MEMBER captureSysKeysMode NOTIFY captureSysKeysModeChanged)
|
|
Q_PROPERTY(Language language MEMBER language NOTIFY languageChanged);
|
|
|
|
Q_INVOKABLE bool retranslate();
|
|
|
|
// Directly accessible members for preferences
|
|
int width;
|
|
int height;
|
|
int fps;
|
|
int bitrateKbps;
|
|
bool unlockBitrate;
|
|
bool enableVsync;
|
|
bool gameOptimizations;
|
|
bool playAudioOnHost;
|
|
bool multiController;
|
|
bool enableMdns;
|
|
bool quitAppAfter;
|
|
bool absoluteMouseMode;
|
|
bool absoluteTouchMode;
|
|
bool framePacing;
|
|
bool connectionWarnings;
|
|
bool richPresence;
|
|
bool gamepadMouse;
|
|
bool detectNetworkBlocking;
|
|
bool showPerformanceOverlay;
|
|
bool swapMouseButtons;
|
|
bool muteOnFocusLoss;
|
|
bool backgroundGamepad;
|
|
bool reverseScrollDirection;
|
|
bool swapFaceButtons;
|
|
bool keepAwake;
|
|
int packetSize;
|
|
AudioConfig audioConfig;
|
|
VideoCodecConfig videoCodecConfig;
|
|
bool enableHdr;
|
|
bool enableYUV444;
|
|
VideoDecoderSelection videoDecoderSelection;
|
|
WindowMode windowMode;
|
|
WindowMode recommendedFullScreenMode;
|
|
UIDisplayMode uiDisplayMode;
|
|
Language language;
|
|
CaptureSysKeysMode captureSysKeysMode;
|
|
|
|
signals:
|
|
void displayModeChanged();
|
|
void bitrateChanged();
|
|
void unlockBitrateChanged();
|
|
void enableVsyncChanged();
|
|
void gameOptimizationsChanged();
|
|
void playAudioOnHostChanged();
|
|
void multiControllerChanged();
|
|
void unsupportedFpsChanged();
|
|
void enableMdnsChanged();
|
|
void quitAppAfterChanged();
|
|
void absoluteMouseModeChanged();
|
|
void absoluteTouchModeChanged();
|
|
void audioConfigChanged();
|
|
void videoCodecConfigChanged();
|
|
void enableHdrChanged();
|
|
void enableYUV444Changed();
|
|
void videoDecoderSelectionChanged();
|
|
void uiDisplayModeChanged();
|
|
void windowModeChanged();
|
|
void framePacingChanged();
|
|
void connectionWarningsChanged();
|
|
void richPresenceChanged();
|
|
void gamepadMouseChanged();
|
|
void detectNetworkBlockingChanged();
|
|
void showPerformanceOverlayChanged();
|
|
void mouseButtonsChanged();
|
|
void muteOnFocusLossChanged();
|
|
void backgroundGamepadChanged();
|
|
void reverseScrollDirectionChanged();
|
|
void swapFaceButtonsChanged();
|
|
void captureSysKeysModeChanged();
|
|
void keepAwakeChanged();
|
|
void languageChanged();
|
|
|
|
private:
|
|
explicit StreamingPreferences(QQmlEngine *qmlEngine);
|
|
|
|
QString getSuffixFromLanguage(Language lang);
|
|
|
|
QQmlEngine* m_QmlEngine;
|
|
};
|
|
|