Files
eden/src/yuzu/configuration/shared_widget.h
T

107 lines
3.7 KiB
C++
Raw Normal View History

2023-06-10 00:45:04 -04:00
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
2023-05-09 01:36:05 -04:00
#pragma once
#include <forward_list>
#include <functional>
#include <string>
#include <QString>
#include <QStringLiteral>
#include <QWidget>
#include <qobjectdefs.h>
2023-05-08 22:37:03 -04:00
#include "yuzu/configuration/shared_translation.h"
class QCheckBox;
2023-05-08 22:37:03 -04:00
class QComboBox;
class QDateTimeEdit;
class QLabel;
2023-05-08 22:37:03 -04:00
class QLineEdit;
class QObject;
class QPushButton;
2023-05-08 22:37:03 -04:00
class QSlider;
class QSpinBox;
2023-05-08 22:37:03 -04:00
namespace Settings {
class BasicSetting;
} // namespace Settings
2023-05-08 22:37:03 -04:00
namespace ConfigurationShared {
enum class RequestType {
Default,
ComboBox,
SpinBox,
Slider,
ReverseSlider,
LineEdit,
2023-05-10 17:57:25 -04:00
HexEdit,
DateTimeEdit,
2023-05-08 22:37:03 -04:00
MaxEnum,
};
class Widget : public QWidget {
Q_OBJECT
public:
Widget(Settings::BasicSetting* setting, const TranslationMap& translations,
const ComboboxTranslationMap& combobox_translations, QWidget* parent, bool runtime_lock,
std::forward_list<std::function<void(bool)>>& apply_funcs_,
2023-05-08 22:37:03 -04:00
RequestType request = RequestType::Default, bool managed = true, float multiplier = 1.0f,
2023-05-18 17:54:22 -04:00
Settings::BasicSetting* other_setting = nullptr,
const QString& string = QStringLiteral(""));
2023-05-08 22:37:03 -04:00
virtual ~Widget();
2023-06-06 15:45:44 -04:00
bool Valid() const;
2023-05-08 22:37:03 -04:00
2023-05-18 17:54:22 -04:00
[[nodiscard]] static QPushButton* CreateRestoreGlobalButton(bool using_global, QWidget* parent);
2023-05-09 14:26:03 -04:00
2023-05-08 22:37:03 -04:00
QPushButton* restore_button{};
QLineEdit* line_edit{};
2023-05-09 15:46:07 -04:00
QSpinBox* spinbox{};
2023-05-08 22:37:03 -04:00
QCheckBox* checkbox{};
QSlider* slider{};
QComboBox* combobox{};
2023-05-10 17:57:25 -04:00
QDateTimeEdit* date_time_edit{};
2023-05-08 22:37:03 -04:00
private:
2023-06-06 15:45:44 -04:00
void SetupComponent(const QString& label, std::function<void()>& load_func, bool managed,
2023-06-06 21:20:37 -04:00
RequestType request, float multiplier,
Settings::BasicSetting* other_setting, const QString& string);
2023-06-06 15:45:44 -04:00
2023-06-09 16:53:26 -04:00
QLabel* CreateLabel(const QString& text);
2023-06-06 21:20:37 -04:00
QWidget* CreateCheckBox(Settings::BasicSetting* bool_setting, const QString& label,
std::function<std::string()>& serializer,
std::function<void()>& restore_func,
const std::function<void()>& touch);
2023-06-09 16:53:26 -04:00
2023-06-06 15:45:44 -04:00
QWidget* CreateCombobox(std::function<std::string()>& serializer,
std::function<void()>& restore_func,
2023-06-06 21:20:37 -04:00
const std::function<void()>& touch);
QWidget* CreateLineEdit(std::function<std::string()>& serializer,
std::function<void()>& restore_func, const std::function<void()>& touch,
bool managed = true);
QWidget* CreateHexEdit(std::function<std::string()>& serializer,
std::function<void()>& restore_func, const std::function<void()>& touch);
QWidget* CreateSlider(bool reversed, float multiplier, const QString& format,
std::function<std::string()>& serializer,
std::function<void()>& restore_func, const std::function<void()>& touch);
QWidget* CreateDateTimeEdit(bool disabled, bool restrict,
std::function<std::string()>& serializer,
std::function<void()>& restore_func,
const std::function<void()>& touch);
QWidget* CreateSpinBox(const QString& suffix, std::function<std::string()>& serializer,
std::function<void()>& restore_func, const std::function<void()>& touch);
2023-05-08 22:37:03 -04:00
QWidget* parent;
const TranslationMap& translations;
const ComboboxTranslationMap& combobox_enumerations;
2023-05-08 22:37:03 -04:00
Settings::BasicSetting& setting;
2023-06-09 16:53:26 -04:00
std::forward_list<std::function<void(bool)>>& apply_funcs;
2023-05-08 22:37:03 -04:00
bool created{false};
2023-05-18 17:54:22 -04:00
bool runtime_lock{false};
2023-05-08 22:37:03 -04:00
};
} // namespace ConfigurationShared