Input: Add optional "enable" setting to the ControlGroup class.
The setting is exposed as a check box in the QGroupBox instance that visualises the ControlGroup instance. The setting is saved under "[control group name]/Enabled", but only when it is "false". The default value is "true".
This commit is contained in:
parent
49d9c63908
commit
d67a2304b0
|
@ -4,8 +4,10 @@
|
|||
|
||||
#include "DolphinQt/Config/Mapping/MappingWidget.h"
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QFormLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
|
||||
|
@ -138,6 +140,28 @@ QGroupBox* MappingWidget::CreateGroupBox(const QString& name, ControllerEmu::Con
|
|||
form_layout->addRow(tr(setting->GetUIName()), setting_widget);
|
||||
}
|
||||
|
||||
if (group->can_be_disabled)
|
||||
{
|
||||
QLabel* group_enable_label = new QLabel(tr("Enable"));
|
||||
QCheckBox* group_enable_checkbox = new QCheckBox();
|
||||
group_enable_checkbox->setChecked(group->enabled);
|
||||
form_layout->insertRow(0, group_enable_label, group_enable_checkbox);
|
||||
auto enable_group_by_checkbox = [group, form_layout, group_enable_label,
|
||||
group_enable_checkbox] {
|
||||
group->enabled = group_enable_checkbox->isChecked();
|
||||
for (int i = 0; i < form_layout->count(); ++i)
|
||||
{
|
||||
QWidget* widget = form_layout->itemAt(i)->widget();
|
||||
if (widget != nullptr && widget != group_enable_label && widget != group_enable_checkbox)
|
||||
widget->setEnabled(group->enabled);
|
||||
}
|
||||
};
|
||||
enable_group_by_checkbox();
|
||||
connect(group_enable_checkbox, &QCheckBox::toggled, this, enable_group_by_checkbox);
|
||||
connect(this, &MappingWidget::ConfigChanged, this,
|
||||
[group_enable_checkbox, group] { group_enable_checkbox->setChecked(group->enabled); });
|
||||
}
|
||||
|
||||
return group_box;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,13 +15,16 @@
|
|||
|
||||
namespace ControllerEmu
|
||||
{
|
||||
ControlGroup::ControlGroup(std::string name_, const GroupType type_)
|
||||
: name(name_), ui_name(std::move(name_)), type(type_)
|
||||
ControlGroup::ControlGroup(std::string name_, const GroupType type_, CanBeDisabled can_be_disabled_)
|
||||
: name(name_), ui_name(std::move(name_)), type(type_),
|
||||
can_be_disabled(can_be_disabled_ == CanBeDisabled::Yes)
|
||||
{
|
||||
}
|
||||
|
||||
ControlGroup::ControlGroup(std::string name_, std::string ui_name_, const GroupType type_)
|
||||
: name(std::move(name_)), ui_name(std::move(ui_name_)), type(type_)
|
||||
ControlGroup::ControlGroup(std::string name_, std::string ui_name_, const GroupType type_,
|
||||
CanBeDisabled can_be_disabled_)
|
||||
: name(std::move(name_)), ui_name(std::move(ui_name_)), type(type_),
|
||||
can_be_disabled(can_be_disabled_ == CanBeDisabled::Yes)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -43,6 +46,10 @@ void ControlGroup::LoadConfig(IniFile::Section* sec, const std::string& defdev,
|
|||
{
|
||||
const std::string group(base + name + "/");
|
||||
|
||||
// enabled
|
||||
if (can_be_disabled)
|
||||
sec->Get(group + "Enabled", &enabled, true);
|
||||
|
||||
for (auto& setting : numeric_settings)
|
||||
setting->LoadFromIni(*sec, group);
|
||||
|
||||
|
@ -88,6 +95,9 @@ void ControlGroup::SaveConfig(IniFile::Section* sec, const std::string& defdev,
|
|||
{
|
||||
const std::string group(base + name + "/");
|
||||
|
||||
// enabled
|
||||
sec->Set(group + "Enabled", enabled, true);
|
||||
|
||||
for (auto& setting : numeric_settings)
|
||||
setting->SaveToIni(*sec, group);
|
||||
|
||||
|
|
|
@ -48,8 +48,16 @@ enum class GroupType
|
|||
class ControlGroup
|
||||
{
|
||||
public:
|
||||
explicit ControlGroup(std::string name, GroupType type = GroupType::Other);
|
||||
ControlGroup(std::string name, std::string ui_name, GroupType type = GroupType::Other);
|
||||
enum class CanBeDisabled
|
||||
{
|
||||
No,
|
||||
Yes,
|
||||
};
|
||||
|
||||
explicit ControlGroup(std::string name, GroupType type = GroupType::Other,
|
||||
CanBeDisabled can_be_disabled = CanBeDisabled::No);
|
||||
ControlGroup(std::string name, std::string ui_name, GroupType type = GroupType::Other,
|
||||
CanBeDisabled can_be_disabled = CanBeDisabled::No);
|
||||
virtual ~ControlGroup();
|
||||
|
||||
virtual void LoadConfig(IniFile::Section* sec, const std::string& defdev = "",
|
||||
|
@ -79,7 +87,9 @@ public:
|
|||
const std::string name;
|
||||
const std::string ui_name;
|
||||
const GroupType type;
|
||||
const bool can_be_disabled;
|
||||
|
||||
bool enabled = true;
|
||||
std::vector<std::unique_ptr<Control>> controls;
|
||||
std::vector<std::unique_ptr<NumericSettingBase>> numeric_settings;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue