Added steam desktop overlay width slider.
This commit is contained in:
@@ -227,6 +227,91 @@ MyStackViewPage {
|
||||
}
|
||||
}
|
||||
|
||||
GroupBox {
|
||||
id: steamDesktopGroupBox
|
||||
Layout.fillWidth: true
|
||||
|
||||
label: MyText {
|
||||
leftPadding: 10
|
||||
text: "Steam Desktop Overlay Width"
|
||||
bottomPadding: -10
|
||||
}
|
||||
background: Rectangle {
|
||||
color: "transparent"
|
||||
border.color: "#ffffff"
|
||||
radius: 8
|
||||
}
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
color: "#ffffff"
|
||||
height: 1
|
||||
Layout.fillWidth: true
|
||||
Layout.bottomMargin: 5
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
RowLayout {
|
||||
MyPushButton2 {
|
||||
id: steamDesktopWidthMinusButton
|
||||
Layout.preferredWidth: 40
|
||||
text: "-"
|
||||
onClicked: {
|
||||
steamDesktopWidthSlider.value -= 1.0
|
||||
}
|
||||
}
|
||||
|
||||
MySlider {
|
||||
id: steamDesktopWidthSlider
|
||||
from: 0.1
|
||||
to: 32.0
|
||||
stepSize: 0.1
|
||||
value: 1.0
|
||||
Layout.fillWidth: true
|
||||
onPositionChanged: {
|
||||
var val = this.from + ( this.position * (this.to - this.from))
|
||||
steamDesktopWidthText.text = val.toFixed(1)
|
||||
}
|
||||
onValueChanged: {
|
||||
UtilitiesTabController.setSteamDesktopOverlayWidth(value, false)
|
||||
steamDesktopWidthText.text = value.toFixed(1)
|
||||
}
|
||||
}
|
||||
|
||||
MyPushButton2 {
|
||||
id: steamDesktopWidthPlusButton
|
||||
Layout.preferredWidth: 40
|
||||
text: "+"
|
||||
onClicked: {
|
||||
steamDesktopWidthSlider.value += 1.0
|
||||
}
|
||||
}
|
||||
|
||||
MyTextField {
|
||||
id: steamDesktopWidthText
|
||||
text: "0.0"
|
||||
keyBoardUID: 611
|
||||
Layout.preferredWidth: 100
|
||||
Layout.leftMargin: 10
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
function onInputEvent(input) {
|
||||
var val = parseFloat(input)
|
||||
if (!isNaN(val)) {
|
||||
if (val < 0.1) {
|
||||
val = 0.1
|
||||
}
|
||||
steamDesktopWidthSlider.value = val
|
||||
UtilitiesTabController.setSteamDesktopOverlayWidth(val, false)
|
||||
}
|
||||
text = UtilitiesTabController.steamDesktopOverlayWidth.toFixed(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
@@ -238,6 +323,10 @@ MyStackViewPage {
|
||||
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
||||
alarmGroupBox.visible = !OverlayController.desktopMode
|
||||
keyboardGroupBox.visible = !OverlayController.desktopMode
|
||||
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
|
||||
if (steamDesktopGroupBox.visible) {
|
||||
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
@@ -254,6 +343,15 @@ MyStackViewPage {
|
||||
onAlarmTimeMinuteChanged: {
|
||||
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
||||
}
|
||||
onSteamDesktopOverlayAvailableChanged: {
|
||||
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
|
||||
if (steamDesktopGroupBox.visible) {
|
||||
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||
}
|
||||
}
|
||||
onSteamDesktopOverlayWidthChanged: {
|
||||
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||
}
|
||||
}
|
||||
}
|
||||
function setAlarmHourText(value) {
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
// application namespace
|
||||
namespace advsettings {
|
||||
|
||||
const char* steamDesktopOverlaykey = "valve.steam.desktop";
|
||||
|
||||
void UtilitiesTabController::initStage1() {
|
||||
auto settings = OverlayController::appSettings();
|
||||
@@ -19,6 +20,22 @@ namespace advsettings {
|
||||
m_alarmEnabled = qAlarmEnabled.toBool();
|
||||
m_alarmIsModal = qAlarmIsModal.toBool();
|
||||
m_alarmTime = QTime(qAlarmHour.toInt(), qAlarmMinute.toInt());
|
||||
vr::VROverlayHandle_t pOverlayHandle;
|
||||
auto error = vr::VROverlay()->FindOverlay(steamDesktopOverlaykey, &pOverlayHandle);
|
||||
if (error != vr::VROverlayError_None) {
|
||||
m_steamDesktopOverlayAvailable = false;
|
||||
LOG(INFO) << "Could not find overlay \"" << steamDesktopOverlaykey << "\": " << vr::VROverlay()->GetOverlayErrorNameFromEnum(error);
|
||||
} else {
|
||||
m_steamDesktopOverlayAvailable = true;
|
||||
float width;
|
||||
error = vr::VROverlay()->GetOverlayWidthInMeters(pOverlayHandle, &width);
|
||||
if (error != vr::VROverlayError_None) {
|
||||
LOG(ERROR) << "Could not read overlay width of \"" << steamDesktopOverlaykey << "\": " << vr::VROverlay()->GetOverlayErrorNameFromEnum(error);
|
||||
} else {
|
||||
m_steamDesktopOverlayWidth = width;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void UtilitiesTabController::initStage2(OverlayController * parent, QQuickWindow * widget) {
|
||||
@@ -292,6 +309,28 @@ namespace advsettings {
|
||||
|
||||
void UtilitiesTabController::eventLoopTick() {
|
||||
if (settingsUpdateCounter >= 10) {
|
||||
|
||||
vr::VROverlayHandle_t pOverlayHandle;
|
||||
auto error = vr::VROverlay()->FindOverlay(steamDesktopOverlaykey, &pOverlayHandle);
|
||||
if (error == vr::VROverlayError_None) {
|
||||
if (!m_steamDesktopOverlayAvailable) {
|
||||
m_steamDesktopOverlayAvailable = true;
|
||||
emit steamDesktopOverlayAvailableChanged(m_steamDesktopOverlayAvailable);
|
||||
}
|
||||
float width;
|
||||
error = vr::VROverlay()->GetOverlayWidthInMeters(pOverlayHandle, &width);
|
||||
if (error != vr::VROverlayError_None) {
|
||||
LOG(ERROR) << "Could not read overlay width of \"" << steamDesktopOverlaykey << "\": " << vr::VROverlay()->GetOverlayErrorNameFromEnum(error);
|
||||
} else {
|
||||
setSteamDesktopOverlayWidth(width, true, false);
|
||||
}
|
||||
} else {
|
||||
if (m_steamDesktopOverlayAvailable) {
|
||||
m_steamDesktopOverlayAvailable = false;
|
||||
emit steamDesktopOverlayAvailableChanged(m_steamDesktopOverlayAvailable);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_alarmEnabled && m_alarmTime.isValid()) {
|
||||
auto now = QTime::currentTime();
|
||||
if (m_alarmLastCheckTime.isValid() && m_alarmLastCheckTime <= m_alarmTime && m_alarmTime <= now) {
|
||||
@@ -367,4 +406,34 @@ namespace advsettings {
|
||||
}
|
||||
|
||||
|
||||
bool UtilitiesTabController::steamDesktopOverlayAvailable() const {
|
||||
return m_steamDesktopOverlayAvailable;
|
||||
}
|
||||
|
||||
float UtilitiesTabController::steamDesktopOverlayWidth() const {
|
||||
return m_steamDesktopOverlayWidth;
|
||||
}
|
||||
|
||||
void UtilitiesTabController::setSteamDesktopOverlayWidth(float width, bool notify, bool notifyOpenVr) {
|
||||
if (std::abs(m_steamDesktopOverlayWidth - width) > 0.01) {
|
||||
m_steamDesktopOverlayWidth = width;
|
||||
if (notifyOpenVr) {
|
||||
vr::VROverlayHandle_t pOverlayHandle;
|
||||
auto error = vr::VROverlay()->FindOverlay(steamDesktopOverlaykey, &pOverlayHandle);
|
||||
if (error != vr::VROverlayError_None) {
|
||||
LOG(ERROR) << "Could not find overlay \"" << steamDesktopOverlaykey << "\": " << vr::VROverlay()->GetOverlayErrorNameFromEnum(error);
|
||||
} else {
|
||||
error = vr::VROverlay()->SetOverlayWidthInMeters(pOverlayHandle, m_steamDesktopOverlayWidth);
|
||||
if (error != vr::VROverlayError_None) {
|
||||
LOG(ERROR) << "Could not modify overlay width of \"" << steamDesktopOverlaykey << "\": " << vr::VROverlay()->GetOverlayErrorNameFromEnum(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (notify) {
|
||||
emit steamDesktopOverlayWidthChanged(m_steamDesktopOverlayWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace advconfig
|
||||
|
||||
@@ -18,6 +18,8 @@ namespace advsettings {
|
||||
Q_PROPERTY(bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY alarmIsModalChanged)
|
||||
Q_PROPERTY(int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour NOTIFY alarmTimeHourChanged)
|
||||
Q_PROPERTY(int alarmTimeMinute READ alarmTimeMinute WRITE setAlarmTimeMinute NOTIFY alarmTimeMinuteChanged)
|
||||
Q_PROPERTY(bool steamDesktopOverlayAvailable READ steamDesktopOverlayAvailable NOTIFY steamDesktopOverlayAvailableChanged)
|
||||
Q_PROPERTY(float steamDesktopOverlayWidth READ steamDesktopOverlayWidth WRITE setSteamDesktopOverlayWidth NOTIFY steamDesktopOverlayWidthChanged)
|
||||
|
||||
private:
|
||||
OverlayController* parent;
|
||||
@@ -29,6 +31,8 @@ namespace advsettings {
|
||||
bool m_alarmIsModal = true;
|
||||
QTime m_alarmTime;
|
||||
QTime m_alarmLastCheckTime;
|
||||
bool m_steamDesktopOverlayAvailable = false;
|
||||
float m_steamDesktopOverlayWidth = 4.0f;
|
||||
|
||||
public:
|
||||
void initStage1();
|
||||
@@ -41,6 +45,9 @@ namespace advsettings {
|
||||
int alarmTimeHour() const;
|
||||
int alarmTimeMinute() const;
|
||||
|
||||
bool steamDesktopOverlayAvailable() const;
|
||||
float steamDesktopOverlayWidth() const;
|
||||
|
||||
public slots:
|
||||
void sendKeyboardInput(QString input);
|
||||
void sendKeyboardEnter();
|
||||
@@ -54,11 +61,16 @@ namespace advsettings {
|
||||
void modAlarmTimeHour(int value, bool notify = true);
|
||||
void modAlarmTimeMinute(int value, bool notify = true);
|
||||
|
||||
void setSteamDesktopOverlayWidth(float width, bool notify = true, bool notifyOpenVr = true);
|
||||
|
||||
signals:
|
||||
void alarmEnabledChanged(bool enabled);
|
||||
void alarmIsModalChanged(bool modal);
|
||||
void alarmTimeHourChanged(int hour);
|
||||
void alarmTimeMinuteChanged(int min);
|
||||
|
||||
void steamDesktopOverlayAvailableChanged(bool available);
|
||||
void steamDesktopOverlayWidthChanged(float width);
|
||||
};
|
||||
|
||||
} // namespace advsettings
|
||||
|
||||
Reference in New Issue
Block a user