Skip to content

Commit 27f1744

Browse files
committed
More work on the new UI settings implementation
1 parent 6347fcc commit 27f1744

File tree

3 files changed

+43
-20
lines changed

3 files changed

+43
-20
lines changed

Src/Common/ModuleSettings.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,38 +37,39 @@ namespace Dasher {
3737
struct ModuleSetting
3838
{
3939
SettingsType Type;
40-
ModuleSetting(SettingsType Type, Dasher::Parameter Param, std::string Description) : Type(Type), Param(Param), Description(Description) {}
40+
ModuleSetting(SettingsType Type, Dasher::Parameter Param, std::string Name, std::string Description) : Type(Type), Param(Param), Description(Description), Name(Name) {}
4141
virtual ~ModuleSetting() {};
4242

43+
std::string Name;
4344
std::string Description;
4445
Dasher::Parameter Param;
4546
};
4647

47-
struct TextSetting : ModuleSetting {
48-
TextSetting(Dasher::Parameter Param, std::string Description) : ModuleSetting(SettingsType::TextField, Param, Description) {}
48+
struct TextboxSetting : ModuleSetting {
49+
TextboxSetting(Dasher::Parameter Param, std::string Name, std::string Description) : ModuleSetting(SettingsType::TextField, Param, Name, Description) {}
4950
};
5051

5152
struct SliderSetting : ModuleSetting {
52-
SliderSetting(Dasher::Parameter Param, std::string Description, int min, int max, int step) : ModuleSetting(SettingsType::Slider, Param, Description), min(min), max(max), step(step) {};
53+
SliderSetting(Dasher::Parameter Param, std::string Name, std::string Description, int min, int max, int step) : ModuleSetting(SettingsType::Slider, Param, Name, Description), min(min), max(max), step(step) {};
5354
int min;
5455
int max;
5556
int step;
5657
};
5758

5859
struct SpinSetting : ModuleSetting {
59-
SpinSetting(Dasher::Parameter Param, std::string Description, int min, int max, int step) : ModuleSetting(SettingsType::Slider, Param, Description), min(min), max(max), step(step) {}
60+
SpinSetting(Dasher::Parameter Param, std::string Name, std::string Description, int min, int max, int step) : ModuleSetting(SettingsType::Step, Param, Name, Description), min(min), max(max), step(step) {}
6061
int min;
6162
int max;
6263
int step;
6364
};
6465

6566
struct EnumSetting : ModuleSetting {
66-
EnumSetting(Dasher::Parameter Param, std::string Description, std::unordered_map<std::string, int> Enums) : ModuleSetting(SettingsType::Enum, Param, Description), Enums(Enums) {};
67+
EnumSetting(Dasher::Parameter Param, std::string Name, std::string Description, std::unordered_map<std::string, int> Enums) : ModuleSetting(SettingsType::Enum, Param, Name, Description), Enums(Enums) {};
6768
std::unordered_map<std::string, int> Enums;
6869
};
6970

7071
struct SwitchSetting : ModuleSetting {
71-
SwitchSetting(Dasher::Parameter Param, std::string Description) : ModuleSetting(SettingsType::Switch, Param, Description) {};
72+
SwitchSetting(Dasher::Parameter Param, std::string Name, std::string Description) : ModuleSetting(SettingsType::Switch, Param, Name, Description) {};
7273
};
7374
}
7475
}

Src/DasherCore/DasherModule.h

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#pragma once
2222

2323
#include "../Common/ModuleSettings.h"
24+
#include <memory>
2425
#include <vector>
2526

2627
class CDasherModule;
@@ -38,11 +39,20 @@ class CDasherModule {
3839
return false;
3940
}
4041

41-
virtual const std::vector<Dasher::Settings::ModuleSetting>& getUISettings(){return UIList;};
4242
private:
4343
const char *m_szName;
44-
protected:
45-
std::vector<Dasher::Settings::ModuleSetting> UIList;
44+
45+
// "New" UI Settings definitions:
46+
public:
47+
virtual const std::vector<std::unique_ptr<Dasher::Settings::ModuleSetting>>& getUISettings(){return UISettingsList;};
48+
virtual void declareTextboxSetting(Dasher::Parameter Param, std::string Name, std::string Description){UISettingsList.push_back(std::make_unique<Dasher::Settings::TextboxSetting>(Param, Name, Description));}
49+
virtual void declareSliderSetting(Dasher::Parameter Param, std::string Name, std::string Description, int min, int max, int step){UISettingsList.push_back(std::make_unique<Dasher::Settings::SliderSetting>(Param, Name, Description, min, max, step));}
50+
virtual void declareSpinButtonSetting(Dasher::Parameter Param, std::string Name, std::string Description, int min, int max, int step){UISettingsList.push_back(std::make_unique<Dasher::Settings::SpinSetting>(Param, Name, Description, min, max, step));}
51+
virtual void declareDropdownSetting(Dasher::Parameter Param, std::string Name, std::string Description, std::unordered_map<std::string, int> Enums){UISettingsList.push_back(std::make_unique<Dasher::Settings::EnumSetting>(Param, Name, Description, Enums));}
52+
virtual void declareSwitchSetting(Dasher::Parameter Param, std::string Name, std::string Description){UISettingsList.push_back(std::make_unique<Dasher::Settings::SwitchSetting>(Param, Name, Description));}
53+
54+
private:
55+
std::vector<std::unique_ptr<Dasher::Settings::ModuleSetting>> UISettingsList;
4656
};
4757
/// @}
4858

Src/DasherCore/PressFilter.cpp

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,34 @@
11
#include "PressFilter.h"
22
#include "I18n.h"
3+
#include "Parameters.h"
4+
#include "SettingsStore.h"
35

46
Dasher::CPressFilter::CPressFilter(CSettingsStore* pSettingsStore, CDasherInterfaceBase* pInterface, CFrameRate* pFramerate, const char *szName) : CDefaultFilter(pSettingsStore, pInterface, pFramerate, szName)
57
{
6-
UIList.push_back(Dasher::Settings::SwitchSetting(BP_REMAP_XTREME, _("At top and bottom, scroll more and translate less (makes error-correcting easier)")));
7-
UIList.push_back(Dasher::Settings::EnumSetting(LP_GEOMETRY, "Screen geometry", {
8+
declareSwitchSetting(BP_LM_ADAPTIVE, _("Switch Setting 1"), _("Test Description"));
9+
declareSwitchSetting(BP_LM_ADAPTIVE, _("Switch Setting 2"), _("Test Description"));
10+
11+
declareDropdownSetting(LP_GEOMETRY, "Dropdown Setting 1", "Test Description", {
12+
{"Old Style", Dasher::Options::ScreenGeometry::old_style},
13+
{"Square without Crosshair", Dasher::Options::ScreenGeometry::square_no_xhair},
14+
{"Squish", Dasher::Options::ScreenGeometry::squish},
15+
{"Squaish + Log", Dasher::Options::ScreenGeometry::squish_and_log},
16+
});
17+
declareDropdownSetting(LP_GEOMETRY, "Dropdown Setting 2", "Test Description", {
818
{"Old Style", Dasher::Options::ScreenGeometry::old_style},
919
{"Square without Crosshair", Dasher::Options::ScreenGeometry::square_no_xhair},
1020
{"Squish", Dasher::Options::ScreenGeometry::squish},
1121
{"Squaish + Log", Dasher::Options::ScreenGeometry::squish_and_log},
12-
}));
13-
UIList.push_back(Dasher::Settings::EnumSetting(LP_SHAPE_TYPE, "Rendering Geometry", {
14-
{"Rectangle", Dasher::Options::RenderingShapeTypes::OVERLAPPING_RECTANGLE},
15-
{"Triangle", Dasher::Options::RenderingShapeTypes::TRIANGLE},
16-
{"Truncated Triangle", Dasher::Options::RenderingShapeTypes::TRUNCATED_TRIANGLE},
17-
{"Quadric", Dasher::Options::RenderingShapeTypes::QUADRIC},
18-
{"Circle", Dasher::Options::RenderingShapeTypes::CIRCLE}
19-
}));
22+
});
23+
24+
declareTextboxSetting(SP_ALPHABET_3, "Textbox Setting 1", "Test Description");
25+
declareTextboxSetting(SP_ALPHABET_3, "Textbox Setting 2", "Test Description");
26+
27+
declareSliderSetting(LP_MAX_BITRATE, "Slider Setting 1", "Test Description", 1, 1000, 10);
28+
declareSliderSetting(LP_MAX_BITRATE, "Slider Setting 2", "Test Description", 1, 1000, 50);
29+
30+
declareSpinButtonSetting(LP_X_LIMIT_SPEED, "Spin Setting 1", "Test Description", 1, 1000, 10);
31+
declareSpinButtonSetting(LP_X_LIMIT_SPEED, "Spin Setting 2", "Test Description", 1, 1000, 50);
2032
}
2133

2234
void Dasher::CPressFilter::KeyDown(unsigned long iTime, Keys::VirtualKey Key, CDasherView* pDasherView, CDasherInput* pInput, CDasherModel* pModel)

0 commit comments

Comments
 (0)