mirror of
https://github.com/lubosz/overte.git
synced 2025-04-14 14:46:55 +02:00
Moving preferences to dependency mananger
This commit is contained in:
parent
205ab05506
commit
2026821d9e
7 changed files with 76 additions and 67 deletions
|
@ -42,7 +42,6 @@ Window {
|
|||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
Preferences.loadAll();
|
||||
var categories = Preferences.categories;
|
||||
for (var i = 0; i < categories.length; ++i) {
|
||||
var category = categories[i];
|
||||
|
|
|
@ -6,4 +6,5 @@ Item {
|
|||
anchors { left: parent.left; right: parent.right }
|
||||
property var preference;
|
||||
property string label: preference ? preference.name : "";
|
||||
Component.onCompleted: preference.load();
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ Preference {
|
|||
font.pointSize: 16
|
||||
color: "#0e7077"
|
||||
text: root.name
|
||||
MouseArea { anchors.fill: parent; onClicked: root.toggleExpanded() }
|
||||
}
|
||||
|
||||
Column {
|
||||
|
|
|
@ -117,6 +117,7 @@
|
|||
#include <recording/Deck.h>
|
||||
#include <recording/Recorder.h>
|
||||
#include <QmlWebWindowClass.h>
|
||||
#include <Preferences.h>
|
||||
|
||||
#include "AnimDebugDraw.h"
|
||||
#include "AudioClient.h"
|
||||
|
@ -324,6 +325,7 @@ bool setupEssentials(int& argc, char** argv) {
|
|||
|
||||
// Set dependencies
|
||||
DependencyManager::set<ScriptEngines>();
|
||||
DependencyManager::set<Preferences>();
|
||||
DependencyManager::set<recording::Deck>();
|
||||
DependencyManager::set<recording::Recorder>();
|
||||
DependencyManager::set<AddressManager>();
|
||||
|
@ -1182,6 +1184,7 @@ void Application::initializeUi() {
|
|||
LoginDialog::registerType();
|
||||
Tooltip::registerType();
|
||||
UpdateDialog::registerType();
|
||||
qmlRegisterType<Preference>("Hifi", 1, 0, "Preference");
|
||||
|
||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
||||
offscreenUi->create(_offscreenContext->getContext());
|
||||
|
@ -1213,6 +1216,7 @@ void Application::initializeUi() {
|
|||
rootContext->setContextProperty("MyAvatar", getMyAvatar());
|
||||
rootContext->setContextProperty("Messages", DependencyManager::get<MessagesClient>().data());
|
||||
rootContext->setContextProperty("Recording", DependencyManager::get<RecordingScriptingInterface>().data());
|
||||
rootContext->setContextProperty("Preferences", DependencyManager::get<Preferences>().data());
|
||||
|
||||
rootContext->setContextProperty("TREE_SCALE", TREE_SCALE);
|
||||
rootContext->setContextProperty("Quat", new Quat());
|
||||
|
|
|
@ -34,16 +34,15 @@
|
|||
#include "scripting/WebWindowClass.h"
|
||||
|
||||
void setupPreferences() {
|
||||
MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
||||
qmlRegisterType<Preference>("Hifi", 1, 0, "Preference");
|
||||
Preferences* preferences = new Preferences();
|
||||
auto preferences = DependencyManager::get<Preferences>();
|
||||
|
||||
MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
|
||||
static const QString AVATAR_BASICS { "Avatar Basics" };
|
||||
{
|
||||
auto getter = [=]()->QString {return myAvatar->getDisplayName(); };
|
||||
auto setter = [=](const QString& value) { myAvatar->setDisplayName(value); };
|
||||
const QString label = "Avatar display name <font color=\"#909090\">(optional)</font>";
|
||||
auto preference = new EditPreference(AVATAR_BASICS, label, getter, setter, preferences);
|
||||
auto preference = new EditPreference(AVATAR_BASICS, label, getter, setter);
|
||||
preference->setPlaceholderText("Not showing a name");
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
@ -52,7 +51,7 @@ void setupPreferences() {
|
|||
auto getter = [=]()->QString {return myAvatar->getCollisionSoundURL(); };
|
||||
auto setter = [=](const QString& value) { myAvatar->setCollisionSoundURL(value); };
|
||||
const QString label = "Avatar collision sound URL <font color=\"#909090\">(optional)</font>";
|
||||
auto preference = new EditPreference(AVATAR_BASICS, label, getter, setter, preferences);
|
||||
auto preference = new EditPreference(AVATAR_BASICS, label, getter, setter);
|
||||
preference->setPlaceholderText("Enter the URL of a sound to play when you bump into something");
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
@ -60,14 +59,14 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = [=]()->QString { return myAvatar->getFullAvatarURLFromPreferences().toString(); };
|
||||
auto setter = [=](const QString& value) { /* FIXME */ };
|
||||
auto preference = new BrowsePreference(AVATAR_BASICS, "Appearance: ", getter, setter, preferences);
|
||||
auto preference = new BrowsePreference(AVATAR_BASICS, "Appearance: ", getter, setter);
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
||||
{
|
||||
auto getter = []()->QString { return Snapshot::snapshotsLocation.get(); };
|
||||
auto setter = [](const QString& value) { Snapshot::snapshotsLocation.set(value); };
|
||||
auto preference = new BrowsePreference("Snapshots", "Place my Snapshots here:", getter, setter, preferences);
|
||||
auto preference = new BrowsePreference("Snapshots", "Place my Snapshots here:", getter, setter);
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
||||
|
@ -75,29 +74,29 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->QString { return DependencyManager::get<ScriptEngines>()->getScriptsLocation(); };
|
||||
auto setter = [](const QString& value) { DependencyManager::get<ScriptEngines>()->setScriptsLocation(value); };
|
||||
preferences->addPreference(new BrowsePreference("Scripts", "Load scripts from this directory:", getter, setter, preferences));
|
||||
preferences->addPreference(new BrowsePreference("Scripts", "Load scripts from this directory:", getter, setter));
|
||||
}
|
||||
|
||||
preferences->addPreference(new ButtonPreference("Scripts", "Load Default Scripts", preferences));
|
||||
preferences->addPreference(new ButtonPreference("Scripts", "Load Default Scripts"));
|
||||
|
||||
|
||||
{
|
||||
auto getter = []()->bool {return !Menu::getInstance()->isOptionChecked(MenuOption::DisableActivityLogger); };
|
||||
auto setter = [](bool value) { Menu::getInstance()->setIsOptionChecked(MenuOption::DisableActivityLogger, !value); };
|
||||
preferences->addPreference(new CheckPreference("Privacy", "Send Data", getter, setter, preferences));
|
||||
preferences->addPreference(new CheckPreference("Privacy", "Send Data", getter, setter));
|
||||
}
|
||||
|
||||
static const QString LOD_TUNING("Level of Detail Tuning");
|
||||
{
|
||||
auto getter = []()->bool { return DependencyManager::get<LODManager>()->getUseAcuity(); };
|
||||
auto setter = [](bool value) { DependencyManager::get<LODManager>()->setUseAcuity(value); };
|
||||
preferences->addPreference(new CheckPreference(LOD_TUNING, "Render based on visual acuity", getter, setter, preferences));
|
||||
preferences->addPreference(new CheckPreference(LOD_TUNING, "Render based on visual acuity", getter, setter));
|
||||
}
|
||||
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<LODManager>()->getDesktopLODDecreaseFPS(); };
|
||||
auto setter = [](float value) { DependencyManager::get<LODManager>()->setDesktopLODDecreaseFPS(value); };
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum Desktop FPS", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum Desktop FPS", getter, setter);
|
||||
preference->setMin(0);
|
||||
preference->setMax(120);
|
||||
preference->setStep(1);
|
||||
|
@ -107,7 +106,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return DependencyManager::get<LODManager>()->getHMDLODDecreaseFPS(); };
|
||||
auto setter = [](float value) { DependencyManager::get<LODManager>()->setHMDLODDecreaseFPS(value); };
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum HMD FPS", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum HMD FPS", getter, setter);
|
||||
preference->setMin(0);
|
||||
preference->setMax(120);
|
||||
preference->setStep(1);
|
||||
|
@ -117,7 +116,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return 1.0f / DependencyManager::get<LODManager>()->getRenderDistanceInverseHighLimit(); };
|
||||
auto setter = [](float value) { DependencyManager::get<LODManager>()->setRenderDistanceInverseHighLimit(1.0f / value); };
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum Display Distance", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(LOD_TUNING, "Minimum Display Distance", getter, setter);
|
||||
preference->setMin(5);
|
||||
preference->setMax(32768);
|
||||
preference->setStep(1);
|
||||
|
@ -128,7 +127,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = [=]()->float { return myAvatar->getRealWorldFieldOfView(); };
|
||||
auto setter = [=](float value) { myAvatar->setRealWorldFieldOfView(value); };
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Real world vertical field of view (angular size of monitor)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Real world vertical field of view (angular size of monitor)", getter, setter);
|
||||
preference->setMin(1);
|
||||
preference->setMax(180);
|
||||
preferences->addPreference(preference);
|
||||
|
@ -136,7 +135,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return qApp->getFieldOfView(); };
|
||||
auto setter = [](float value) { qApp->setFieldOfView(value); };
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Vertical field of view", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Vertical field of view", getter, setter);
|
||||
preference->setMin(1);
|
||||
preference->setMax(180);
|
||||
preference->setStep(1);
|
||||
|
@ -145,7 +144,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = [=]()->float { return myAvatar->getLeanScale(); };
|
||||
auto setter = [=](float value) { myAvatar->setLeanScale(value); };
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Lean scale (applies to Faceshift users)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Lean scale (applies to Faceshift users)", getter, setter);
|
||||
preference->setMin(0);
|
||||
preference->setMax(99.9f);
|
||||
preference->setDecimals(2);
|
||||
|
@ -155,7 +154,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = [=]()->float { return myAvatar->getUniformScale(); };
|
||||
auto setter = [=](float value) { myAvatar->setTargetScaleVerbose(value); }; // The hell?
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Avatar scale <font color=\"#909090\">(default is 1.0)</font>", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AVATAR_TUNING, "Avatar scale <font color=\"#909090\">(default is 1.0)</font>", getter, setter);
|
||||
preference->setMin(0.01f);
|
||||
preference->setMax(99.9f);
|
||||
preference->setDecimals(2);
|
||||
|
@ -165,29 +164,29 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = [=]()->float { return myAvatar->getHead()->getPupilDilation(); };
|
||||
auto setter = [=](float value) { myAvatar->getHead()->setPupilDilation(value); };
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Pupil dilation", getter, setter, preferences));
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Pupil dilation", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<DdeFaceTracker>()->getEyeClosingThreshold(); };
|
||||
auto setter = [](float value) { DependencyManager::get<DdeFaceTracker>()->setEyeClosingThreshold(value); };
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Camera binary eyelid threshold", getter, setter, preferences));
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Camera binary eyelid threshold", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return FaceTracker::getEyeDeflection(); };
|
||||
auto setter = [](float value) { FaceTracker::setEyeDeflection(value); };
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Face tracker eye deflection", getter, setter, preferences));
|
||||
preferences->addPreference(new SliderPreference(AVATAR_TUNING, "Face tracker eye deflection", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->QString { return DependencyManager::get<Faceshift>()->getHostname(); };
|
||||
auto setter = [](const QString& value) { DependencyManager::get<Faceshift>()->setHostname(value); };
|
||||
auto preference = new EditPreference(AVATAR_TUNING, "Faceshift hostname", getter, setter, preferences);
|
||||
auto preference = new EditPreference(AVATAR_TUNING, "Faceshift hostname", getter, setter);
|
||||
preference->setPlaceholderText("localhost");
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
{
|
||||
auto getter = [=]()->QString { return myAvatar->getAnimGraphUrl().toString(); };
|
||||
auto setter = [=](const QString& value) { myAvatar->setAnimGraphUrl(value); };
|
||||
auto preference = new EditPreference(AVATAR_TUNING, "Avatar Animation JSON", getter, setter, preferences);
|
||||
auto preference = new EditPreference(AVATAR_TUNING, "Avatar Animation JSON", getter, setter);
|
||||
preference->setPlaceholderText("default");
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
@ -196,13 +195,13 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->bool {return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getDynamicJitterBuffers(); };
|
||||
auto setter = [](bool value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setDynamicJitterBuffers(value); };
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Enable Dynamic Jitter Buffers", getter, setter, preferences));
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Enable Dynamic Jitter Buffers", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getDesiredJitterBufferFrames(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setStaticDesiredJitterBufferFrames(value); };
|
||||
|
||||
auto preference = new SpinnerPreference(AUDIO, "Static Jitter Buffer Frames", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Static Jitter Buffer Frames", getter, setter);
|
||||
preference->setMin(0);
|
||||
preference->setMax(10000);
|
||||
preference->setStep(1);
|
||||
|
@ -211,7 +210,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getMaxFramesOverDesired(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setMaxFramesOverDesired(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Max Frames Over Desired", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Max Frames Over Desired", getter, setter);
|
||||
preference->setMax(10000);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
|
@ -219,12 +218,12 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->bool {return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getUseStDevForJitterCalc(); };
|
||||
auto setter = [](bool value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setUseStDevForJitterCalc(value); };
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Use Stddev for Dynamic Jitter Calc", getter, setter, preferences));
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Use Stddev for Dynamic Jitter Calc", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getWindowStarveThreshold(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setWindowStarveThreshold(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window A Starve Threshold", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window A Starve Threshold", getter, setter);
|
||||
preference->setMax(10000);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
|
@ -232,7 +231,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getWindowSecondsForDesiredCalcOnTooManyStarves(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setWindowSecondsForDesiredCalcOnTooManyStarves(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window A (raise desired on N starves) Seconds)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window A (raise desired on N starves) Seconds)", getter, setter);
|
||||
preference->setMax(10000);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
|
@ -240,7 +239,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getWindowSecondsForDesiredReduction(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setWindowSecondsForDesiredReduction(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window B (desired ceiling) Seconds", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Window B (desired ceiling) Seconds", getter, setter);
|
||||
preference->setMax(10000);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
|
@ -248,12 +247,12 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->bool {return DependencyManager::get<AudioClient>()->getReceivedAudioStream().getRepetitionWithFade(); };
|
||||
auto setter = [](bool value) { DependencyManager::get<AudioClient>()->getReceivedAudioStream().setRepetitionWithFade(value); };
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Repetition with Fade", getter, setter, preferences));
|
||||
preferences->addPreference(new CheckPreference(AUDIO, "Repetition with Fade", getter, setter));
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getOutputBufferSize(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->setOutputBufferSize(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Buffer Size (frames)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Buffer Size (frames)", getter, setter);
|
||||
preference->setMin(1);
|
||||
preference->setMax(20);
|
||||
preference->setStep(1);
|
||||
|
@ -262,13 +261,13 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->bool {return DependencyManager::get<AudioClient>()->getOutputStarveDetectionEnabled(); };
|
||||
auto setter = [](bool value) { DependencyManager::get<AudioClient>()->setOutputStarveDetectionEnabled(value); };
|
||||
auto preference = new CheckPreference(AUDIO, "Output Starve Detection (Automatic Buffer Size Increase)", getter, setter, preferences);
|
||||
auto preference = new CheckPreference(AUDIO, "Output Starve Detection (Automatic Buffer Size Increase)", getter, setter);
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getOutputStarveDetectionThreshold(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->setOutputStarveDetectionThreshold(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Starve Detection Threshold", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Starve Detection Threshold", getter, setter);
|
||||
preference->setMin(1);
|
||||
preference->setMax(500);
|
||||
preference->setStep(1);
|
||||
|
@ -277,9 +276,9 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return DependencyManager::get<AudioClient>()->getOutputStarveDetectionPeriod(); };
|
||||
auto setter = [](float value) { DependencyManager::get<AudioClient>()->setOutputStarveDetectionPeriod(value); };
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Starve Detection Period (ms)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference(AUDIO, "Output Starve Detection Period (ms)", getter, setter);
|
||||
preference->setMin(1);
|
||||
preference->setMax(999999999);
|
||||
preference->setMax((float)999999999);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
@ -287,7 +286,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return qApp->getMaxOctreePacketsPerSecond(); };
|
||||
auto setter = [](float value) { qApp->setMaxOctreePacketsPerSecond(value); };
|
||||
auto preference = new SpinnerPreference("Octree", "Max packets sent each second", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference("Octree", "Max packets sent each second", getter, setter);
|
||||
preference->setMin(60);
|
||||
preference->setMax(6000);
|
||||
preference->setStep(10);
|
||||
|
@ -298,7 +297,7 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return qApp->getApplicationCompositor().getHmdUIAngularSize(); };
|
||||
auto setter = [](float value) { qApp->getApplicationCompositor().setHmdUIAngularSize(value); };
|
||||
auto preference = new SpinnerPreference("HMD", "User Interface Horizontal Angular Size (degrees)", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference("HMD", "User Interface Horizontal Angular Size (degrees)", getter, setter);
|
||||
preference->setMin(30);
|
||||
preference->setMax(160);
|
||||
preference->setStep(1);
|
||||
|
@ -309,14 +308,12 @@ void setupPreferences() {
|
|||
{
|
||||
auto getter = []()->float { return controller::InputDevice::getReticleMoveSpeed(); };
|
||||
auto setter = [](float value) { controller::InputDevice::setReticleMoveSpeed(value); };
|
||||
auto preference = new SpinnerPreference("Sixense Controllers", "Reticle Movement Speed", getter, setter, preferences);
|
||||
auto preference = new SpinnerPreference("Sixense Controllers", "Reticle Movement Speed", getter, setter);
|
||||
preference->setMin(0);
|
||||
preference->setMax(100);
|
||||
preference->setStep(1);
|
||||
preferences->addPreference(preference);
|
||||
}
|
||||
|
||||
DependencyManager::get<OffscreenUi>()->getRootContext()->setContextProperty("Preferences", preferences);
|
||||
}
|
||||
|
||||
const int PREFERENCES_HEIGHT_PADDING = 20;
|
||||
|
|
|
@ -10,15 +10,20 @@
|
|||
|
||||
|
||||
void Preferences::addPreference(Preference* preference) {
|
||||
preference->setParent(this);
|
||||
|
||||
const QString& category = preference->getCategory();
|
||||
|
||||
// Use this structure to maintain the order of the categories
|
||||
if (!_categories.contains(category)) {
|
||||
_categories.append(category);
|
||||
}
|
||||
|
||||
QVariantList categoryPreferences;
|
||||
// FIXME is there an easier way to do this with less copying?
|
||||
if (_preferencesByCategory.contains(category)) {
|
||||
categoryPreferences = qvariant_cast<QVariantList>(_preferencesByCategory[category]);
|
||||
} else {
|
||||
// Use this property to maintain the order of the categories
|
||||
_categories.append(category);
|
||||
}
|
||||
}
|
||||
categoryPreferences.append(QVariant::fromValue(preference));
|
||||
_preferencesByCategory[category] = categoryPreferences;
|
||||
}
|
||||
|
|
|
@ -16,9 +16,11 @@
|
|||
#include <QtCore/QList>
|
||||
#include <QtCore/QString>
|
||||
|
||||
#include "DependencyManager.h"
|
||||
|
||||
class Preference;
|
||||
|
||||
class Preferences : public QObject {
|
||||
class Preferences : public QObject, public Dependency {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QVariantMap preferencesByCategory READ getPreferencesByCategory CONSTANT)
|
||||
Q_PROPERTY(QList<QString> categories READ getCategories CONSTANT)
|
||||
|
@ -88,8 +90,8 @@ protected:
|
|||
class ButtonPreference : public Preference {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ButtonPreference(const QString& category, const QString& name, Preferences* parent = nullptr)
|
||||
: Preference(category, name, parent) { }
|
||||
ButtonPreference(const QString& category, const QString& name)
|
||||
: Preference(category, name) { }
|
||||
Type getType() { return Button; }
|
||||
|
||||
};
|
||||
|
@ -101,8 +103,8 @@ public:
|
|||
using Getter = std::function<T()>;
|
||||
using Setter = std::function<void(const T&)>;
|
||||
|
||||
TypedPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: Preference(category, name, parent), _getter(getter), _setter(setter) { }
|
||||
TypedPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: Preference(category, name), _getter(getter), _setter(setter) { }
|
||||
|
||||
T getValue() const { return _getter(); }
|
||||
void setValue(const T& value) { if (_value != value) { _value = value; emitValueChanged(); } }
|
||||
|
@ -125,8 +127,8 @@ class BoolPreference : public TypedPreference<bool> {
|
|||
Q_PROPERTY(bool value READ getValue WRITE setValue NOTIFY valueChanged)
|
||||
|
||||
public:
|
||||
BoolPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: TypedPreference(category, name, getter, setter, parent) { }
|
||||
BoolPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: TypedPreference(category, name, getter, setter) { }
|
||||
|
||||
signals:
|
||||
void valueChanged();
|
||||
|
@ -144,8 +146,8 @@ class FloatPreference : public TypedPreference<float> {
|
|||
Q_PROPERTY(float decimals READ getDecimals CONSTANT)
|
||||
|
||||
public:
|
||||
FloatPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: TypedPreference(category, name, getter, setter, parent) { }
|
||||
FloatPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: TypedPreference(category, name, getter, setter) { }
|
||||
|
||||
float getMin() const { return _min; }
|
||||
void setMin(float min) { _min = min; };
|
||||
|
@ -176,8 +178,8 @@ class StringPreference : public TypedPreference<QString> {
|
|||
Q_PROPERTY(QString value READ getValue WRITE setValue NOTIFY valueChanged)
|
||||
|
||||
public:
|
||||
StringPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: TypedPreference(category, name, getter, setter, parent) { }
|
||||
StringPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: TypedPreference(category, name, getter, setter) { }
|
||||
|
||||
signals:
|
||||
void valueChanged();
|
||||
|
@ -189,8 +191,8 @@ protected:
|
|||
class SliderPreference : public FloatPreference {
|
||||
Q_OBJECT
|
||||
public:
|
||||
SliderPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: FloatPreference(category, name, getter, setter, parent) { }
|
||||
SliderPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: FloatPreference(category, name, getter, setter) { }
|
||||
|
||||
Type getType() { return Slider; }
|
||||
};
|
||||
|
@ -198,8 +200,8 @@ public:
|
|||
class SpinnerPreference : public FloatPreference {
|
||||
Q_OBJECT
|
||||
public:
|
||||
SpinnerPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: FloatPreference(category, name, getter, setter, parent) { }
|
||||
SpinnerPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: FloatPreference(category, name, getter, setter) { }
|
||||
|
||||
Type getType() { return Spinner; }
|
||||
};
|
||||
|
@ -209,8 +211,8 @@ class EditPreference : public StringPreference {
|
|||
Q_PROPERTY(QString placeholderText READ getPlaceholderText CONSTANT)
|
||||
|
||||
public:
|
||||
EditPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: StringPreference(category, name, getter, setter, parent) { }
|
||||
EditPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: StringPreference(category, name, getter, setter) { }
|
||||
Type getType() { return Editable; }
|
||||
const QString& getPlaceholderText() const { return _placeholderText; }
|
||||
void setPlaceholderText(const QString& placeholderText) { _placeholderText = placeholderText; }
|
||||
|
@ -224,8 +226,8 @@ class BrowsePreference : public EditPreference {
|
|||
Q_PROPERTY(QString browseLabel READ getBrowseLabel CONSTANT)
|
||||
|
||||
public:
|
||||
BrowsePreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: EditPreference(category, name, getter, setter, parent) { }
|
||||
BrowsePreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: EditPreference(category, name, getter, setter) { }
|
||||
Type getType() { return Browsable; }
|
||||
|
||||
const QString& getBrowseLabel() { return _browseLabel; }
|
||||
|
@ -238,8 +240,8 @@ protected:
|
|||
class CheckPreference : public BoolPreference {
|
||||
Q_OBJECT
|
||||
public:
|
||||
CheckPreference(const QString& category, const QString& name, Getter getter, Setter setter, Preferences* parent = nullptr)
|
||||
: BoolPreference(category, name, getter, setter, parent) { }
|
||||
CheckPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||
: BoolPreference(category, name, getter, setter) { }
|
||||
Type getType() { return Checkbox; }
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue