Added steam desktop overlay width slider.

This commit is contained in:
2017-01-27 23:53:02 +01:00
parent ff885b63ce
commit 6c7240fcf6
3 changed files with 179 additions and 0 deletions
@@ -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