mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 08:56:25 +02:00
Implemented radio button preferences. Reimplemented snap smooth turn to radio buttons
This commit is contained in:
parent
5127cb0ea6
commit
72838f6d34
5 changed files with 90 additions and 4 deletions
|
@ -0,0 +1,57 @@
|
||||||
|
//
|
||||||
|
// RadioButtonsPreference.qml
|
||||||
|
//
|
||||||
|
// Created by Cain Kilgore on 20th July 2017
|
||||||
|
// Copyright 2017 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
import QtQuick 2.5
|
||||||
|
|
||||||
|
import "../../controls-uit"
|
||||||
|
|
||||||
|
Preference {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
height: control.height + hifi.dimensions.controlInterlineHeight
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
repeater.itemAt(preference.value).checked = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function save() {
|
||||||
|
var value = 0;
|
||||||
|
for (var i = 0; i < repeater.count; i++) {
|
||||||
|
if (repeater.itemAt(i).checked) {
|
||||||
|
value = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
preference.value = value;
|
||||||
|
preference.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: control
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
bottom: parent.bottom
|
||||||
|
}
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: repeater
|
||||||
|
model: preference.items.length
|
||||||
|
delegate: RadioButton {
|
||||||
|
text: preference.items[index]
|
||||||
|
anchors {
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -74,6 +74,7 @@ Preference {
|
||||||
property var comboBoxBuilder: Component { ComboBoxPreference { } }
|
property var comboBoxBuilder: Component { ComboBoxPreference { } }
|
||||||
property var spinnerSliderBuilder: Component { SpinnerSliderPreference { } }
|
property var spinnerSliderBuilder: Component { SpinnerSliderPreference { } }
|
||||||
property var primaryHandBuilder: Component { PrimaryHandPreference { } }
|
property var primaryHandBuilder: Component { PrimaryHandPreference { } }
|
||||||
|
property var radioButtonsBuilder: Component { RadioButtonsPreference { } }
|
||||||
property var preferences: []
|
property var preferences: []
|
||||||
property int checkBoxCount: 0
|
property int checkBoxCount: 0
|
||||||
|
|
||||||
|
@ -140,6 +141,10 @@ Preference {
|
||||||
checkBoxCount++;
|
checkBoxCount++;
|
||||||
builder = primaryHandBuilder;
|
builder = primaryHandBuilder;
|
||||||
break;
|
break;
|
||||||
|
case Preference.RadioButtons:
|
||||||
|
checkBoxCount++;
|
||||||
|
builder = radioButtonsBuilder;
|
||||||
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (builder) {
|
if (builder) {
|
||||||
|
|
|
@ -82,6 +82,7 @@ Preference {
|
||||||
property var comboBoxBuilder: Component { ComboBoxPreference { } }
|
property var comboBoxBuilder: Component { ComboBoxPreference { } }
|
||||||
property var spinnerSliderBuilder: Component { SpinnerSliderPreference { } }
|
property var spinnerSliderBuilder: Component { SpinnerSliderPreference { } }
|
||||||
property var primaryHandBuilder: Component { PrimaryHandPreference { } }
|
property var primaryHandBuilder: Component { PrimaryHandPreference { } }
|
||||||
|
property var radioButtonsBuilder: Component { RadioButtonsPreference { } }
|
||||||
property var preferences: []
|
property var preferences: []
|
||||||
property int checkBoxCount: 0
|
property int checkBoxCount: 0
|
||||||
|
|
||||||
|
@ -154,6 +155,10 @@ Preference {
|
||||||
checkBoxCount++;
|
checkBoxCount++;
|
||||||
builder = primaryHandBuilder;
|
builder = primaryHandBuilder;
|
||||||
break;
|
break;
|
||||||
|
case Preference.RadioButtons:
|
||||||
|
checkBoxCount++;
|
||||||
|
builder = radioButtonsBuilder;
|
||||||
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (builder) {
|
if (builder) {
|
||||||
|
|
|
@ -274,9 +274,13 @@ void setupPreferences() {
|
||||||
preferences->addPreference(new CheckPreference(MOVEMENT, "Flying & jumping", getter, setter));
|
preferences->addPreference(new CheckPreference(MOVEMENT, "Flying & jumping", getter, setter));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto getter = [=]()->bool { return myAvatar->getSnapTurn(); };
|
auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; };
|
||||||
auto setter = [=](bool value) { myAvatar->setSnapTurn(value); };
|
auto setter = [=](int value) { myAvatar->setSnapTurn(value == 0); };
|
||||||
preferences->addPreference(new CheckPreference(MOVEMENT, "Snap turn / Smooth turn", getter, setter));
|
auto preference = new RadioButtonsPreference(MOVEMENT, "Snap turn / Smooth turn", getter, setter);
|
||||||
|
QStringList items;
|
||||||
|
items << "Snap turn" << "Smooth turn";
|
||||||
|
preference->setItems(items);
|
||||||
|
preferences->addPreference(preference);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto getter = [=]()->float { return myAvatar->getUserHeight(); };
|
auto getter = [=]()->float { return myAvatar->getUserHeight(); };
|
||||||
|
|
|
@ -58,7 +58,8 @@ public:
|
||||||
ComboBox,
|
ComboBox,
|
||||||
PrimaryHand,
|
PrimaryHand,
|
||||||
// Special casing for an unusual preference
|
// Special casing for an unusual preference
|
||||||
Avatar
|
Avatar,
|
||||||
|
RadioButtons
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit Preference(QObject* parent = nullptr) : QObject(parent) {}
|
explicit Preference(QObject* parent = nullptr) : QObject(parent) {}
|
||||||
|
@ -353,6 +354,20 @@ public:
|
||||||
Type getType() override { return PrimaryHand; }
|
Type getType() override { return PrimaryHand; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class RadioButtonsPreference : public IntPreference {
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QStringList items READ getItems CONSTANT)
|
||||||
|
public:
|
||||||
|
RadioButtonsPreference(const QString& category, const QString& name, Getter getter, Setter setter)
|
||||||
|
: IntPreference(category, name, getter, setter) { }
|
||||||
|
Type getType() override { return RadioButtons; }
|
||||||
|
|
||||||
|
const QStringList& getItems() { return _items; }
|
||||||
|
void setItems(const QStringList& items) { _items = items; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QStringList _items;
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue