You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.0 KiB
84 lines
3.0 KiB
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#ifndef SETTINGSINTERFACE_H
|
|
#define SETTINGSINTERFACE_H
|
|
|
|
#include <QObject>
|
|
#include <QQmlEngine>
|
|
|
|
#include "QMLSetting.h"
|
|
#include "qt_common/config/shared_translation.h"
|
|
#include "Eden/Models/SettingsModel.h"
|
|
|
|
namespace SettingsCategories {
|
|
Q_NAMESPACE
|
|
|
|
enum class Category {
|
|
Android = u32(Settings::Category::Android),
|
|
Audio = u32(Settings::Category::Audio),
|
|
Core = u32(Settings::Category::Core),
|
|
Cpu = u32(Settings::Category::Cpu),
|
|
CpuDebug = u32(Settings::Category::CpuDebug),
|
|
CpuUnsafe = u32(Settings::Category::CpuUnsafe),
|
|
Overlay = u32(Settings::Category::Overlay),
|
|
Renderer = u32(Settings::Category::Renderer),
|
|
RendererAdvanced = u32(Settings::Category::RendererAdvanced),
|
|
RendererExtensions = u32(Settings::Category::RendererExtensions),
|
|
RendererDebug = u32(Settings::Category::RendererDebug),
|
|
System = u32(Settings::Category::System),
|
|
SystemAudio = u32(Settings::Category::SystemAudio),
|
|
DataStorage = u32(Settings::Category::DataStorage),
|
|
Debugging = u32(Settings::Category::Debugging),
|
|
DebuggingGraphics = u32(Settings::Category::DebuggingGraphics),
|
|
GpuDriver = u32(Settings::Category::GpuDriver),
|
|
Miscellaneous = u32(Settings::Category::Miscellaneous),
|
|
Network = u32(Settings::Category::Network),
|
|
WebService = u32(Settings::Category::WebService),
|
|
AddOns = u32(Settings::Category::AddOns),
|
|
Controls = u32(Settings::Category::Controls),
|
|
Ui = u32(Settings::Category::Ui),
|
|
UiAudio = u32(Settings::Category::UiAudio),
|
|
UiGeneral = u32(Settings::Category::UiGeneral),
|
|
UiLayout = u32(Settings::Category::UiLayout),
|
|
UiGameList = u32(Settings::Category::UiGameList),
|
|
Screenshots = u32(Settings::Category::Screenshots),
|
|
Shortcuts = u32(Settings::Category::Shortcuts),
|
|
Multiplayer = u32(Settings::Category::Multiplayer),
|
|
Services = u32(Settings::Category::Services),
|
|
Paths = u32(Settings::Category::Paths),
|
|
LibraryApplet = u32(Settings::Category::LibraryApplet),
|
|
};
|
|
Q_ENUM_NS(Category)
|
|
}
|
|
|
|
class SettingsInterface : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit SettingsInterface(QObject* parent = nullptr);
|
|
|
|
QMLSetting *getSetting(Settings::BasicSetting *setting);
|
|
Q_INVOKABLE QMLSetting *setting(const QString &key);
|
|
Q_INVOKABLE SettingsModel *category(SettingsCategories::Category category,
|
|
QList<QString> idInclude = {},
|
|
QList<QString> idExclude = {});
|
|
|
|
Q_INVOKABLE int id(const QString &key);
|
|
|
|
bool global() const;
|
|
void setGlobal(bool newGlobal);
|
|
|
|
signals:
|
|
void globalChanged();
|
|
|
|
private:
|
|
QMap<std::string, QMLSetting *> m_settings;
|
|
|
|
std::unique_ptr<ConfigurationShared::TranslationMap> translations;
|
|
std::unique_ptr<ConfigurationShared::ComboboxTranslationMap> combobox_translations;
|
|
|
|
Q_PROPERTY(bool global READ global WRITE setGlobal NOTIFY globalChanged FINAL)
|
|
};
|
|
|
|
#endif // SETTINGSINTERFACE_H
|