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 {
|
Item {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
@@ -238,6 +323,10 @@ MyStackViewPage {
|
|||||||
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
||||||
alarmGroupBox.visible = !OverlayController.desktopMode
|
alarmGroupBox.visible = !OverlayController.desktopMode
|
||||||
keyboardGroupBox.visible = !OverlayController.desktopMode
|
keyboardGroupBox.visible = !OverlayController.desktopMode
|
||||||
|
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
|
||||||
|
if (steamDesktopGroupBox.visible) {
|
||||||
|
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
@@ -254,6 +343,15 @@ MyStackViewPage {
|
|||||||
onAlarmTimeMinuteChanged: {
|
onAlarmTimeMinuteChanged: {
|
||||||
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
setAlarmMinuteText(UtilitiesTabController.alarmTimeMinute)
|
||||||
}
|
}
|
||||||
|
onSteamDesktopOverlayAvailableChanged: {
|
||||||
|
steamDesktopGroupBox.visible = UtilitiesTabController.steamDesktopOverlayAvailable
|
||||||
|
if (steamDesktopGroupBox.visible) {
|
||||||
|
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onSteamDesktopOverlayWidthChanged: {
|
||||||
|
steamDesktopWidthSlider.value = UtilitiesTabController.steamDesktopOverlayWidth
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function setAlarmHourText(value) {
|
function setAlarmHourText(value) {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
// application namespace
|
// application namespace
|
||||||
namespace advsettings {
|
namespace advsettings {
|
||||||
|
|
||||||
|
const char* steamDesktopOverlaykey = "valve.steam.desktop";
|
||||||
|
|
||||||
void UtilitiesTabController::initStage1() {
|
void UtilitiesTabController::initStage1() {
|
||||||
auto settings = OverlayController::appSettings();
|
auto settings = OverlayController::appSettings();
|
||||||
@@ -19,6 +20,22 @@ namespace advsettings {
|
|||||||
m_alarmEnabled = qAlarmEnabled.toBool();
|
m_alarmEnabled = qAlarmEnabled.toBool();
|
||||||
m_alarmIsModal = qAlarmIsModal.toBool();
|
m_alarmIsModal = qAlarmIsModal.toBool();
|
||||||
m_alarmTime = QTime(qAlarmHour.toInt(), qAlarmMinute.toInt());
|
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) {
|
void UtilitiesTabController::initStage2(OverlayController * parent, QQuickWindow * widget) {
|
||||||
@@ -292,6 +309,28 @@ namespace advsettings {
|
|||||||
|
|
||||||
void UtilitiesTabController::eventLoopTick() {
|
void UtilitiesTabController::eventLoopTick() {
|
||||||
if (settingsUpdateCounter >= 10) {
|
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()) {
|
if (m_alarmEnabled && m_alarmTime.isValid()) {
|
||||||
auto now = QTime::currentTime();
|
auto now = QTime::currentTime();
|
||||||
if (m_alarmLastCheckTime.isValid() && m_alarmLastCheckTime <= m_alarmTime && m_alarmTime <= now) {
|
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
|
} // namespace advconfig
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ namespace advsettings {
|
|||||||
Q_PROPERTY(bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY alarmIsModalChanged)
|
Q_PROPERTY(bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY alarmIsModalChanged)
|
||||||
Q_PROPERTY(int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour NOTIFY alarmTimeHourChanged)
|
Q_PROPERTY(int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour NOTIFY alarmTimeHourChanged)
|
||||||
Q_PROPERTY(int alarmTimeMinute READ alarmTimeMinute WRITE setAlarmTimeMinute NOTIFY alarmTimeMinuteChanged)
|
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:
|
private:
|
||||||
OverlayController* parent;
|
OverlayController* parent;
|
||||||
@@ -29,6 +31,8 @@ namespace advsettings {
|
|||||||
bool m_alarmIsModal = true;
|
bool m_alarmIsModal = true;
|
||||||
QTime m_alarmTime;
|
QTime m_alarmTime;
|
||||||
QTime m_alarmLastCheckTime;
|
QTime m_alarmLastCheckTime;
|
||||||
|
bool m_steamDesktopOverlayAvailable = false;
|
||||||
|
float m_steamDesktopOverlayWidth = 4.0f;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void initStage1();
|
void initStage1();
|
||||||
@@ -41,6 +45,9 @@ namespace advsettings {
|
|||||||
int alarmTimeHour() const;
|
int alarmTimeHour() const;
|
||||||
int alarmTimeMinute() const;
|
int alarmTimeMinute() const;
|
||||||
|
|
||||||
|
bool steamDesktopOverlayAvailable() const;
|
||||||
|
float steamDesktopOverlayWidth() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void sendKeyboardInput(QString input);
|
void sendKeyboardInput(QString input);
|
||||||
void sendKeyboardEnter();
|
void sendKeyboardEnter();
|
||||||
@@ -54,11 +61,16 @@ namespace advsettings {
|
|||||||
void modAlarmTimeHour(int value, bool notify = true);
|
void modAlarmTimeHour(int value, bool notify = true);
|
||||||
void modAlarmTimeMinute(int value, bool notify = true);
|
void modAlarmTimeMinute(int value, bool notify = true);
|
||||||
|
|
||||||
|
void setSteamDesktopOverlayWidth(float width, bool notify = true, bool notifyOpenVr = true);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void alarmEnabledChanged(bool enabled);
|
void alarmEnabledChanged(bool enabled);
|
||||||
void alarmIsModalChanged(bool modal);
|
void alarmIsModalChanged(bool modal);
|
||||||
void alarmTimeHourChanged(int hour);
|
void alarmTimeHourChanged(int hour);
|
||||||
void alarmTimeMinuteChanged(int min);
|
void alarmTimeMinuteChanged(int min);
|
||||||
|
|
||||||
|
void steamDesktopOverlayAvailableChanged(bool available);
|
||||||
|
void steamDesktopOverlayWidthChanged(float width);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace advsettings
|
} // namespace advsettings
|
||||||
|
|||||||
Reference in New Issue
Block a user