diff options
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsapplication.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsapplication.cpp | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowsapplication.cpp b/src/plugins/platforms/windows/qwindowsapplication.cpp new file mode 100644 index 0000000000..42e34ac99f --- /dev/null +++ b/src/plugins/platforms/windows/qwindowsapplication.cpp @@ -0,0 +1,146 @@ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qwindowsapplication.h" +#include "qwindowsclipboard.h" +#include "qwindowscontext.h" +#include "qwindowsmimeregistry.h" +#include "qwin10helpers.h" +#include "qwindowsopengltester.h" +#include "qwindowswindow.h" +#include "qwindowsintegration.h" +#include "qwindowstheme.h" + +#include <QtCore/qvariant.h> +#include <QtCore/private/qfunctions_win_p.h> + +#include <QtGui/qpalette.h> + +QT_BEGIN_NAMESPACE + +void QWindowsApplication::setTouchWindowTouchType(QWindowsApplication::TouchWindowTouchTypes type) +{ + if (m_touchWindowTouchTypes == type) + return; + m_touchWindowTouchTypes = type; + if (auto ctx = QWindowsContext::instance()) + ctx->registerTouchWindows(); +} + +QWindowsApplication::TouchWindowTouchTypes QWindowsApplication::touchWindowTouchType() const +{ + return m_touchWindowTouchTypes; +} + +QWindowsApplication::WindowActivationBehavior QWindowsApplication::windowActivationBehavior() const +{ + return m_windowActivationBehavior; +} + +void QWindowsApplication::setWindowActivationBehavior(WindowActivationBehavior behavior) +{ + m_windowActivationBehavior = behavior; +} + +void QWindowsApplication::setHasBorderInFullScreenDefault(bool border) +{ + QWindowsWindow::setHasBorderInFullScreenDefault(border); +} + +bool QWindowsApplication::isTabletMode() const +{ +#if QT_CONFIG(clipboard) + if (const QWindowsClipboard *clipboard = QWindowsClipboard::instance()) + return qt_windowsIsTabletMode(clipboard->clipboardViewer()); +#endif + return false; +} + +bool QWindowsApplication::isWinTabEnabled() const +{ + auto ctx = QWindowsContext::instance(); + return ctx != nullptr && ctx->tabletSupport() != nullptr; +} + +bool QWindowsApplication::setWinTabEnabled(bool enabled) +{ + if (enabled == isWinTabEnabled()) + return true; + auto ctx = QWindowsContext::instance(); + if (!ctx) + return false; + return enabled ? ctx->initTablet() : ctx->disposeTablet(); +} + +QWindowsApplication::DarkModeHandling QWindowsApplication::darkModeHandling() const +{ + return m_darkModeHandling; +} + +void QWindowsApplication::setDarkModeHandling(QWindowsApplication::DarkModeHandling handling) +{ + m_darkModeHandling = handling; +} + +void QWindowsApplication::registerMime(QWindowsMimeConverter *mime) +{ + if (auto ctx = QWindowsContext::instance()) + ctx->mimeConverter().registerMime(mime); +} + +void QWindowsApplication::unregisterMime(QWindowsMimeConverter *mime) +{ + if (auto ctx = QWindowsContext::instance()) + ctx->mimeConverter().unregisterMime(mime); +} + +int QWindowsApplication::registerMimeType(const QString &mime) +{ + return QWindowsMimeRegistry::registerMimeType(mime); +} + +HWND QWindowsApplication::createMessageWindow(const QString &classNameTemplate, + const QString &windowName, + QFunctionPointer eventProc) const +{ + QWindowsContext *ctx = QWindowsContext::instance(); + if (!ctx) + return nullptr; + auto wndProc = eventProc ? reinterpret_cast<WNDPROC>(eventProc) : DefWindowProc; + return ctx->createDummyWindow(classNameTemplate, + reinterpret_cast<const wchar_t*>(windowName.utf16()), + wndProc); +} + +bool QWindowsApplication::asyncExpose() const +{ + QWindowsContext *ctx = QWindowsContext::instance(); + return ctx && ctx->asyncExpose(); +} + +void QWindowsApplication::setAsyncExpose(bool value) +{ + if (QWindowsContext *ctx = QWindowsContext::instance()) + ctx->setAsyncExpose(value); +} + +QVariant QWindowsApplication::gpu() const +{ + return GpuDescription::detect().toVariant(); +} + +QVariant QWindowsApplication::gpuList() const +{ + QVariantList result; + const auto gpus = GpuDescription::detectAll(); + for (const auto &gpu : gpus) + result.append(gpu.toVariant()); + return result; +} + +void QWindowsApplication::populateLightSystemPalette(QPalette &result) const +{ + result = QWindowsTheme::systemPalette(Qt::ColorScheme::Light); +} + +QT_END_NAMESPACE |