overte/libraries/ui/src/DesktopPreviewProvider.cpp
2018-01-19 01:51:41 +00:00

46 lines
1.8 KiB
C++

#include "DesktopPreviewProvider.h"
#include <PathUtils.h>
#include <QMetaEnum>
#include <QtPlugin>
#include <cassert>
DesktopPreviewProvider::DesktopPreviewProvider() {
}
constexpr const char* DesktopPreviewProvider::imagePaths[];
QSharedPointer<DesktopPreviewProvider> DesktopPreviewProvider::getInstance() {
static QSharedPointer<DesktopPreviewProvider> instance = DependencyManager::get<DesktopPreviewProvider>();
return instance;
}
QImage DesktopPreviewProvider::getPreviewDisabledImage(bool vsyncEnabled) const {
auto imageIndex = vsyncEnabled ? VSYNC : m_previewDisabledReason;
assert(imageIndex >= 0 && imageIndex <= VSYNC);
return !m_previewDisabled[imageIndex].isNull() ? m_previewDisabled[imageIndex] : loadPreviewImage(m_previewDisabled[imageIndex], PathUtils::resourcesPath() + imagePaths[imageIndex]);
}
void DesktopPreviewProvider::setPreviewDisabledReason(PreviewDisabledReasons reason) {
if (reason == VSYNC) {
qDebug() << "Preview disabled reason can't be forced to " << QMetaEnum::fromType<DesktopPreviewProvider::PreviewDisabledReasons>().valueToKey(reason);
return; // Not settable via this interface, as VSYNC is controlled by HMD plugin..
}
m_previewDisabledReason = reason;
}
void DesktopPreviewProvider::setPreviewDisabledReason(const QString& reasonString) {
PreviewDisabledReasons reason = USER;
bool ok = false;
reason = (PreviewDisabledReasons) QMetaEnum::fromType<DesktopPreviewProvider::PreviewDisabledReasons>().keyToValue(reasonString.toLatin1().data(), &ok);
if (ok) {
setPreviewDisabledReason(reason);
}
}
QImage& DesktopPreviewProvider::loadPreviewImage(QImage& image, const QString& path) const {
return image = QImage(path).mirrored().convertToFormat(QImage::Format_RGBA8888);
}