Added steam desktop overlay width slider.
This commit is contained in:
@@ -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